/opt/canhelp/apps/web/.next/cache/webpack/server-production
NameSizeModeActions
0.pack925145390644editdlrm
1.pack12673790644editdlrm
2.pack43735990644editdlrm
3.pack7451990644editdlrm
4.pack65204660644editdlrm
5.pack259717610644editdlrm
6.pack7518430644editdlrm
7.pack46388840644editdlrm
8.pack48452960644editdlrm
9.pack97020644editdlrm
10.pack27038500644editdlrm
11.pack1361530644editdlrm
12.pack24060644editdlrm
13.pack4277340644editdlrm
14.pack6358240644editdlrm
15.pack19769150644editdlrm
16.pack85740644editdlrm
17.pack24591570644editdlrm
18.pack119171890644editdlrm
19.pack768050644editdlrm
20.pack31443360644editdlrm
21.pack60115380644editdlrm
22.pack10241010644editdlrm
index.pack77214480644editdlrm
index.pack.old84399530644editdlrm
Edit: /opt/canhelp/apps/web/.next/cache/webpack/server-production/1.pack (1267379B)
wpcVwebpack/lib/cache/PackFileCacheStrategyPackContentItems `1(Compilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/components/PromoCountdown.tsx|rsc0Compilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[7].use[1]!/opt/canhelp/apps/web/src/components/PromoCountdown.tsx|ssr8FlagDependencyExportsPlugin|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[7].use[1]!/opt/canhelp/apps/web/src/components/PromoCountdown.tsx|ssrGCompilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[7].use[1]!/opt/canhelp/apps/web/src/components/PromoCountdown.tsx|ssr|webpack-runtimeCompilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsupport%2Fpage&name=app%2Fsupport%2Fpage&pagePath=private-next-app-dir%2Fsupport%2Fpage.tsx&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsupport%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!|rsc9 ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation.react-server|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|module|1=|main|]|conditionNames=[|0=|react-server|1=|...|]|dependencyType=|esm|path=|/opt/canhelp/apps/web/src/app|request=|@/components/Footer Compilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/components/Footer.tsx|rsc"ResolverCachePlugin|normal|default|alias=|false|mainFields=[|0=|main|]|conditionNames=[|0=|node|1=|import|]|dependencyType=|esm|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|true|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|react-server-dom-webpack/server ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation.react-server|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|main|]|conditionNames=[|0=|node|1=|require|]|dependencyType=|commonjs|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|false|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|react-server-dom-webpack/serverM ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation.react-server|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|module|1=|main|]|conditionNames=[|0=|react-server|1=|...|]|dependencyType=|esm|path=|/opt/canhelp/apps/web/src/app/support|request=|react-server-dom-webpack/server Compilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsupport%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!|ssr Compilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsupport%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!|rsc"ResolverCachePlugin|normal|default|alias=|false|dependencyType=|esm|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|true|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/components/Footer.tsxDResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/index|client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/server-only=|next/dist/compiled/server-only/index|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|next=|/opt/canhelp/node_modules/next|]|dependencyType=|esm|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/components/Footer.tsxRResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation.react-server|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|next=|/opt/canhelp/node_modules/next|]|dependencyType=|esm|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/components/Footer.tsx(Compilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[7].use[1]!/opt/canhelp/apps/web/src/components/Footer.tsx|ssrResolverCachePlugin|normal|default|alias=|false|mainFields=[|0=|main|]|dependencyType=|esm|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|true|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|react/jsx-runtimeResolverCachePlugin|normal|default|alias=|false|mainFields=[|0=|main|]|dependencyType=|esm|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|true|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|@/context/locale ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/index|client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/server-only=|next/dist/compiled/server-only/index|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/ssr/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/ssr/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client|react-server-dom-webpack/server$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/server.node$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/static$=|next/dist/compiled/react-server-dom-webpack/static.node|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|module|1=|main|]|dependencyType=|esm|path=|/opt/canhelp/apps/web/src/app/support|request=|next/link ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/index|client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/server-only=|next/dist/compiled/server-only/index|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/ssr/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/ssr/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client|react-server-dom-webpack/server$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/server.node$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/static$=|next/dist/compiled/react-server-dom-webpack/static.node|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|module|1=|main|]|dependencyType=|esm|path=|/opt/canhelp/apps/web/src/app/support|request=|react/jsx-runtimeResolverCachePlugin|normal|default|alias=|false|mainFields=[|0=|main|]|dependencyType=|esm|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|true|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|/opt/canhelp/apps/web/src/context/locale|query=||fragment=||module=|true|directory=|false|file=|false|internal=|false|fullySpecified=|true|descriptionFilePath=|/opt/canhelp/apps/web/package.json|descriptionFileData=[|name=|web|version=|0.1.0|private=|true|scripts=[|dev=|next dev --port 3000|build=|NODE_ENV=production next build|start=|next start|lint=|next lint|typecheck=|tsc --noEmit|]|dependencies=[|@canhelp/shared=|*|@marsidev/react-turnstile=|^1.5.0|@types/leaflet=|^1.9.21|better-auth=|^1.2.7|leaflet=|^1.9.4|nanostores=|^1.2.0|next=|^15.1.6|react=|^19.0.0|react-dom=|^19.0.0|react-leaflet=|^5.0.0|react-leaflet-cluster=|^4.1.3|socket.io-client=|^4.8.1|zod=|^3.24.1|]|devDependencies=[|@types/node=|^22.10.7|@types/react=|^19.0.6|@types/react-dom=|^19.0.3|autoprefixer=|^10.4.20|postcss=|^8.5.1|tailwindcss=|^3.4.17|typescript=|^5.7.3|]|]|descriptionFileRoot=|/opt/canhelp/apps/web|relativePath=|./src/app/support< ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/index|client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/server-only=|next/dist/compiled/server-only/index|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/ssr/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/ssr/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client|react-server-dom-webpack/server$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/server.node$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/static$=|next/dist/compiled/react-server-dom-webpack/static.node|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|main|]|dependencyType=|commonjs|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|require|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|false|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|@/context/localeResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/index|client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/server-only=|next/dist/compiled/server-only/index|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/ssr/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/ssr/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client|react-server-dom-webpack/server$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/server.node$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/static$=|next/dist/compiled/react-server-dom-webpack/static.node|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|main|]|dependencyType=|commonjs|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|require|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|false|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|/opt/canhelp/apps/web/src/context/locale|query=||fragment=||module=|true|directory=|false|file=|false|internal=|false|fullySpecified=|false|descriptionFilePath=|/opt/canhelp/apps/web/package.json|descriptionFileData=[|name=|web|version=|0.1.0|private=|true|scripts=[|dev=|next dev --port 3000|build=|NODE_ENV=production next build|start=|next start|lint=|next lint|typecheck=|tsc --noEmit|]|dependencies=[|@canhelp/shared=|*|@marsidev/react-turnstile=|^1.5.0|@types/leaflet=|^1.9.21|better-auth=|^1.2.7|leaflet=|^1.9.4|nanostores=|^1.2.0|next=|^15.1.6|react=|^19.0.0|react-dom=|^19.0.0|react-leaflet=|^5.0.0|react-leaflet-cluster=|^4.1.3|socket.io-client=|^4.8.1|zod=|^3.24.1|]|devDependencies=[|@types/node=|^22.10.7|@types/react=|^19.0.6|@types/react-dom=|^19.0.3|autoprefixer=|^10.4.20|postcss=|^8.5.1|tailwindcss=|^3.4.17|typescript=|^5.7.3|]|]|descriptionFileRoot=|/opt/canhelp/apps/web|relativePath=|./src/app/support ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/index|client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/client-only$=|next/dist/compiled/client-only/index|next/dist/compiled/server-only=|next/dist/compiled/server-only/index|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/ssr/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/ssr/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client|react-server-dom-webpack/server$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/server.node$=|next/dist/compiled/react-server-dom-webpack/server.node|react-server-dom-webpack/static$=|next/dist/compiled/react-server-dom-webpack/static.node|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|/opt/canhelp/node_modules/next|]|mainFields=[|0=|module|1=|main|]|dependencyType=|esm|path=|/opt/canhelp/apps/web/src/app/support|request=|@/context/localeResolverCachePlugin|normal|default|dependencyType=|esm|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|alias=|false|path=|/opt/canhelp/apps/web/src/app/support|request=|react-server-dom-webpack/serverResolverCachePlugin|normal|default|dependencyType=|commonjs|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|require|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web/src/app/support|request=|react-server-dom-webpack/server'FlagDependencyExportsPlugin|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/app/support/page.tsx|rsc0FlagDependencyExportsPlugin|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[7].use[1]!/opt/canhelp/apps/web/src/components/Footer.tsx|ssrCompilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsupport%2Fpage&name=app%2Fsupport%2Fpage&pagePath=private-next-app-dir%2Fsupport%2Fpage.tsx&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsupport%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!|rsc|webpack-runtime6Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/app/support/page.tsx|rsc|webpack-runtime Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsupport%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!|ssr|webpack-runtime Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsupport%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!|rsc|webpack-runtimePCompilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[7].use[1]!/opt/canhelp/apps/web/src/components/Footer.tsx|ssr|f8575f579785db27|webpack-runtimeCompilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__|rscCompilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__|rscResolverCachePlugin|normal|default|alias=|false|dependencyType=|esm|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|true|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/app/robots.tsResolverCachePlugin|normal|default|alias=|false|dependencyType=|esm|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|fullySpecified=|true|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/app/sitemap.tsJResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation.react-server|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|next=|/opt/canhelp/node_modules/next|]|dependencyType=|esm|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/app/robots.tsKResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|/opt/canhelp/node_modules/next/head.js=|next/dist/client/components/noop-head|/opt/canhelp/node_modules/next/image.js=|next/dist/api/image|/opt/canhelp/node_modules/next/constants.js=|next/dist/api/constants|/opt/canhelp/node_modules/next/router.js=|next/dist/api/router|/opt/canhelp/node_modules/next/dynamic.js=|next/dist/api/app-dynamic|/opt/canhelp/node_modules/next/script.js=|next/dist/api/script|/opt/canhelp/node_modules/next/link.js=|next/dist/client/app-dir/link|/opt/canhelp/node_modules/next/form.js=|next/dist/client/app-dir/form|/opt/canhelp/node_modules/next/navigation.js=|next/dist/api/navigation.react-server|/opt/canhelp/node_modules/next/headers.js=|next/dist/api/headers|/opt/canhelp/node_modules/next/og.js=|next/dist/api/og|/opt/canhelp/node_modules/next/server.js=|next/dist/api/server|/opt/canhelp/node_modules/next/document.js=|next/dist/api/document|/opt/canhelp/node_modules/next/app.js=|next/dist/api/app|next=|/opt/canhelp/node_modules/next|]|dependencyType=|esm|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/app/sitemap.tsCompilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/app/robots.ts|rscCompilation/modules|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/app/sitemap.ts|rsc FlagDependencyExportsPlugin|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/app/robots.ts|rsc!FlagDependencyExportsPlugin|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!/opt/canhelp/apps/web/src/app/sitemap.ts|rscCompilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!|rsc|7a7f45020dcf5f1c|webpack-runtimeCompilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!|rsc|049d8527ae16ef50|webpack-runtimeCompilation/assets|chunk784Compilation/assets|chunk475MinifierWebpackPlugin|../app/robots.txt/route.jsMinifierWebpackPlugin|../app/sitemap.xml/route.jswebpack/lib/NormalModulewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource// This file is generated by the Webpack next-flight-loader. import { registerClientReference } from "react-server-dom-webpack/server"; export const PromoCountdown = registerClientReference( function() { throw new Error("Attempted to call PromoCountdown() from the server but PromoCountdown is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); }, "/opt/canhelp/apps/web/src/components/PromoCountdown.tsx", "PromoCountdown", ); exportsTypenamespace javascript/autorsc/opt/canhelp/apps/web/src/componentsaliasmainFieldsconditionNames`$server-only$client-only$next/dist/compiled/server-only$next/dist/compiled/client-only$/opt/canhelp/node_modules/next/head.js/opt/canhelp/node_modules/next/image.js/opt/canhelp/node_modules/next/constants.js/opt/canhelp/node_modules/next/router.js/opt/canhelp/node_modules/next/dynamic.js/opt/canhelp/node_modules/next/script.js/opt/canhelp/node_modules/next/link.js/opt/canhelp/node_modules/next/form.js/opt/canhelp/node_modules/next/navigation.js/opt/canhelp/node_modules/next/headers.js/opt/canhelp/node_modules/next/og.js/opt/canhelp/node_modules/next/server.js/opt/canhelp/node_modules/next/document.js/opt/canhelp/node_modules/next/app.jsreact$react/compiler-runtime$react/jsx-dev-runtime$react/jsx-runtime$react-dom$react-dom/client$react-dom/server$react-dom/server.browser$react-dom/server.edge$react-dom/static$react-dom/static.browser$react-dom/static.edge$react-server-dom-webpack/client$react-server-dom-webpack/server$react-server-dom-webpack/server.node$react-server-dom-webpack/static$@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.tsnextnext/dist/compiled/server-only/emptynext/dist/compiled/client-only/errornext/dist/client/components/noop-headnext/dist/api/imagenext/dist/api/constantsnext/dist/api/routernext/dist/api/app-dynamicnext/dist/api/scriptnext/dist/client/app-dir/linknext/dist/client/app-dir/formnext/dist/api/navigation.react-servernext/dist/api/headersnext/dist/api/ognext/dist/api/servernext/dist/api/documentnext/dist/api/appnext/dist/server/route-modules/app-page/vendored/rsc/reactnext/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtimenext/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtimenext/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtimenext/dist/server/route-modules/app-page/vendored/rsc/react-domnext/dist/compiled/react-dom/clientnext/dist/compiled/react-dom/server.nodenext/dist/compiled/react-dom/server.browsernext/dist/build/webpack/alias/react-dom-server.jsnext/dist/compiled/react-dom/static.nodenext/dist/compiled/react-dom/static.browsernext/dist/compiled/react-dom/static.edgenext/dist/compiled/react-server-dom-webpack/client.nodenext/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-servernext/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-staticnext/dist/client/dev/noop-turbopack-hmr/opt/canhelp/node_modules/nextmodulemainreact-server...`cacheableparsedfileDependenciescontextDependenciesmissingDependenciesbuildDependenciesvalueDependencieshashassetsassetsInfostrictexportsArgumenttopLevelDeclarationssnapshot webpack/lib/util/LazySet/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.jswebpack/DefinePlugin_hash4028310f8d85efc9f2b18209typeactionIdsclientRefsclientEntryTypeisClientRefclientPromoCountdownauto  __webpack_exports__webpack/lib/FileSystemInfoSnapshot dyyB/opt/canhelp/apps/web/src/components/PromoCountdown.tsxsafeTimetimestamp!yyByyB09ab2e7d1b0c43c4webpack/lib/dependencies/HarmonyCompatibilityDependency dwebpack/lib/dependencies/ConstDependency`=@ `Jwebpack/lib/dependencies/HarmonyExportHeaderDependencyAA webpack/lib/dependencies/HarmonyImportSideEffectDependencyreact-server-dom-webpack/server `Jwebpack/lib/dependencies/HarmonyExportSpecifierDependency` webpack/lib/dependencies/HarmonyImportSpecifierDependency registerClientReference A   b5   i/* __next_internal_client_entry_do_not_use__ PromoCountdown auto */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { useEffect, useState } from 'react'; import Link from 'next/link'; function getTimeLeft() { const now = new Date(); const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59) // Dec 31 this year ; const diff = end.getTime() - now.getTime(); if (diff <= 0) return { d: 0, h: 0, m: 0, s: 0 }; const d = Math.floor(diff / (1000 * 60 * 60 * 24)); const h = Math.floor(diff % (1000 * 60 * 60 * 24) / (1000 * 60 * 60)); const m = Math.floor(diff % (1000 * 60 * 60) / (1000 * 60)); const s = Math.floor(diff % (1000 * 60) / 1000); return { d, h, m, s }; } function pad(n) { return String(n).padStart(2, '0'); } const INITIAL_TIME = { d: 0, h: 0, m: 0, s: 0 }; export function PromoCountdown({ title, subtitle, cta, days, hours, minutes, seconds }) { const [time, setTime] = useState(INITIAL_TIME); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && useEffect(()=>{ setTime(getTimeLeft()); const id = setInterval(()=>setTime(getTimeLeft()), 1000); return ()=>clearInterval(id); }, []); return /*#__PURE__*/ _jsxs("div", { className: "relative overflow-hidden rounded-3xl shadow-2xl bg-gradient-to-br from-green-700 via-green-800 to-green-900 text-white px-6 py-10 md:px-14 md:py-14 flex flex-col items-center text-center", children: [ /*#__PURE__*/ _jsx("div", { className: "absolute -top-16 -right-16 w-64 h-64 rounded-full bg-green-500/20 blur-3xl pointer-events-none" }), /*#__PURE__*/ _jsx("div", { className: "absolute -bottom-16 -left-16 w-64 h-64 rounded-full bg-green-400/20 blur-3xl pointer-events-none" }), /*#__PURE__*/ _jsxs("span", { className: "inline-flex items-center gap-1.5 bg-green-500/90 text-white text-sm font-bold px-4 py-1.5 rounded-full mb-5 shadow-lg tracking-wide uppercase", children: [ /*#__PURE__*/ _jsx("span", { children: "\uD83C\uDF81" }), " Pro — Free" ] }), /*#__PURE__*/ _jsx("h2", { className: "text-3xl md:text-4xl font-extrabold mb-3 tracking-tight drop-shadow-lg", children: title }), /*#__PURE__*/ _jsx("p", { className: "text-green-200 text-lg md:text-xl mb-8 max-w-xl font-medium", children: subtitle }), /*#__PURE__*/ _jsx("div", { className: "flex items-end gap-3 md:gap-6 mb-8", children: [ { value: time.d, label: days }, { value: time.h, label: hours }, { value: time.m, label: minutes }, { value: time.s, label: seconds } ].map((unit, i)=>/*#__PURE__*/ _jsxs("div", { className: "flex items-end gap-3 md:gap-6", children: [ i > 0 && /*#__PURE__*/ _jsx("span", { className: "text-3xl md:text-4xl font-extrabold text-gray-300 mb-2 leading-none select-none", children: ":" }), /*#__PURE__*/ _jsxs("div", { className: "flex flex-col items-center", children: [ /*#__PURE__*/ _jsx("div", { className: "bg-white/10 backdrop-blur border border-white/20 rounded-2xl w-16 md:w-20 h-16 md:h-20 flex items-center justify-center shadow-lg", children: /*#__PURE__*/ _jsx("span", { className: "text-3xl md:text-4xl font-extrabold tabular-nums", children: pad(unit.value) }) }), /*#__PURE__*/ _jsx("span", { className: "text-gray-300 text-xs font-semibold mt-1.5 uppercase tracking-widest", children: unit.label }) ] }) ] }, unit.label)) }), /*#__PURE__*/ _jsx(Link, { href: "/register", className: "btn-accent text-lg px-10 py-3 shadow-xl hover:scale-105 transition-transform duration-200", children: cta }) ] }); } ` gh issrj  kl  `$noqnext/dist/compiled/server-onlyqrstuvwxyz{|}~next/dist/compiled/server-only/indexnext/dist/compiled/client-only/indexnext/dist/api/navigationnext/dist/server/route-modules/app-page/vendored/ssr/reactnext/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtimenext/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtimenext/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtimenext/dist/server/route-modules/app-page/vendored/ssr/react-domnext/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-clientnext/dist/compiled/react-server-dom-webpack/server.nodenext/dist/compiled/react-server-dom-webpack/static.node   /opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.jsb8d92f41bd3722d5    getTimeLeftpadINITIAL_TIME dyyB  d `D@ aD@ A `, A ` Af Af c#x `react/jsx-runtime aD@react `,next/link ` c#x useState A   c$$$ useEffect Acl   c%7%@ jsxs_jsxs A %   c** jsx_jsx A.2   c--  A   c00  A   c33  A   c6"6&  AH L    c<<  A     c@@  A    cDD  A7 <    cW/W4  A    cZ3Z7  A   c^*^/  A   ca2a6  A   cc@cD  A   ch2h6  A~   cqq defaultLink A 4 cqq# webpack/lib/ModuleGraphRestoreProvidedData   nameprovidedcanMangleProvideterminalBindingexportsInfoQ   sourcesruntimeRequirementsdatajavascriptwebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ PromoCountdown: () => (/* binding */ PromoCountdown) /* harmony export */ }); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78157); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31768); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94496); /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__); webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcei/* __next_internal_client_entry_do_not_use__ PromoCountdown auto */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { useEffect, useState } from 'react'; import Link from 'next/link'; function getTimeLeft() { const now = new Date(); const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59) // Dec 31 this year ; const diff = end.getTime() - now.getTime(); if (diff <= 0) return { d: 0, h: 0, m: 0, s: 0 }; const d = Math.floor(diff / (1000 * 60 * 60 * 24)); const h = Math.floor(diff % (1000 * 60 * 60 * 24) / (1000 * 60 * 60)); const m = Math.floor(diff % (1000 * 60 * 60) / (1000 * 60)); const s = Math.floor(diff % (1000 * 60) / 1000); return { d, h, m, s }; } function pad(n) { return String(n).padStart(2, '0'); } const INITIAL_TIME = { d: 0, h: 0, m: 0, s: 0 }; export function PromoCountdown({ title, subtitle, cta, days, hours, minutes, seconds }) { const [time, setTime] = useState(INITIAL_TIME); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && useEffect(()=>{ setTime(getTimeLeft()); const id = setInterval(()=>setTime(getTimeLeft()), 1000); return ()=>clearInterval(id); }, []); return /*#__PURE__*/ _jsxs("div", { className: "relative overflow-hidden rounded-3xl shadow-2xl bg-gradient-to-br from-green-700 via-green-800 to-green-900 text-white px-6 py-10 md:px-14 md:py-14 flex flex-col items-center text-center", children: [ /*#__PURE__*/ _jsx("div", { className: "absolute -top-16 -right-16 w-64 h-64 rounded-full bg-green-500/20 blur-3xl pointer-events-none" }), /*#__PURE__*/ _jsx("div", { className: "absolute -bottom-16 -left-16 w-64 h-64 rounded-full bg-green-400/20 blur-3xl pointer-events-none" }), /*#__PURE__*/ _jsxs("span", { className: "inline-flex items-center gap-1.5 bg-green-500/90 text-white text-sm font-bold px-4 py-1.5 rounded-full mb-5 shadow-lg tracking-wide uppercase", children: [ /*#__PURE__*/ _jsx("span", { children: "\uD83C\uDF81" }), " Pro — Free" ] }), /*#__PURE__*/ _jsx("h2", { className: "text-3xl md:text-4xl font-extrabold mb-3 tracking-tight drop-shadow-lg", children: title }), /*#__PURE__*/ _jsx("p", { className: "text-green-200 text-lg md:text-xl mb-8 max-w-xl font-medium", children: subtitle }), /*#__PURE__*/ _jsx("div", { className: "flex items-end gap-3 md:gap-6 mb-8", children: [ { value: time.d, label: days }, { value: time.h, label: hours }, { value: time.m, label: minutes }, { value: time.s, label: seconds } ].map((unit, i)=>/*#__PURE__*/ _jsxs("div", { className: "flex items-end gap-3 md:gap-6", children: [ i > 0 && /*#__PURE__*/ _jsx("span", { className: "text-3xl md:text-4xl font-extrabold text-gray-300 mb-2 leading-none select-none", children: ":" }), /*#__PURE__*/ _jsxs("div", { className: "flex flex-col items-center", children: [ /*#__PURE__*/ _jsx("div", { className: "bg-white/10 backdrop-blur border border-white/20 rounded-2xl w-16 md:w-20 h-16 md:h-20 flex items-center justify-center shadow-lg", children: /*#__PURE__*/ _jsx("span", { className: "text-3xl md:text-4xl font-extrabold tabular-nums", children: pad(unit.value) }) }), /*#__PURE__*/ _jsx("span", { className: "text-gray-300 text-xs font-semibold mt-1.5 uppercase tracking-widest", children: unit.label }) ] }) ] }, unit.label)) }), /*#__PURE__*/ _jsx(Link, { href: "/register", className: "btn-accent text-lg px-10 py-3 shadow-xl hover:scale-105 transition-transform duration-200", children: cta }) ] }); } aD_ck $.1H K   7 ; J~(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(next_link__WEBPACK_IMPORTED_MODULE_2___default())  buffersourcesizemaps//* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ PromoCountdown: () => (/* binding */ PromoCountdown) /* harmony export */ }); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78157); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31768); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94496); /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__); /* __next_internal_client_entry_do_not_use__ PromoCountdown auto */ function getTimeLeft() { const now = new Date(); const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59) // Dec 31 this year ; const diff = end.getTime() - now.getTime(); if (diff <= 0) return { d: 0, h: 0, m: 0, s: 0 }; const d = Math.floor(diff / (1000 * 60 * 60 * 24)); const h = Math.floor(diff % (1000 * 60 * 60 * 24) / (1000 * 60 * 60)); const m = Math.floor(diff % (1000 * 60 * 60) / (1000 * 60)); const s = Math.floor(diff % (1000 * 60) / 1000); return { d, h, m, s }; } function pad(n) { return String(n).padStart(2, '0'); } const INITIAL_TIME = { d: 0, h: 0, m: 0, s: 0 }; function PromoCountdown({ title, subtitle, cta, days, hours, minutes, seconds }) { const [time, setTime] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(INITIAL_TIME); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{ setTime(getTimeLeft()); const id = setInterval(()=>setTime(getTimeLeft()), 1000); return ()=>clearInterval(id); }, []); return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { className: "relative overflow-hidden rounded-3xl shadow-2xl bg-gradient-to-br from-green-700 via-green-800 to-green-900 text-white px-6 py-10 md:px-14 md:py-14 flex flex-col items-center text-center", children: [ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { className: "absolute -top-16 -right-16 w-64 h-64 rounded-full bg-green-500/20 blur-3xl pointer-events-none" }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { className: "absolute -bottom-16 -left-16 w-64 h-64 rounded-full bg-green-400/20 blur-3xl pointer-events-none" }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", { className: "inline-flex items-center gap-1.5 bg-green-500/90 text-white text-sm font-bold px-4 py-1.5 rounded-full mb-5 shadow-lg tracking-wide uppercase", children: [ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { children: "\uD83C\uDF81" }), " Pro — Free" ] }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", { className: "text-3xl md:text-4xl font-extrabold mb-3 tracking-tight drop-shadow-lg", children: title }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", { className: "text-green-200 text-lg md:text-xl mb-8 max-w-xl font-medium", children: subtitle }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { className: "flex items-end gap-3 md:gap-6 mb-8", children: [ { value: time.d, label: days }, { value: time.h, label: hours }, { value: time.m, label: minutes }, { value: time.s, label: seconds } ].map((unit, i)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { className: "flex items-end gap-3 md:gap-6", children: [ i > 0 && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { className: "text-3xl md:text-4xl font-extrabold text-gray-300 mb-2 leading-none select-none", children: ":" }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { className: "flex flex-col items-center", children: [ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { className: "bg-white/10 backdrop-blur border border-white/20 rounded-2xl w-16 md:w-20 h-16 md:h-20 flex items-center justify-center shadow-lg", children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { className: "text-3xl md:text-4xl font-extrabold tabular-nums", children: pad(unit.value) }) }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { className: "text-gray-300 text-xs font-semibold mt-1.5 uppercase tracking-widest", children: unit.label }) ] }) ] }, unit.label)) }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), { href: "/register", className: "btn-accent text-lg px-10 py-3 shadow-xl hover:scale-105 transition-transform duration-200", children: cta }) ] }); } {"finalSource":true}  mapbufferedMap  ConcatSourceRawSource/* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ PromoCountdown: () => (/* binding */ PromoCountdown) /* harmony export */ }); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78157); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31768); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94496); /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__); ReplaceSourceRawSource[,68130undefined132175undefined177205undefined926932undefined10441051(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)undefined11231131(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)undefined13121316(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)undefined15821585(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined17621765(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined19441948(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)undefined21942197(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined23762379(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined25642567(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined27432746(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined33833387(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)undefined35533556(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined38143818(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)undefined39963999(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined42584261(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined45834586(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined49904993(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)undefined49954998(next_link__WEBPACK_IMPORTED_MODULE_2___default())undefined __webpack_require____webpack_require__.n7__webpack_require__.dUconst module0 = () => import(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/layout.tsx"); const module1 = () => import(/* webpackMode: "eager" */ "next/dist/client/components/builtin/global-error.js"); const module2 = () => import(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/not-found.tsx"); const module3 = () => import(/* webpackMode: "eager" */ "next/dist/client/components/builtin/forbidden.js"); const module4 = () => import(/* webpackMode: "eager" */ "next/dist/client/components/builtin/unauthorized.js"); const page5 = () => import(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/support/page.tsx"); import { AppPageRouteModule } from "next/dist/server/route-modules/app-page/module.compiled" with { 'turbopack-transition': 'next-ssr' }; import { RouteKind } from "next/dist/server/route-kind" with { 'turbopack-transition': 'next-server-utility' }; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { getRequestMeta } from "next/dist/server/request-meta"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { interopDefault } from "next/dist/server/app-render/interop-default"; import { stripFlightHeaders } from "next/dist/server/app-render/strip-flight-headers"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { checkIsAppPPREnabled } from "next/dist/server/lib/experimental/ppr"; import { getFallbackRouteParams } from "next/dist/server/request/fallback-params"; import { setReferenceManifestsSingleton } from "next/dist/server/app-render/encryption-utils"; import { isHtmlBotRequest, shouldServeStreamingMetadata } from "next/dist/server/lib/streaming-metadata"; import { createServerModuleMap } from "next/dist/server/app-render/action-utils"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { getIsPossibleServerAction } from "next/dist/server/lib/server-action-request-meta"; import { RSC_HEADER, NEXT_ROUTER_PREFETCH_HEADER, NEXT_IS_PRERENDER_HEADER, NEXT_DID_POSTPONE_HEADER, RSC_CONTENT_TYPE_HEADER } from "next/dist/client/components/app-router-headers"; import { getBotType, isBot } from "next/dist/shared/lib/router/utils/is-bot"; import { CachedRouteKind } from "next/dist/server/response-cache"; import { FallbackMode, parseFallbackField } from "next/dist/lib/fallback"; import RenderResult from "next/dist/server/render-result"; import { CACHE_ONE_YEAR, HTML_CONTENT_TYPE_HEADER, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { ENCODED_TAGS } from "next/dist/server/stream-utils/encoded-tags"; import { sendRenderResult } from "next/dist/server/send-payload"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; // We inject the tree and pages here so that we can use them in the route // module. const tree = { children: [ '', { children: [ 'support', { children: ['__PAGE__', {}, { page: [page5, "/opt/canhelp/apps/web/src/app/support/page.tsx"], }] }, { metadata: { icon: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=icon&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/icon.png?__next_metadata__")).default(props))], apple: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=apple&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/apple-icon.png?__next_metadata__")).default(props))], openGraph: [], twitter: [], manifest: undefined } } ] }, { 'layout': [module0, "/opt/canhelp/apps/web/src/app/layout.tsx"], 'global-error': [module1, "next/dist/client/components/builtin/global-error.js"], 'not-found': [module2, "/opt/canhelp/apps/web/src/app/not-found.tsx"], 'forbidden': [module3, "next/dist/client/components/builtin/forbidden.js"], 'unauthorized': [module4, "next/dist/client/components/builtin/unauthorized.js"], metadata: { icon: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=icon&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/icon.png?__next_metadata__")).default(props))], apple: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=apple&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/apple-icon.png?__next_metadata__")).default(props))], openGraph: [], twitter: [], manifest: undefined } } ] }.children; const pages = ["/opt/canhelp/apps/web/src/app/support/page.tsx"]; export { tree, pages }; import GlobalError from "next/dist/client/components/builtin/global-error.js" with { 'turbopack-transition': 'next-server-utility' }; export { GlobalError }; const __next_app_require__ = __webpack_require__ const __next_app_load_chunk__ = () => Promise.resolve() export const __next_app__ = { require: __next_app_require__, loadChunk: __next_app_load_chunk__ }; import * as entryBase from "next/dist/server/app-render/entry-base" with { 'turbopack-transition': 'next-server-utility' }; import { RedirectStatusCode } from "next/dist/client/components/redirect-status-code"; export * from "next/dist/server/app-render/entry-base" with { 'turbopack-transition': 'next-server-utility' }; // Create and export the route module that will be consumed. export const routeModule = new AppPageRouteModule({ definition: { kind: RouteKind.APP_PAGE, page: "/support/page", pathname: "/support", // The following aren't used in production. bundlePath: '', filename: '', appPaths: [] }, userland: { loaderTree: tree }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '' }); export async function handler(req, res, ctx) { var _this; let srcPage = "/support/page"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const initialPostponed = getRequestMeta(req, 'postponed'); // TODO: replace with more specific flags const minimalMode = getRequestMeta(req, 'minimalMode'); const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, query, params, parsedUrl, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, interceptionRoutePatterns } = prepareResult; const pathname = parsedUrl.pathname || '/'; const normalizedSrcPage = normalizeAppPath(srcPage); let { isOnDemandRevalidate } = prepareResult; const prerenderInfo = routeModule.match(pathname, prerenderManifest); const isPrerendered = !!prerenderManifest.routes[resolvedPathname]; let isSSG = Boolean(prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]); const userAgent = req.headers['user-agent'] || ''; const botType = getBotType(userAgent); const isHtmlBot = isHtmlBotRequest(req); /** * If true, this indicates that the request being made is for an app * prefetch request. */ const isPrefetchRSCRequest = getRequestMeta(req, 'isPrefetchRSCRequest') ?? req.headers[NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2' ; // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later const isRSCRequest = getRequestMeta(req, 'isRSCRequest') ?? Boolean(req.headers[RSC_HEADER]); const isPossibleServerAction = getIsPossibleServerAction(req); /** * If the route being rendered is an app page, and the ppr feature has been * enabled, then the given route _could_ support PPR. */ const couldSupportPPR = checkIsAppPPREnabled(nextConfig.experimental.ppr); // When enabled, this will allow the use of the `?__nextppronly` query to // enable debugging of the static shell. const hasDebugStaticShellQuery = process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING === '1' && typeof query.__nextppronly !== 'undefined' && couldSupportPPR; // When enabled, this will allow the use of the `?__nextppronly` query // to enable debugging of the fallback shell. const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback'; // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the // prerender manifest and this is an app page. const isRoutePPREnabled = couldSupportPPR && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR // enabled or not, but that would require plumbing the appConfig through // to the server during development. We assume that the page supports it // but only during development. hasDebugStaticShellQuery && (routeModule.isDev === true || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true)); const isDebugStaticShell = hasDebugStaticShellQuery && isRoutePPREnabled; // We should enable debugging dynamic accesses when the static shell // debugging has been enabled and we're also in development mode. const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true; const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled; // If we're in minimal mode, then try to get the postponed information from // the request metadata. If available, use it for resuming the postponed // render. const minimalPostponed = isRoutePPREnabled ? initialPostponed : undefined; // If PPR is enabled, and this is a RSC request (but not a prefetch), then // we can use this fact to only generate the flight data for the request // because we can't cache the HTML (as it's also dynamic). const isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest; // Need to read this before it's stripped by stripFlightHeaders. We don't // need to transfer it to the request meta because it's only read // within this function; the static segment data should have already been // generated, so we will always either return a static response or a 404. const segmentPrefetchHeader = getRequestMeta(req, 'segmentPrefetchRSCRequest'); // TODO: investigate existing bug with shouldServeStreamingMetadata always // being true for a revalidate due to modifying the base-server this.renderOpts // when fixing this to correct logic it causes hydration issue since we set // serveStreamingMetadata to true during export let serveStreamingMetadata = !userAgent ? true : shouldServeStreamingMetadata(userAgent, nextConfig.htmlLimitedBots); if (isHtmlBot && isRoutePPREnabled) { isSSG = false; serveStreamingMetadata = false; } // In development, we always want to generate dynamic HTML. let supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's // a data request, in which case we only produce static HTML. routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isSSG || // If this request has provided postponed data, it supports dynamic // HTML. typeof initialPostponed === 'string' || // If this is a dynamic RSC request, then this render supports dynamic // HTML (it's dynamic). isDynamicRSCRequest; // When html bots request PPR page, perform the full dynamic rendering. const shouldWaitOnAllReady = isHtmlBot && isRoutePPREnabled; let ssgCacheKey = null; if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) { ssgCacheKey = resolvedPathname; } // the staticPathKey differs from ssgCacheKey since // ssgCacheKey is null in dev since we're always in "dynamic" // mode in dev to bypass the cache, but we still need to honor // dynamicParams = false in dev mode let staticPathKey = ssgCacheKey; if (!staticPathKey && routeModule.isDev) { staticPathKey = resolvedPathname; } // If this is a request for an app path that should be statically generated // and we aren't in the edge runtime, strip the flight headers so it will // generate the static response. if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) { stripFlightHeaders(req.headers); } const ComponentMod = { ...entryBase, tree, pages, GlobalError, handler, routeModule, __next_app__ }; // Before rendering (which initializes component tree modules), we have to // set the reference manifests to our global store so Server Action's // encryption util can access to them at the top level of the page module. if (serverActionsManifest && clientReferenceManifest) { setReferenceManifestsSingleton({ page: srcPage, clientReferenceManifest, serverActionsManifest, serverModuleMap: createServerModuleMap({ serverActionsManifest }) }); } const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); try { const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns); res.setHeader('Vary', varyHeader); const invokeRouteModule = async (span, context)=>{ const nextReq = new NodeNextRequest(req); const nextRes = new NodeNextResponse(res); // TODO: adapt for putting the RDC inside the postponed data // If we're in dev, and this isn't a prefetch or a server action, // we should seed the resume data cache. if (process.env.NODE_ENV === 'development') { if (nextConfig.experimental.cacheComponents && !isPrefetchRSCRequest && !context.renderOpts.isPossibleServerAction) { const warmup = await routeModule.warmup(nextReq, nextRes, context); // If the warmup is successful, we should use the resume data // cache from the warmup. if (warmup.metadata.renderResumeDataCache) { context.renderOpts.renderResumeDataCache = warmup.metadata.renderResumeDataCache; } } } return routeModule.render(nextReq, nextRes, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const doRender = async ({ span, postponed, fallbackRouteParams })=>{ const context = { query, params, page: normalizedSrcPage, sharedContext: { buildId }, serverComponentsHmrCache: getRequestMeta(req, 'serverComponentsHmrCache'), fallbackRouteParams, renderOpts: { App: ()=>null, Document: ()=>null, pageConfig: {}, ComponentMod, Component: interopDefault(ComponentMod), params, routeModule, page: srcPage, postponed, shouldWaitOnAllReady, serveStreamingMetadata, supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse, buildManifest, nextFontManifest, reactLoadableManifest, subresourceIntegrityManifest, serverActionsManifest, clientReferenceManifest, setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus, dir: process.env.NEXT_RUNTIME === 'nodejs' ? require('path').join(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : `${process.cwd()}/${routeModule.relativeProjectDir}`, isDraftMode, isRevalidate: isSSG && !postponed && !isDynamicRSCRequest, botType, isOnDemandRevalidate, isPossibleServerAction, assetPrefix: nextConfig.assetPrefix, nextConfigOutput: nextConfig.output, crossOrigin: nextConfig.crossOrigin, trailingSlash: nextConfig.trailingSlash, previewProps: prerenderManifest.preview, deploymentId: nextConfig.deploymentId, enableTainting: nextConfig.experimental.taint, htmlLimitedBots: nextConfig.htmlLimitedBots, devtoolSegmentExplorer: nextConfig.experimental.devtoolSegmentExplorer, reactMaxHeadersLength: nextConfig.reactMaxHeadersLength, multiZoneDraftMode, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: nextConfig.experimental.cacheLife, basePath: nextConfig.basePath, serverActions: nextConfig.experimental.serverActions, ...isDebugStaticShell || isDebugDynamicAccesses ? { nextExport: true, supportsDynamicResponse: false, isStaticGeneration: true, isRevalidate: true, isDebugDynamicAccesses: isDebugDynamicAccesses } : {}, experimental: { isRoutePPREnabled, expireTime: nextConfig.expireTime, staleTimes: nextConfig.experimental.staleTimes, cacheComponents: Boolean(nextConfig.experimental.cacheComponents), clientSegmentCache: Boolean(nextConfig.experimental.clientSegmentCache), clientParamParsing: Boolean(nextConfig.experimental.clientParamParsing), dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover), inlineCss: Boolean(nextConfig.experimental.inlineCss), authInterrupts: Boolean(nextConfig.experimental.authInterrupts), clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || [] }, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: ()=>{}, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext), err: getRequestMeta(req, 'invokeError'), dev: routeModule.isDev } }; const result = await invokeRouteModule(span, context); const { metadata } = result; const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers. fetchTags: cacheTags } = metadata; if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } // Pull any fetch metrics from the render onto the request. ; req.fetchMetrics = metadata.fetchMetrics; // we don't throw static to dynamic errors in dev as isSSG // is a best guess in dev since we don't have the prerender pass // to know whether the path is actually static or not if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) { const staticBailoutInfo = metadata.staticBailoutInfo; const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), "__NEXT_ERROR_CODE", { value: "E132", enumerable: false, configurable: true }); if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) { const stack = staticBailoutInfo.stack; err.stack = err.message + stack.substring(stack.indexOf('\n')); } throw err; } return { value: { kind: CachedRouteKind.APP_PAGE, html: result, headers, rscData: metadata.flightData, postponed: metadata.postponed, status: metadata.statusCode, segmentData: metadata.segmentData }, cacheControl }; }; const responseGenerator = async ({ hasResolved, previousCacheEntry, isRevalidating, span })=>{ const isProduction = routeModule.isDev === false; const didRespond = hasResolved || res.writableEnded; // skip on-demand revalidate if cache is not present and // revalidate-if-generated is set if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry && !minimalMode) { if (routerServerContext == null ? void 0 : routerServerContext.render404) { await routerServerContext.render404(req, res); } else { res.statusCode = 404; res.end('This page could not be found'); } return null; } let fallbackMode; if (prerenderInfo) { fallbackMode = parseFallbackField(prerenderInfo.fallback); } // When serving a HTML bot request, we want to serve a blocking render and // not the prerendered page. This ensures that the correct content is served // to the bot in the head. if (fallbackMode === FallbackMode.PRERENDER && isBot(userAgent)) { if (!isRoutePPREnabled || isHtmlBot) { fallbackMode = FallbackMode.BLOCKING_STATIC_RENDER; } } if ((previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) === -1) { isOnDemandRevalidate = true; } // TODO: adapt for PPR // only allow on-demand revalidate for fallback: true/blocking // or for prerendered fallback: false paths if (isOnDemandRevalidate && (fallbackMode !== FallbackMode.NOT_FOUND || previousCacheEntry)) { fallbackMode = FallbackMode.BLOCKING_STATIC_RENDER; } if (!minimalMode && fallbackMode !== FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) { // if the page has dynamicParams: false and this pathname wasn't // prerendered trigger the no fallback handling if (// In development, fall through to render to handle missing // getStaticPaths. (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404 fallbackMode === FallbackMode.NOT_FOUND) { throw new NoFallbackError(); } let fallbackResponse; if (isRoutePPREnabled && !isRSCRequest) { const cacheKey = typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : isProduction ? normalizedSrcPage : null; // We use the response cache here to handle the revalidation and // management of the fallback shell. fallbackResponse = await routeModule.handleResponse({ cacheKey, req, nextConfig, routeKind: RouteKind.APP_PAGE, isFallback: true, prerenderManifest, isRoutePPREnabled, responseGenerator: async ()=>doRender({ span, // We pass `undefined` as rendering a fallback isn't resumed // here. postponed: undefined, fallbackRouteParams: // If we're in production or we're debugging the fallback // shell then we should postpone when dynamic params are // accessed. isProduction || isDebugFallbackShell ? getFallbackRouteParams(normalizedSrcPage) : null }), waitUntil: ctx.waitUntil }); // If the fallback response was set to null, then we should return null. if (fallbackResponse === null) return null; // Otherwise, if we did get a fallback response, we should return it. if (fallbackResponse) { // Remove the cache control from the response to prevent it from being // used in the surrounding cache. delete fallbackResponse.cacheControl; return fallbackResponse; } } } // Only requests that aren't revalidating can be resumed. If we have the // minimal postponed data, then we should resume the render with it. const postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined; // When we're in minimal mode, if we're trying to debug the static shell, // we should just return nothing instead of resuming the dynamic render. if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') { return { cacheControl: { revalidate: 1, expire: undefined }, value: { kind: CachedRouteKind.PAGES, html: RenderResult.EMPTY, pageData: {}, headers: undefined, status: undefined } }; } // If this is a dynamic route with PPR enabled and the default route // matches were set, then we should pass the fallback route params to // the renderer as this is a fallback revalidation request. const fallbackRouteParams = pageIsDynamic && isRoutePPREnabled && (getRequestMeta(req, 'renderFallbackShell') || isDebugFallbackShell) ? getFallbackRouteParams(pathname) : null; // Perform the render. return doRender({ span, postponed, fallbackRouteParams }); }; const handleResponse = async (span)=>{ var _cacheEntry_value, _cachedData_headers; const cacheEntry = await routeModule.handleResponse({ cacheKey: ssgCacheKey, responseGenerator: (c)=>responseGenerator({ span, ...c }), routeKind: RouteKind.APP_PAGE, isOnDemandRevalidate, isRoutePPREnabled, req, nextConfig, prerenderManifest, waitUntil: ctx.waitUntil }); if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } // In dev, we should not cache pages for any reason. if (routeModule.isDev) { res.setHeader('Cache-Control', 'no-store, must-revalidate'); } if (!cacheEntry) { if (ssgCacheKey) { // A cache entry might not be generated if a response is written // in `getInitialProps` or `getServerSideProps`, but those shouldn't // have a cache key. If we do have a cache key but we don't end up // with a cache entry, then either Next.js or the application has a // bug that needs fixing. throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), "__NEXT_ERROR_CODE", { value: "E62", enumerable: false, configurable: true }); } return null; } if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_PAGE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E707", enumerable: false, configurable: true }); } const didPostpone = typeof cacheEntry.value.postponed === 'string'; if (isSSG && // We don't want to send a cache header for requests that contain dynamic // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC // request, then we should set the cache header. !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) { if (!minimalMode) { // set x-nextjs-cache header to match the header // we set for the image-optimizer res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Set a header used by the client router to signal the response is static // and should respect the `static` cache staleTime value. res.setHeader(NEXT_IS_PRERENDER_HEADER, '1'); } const { value: cachedData } = cacheEntry; // Coerce the cache control parameter from the render. let cacheControl; // If this is a resume request in minimal mode it is streamed with dynamic // content and should not be cached. if (minimalPostponed) { cacheControl = { revalidate: 0, expire: undefined }; } else if (minimalMode && isRSCRequest && !isPrefetchRSCRequest && isRoutePPREnabled) { cacheControl = { revalidate: 0, expire: undefined }; } else if (!routeModule.isDev) { // If this is a preview mode request, we shouldn't cache it if (isDraftMode) { cacheControl = { revalidate: 0, expire: undefined }; } else if (!isSSG) { if (!res.getHeader('Cache-Control')) { cacheControl = { revalidate: 0, expire: undefined }; } } else if (cacheEntry.cacheControl) { // If the cache entry has a cache control with a revalidate value that's // a number, use it. if (typeof cacheEntry.cacheControl.revalidate === 'number') { var _cacheEntry_cacheControl; if (cacheEntry.cacheControl.revalidate < 1) { throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), "__NEXT_ERROR_CODE", { value: "E22", enumerable: false, configurable: true }); } cacheControl = { revalidate: cacheEntry.cacheControl.revalidate, expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime }; } else { cacheControl = { revalidate: CACHE_ONE_YEAR, expire: undefined }; } } } cacheEntry.cacheControl = cacheControl; if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === CachedRouteKind.APP_PAGE && cachedData.segmentData) { var _cachedData_headers1; // This is a prefetch request issued by the client Segment Cache. These // should never reach the application layer (lambda). We should either // respond from the cache (HIT) or respond with 204 No Content (MISS). // Set a header to indicate that PPR is enabled for this route. This // lets the client distinguish between a regular cache miss and a cache // miss due to PPR being disabled. In other contexts this header is used // to indicate that the response contains dynamic data, but here we're // only using it to indicate that the feature is enabled — the segment // response itself contains whether the data is dynamic. res.setHeader(NEXT_DID_POSTPONE_HEADER, '2'); // Add the cache tags header to the response if it exists and we're in // minimal mode while rendering a static page. const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[NEXT_CACHE_TAGS_HEADER]; if (minimalMode && isSSG && tags && typeof tags === 'string') { res.setHeader(NEXT_CACHE_TAGS_HEADER, tags); } const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader); if (matchedSegment !== undefined) { // Cache hit return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: RenderResult.fromStatic(matchedSegment, RSC_CONTENT_TYPE_HEADER), cacheControl: cacheEntry.cacheControl }); } // Cache miss. Either a cache entry for this route has not been generated // (which technically should not be possible when PPR is enabled, because // at a minimum there should always be a fallback entry) or there's no // match for the requested segment. Respond with a 204 No Content. We // don't bother to respond with 404, because these requests are only // issued as part of a prefetch. res.statusCode = 204; return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: RenderResult.EMPTY, cacheControl: cacheEntry.cacheControl }); } // If there's a callback for `onCacheEntry`, call it with the cache entry // and the revalidate options. const onCacheEntry = getRequestMeta(req, 'onCacheEntry'); if (onCacheEntry) { const finished = await onCacheEntry({ ...cacheEntry, // TODO: remove this when upstream doesn't // always expect this value to be "PAGE" value: { ...cacheEntry.value, kind: 'PAGE' } }, { url: getRequestMeta(req, 'initURL') }); if (finished) { // TODO: maybe we have to end the request? return null; } } // If the request has a postponed state and it's a resume request we // should error. if (didPostpone && minimalPostponed) { throw Object.defineProperty(new Error('Invariant: postponed state should not be present on a resume request'), "__NEXT_ERROR_CODE", { value: "E396", enumerable: false, configurable: true }); } if (cachedData.headers) { const headers = { ...cachedData.headers }; if (!minimalMode || !isSSG) { delete headers[NEXT_CACHE_TAGS_HEADER]; } for (let [key, value] of Object.entries(headers)){ if (typeof value === 'undefined') continue; if (Array.isArray(value)) { for (const v of value){ res.appendHeader(key, v); } } else if (typeof value === 'number') { value = value.toString(); res.appendHeader(key, value); } else { res.appendHeader(key, value); } } } // Add the cache tags header to the response if it exists and we're in // minimal mode while rendering a static page. const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[NEXT_CACHE_TAGS_HEADER]; if (minimalMode && isSSG && tags && typeof tags === 'string') { res.setHeader(NEXT_CACHE_TAGS_HEADER, tags); } // If the request is a data request, then we shouldn't set the status code // from the response because it should always be 200. This should be gated // behind the experimental PPR flag. if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) { res.statusCode = cachedData.status; } // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes if (!minimalMode && cachedData.status && RedirectStatusCode[cachedData.status] && isRSCRequest) { res.statusCode = 200; } // Mark that the request did postpone. if (didPostpone) { res.setHeader(NEXT_DID_POSTPONE_HEADER, '1'); } // we don't go through this block when preview mode is true // as preview mode is a dynamic request (bypasses cache) and doesn't // generate both HTML and payloads in the same request so continue to just // return the generated payload if (isRSCRequest && !isDraftMode) { // If this is a dynamic RSC request, then stream the response. if (typeof cachedData.rscData === 'undefined') { if (cachedData.postponed) { throw Object.defineProperty(new Error('Invariant: Expected postponed to be undefined'), "__NEXT_ERROR_CODE", { value: "E372", enumerable: false, configurable: true }); } return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: cachedData.html, // Dynamic RSC responses cannot be cached, even if they're // configured with `force-static` because we have no way of // distinguishing between `force-static` and pages that have no // postponed state. // TODO: distinguish `force-static` from pages with no postponed state (static) cacheControl: isDynamicRSCRequest ? { revalidate: 0, expire: undefined } : cacheEntry.cacheControl }); } // As this isn't a prefetch request, we should serve the static flight // data. return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: RenderResult.fromStatic(cachedData.rscData, RSC_CONTENT_TYPE_HEADER), cacheControl: cacheEntry.cacheControl }); } // This is a request for HTML data. let body = cachedData.html; // If there's no postponed state, we should just serve the HTML. This // should also be the case for a resume request because it's completed // as a server render (rather than a static render). if (!didPostpone || minimalMode || isRSCRequest) { // If we're in test mode, we should add a sentinel chunk to the response // that's between the static and dynamic parts so we can compare the // chunks and add assertions. if (process.env.__NEXT_TEST_MODE && minimalMode && isRoutePPREnabled && body.contentType === HTML_CONTENT_TYPE_HEADER) { // As we're in minimal mode, the static part would have already been // streamed first. The only part that this streams is the dynamic part // so we should FIRST stream the sentinel and THEN the dynamic part. body.unshift(createPPRBoundarySentinel()); } return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, cacheControl: cacheEntry.cacheControl }); } // If we're debugging the static shell or the dynamic API accesses, we // should just serve the HTML without resuming the render. The returned // HTML will be the static shell so all the Dynamic API's will be used // during static generation. if (isDebugStaticShell || isDebugDynamicAccesses) { // Since we're not resuming the render, we need to at least add the // closing body and html tags to create valid HTML. body.push(new ReadableStream({ start (controller) { controller.enqueue(ENCODED_TAGS.CLOSED.BODY_AND_HTML); controller.close(); } })); return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, cacheControl: { revalidate: 0, expire: undefined } }); } // If we're in test mode, we should add a sentinel chunk to the response // that's between the static and dynamic parts so we can compare the // chunks and add assertions. if (process.env.__NEXT_TEST_MODE) { body.push(createPPRBoundarySentinel()); } // This request has postponed, so let's create a new transformer that the // dynamic data can pipe to that will attach the dynamic data to the end // of the response. const transformer = new TransformStream(); body.push(transformer.readable); // Perform the render again, but this time, provide the postponed state. // We don't await because we want the result to start streaming now, and // we've already chained the transformer's readable to the render result. doRender({ span, postponed: cachedData.postponed, // This is a resume render, not a fallback render, so we don't need to // set this. fallbackRouteParams: null }).then(async (result)=>{ var _result_value; if (!result) { throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), "__NEXT_ERROR_CODE", { value: "E463", enumerable: false, configurable: true }); } if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== CachedRouteKind.APP_PAGE) { var _result_value1; throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E305", enumerable: false, configurable: true }); } // Pipe the resume result to the transformer. await result.value.html.pipeTo(transformer.writable); }).catch((err)=>{ // An error occurred during piping or preparing the render, abort // the transformers writer so we can terminate the stream. transformer.writable.abort(err).catch((e)=>{ console.error("couldn't abort transformer", e); }); }); return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, // We don't want to cache the response if it has postponed data because // the response being sent to the client it's dynamic parts are streamed // to the client on the same request. cacheControl: { revalidate: 0, expire: undefined } }); }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'render', revalidateReason: getRevalidateReason({ isRevalidate: isSSG, isOnDemandRevalidate }) }, routerServerContext); } // rethrow so that we can handle serving error page throw err; } } // TODO: omit this from production builds, only test builds should include it /** * Creates a readable stream that emits a PPR boundary sentinel. * * @returns A readable stream that emits a PPR boundary sentinel. */ function createPPRBoundarySentinel() { return new ReadableStream({ start (controller) { controller.enqueue(new TextEncoder().encode('')); controller.close(); } }); } //# sourceMappingURL=app-page.js.map `     `  `  route  /opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js webpack/DefinePlugin process.env.__NEXT_RELATIVE_DIST_DIRwebpack/DefinePlugin process.env.__NEXT_RELATIVE_PROJECT_DIRwebpack/DefinePlugin process.env.TURBOPACKwebpack/DefinePlugin process.env.__NEXT_MULTI_ZONE_DRAFT_MODEwebpack/DefinePlugin process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGINGwebpack/DefinePlugin process.env.NODE_ENVwebpack/DefinePlugin process.env.NEXT_RUNTIMEwebpack/DefinePlugin process.env.__NEXT_TEST_MODE".next"""false"production""nodejs"04c7cb2bb79cbdf6  pageabsolutePagePathpreferredRegionmiddlewareConfigrelatedModules/support/page/opt/canhelp/apps/web/src/app/support/page.tsx     `createPPRBoundarySentinelmodule0module1module2module3module4page5treepages__next_app_require____next_app_load_chunk____next_app__routeModulehandler @ SyB@ /opt/canhelp/apps/web/src/app/icon.ico/opt/canhelp/apps/web/src/app/icon.jpg/opt/canhelp/apps/web/src/app/icon.jpeg/opt/canhelp/apps/web/src/app/icon.png/opt/canhelp/apps/web/src/app/icon.svg/opt/canhelp/apps/web/src/app/icon.tsx/opt/canhelp/apps/web/src/app/icon.ts/opt/canhelp/apps/web/src/app/icon.jsx/opt/canhelp/apps/web/src/app/icon.js/opt/canhelp/apps/web/src/app/icon0.ico/opt/canhelp/apps/web/src/app/icon0.jpg/opt/canhelp/apps/web/src/app/icon0.jpeg/opt/canhelp/apps/web/src/app/icon0.png/opt/canhelp/apps/web/src/app/icon0.svg/opt/canhelp/apps/web/src/app/icon0.tsx/opt/canhelp/apps/web/src/app/icon0.ts/opt/canhelp/apps/web/src/app/icon0.jsx/opt/canhelp/apps/web/src/app/icon0.js/opt/canhelp/apps/web/src/app/icon1.ico/opt/canhelp/apps/web/src/app/icon1.jpg/opt/canhelp/apps/web/src/app/icon1.jpeg/opt/canhelp/apps/web/src/app/icon1.png/opt/canhelp/apps/web/src/app/icon1.svg/opt/canhelp/apps/web/src/app/icon1.tsx/opt/canhelp/apps/web/src/app/icon1.ts/opt/canhelp/apps/web/src/app/icon1.jsx/opt/canhelp/apps/web/src/app/icon1.js/opt/canhelp/apps/web/src/app/icon2.ico/opt/canhelp/apps/web/src/app/icon2.jpg/opt/canhelp/apps/web/src/app/icon2.jpeg/opt/canhelp/apps/web/src/app/icon2.png/opt/canhelp/apps/web/src/app/icon2.svg/opt/canhelp/apps/web/src/app/icon2.tsx/opt/canhelp/apps/web/src/app/icon2.ts/opt/canhelp/apps/web/src/app/icon2.jsx/opt/canhelp/apps/web/src/app/icon2.js/opt/canhelp/apps/web/src/app/icon3.ico/opt/canhelp/apps/web/src/app/icon3.jpg/opt/canhelp/apps/web/src/app/icon3.jpeg/opt/canhelp/apps/web/src/app/icon3.png/opt/canhelp/apps/web/src/app/icon3.svg/opt/canhelp/apps/web/src/app/icon3.tsx/opt/canhelp/apps/web/src/app/icon3.ts/opt/canhelp/apps/web/src/app/icon3.jsx/opt/canhelp/apps/web/src/app/icon3.js/opt/canhelp/apps/web/src/app/icon4.ico/opt/canhelp/apps/web/src/app/icon4.jpg/opt/canhelp/apps/web/src/app/icon4.jpeg/opt/canhelp/apps/web/src/app/icon4.png/opt/canhelp/apps/web/src/app/icon4.svg/opt/canhelp/apps/web/src/app/icon4.tsx/opt/canhelp/apps/web/src/app/icon4.ts/opt/canhelp/apps/web/src/app/icon4.jsx/opt/canhelp/apps/web/src/app/icon4.js/opt/canhelp/apps/web/src/app/icon5.ico/opt/canhelp/apps/web/src/app/icon5.jpg/opt/canhelp/apps/web/src/app/icon5.jpeg/opt/canhelp/apps/web/src/app/icon5.png/opt/canhelp/apps/web/src/app/icon5.svg/opt/canhelp/apps/web/src/app/icon5.tsx/opt/canhelp/apps/web/src/app/icon5.ts/opt/canhelp/apps/web/src/app/icon5.jsx/opt/canhelp/apps/web/src/app/icon5.js/opt/canhelp/apps/web/src/app/icon6.ico/opt/canhelp/apps/web/src/app/icon6.jpg/opt/canhelp/apps/web/src/app/icon6.jpeg/opt/canhelp/apps/web/src/app/icon6.png/opt/canhelp/apps/web/src/app/icon6.svg/opt/canhelp/apps/web/src/app/icon6.tsx/opt/canhelp/apps/web/src/app/icon6.ts/opt/canhelp/apps/web/src/app/icon6.jsx/opt/canhelp/apps/web/src/app/icon6.js/opt/canhelp/apps/web/src/app/icon7.ico/opt/canhelp/apps/web/src/app/icon7.jpg/opt/canhelp/apps/web/src/app/icon7.jpeg/opt/canhelp/apps/web/src/app/icon7.png/opt/canhelp/apps/web/src/app/icon7.svg/opt/canhelp/apps/web/src/app/icon7.tsx/opt/canhelp/apps/web/src/app/icon7.ts/opt/canhelp/apps/web/src/app/icon7.jsx/opt/canhelp/apps/web/src/app/icon7.js/opt/canhelp/apps/web/src/app/icon8.ico/opt/canhelp/apps/web/src/app/icon8.jpg/opt/canhelp/apps/web/src/app/icon8.jpeg/opt/canhelp/apps/web/src/app/icon8.png/opt/canhelp/apps/web/src/app/icon8.svg/opt/canhelp/apps/web/src/app/icon8.tsx/opt/canhelp/apps/web/src/app/icon8.ts/opt/canhelp/apps/web/src/app/icon8.jsx/opt/canhelp/apps/web/src/app/icon8.js/opt/canhelp/apps/web/src/app/icon9.ico/opt/canhelp/apps/web/src/app/icon9.jpg/opt/canhelp/apps/web/src/app/icon9.jpeg/opt/canhelp/apps/web/src/app/icon9.png/opt/canhelp/apps/web/src/app/icon9.svg/opt/canhelp/apps/web/src/app/icon9.tsx/opt/canhelp/apps/web/src/app/icon9.ts/opt/canhelp/apps/web/src/app/icon9.jsx/opt/canhelp/apps/web/src/app/icon9.js/opt/canhelp/apps/web/src/app/apple-icon.jpg/opt/canhelp/apps/web/src/app/apple-icon.jpeg/opt/canhelp/apps/web/src/app/apple-icon.png/opt/canhelp/apps/web/src/app/apple-icon.tsx/opt/canhelp/apps/web/src/app/apple-icon.ts/opt/canhelp/apps/web/src/app/apple-icon.jsx/opt/canhelp/apps/web/src/app/apple-icon.js/opt/canhelp/apps/web/src/app/apple-icon0.jpg/opt/canhelp/apps/web/src/app/apple-icon0.jpeg/opt/canhelp/apps/web/src/app/apple-icon0.png/opt/canhelp/apps/web/src/app/apple-icon0.tsx/opt/canhelp/apps/web/src/app/apple-icon0.ts/opt/canhelp/apps/web/src/app/apple-icon0.jsx/opt/canhelp/apps/web/src/app/apple-icon0.js/opt/canhelp/apps/web/src/app/apple-icon1.jpg/opt/canhelp/apps/web/src/app/apple-icon1.jpeg/opt/canhelp/apps/web/src/app/apple-icon1.png/opt/canhelp/apps/web/src/app/apple-icon1.tsx/opt/canhelp/apps/web/src/app/apple-icon1.ts/opt/canhelp/apps/web/src/app/apple-icon1.jsx/opt/canhelp/apps/web/src/app/apple-icon1.js/opt/canhelp/apps/web/src/app/apple-icon2.jpg/opt/canhelp/apps/web/src/app/apple-icon2.jpeg/opt/canhelp/apps/web/src/app/apple-icon2.png/opt/canhelp/apps/web/src/app/apple-icon2.tsx/opt/canhelp/apps/web/src/app/apple-icon2.ts/opt/canhelp/apps/web/src/app/apple-icon2.jsx/opt/canhelp/apps/web/src/app/apple-icon2.js/opt/canhelp/apps/web/src/app/apple-icon3.jpg/opt/canhelp/apps/web/src/app/apple-icon3.jpeg/opt/canhelp/apps/web/src/app/apple-icon3.png/opt/canhelp/apps/web/src/app/apple-icon3.tsx/opt/canhelp/apps/web/src/app/apple-icon3.ts/opt/canhelp/apps/web/src/app/apple-icon3.jsx/opt/canhelp/apps/web/src/app/apple-icon3.js/opt/canhelp/apps/web/src/app/apple-icon4.jpg/opt/canhelp/apps/web/src/app/apple-icon4.jpeg/opt/canhelp/apps/web/src/app/apple-icon4.png/opt/canhelp/apps/web/src/app/apple-icon4.tsx/opt/canhelp/apps/web/src/app/apple-icon4.ts/opt/canhelp/apps/web/src/app/apple-icon4.jsx/opt/canhelp/apps/web/src/app/apple-icon4.js/opt/canhelp/apps/web/src/app/apple-icon5.jpg/opt/canhelp/apps/web/src/app/apple-icon5.jpeg/opt/canhelp/apps/web/src/app/apple-icon5.png/opt/canhelp/apps/web/src/app/apple-icon5.tsx/opt/canhelp/apps/web/src/app/apple-icon5.ts/opt/canhelp/apps/web/src/app/apple-icon5.jsx/opt/canhelp/apps/web/src/app/apple-icon5.js/opt/canhelp/apps/web/src/app/apple-icon6.jpg/opt/canhelp/apps/web/src/app/apple-icon6.jpeg/opt/canhelp/apps/web/src/app/apple-icon6.png/opt/canhelp/apps/web/src/app/apple-icon6.tsx/opt/canhelp/apps/web/src/app/apple-icon6.ts/opt/canhelp/apps/web/src/app/apple-icon6.jsx/opt/canhelp/apps/web/src/app/apple-icon6.js/opt/canhelp/apps/web/src/app/apple-icon7.jpg/opt/canhelp/apps/web/src/app/apple-icon7.jpeg/opt/canhelp/apps/web/src/app/apple-icon7.png/opt/canhelp/apps/web/src/app/apple-icon7.tsx/opt/canhelp/apps/web/src/app/apple-icon7.ts/opt/canhelp/apps/web/src/app/apple-icon7.jsx/opt/canhelp/apps/web/src/app/apple-icon7.js/opt/canhelp/apps/web/src/app/apple-icon8.jpg/opt/canhelp/apps/web/src/app/apple-icon8.jpeg/opt/canhelp/apps/web/src/app/apple-icon8.png/opt/canhelp/apps/web/src/app/apple-icon8.tsx/opt/canhelp/apps/web/src/app/apple-icon8.ts/opt/canhelp/apps/web/src/app/apple-icon8.jsx/opt/canhelp/apps/web/src/app/apple-icon8.js/opt/canhelp/apps/web/src/app/apple-icon9.jpg/opt/canhelp/apps/web/src/app/apple-icon9.jpeg/opt/canhelp/apps/web/src/app/apple-icon9.png/opt/canhelp/apps/web/src/app/apple-icon9.tsx/opt/canhelp/apps/web/src/app/apple-icon9.ts/opt/canhelp/apps/web/src/app/apple-icon9.jsx/opt/canhelp/apps/web/src/app/apple-icon9.js/opt/canhelp/apps/web/src/app/opengraph-image.jpg/opt/canhelp/apps/web/src/app/opengraph-image.jpeg/opt/canhelp/apps/web/src/app/opengraph-image.png/opt/canhelp/apps/web/src/app/opengraph-image.gif/opt/canhelp/apps/web/src/app/opengraph-image.tsx/opt/canhelp/apps/web/src/app/opengraph-image.ts/opt/canhelp/apps/web/src/app/opengraph-image.jsx/opt/canhelp/apps/web/src/app/opengraph-image.js/opt/canhelp/apps/web/src/app/opengraph-image0.jpg/opt/canhelp/apps/web/src/app/opengraph-image0.jpeg/opt/canhelp/apps/web/src/app/opengraph-image0.png/opt/canhelp/apps/web/src/app/opengraph-image0.gif/opt/canhelp/apps/web/src/app/opengraph-image0.tsx/opt/canhelp/apps/web/src/app/opengraph-image0.ts/opt/canhelp/apps/web/src/app/opengraph-image0.jsx/opt/canhelp/apps/web/src/app/opengraph-image0.js/opt/canhelp/apps/web/src/app/opengraph-image1.jpg/opt/canhelp/apps/web/src/app/opengraph-image1.jpeg/opt/canhelp/apps/web/src/app/opengraph-image1.png/opt/canhelp/apps/web/src/app/opengraph-image1.gif/opt/canhelp/apps/web/src/app/opengraph-image1.tsx/opt/canhelp/apps/web/src/app/opengraph-image1.ts/opt/canhelp/apps/web/src/app/opengraph-image1.jsx/opt/canhelp/apps/web/src/app/opengraph-image1.js/opt/canhelp/apps/web/src/app/opengraph-image2.jpg/opt/canhelp/apps/web/src/app/opengraph-image2.jpeg/opt/canhelp/apps/web/src/app/opengraph-image2.png/opt/canhelp/apps/web/src/app/opengraph-image2.gif/opt/canhelp/apps/web/src/app/opengraph-image2.tsx/opt/canhelp/apps/web/src/app/opengraph-image2.ts/opt/canhelp/apps/web/src/app/opengraph-image2.jsx/opt/canhelp/apps/web/src/app/opengraph-image2.js/opt/canhelp/apps/web/src/app/opengraph-image3.jpg/opt/canhelp/apps/web/src/app/opengraph-image3.jpeg/opt/canhelp/apps/web/src/app/opengraph-image3.png/opt/canhelp/apps/web/src/app/opengraph-image3.gif/opt/canhelp/apps/web/src/app/opengraph-image3.tsx/opt/canhelp/apps/web/src/app/opengraph-image3.ts/opt/canhelp/apps/web/src/app/opengraph-image3.jsx/opt/canhelp/apps/web/src/app/opengraph-image3.js/opt/canhelp/apps/web/src/app/opengraph-image4.jpg/opt/canhelp/apps/web/src/app/opengraph-image4.jpeg/opt/canhelp/apps/web/src/app/opengraph-image4.png/opt/canhelp/apps/web/src/app/opengraph-image4.gif/opt/canhelp/apps/web/src/app/opengraph-image4.tsx/opt/canhelp/apps/web/src/app/opengraph-image4.ts/opt/canhelp/apps/web/src/app/opengraph-image4.jsx/opt/canhelp/apps/web/src/app/opengraph-image4.js/opt/canhelp/apps/web/src/app/opengraph-image5.jpg/opt/canhelp/apps/web/src/app/opengraph-image5.jpeg/opt/canhelp/apps/web/src/app/opengraph-image5.png/opt/canhelp/apps/web/src/app/opengraph-image5.gif/opt/canhelp/apps/web/src/app/opengraph-image5.tsx/opt/canhelp/apps/web/src/app/opengraph-image5.ts/opt/canhelp/apps/web/src/app/opengraph-image5.jsx/opt/canhelp/apps/web/src/app/opengraph-image5.js/opt/canhelp/apps/web/src/app/opengraph-image6.jpg/opt/canhelp/apps/web/src/app/opengraph-image6.jpeg/opt/canhelp/apps/web/src/app/opengraph-image6.png/opt/canhelp/apps/web/src/app/opengraph-image6.gif/opt/canhelp/apps/web/src/app/opengraph-image6.tsx/opt/canhelp/apps/web/src/app/opengraph-image6.ts/opt/canhelp/apps/web/src/app/opengraph-image6.jsx/opt/canhelp/apps/web/src/app/opengraph-image6.js/opt/canhelp/apps/web/src/app/opengraph-image7.jpg/opt/canhelp/apps/web/src/app/opengraph-image7.jpeg/opt/canhelp/apps/web/src/app/opengraph-image7.png/opt/canhelp/apps/web/src/app/opengraph-image7.gif/opt/canhelp/apps/web/src/app/opengraph-image7.tsx/opt/canhelp/apps/web/src/app/opengraph-image7.ts/opt/canhelp/apps/web/src/app/opengraph-image7.jsx/opt/canhelp/apps/web/src/app/opengraph-image7.js/opt/canhelp/apps/web/src/app/opengraph-image8.jpg/opt/canhelp/apps/web/src/app/opengraph-image8.jpeg/opt/canhelp/apps/web/src/app/opengraph-image8.png/opt/canhelp/apps/web/src/app/opengraph-image8.gif/opt/canhelp/apps/web/src/app/opengraph-image8.tsx/opt/canhelp/apps/web/src/app/opengraph-image8.ts/opt/canhelp/apps/web/src/app/opengraph-image8.jsx/opt/canhelp/apps/web/src/app/opengraph-image8.js/opt/canhelp/apps/web/src/app/opengraph-image9.jpg/opt/canhelp/apps/web/src/app/opengraph-image9.jpeg/opt/canhelp/apps/web/src/app/opengraph-image9.png/opt/canhelp/apps/web/src/app/opengraph-image9.gif/opt/canhelp/apps/web/src/app/opengraph-image9.tsx/opt/canhelp/apps/web/src/app/opengraph-image9.ts/opt/canhelp/apps/web/src/app/opengraph-image9.jsx/opt/canhelp/apps/web/src/app/opengraph-image9.js/opt/canhelp/apps/web/src/app/twitter-image.jpg/opt/canhelp/apps/web/src/app/twitter-image.jpeg/opt/canhelp/apps/web/src/app/twitter-image.png/opt/canhelp/apps/web/src/app/twitter-image.gif/opt/canhelp/apps/web/src/app/twitter-image.tsx/opt/canhelp/apps/web/src/app/twitter-image.ts/opt/canhelp/apps/web/src/app/twitter-image.jsx/opt/canhelp/apps/web/src/app/twitter-image.js/opt/canhelp/apps/web/src/app/twitter-image0.jpg/opt/canhelp/apps/web/src/app/twitter-image0.jpeg/opt/canhelp/apps/web/src/app/twitter-image0.png/opt/canhelp/apps/web/src/app/twitter-image0.gif/opt/canhelp/apps/web/src/app/twitter-image0.tsx/opt/canhelp/apps/web/src/app/twitter-image0.ts/opt/canhelp/apps/web/src/app/twitter-image0.jsx/opt/canhelp/apps/web/src/app/twitter-image0.js/opt/canhelp/apps/web/src/app/twitter-image1.jpg/opt/canhelp/apps/web/src/app/twitter-image1.jpeg/opt/canhelp/apps/web/src/app/twitter-image1.png/opt/canhelp/apps/web/src/app/twitter-image1.gif/opt/canhelp/apps/web/src/app/twitter-image1.tsx/opt/canhelp/apps/web/src/app/twitter-image1.ts/opt/canhelp/apps/web/src/app/twitter-image1.jsx/opt/canhelp/apps/web/src/app/twitter-image1.js/opt/canhelp/apps/web/src/app/twitter-image2.jpg/opt/canhelp/apps/web/src/app/twitter-image2.jpeg/opt/canhelp/apps/web/src/app/twitter-image2.png/opt/canhelp/apps/web/src/app/twitter-image2.gif/opt/canhelp/apps/web/src/app/twitter-image2.tsx/opt/canhelp/apps/web/src/app/twitter-image2.ts/opt/canhelp/apps/web/src/app/twitter-image2.jsx/opt/canhelp/apps/web/src/app/twitter-image2.js/opt/canhelp/apps/web/src/app/twitter-image3.jpg/opt/canhelp/apps/web/src/app/twitter-image3.jpeg/opt/canhelp/apps/web/src/app/twitter-image3.png/opt/canhelp/apps/web/src/app/twitter-image3.gif/opt/canhelp/apps/web/src/app/twitter-image3.tsx/opt/canhelp/apps/web/src/app/twitter-image3.ts/opt/canhelp/apps/web/src/app/twitter-image3.jsx/opt/canhelp/apps/web/src/app/twitter-image3.js/opt/canhelp/apps/web/src/app/twitter-image4.jpg/opt/canhelp/apps/web/src/app/twitter-image4.jpeg/opt/canhelp/apps/web/src/app/twitter-image4.png/opt/canhelp/apps/web/src/app/twitter-image4.gif/opt/canhelp/apps/web/src/app/twitter-image4.tsx/opt/canhelp/apps/web/src/app/twitter-image4.ts/opt/canhelp/apps/web/src/app/twitter-image4.jsx/opt/canhelp/apps/web/src/app/twitter-image4.js/opt/canhelp/apps/web/src/app/twitter-image5.jpg/opt/canhelp/apps/web/src/app/twitter-image5.jpeg/opt/canhelp/apps/web/src/app/twitter-image5.png/opt/canhelp/apps/web/src/app/twitter-image5.gif/opt/canhelp/apps/web/src/app/twitter-image5.tsx/opt/canhelp/apps/web/src/app/twitter-image5.ts/opt/canhelp/apps/web/src/app/twitter-image5.jsx/opt/canhelp/apps/web/src/app/twitter-image5.js/opt/canhelp/apps/web/src/app/twitter-image6.jpg/opt/canhelp/apps/web/src/app/twitter-image6.jpeg/opt/canhelp/apps/web/src/app/twitter-image6.png/opt/canhelp/apps/web/src/app/twitter-image6.gif/opt/canhelp/apps/web/src/app/twitter-image6.tsx/opt/canhelp/apps/web/src/app/twitter-image6.ts/opt/canhelp/apps/web/src/app/twitter-image6.jsx/opt/canhelp/apps/web/src/app/twitter-image6.js/opt/canhelp/apps/web/src/app/twitter-image7.jpg/opt/canhelp/apps/web/src/app/twitter-image7.jpeg/opt/canhelp/apps/web/src/app/twitter-image7.png/opt/canhelp/apps/web/src/app/twitter-image7.gif/opt/canhelp/apps/web/src/app/twitter-image7.tsx/opt/canhelp/apps/web/src/app/twitter-image7.ts/opt/canhelp/apps/web/src/app/twitter-image7.jsx/opt/canhelp/apps/web/src/app/twitter-image7.js/opt/canhelp/apps/web/src/app/twitter-image8.jpg/opt/canhelp/apps/web/src/app/twitter-image8.jpeg/opt/canhelp/apps/web/src/app/twitter-image8.png/opt/canhelp/apps/web/src/app/twitter-image8.gif/opt/canhelp/apps/web/src/app/twitter-image8.tsx/opt/canhelp/apps/web/src/app/twitter-image8.ts/opt/canhelp/apps/web/src/app/twitter-image8.jsx/opt/canhelp/apps/web/src/app/twitter-image8.js/opt/canhelp/apps/web/src/app/twitter-image9.jpg/opt/canhelp/apps/web/src/app/twitter-image9.jpeg/opt/canhelp/apps/web/src/app/twitter-image9.png/opt/canhelp/apps/web/src/app/twitter-image9.gif/opt/canhelp/apps/web/src/app/twitter-image9.tsx/opt/canhelp/apps/web/src/app/twitter-image9.ts/opt/canhelp/apps/web/src/app/twitter-image9.jsx/opt/canhelp/apps/web/src/app/twitter-image9.js/opt/canhelp/apps/web/src/app/favicon.ico/opt/canhelp/apps/web/src/app/manifest.webmanifest/opt/canhelp/apps/web/src/app/manifest.json/opt/canhelp/apps/web/src/app/manifest.tsx/opt/canhelp/apps/web/src/app/manifest.ts/opt/canhelp/apps/web/src/app/manifest.jsx/opt/canhelp/apps/web/src/app/manifest.js/opt/canhelp/apps/web/src/app/layout.tsx/opt/canhelp/apps/web/src/app/layout.ts/opt/canhelp/apps/web/src/app/layout.jsx/opt/canhelp/apps/web/src/app/layout.js/opt/canhelp/apps/web/src/app/template.tsx/opt/canhelp/apps/web/src/app/error.tsx/opt/canhelp/apps/web/src/app/loading.tsx/opt/canhelp/apps/web/src/app/global-error.tsx/opt/canhelp/apps/web/src/app/not-found.tsx/opt/canhelp/apps/web/src/app/not-found.ts/opt/canhelp/apps/web/src/app/not-found.jsx/opt/canhelp/apps/web/src/app/not-found.js/opt/canhelp/apps/web/src/app/forbidden.tsx/opt/canhelp/apps/web/src/app/unauthorized.tsx/opt/canhelp/apps/web/src/app/template.ts/opt/canhelp/apps/web/src/app/error.ts/opt/canhelp/apps/web/src/app/loading.ts/opt/canhelp/apps/web/src/app/global-error.ts/opt/canhelp/apps/web/src/app/forbidden.ts/opt/canhelp/apps/web/src/app/unauthorized.ts/opt/canhelp/apps/web/src/app/template.jsx/opt/canhelp/apps/web/src/app/error.jsx/opt/canhelp/apps/web/src/app/loading.jsx/opt/canhelp/apps/web/src/app/global-error.jsx/opt/canhelp/apps/web/src/app/forbidden.jsx/opt/canhelp/apps/web/src/app/unauthorized.jsx/opt/canhelp/apps/web/src/app/template.js/opt/canhelp/apps/web/src/app/error.js/opt/canhelp/apps/web/src/app/loading.js/opt/canhelp/apps/web/src/app/global-error.js/opt/canhelp/apps/web/src/app/forbidden.js/opt/canhelp/apps/web/src/app/unauthorized.js/opt/canhelp/apps/web/src/app/support/layout.tsx/opt/canhelp/apps/web/src/app/support/template.tsx/opt/canhelp/apps/web/src/app/support/error.tsx/opt/canhelp/apps/web/src/app/support/loading.tsx/opt/canhelp/apps/web/src/app/support/global-error.tsx/opt/canhelp/apps/web/src/app/support/not-found.tsx/opt/canhelp/apps/web/src/app/support/forbidden.tsx/opt/canhelp/apps/web/src/app/support/unauthorized.tsx/opt/canhelp/apps/web/src/app/support/layout.ts/opt/canhelp/apps/web/src/app/support/template.ts/opt/canhelp/apps/web/src/app/support/error.ts/opt/canhelp/apps/web/src/app/support/loading.ts/opt/canhelp/apps/web/src/app/support/global-error.ts/opt/canhelp/apps/web/src/app/support/not-found.ts/opt/canhelp/apps/web/src/app/support/forbidden.ts/opt/canhelp/apps/web/src/app/support/unauthorized.ts/opt/canhelp/apps/web/src/app/support/layout.jsx/opt/canhelp/apps/web/src/app/support/template.jsx/opt/canhelp/apps/web/src/app/support/error.jsx/opt/canhelp/apps/web/src/app/support/loading.jsx/opt/canhelp/apps/web/src/app/support/global-error.jsx/opt/canhelp/apps/web/src/app/support/not-found.jsx/opt/canhelp/apps/web/src/app/support/forbidden.jsx/opt/canhelp/apps/web/src/app/support/unauthorized.jsx/opt/canhelp/apps/web/src/app/support/layout.js/opt/canhelp/apps/web/src/app/support/template.js/opt/canhelp/apps/web/src/app/support/error.js/opt/canhelp/apps/web/src/app/support/loading.js/opt/canhelp/apps/web/src/app/support/global-error.js/opt/canhelp/apps/web/src/app/support/not-found.js/opt/canhelp/apps/web/src/app/support/forbidden.js/opt/canhelp/apps/web/src/app/support/unauthorized.js/opt/canhelp/apps/web/src/app/support/icon.ico/opt/canhelp/apps/web/src/app/support/icon.jpg/opt/canhelp/apps/web/src/app/support/icon.jpeg/opt/canhelp/apps/web/src/app/support/icon.png/opt/canhelp/apps/web/src/app/support/icon.svg/opt/canhelp/apps/web/src/app/support/icon.tsx/opt/canhelp/apps/web/src/app/support/icon.ts/opt/canhelp/apps/web/src/app/support/icon.jsx/opt/canhelp/apps/web/src/app/support/icon.js/opt/canhelp/apps/web/src/app/support/icon0.ico/opt/canhelp/apps/web/src/app/support/icon0.jpg/opt/canhelp/apps/web/src/app/support/icon0.jpeg/opt/canhelp/apps/web/src/app/support/icon0.png/opt/canhelp/apps/web/src/app/support/icon0.svg/opt/canhelp/apps/web/src/app/support/icon0.tsx/opt/canhelp/apps/web/src/app/support/icon0.ts/opt/canhelp/apps/web/src/app/support/icon0.jsx/opt/canhelp/apps/web/src/app/support/icon0.js/opt/canhelp/apps/web/src/app/support/icon1.ico/opt/canhelp/apps/web/src/app/support/icon1.jpg/opt/canhelp/apps/web/src/app/support/icon1.jpeg/opt/canhelp/apps/web/src/app/support/icon1.png/opt/canhelp/apps/web/src/app/support/icon1.svg/opt/canhelp/apps/web/src/app/support/icon1.tsx/opt/canhelp/apps/web/src/app/support/icon1.ts/opt/canhelp/apps/web/src/app/support/icon1.jsx/opt/canhelp/apps/web/src/app/support/icon1.js/opt/canhelp/apps/web/src/app/support/icon2.ico/opt/canhelp/apps/web/src/app/support/icon2.jpg/opt/canhelp/apps/web/src/app/support/icon2.jpeg/opt/canhelp/apps/web/src/app/support/icon2.png/opt/canhelp/apps/web/src/app/support/icon2.svg/opt/canhelp/apps/web/src/app/support/icon2.tsx/opt/canhelp/apps/web/src/app/support/icon2.ts/opt/canhelp/apps/web/src/app/support/icon2.jsx/opt/canhelp/apps/web/src/app/support/icon2.js/opt/canhelp/apps/web/src/app/support/icon3.ico/opt/canhelp/apps/web/src/app/support/icon3.jpg/opt/canhelp/apps/web/src/app/support/icon3.jpeg/opt/canhelp/apps/web/src/app/support/icon3.png/opt/canhelp/apps/web/src/app/support/icon3.svg/opt/canhelp/apps/web/src/app/support/icon3.tsx/opt/canhelp/apps/web/src/app/support/icon3.ts/opt/canhelp/apps/web/src/app/support/icon3.jsx/opt/canhelp/apps/web/src/app/support/icon3.js/opt/canhelp/apps/web/src/app/support/icon4.ico/opt/canhelp/apps/web/src/app/support/icon4.jpg/opt/canhelp/apps/web/src/app/support/icon4.jpeg/opt/canhelp/apps/web/src/app/support/icon4.png/opt/canhelp/apps/web/src/app/support/icon4.svg/opt/canhelp/apps/web/src/app/support/icon4.tsx/opt/canhelp/apps/web/src/app/support/icon4.ts/opt/canhelp/apps/web/src/app/support/icon4.jsx/opt/canhelp/apps/web/src/app/support/icon4.js/opt/canhelp/apps/web/src/app/support/icon5.ico/opt/canhelp/apps/web/src/app/support/icon5.jpg/opt/canhelp/apps/web/src/app/support/icon5.jpeg/opt/canhelp/apps/web/src/app/support/icon5.png/opt/canhelp/apps/web/src/app/support/icon5.svg/opt/canhelp/apps/web/src/app/support/icon5.tsx/opt/canhelp/apps/web/src/app/support/icon5.ts/opt/canhelp/apps/web/src/app/support/icon5.jsx/opt/canhelp/apps/web/src/app/support/icon5.js/opt/canhelp/apps/web/src/app/support/icon6.ico/opt/canhelp/apps/web/src/app/support/icon6.jpg/opt/canhelp/apps/web/src/app/support/icon6.jpeg/opt/canhelp/apps/web/src/app/support/icon6.png/opt/canhelp/apps/web/src/app/support/icon6.svg/opt/canhelp/apps/web/src/app/support/icon6.tsx/opt/canhelp/apps/web/src/app/support/icon6.ts/opt/canhelp/apps/web/src/app/support/icon6.jsx/opt/canhelp/apps/web/src/app/support/icon6.js/opt/canhelp/apps/web/src/app/support/icon7.ico/opt/canhelp/apps/web/src/app/support/icon7.jpg/opt/canhelp/apps/web/src/app/support/icon7.jpeg/opt/canhelp/apps/web/src/app/support/icon7.png/opt/canhelp/apps/web/src/app/support/icon7.svg/opt/canhelp/apps/web/src/app/support/icon7.tsx/opt/canhelp/apps/web/src/app/support/icon7.ts/opt/canhelp/apps/web/src/app/support/icon7.jsx/opt/canhelp/apps/web/src/app/support/icon7.js/opt/canhelp/apps/web/src/app/support/icon8.ico/opt/canhelp/apps/web/src/app/support/icon8.jpg/opt/canhelp/apps/web/src/app/support/icon8.jpeg/opt/canhelp/apps/web/src/app/support/icon8.png/opt/canhelp/apps/web/src/app/support/icon8.svg/opt/canhelp/apps/web/src/app/support/icon8.tsx/opt/canhelp/apps/web/src/app/support/icon8.ts/opt/canhelp/apps/web/src/app/support/icon8.jsx/opt/canhelp/apps/web/src/app/support/icon8.js/opt/canhelp/apps/web/src/app/support/icon9.ico/opt/canhelp/apps/web/src/app/support/icon9.jpg/opt/canhelp/apps/web/src/app/support/icon9.jpeg/opt/canhelp/apps/web/src/app/support/icon9.png/opt/canhelp/apps/web/src/app/support/icon9.svg/opt/canhelp/apps/web/src/app/support/icon9.tsx/opt/canhelp/apps/web/src/app/support/icon9.ts/opt/canhelp/apps/web/src/app/support/icon9.jsx/opt/canhelp/apps/web/src/app/support/icon9.js/opt/canhelp/apps/web/src/app/support/apple-icon.jpg/opt/canhelp/apps/web/src/app/support/apple-icon.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon.png/opt/canhelp/apps/web/src/app/support/apple-icon.tsx/opt/canhelp/apps/web/src/app/support/apple-icon.ts/opt/canhelp/apps/web/src/app/support/apple-icon.jsx/opt/canhelp/apps/web/src/app/support/apple-icon.js/opt/canhelp/apps/web/src/app/support/apple-icon0.jpg/opt/canhelp/apps/web/src/app/support/apple-icon0.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon0.png/opt/canhelp/apps/web/src/app/support/apple-icon0.tsx/opt/canhelp/apps/web/src/app/support/apple-icon0.ts/opt/canhelp/apps/web/src/app/support/apple-icon0.jsx/opt/canhelp/apps/web/src/app/support/apple-icon0.js/opt/canhelp/apps/web/src/app/support/apple-icon1.jpg/opt/canhelp/apps/web/src/app/support/apple-icon1.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon1.png/opt/canhelp/apps/web/src/app/support/apple-icon1.tsx/opt/canhelp/apps/web/src/app/support/apple-icon1.ts/opt/canhelp/apps/web/src/app/support/apple-icon1.jsx/opt/canhelp/apps/web/src/app/support/apple-icon1.js/opt/canhelp/apps/web/src/app/support/apple-icon2.jpg/opt/canhelp/apps/web/src/app/support/apple-icon2.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon2.png/opt/canhelp/apps/web/src/app/support/apple-icon2.tsx/opt/canhelp/apps/web/src/app/support/apple-icon2.ts/opt/canhelp/apps/web/src/app/support/apple-icon2.jsx/opt/canhelp/apps/web/src/app/support/apple-icon2.js/opt/canhelp/apps/web/src/app/support/apple-icon3.jpg/opt/canhelp/apps/web/src/app/support/apple-icon3.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon3.png/opt/canhelp/apps/web/src/app/support/apple-icon3.tsx/opt/canhelp/apps/web/src/app/support/apple-icon3.ts/opt/canhelp/apps/web/src/app/support/apple-icon3.jsx/opt/canhelp/apps/web/src/app/support/apple-icon3.js/opt/canhelp/apps/web/src/app/support/apple-icon4.jpg/opt/canhelp/apps/web/src/app/support/apple-icon4.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon4.png/opt/canhelp/apps/web/src/app/support/apple-icon4.tsx/opt/canhelp/apps/web/src/app/support/apple-icon4.ts/opt/canhelp/apps/web/src/app/support/apple-icon4.jsx/opt/canhelp/apps/web/src/app/support/apple-icon4.js/opt/canhelp/apps/web/src/app/support/apple-icon5.jpg/opt/canhelp/apps/web/src/app/support/apple-icon5.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon5.png/opt/canhelp/apps/web/src/app/support/apple-icon5.tsx/opt/canhelp/apps/web/src/app/support/apple-icon5.ts/opt/canhelp/apps/web/src/app/support/apple-icon5.jsx/opt/canhelp/apps/web/src/app/support/apple-icon5.js/opt/canhelp/apps/web/src/app/support/apple-icon6.jpg/opt/canhelp/apps/web/src/app/support/apple-icon6.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon6.png/opt/canhelp/apps/web/src/app/support/apple-icon6.tsx/opt/canhelp/apps/web/src/app/support/apple-icon6.ts/opt/canhelp/apps/web/src/app/support/apple-icon6.jsx/opt/canhelp/apps/web/src/app/support/apple-icon6.js/opt/canhelp/apps/web/src/app/support/apple-icon7.jpg/opt/canhelp/apps/web/src/app/support/apple-icon7.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon7.png/opt/canhelp/apps/web/src/app/support/apple-icon7.tsx/opt/canhelp/apps/web/src/app/support/apple-icon7.ts/opt/canhelp/apps/web/src/app/support/apple-icon7.jsx/opt/canhelp/apps/web/src/app/support/apple-icon7.js/opt/canhelp/apps/web/src/app/support/apple-icon8.jpg/opt/canhelp/apps/web/src/app/support/apple-icon8.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon8.png/opt/canhelp/apps/web/src/app/support/apple-icon8.tsx/opt/canhelp/apps/web/src/app/support/apple-icon8.ts/opt/canhelp/apps/web/src/app/support/apple-icon8.jsx/opt/canhelp/apps/web/src/app/support/apple-icon8.js/opt/canhelp/apps/web/src/app/support/apple-icon9.jpg/opt/canhelp/apps/web/src/app/support/apple-icon9.jpeg/opt/canhelp/apps/web/src/app/support/apple-icon9.png/opt/canhelp/apps/web/src/app/support/apple-icon9.tsx/opt/canhelp/apps/web/src/app/support/apple-icon9.ts/opt/canhelp/apps/web/src/app/support/apple-icon9.jsx/opt/canhelp/apps/web/src/app/support/apple-icon9.js/opt/canhelp/apps/web/src/app/support/opengraph-image.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image.png/opt/canhelp/apps/web/src/app/support/opengraph-image.gif/opt/canhelp/apps/web/src/app/support/opengraph-image.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image.ts/opt/canhelp/apps/web/src/app/support/opengraph-image.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image.js/opt/canhelp/apps/web/src/app/support/opengraph-image0.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image0.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image0.png/opt/canhelp/apps/web/src/app/support/opengraph-image0.gif/opt/canhelp/apps/web/src/app/support/opengraph-image0.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image0.ts/opt/canhelp/apps/web/src/app/support/opengraph-image0.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image0.js/opt/canhelp/apps/web/src/app/support/opengraph-image1.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image1.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image1.png/opt/canhelp/apps/web/src/app/support/opengraph-image1.gif/opt/canhelp/apps/web/src/app/support/opengraph-image1.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image1.ts/opt/canhelp/apps/web/src/app/support/opengraph-image1.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image1.js/opt/canhelp/apps/web/src/app/support/opengraph-image2.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image2.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image2.png/opt/canhelp/apps/web/src/app/support/opengraph-image2.gif/opt/canhelp/apps/web/src/app/support/opengraph-image2.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image2.ts/opt/canhelp/apps/web/src/app/support/opengraph-image2.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image2.js/opt/canhelp/apps/web/src/app/support/opengraph-image3.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image3.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image3.png/opt/canhelp/apps/web/src/app/support/opengraph-image3.gif/opt/canhelp/apps/web/src/app/support/opengraph-image3.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image3.ts/opt/canhelp/apps/web/src/app/support/opengraph-image3.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image3.js/opt/canhelp/apps/web/src/app/support/opengraph-image4.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image4.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image4.png/opt/canhelp/apps/web/src/app/support/opengraph-image4.gif/opt/canhelp/apps/web/src/app/support/opengraph-image4.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image4.ts/opt/canhelp/apps/web/src/app/support/opengraph-image4.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image4.js/opt/canhelp/apps/web/src/app/support/opengraph-image5.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image5.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image5.png/opt/canhelp/apps/web/src/app/support/opengraph-image5.gif/opt/canhelp/apps/web/src/app/support/opengraph-image5.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image5.ts/opt/canhelp/apps/web/src/app/support/opengraph-image5.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image5.js/opt/canhelp/apps/web/src/app/support/opengraph-image6.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image6.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image6.png/opt/canhelp/apps/web/src/app/support/opengraph-image6.gif/opt/canhelp/apps/web/src/app/support/opengraph-image6.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image6.ts/opt/canhelp/apps/web/src/app/support/opengraph-image6.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image6.js/opt/canhelp/apps/web/src/app/support/opengraph-image7.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image7.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image7.png/opt/canhelp/apps/web/src/app/support/opengraph-image7.gif/opt/canhelp/apps/web/src/app/support/opengraph-image7.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image7.ts/opt/canhelp/apps/web/src/app/support/opengraph-image7.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image7.js/opt/canhelp/apps/web/src/app/support/opengraph-image8.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image8.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image8.png/opt/canhelp/apps/web/src/app/support/opengraph-image8.gif/opt/canhelp/apps/web/src/app/support/opengraph-image8.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image8.ts/opt/canhelp/apps/web/src/app/support/opengraph-image8.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image8.js/opt/canhelp/apps/web/src/app/support/opengraph-image9.jpg/opt/canhelp/apps/web/src/app/support/opengraph-image9.jpeg/opt/canhelp/apps/web/src/app/support/opengraph-image9.png/opt/canhelp/apps/web/src/app/support/opengraph-image9.gif/opt/canhelp/apps/web/src/app/support/opengraph-image9.tsx/opt/canhelp/apps/web/src/app/support/opengraph-image9.ts/opt/canhelp/apps/web/src/app/support/opengraph-image9.jsx/opt/canhelp/apps/web/src/app/support/opengraph-image9.js/opt/canhelp/apps/web/src/app/support/twitter-image.jpg/opt/canhelp/apps/web/src/app/support/twitter-image.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image.png/opt/canhelp/apps/web/src/app/support/twitter-image.gif/opt/canhelp/apps/web/src/app/support/twitter-image.tsx/opt/canhelp/apps/web/src/app/support/twitter-image.ts/opt/canhelp/apps/web/src/app/support/twitter-image.jsx/opt/canhelp/apps/web/src/app/support/twitter-image.js/opt/canhelp/apps/web/src/app/support/twitter-image0.jpg/opt/canhelp/apps/web/src/app/support/twitter-image0.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image0.png/opt/canhelp/apps/web/src/app/support/twitter-image0.gif/opt/canhelp/apps/web/src/app/support/twitter-image0.tsx/opt/canhelp/apps/web/src/app/support/twitter-image0.ts/opt/canhelp/apps/web/src/app/support/twitter-image0.jsx/opt/canhelp/apps/web/src/app/support/twitter-image0.js/opt/canhelp/apps/web/src/app/support/twitter-image1.jpg/opt/canhelp/apps/web/src/app/support/twitter-image1.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image1.png/opt/canhelp/apps/web/src/app/support/twitter-image1.gif/opt/canhelp/apps/web/src/app/support/twitter-image1.tsx/opt/canhelp/apps/web/src/app/support/twitter-image1.ts/opt/canhelp/apps/web/src/app/support/twitter-image1.jsx/opt/canhelp/apps/web/src/app/support/twitter-image1.js/opt/canhelp/apps/web/src/app/support/twitter-image2.jpg/opt/canhelp/apps/web/src/app/support/twitter-image2.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image2.png/opt/canhelp/apps/web/src/app/support/twitter-image2.gif/opt/canhelp/apps/web/src/app/support/twitter-image2.tsx/opt/canhelp/apps/web/src/app/support/twitter-image2.ts/opt/canhelp/apps/web/src/app/support/twitter-image2.jsx/opt/canhelp/apps/web/src/app/support/twitter-image2.js/opt/canhelp/apps/web/src/app/support/twitter-image3.jpg/opt/canhelp/apps/web/src/app/support/twitter-image3.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image3.png/opt/canhelp/apps/web/src/app/support/twitter-image3.gif/opt/canhelp/apps/web/src/app/support/twitter-image3.tsx/opt/canhelp/apps/web/src/app/support/twitter-image3.ts/opt/canhelp/apps/web/src/app/support/twitter-image3.jsx/opt/canhelp/apps/web/src/app/support/twitter-image3.js/opt/canhelp/apps/web/src/app/support/twitter-image4.jpg/opt/canhelp/apps/web/src/app/support/twitter-image4.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image4.png/opt/canhelp/apps/web/src/app/support/twitter-image4.gif/opt/canhelp/apps/web/src/app/support/twitter-image4.tsx/opt/canhelp/apps/web/src/app/support/twitter-image4.ts/opt/canhelp/apps/web/src/app/support/twitter-image4.jsx/opt/canhelp/apps/web/src/app/support/twitter-image4.js/opt/canhelp/apps/web/src/app/support/twitter-image5.jpg/opt/canhelp/apps/web/src/app/support/twitter-image5.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image5.png/opt/canhelp/apps/web/src/app/support/twitter-image5.gif/opt/canhelp/apps/web/src/app/support/twitter-image5.tsx/opt/canhelp/apps/web/src/app/support/twitter-image5.ts/opt/canhelp/apps/web/src/app/support/twitter-image5.jsx/opt/canhelp/apps/web/src/app/support/twitter-image5.js/opt/canhelp/apps/web/src/app/support/twitter-image6.jpg/opt/canhelp/apps/web/src/app/support/twitter-image6.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image6.png/opt/canhelp/apps/web/src/app/support/twitter-image6.gif/opt/canhelp/apps/web/src/app/support/twitter-image6.tsx/opt/canhelp/apps/web/src/app/support/twitter-image6.ts/opt/canhelp/apps/web/src/app/support/twitter-image6.jsx/opt/canhelp/apps/web/src/app/support/twitter-image6.js/opt/canhelp/apps/web/src/app/support/twitter-image7.jpg/opt/canhelp/apps/web/src/app/support/twitter-image7.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image7.png/opt/canhelp/apps/web/src/app/support/twitter-image7.gif/opt/canhelp/apps/web/src/app/support/twitter-image7.tsx/opt/canhelp/apps/web/src/app/support/twitter-image7.ts/opt/canhelp/apps/web/src/app/support/twitter-image7.jsx/opt/canhelp/apps/web/src/app/support/twitter-image7.js/opt/canhelp/apps/web/src/app/support/twitter-image8.jpg/opt/canhelp/apps/web/src/app/support/twitter-image8.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image8.png/opt/canhelp/apps/web/src/app/support/twitter-image8.gif/opt/canhelp/apps/web/src/app/support/twitter-image8.tsx/opt/canhelp/apps/web/src/app/support/twitter-image8.ts/opt/canhelp/apps/web/src/app/support/twitter-image8.jsx/opt/canhelp/apps/web/src/app/support/twitter-image8.js/opt/canhelp/apps/web/src/app/support/twitter-image9.jpg/opt/canhelp/apps/web/src/app/support/twitter-image9.jpeg/opt/canhelp/apps/web/src/app/support/twitter-image9.png/opt/canhelp/apps/web/src/app/support/twitter-image9.gif/opt/canhelp/apps/web/src/app/support/twitter-image9.tsx/opt/canhelp/apps/web/src/app/support/twitter-image9.ts/opt/canhelp/apps/web/src/app/support/twitter-image9.jsx/opt/canhelp/apps/web/src/app/support/twitter-image9.js/opt/canhelp/apps/web/src/app/support/page.ts/opt/canhelp/apps/web/src/app/support/page.jsx/opt/canhelp/apps/web/src/app/support/page.js   `4 d A   A a  A c M A cH A[ c? A\ cF A cM AG cV AH cT A cM A= cR A> c^ A ci AX cQ AY cO A c\ A b@ A  cM A M  cB AN  cJ A  c: A ?  c k A@  c!!J A  c""A A   c##Ra A cOO A= cPRa A>U cSS A) A) cVY A* cZ\ A c]]V As c^` A A cbq A A ar@r As q cTT0 A5 co o10 A9; co o7 false AU| cppE A cx}{} A cxz} A c~~G A#($ @`%A0 A,$;$ @`%Aw Ad;; @ ` @`  A;= @ `8@`  true AYH~H @O`AO0 AHI COOn AC @0`@5` A B05`j A  @[` @]`  AU @[`.@]`  `~ turbopack-transitionnext-ssrnext/dist/server/route-modules/app-page/module.compiled   next-server-utilitynext/dist/server/route-kind a next/dist/server/instrumentation/utils c Mnext/dist/server/lib/trace/tracer cHnext/dist/server/request-meta c?next/dist/server/lib/trace/constants cFnext/dist/server/app-render/interop-default cMnext/dist/server/app-render/strip-flight-headers cV next/dist/server/base-http/node cT next/dist/server/lib/experimental/ppr cM` next/dist/server/request/fallback-params cR` next/dist/server/app-render/encryption-utils c^` next/dist/server/lib/streaming-metadata ci`next/dist/server/app-render/action-utils cQ`next/dist/shared/lib/router/utils/app-paths cO`next/dist/server/lib/server-action-request-meta c\`next/dist/client/components/app-router-headers b@`next/dist/shared/lib/router/utils/is-bot cM`next/dist/server/response-cache cB`next/dist/lib/fallback cJ`next/dist/server/render-result c:`next/dist/lib/constants c k`next/dist/server/stream-utils/encoded-tags c!!J`next/dist/server/send-payload c""A`next/dist/shared/lib/no-fallback-error.external c##Rwebpack/lib/dependencies/PureExpressionDependencya Ah EJ cNN@BB cOOBB cOO`next/dist/client/components/builtin/global-error.js cPRwebpack/lib/dependencies/HarmonyExportImportedSpecifierDependencyaGlobalError :;>?@` cSS;; cVY`next/dist/server/app-render/entry-base cZ\`next/dist/client/components/redirect-status-code c]]V` d^``webpack/lib/dependencies/HarmonyExportImportedSpecifierDependencyHarmonyStarExportsList` d^`-- cbqAppPageRouteModuleAt cbb1RouteKindAPP_PAGEAA   cdd  ar@getRequestMetaA   c+A?M  @`@`&normalizeAppPathAJZ ` @`@`.getBotTypeA ` @`@`isHtmlBotRequestA   `  @`@`&A   @`#@`1NEXT_ROUTER_PREFETCH_HEADERA 4` @`^@`yA!!  @`@`'RSC_HEADERA!!4` @`T@`^getIsPossibleServerActionA"6" ` @`#@`<checkIsAppPPREnabledA""   @`@`2A2-@- qq @`"@`0shouldServeStreamingMetadataA.. ` || @`5@`QstripFlightHeadersA55 mm @@`entryBaseA!6*64`UZ @` @`AQ6\6  ` @@`setReferenceManifestsSingletonA77 ` gg @@`&createServerModuleMapAm88 `ff @`@`2getTracerA99 MM @`@`NodeNextRequestA;:J:4 RR @` @`/NodeNextResponseAq::4 MM @` @`0BaseServerSpanhandleRequestA @)@A @@  @@ @`A@`]AYDgD :: @9`*@9`8interopDefaultA}EE 99 @@`@@`-webpack/lib/dependencies/CommonJsFullRequireDependencyajoinAHH pathAHH @O`A@O`UALL ** @``&@``4AT#T && @}`@}`'NEXT_CACHE_TAGS_HEADERAUU4|`CC @`@`.CachedRouteKindnA~[[A~[[  v`77 @`@`2parseFallbackFieldAj`|` q`44 @`@`1FallbackModePRERENDERAaaAaa  j`-- @`!@`7isBotAaa e`$$ @`;@`@BLOCKING_STATIC_RENDERA$bGbA$b0b  _`"" @`#@`FNOT_FOUNDAccAcc  Y` @`:@`PA1dTdA1d=d  T` @`@`BAddAdd  O` @`1@`TAffAff  J`   @`!@`7NoFallbackErrorAff4E` @`@`-786AiiAii  @9 @`#@`5getFallbackRouteParamsAyll ;`  @`G@`]PAGESArrArr  5` @`@`3EMPTYRenderResultArrArr  .` @`@`0)(Att * @`O@`]Auu &`  CAVwhwAVw_w  ! @`@`-A%}=}A%}4}  ` @=`g@=`NEXT_IS_PRERENDER_HEADERA{4` @Q`@Q`6CACHE_ONE_YEARA5C4` @`(@`6AiAix   ` @`qANEXT_DID_POSTPONE_HEADERA4` @`@`6A'4` @`qAA4` @`"@`8sendRenderResultA ` @`@`+fromStaticAA  ` @` @`7RSC_CONTENT_TYPE_HEADERAɔ4` @`H@`_AXh ` @`@`'A7IA7C  ` @`@`.AIW  @`!@`/A$  @`@`'a`A4` @`#@`9^]A #4` @`kA[ZA4` @`@`4RedirectStatusCodeAΤ4` @`5@`GAå4` @`@`6ABR ` @ `@ `+AUe ` @`@`'A4KA4@  ` @#`@#`3A`w4`}} @#`H@#`_A-= ` @6`@6`'ENCODED_TAGSCLOSEDBODY_AND_HTMLA AA  `|| @H`+@H`LA~ `zz @L`@L`'32ApAp  `kk @u`_@u`wA* `qq @`@`#AA  HH @`T@`pSpanKindSERVERAA   == @`@`)QPA 4`dd @`@`,getRevalidateReasonA 33 @`"@`5webpack/lib/dependencies/ImportEagerDependencycc  `{@ cc A;  AS next/dist/client/components/builtin/forbidden.js A next/dist/client/components/builtin/unauthorized.js A.  A  next-metadata-image-loader?type=icon&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/icon.png?__next_metadata__ A  next-metadata-image-loader?type=apple&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/apple-icon.png?__next_metadata__ A  A  webpack/lib/cache/ResolverCachePlugin``_ResolverCachePluginCacheMisscontextrequestqueryfragmentedirectoryfileinternalfullySpecifieddescriptionFilePathdescriptionFileDatadescriptionFileRootrelativePath issuerissuerLayercompiler server/opt/canhelp/apps/web/src/components/Footer.tsx /opt/canhelp/apps/web/package.json!versionprivatescriptsdependenciesdevDependenciesweb0.1.0 devbuildstartlinttypechecknext dev --port 3000NODE_ENV=production next buildnext startnext linttsc --noEmit` @canhelp/shared@marsidev/react-turnstile@types/leafletbetter-authleafletnanostoresreact-domreact-leafletreact-leaflet-clustersocket.io-clientzod*^1.5.0^1.9.21^1.2.7^1.9.4^1.2.0^15.1.6^19.0.0^5.0.0^4.1.3^4.8.1^3.24.1@types/node@types/react@types/react-domautoprefixerpostcsstailwindcsstypescript^22.10.7^19.0.6^19.0.3^10.4.20^8.5.1^3.4.17^5.7.3/opt/canhelp/apps/web./src/components/Footer.tsx@ rVyBA!PyBPyB2e1fc57ea3af8ddf? /opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.js/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.mjs/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.jsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.wasm/opt/canhelp/apps/web/src/components/Footer/opt/canhelp/apps/web/src/components/Footer.js/opt/canhelp/apps/web/src/components/Footer.mjs@  0UyB/opt/canhelp/apps/web/src/opt/canhelp/apps0/. 0UyB/opt/canhelp/opt/*!`nuyBPnuyBd1168d5d5ce4fcb8('&@/opt/canhelp/apps/web/src/app/package.json @/opt/canhelp/apps/web/src/package.json @/opt/canhelp/apps/web/opt/canhelp/apps/web/src/package.json/opt/canhelp/apps/web/opt/canhelp/apps/web/package.json/opt/canhelp/apps/web/opt/canhelp/apps/package.json/opt/canhelp/apps/web/opt/canhelp/package.json/opt/canhelp/apps/web/opt/package.json @/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/package.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx/opt/canhelp/apps/web/src/components/package.json// This file is generated by the Webpack next-flight-loader. import { registerClientReference } from "react-server-dom-webpack/server"; export const Footer = registerClientReference( function() { throw new Error("Attempted to call Footer() from the server but Footer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); }, "/opt/canhelp/apps/web/src/components/Footer.tsx", "Footer", ); `  0e0f5cf6bf2826dfFooter   SyB| d `=@ `J AA   `J   A  b-@ PVyBj/opt/canhelp/node_modules/react-server-dom-webpack*missing@/opt/canhelp/apps/web/src/app/support/package.json@/opt/canhelp/apps/web/node_modules/opt/canhelp/apps/node_modules/opt/node_modules/node_modules@/opt/canhelp/apps/web/src/app/support/node_modules/opt/canhelp/apps/web/src/app/node_modules/opt/canhelp/apps/web/src/node_modulesK  /opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js /opt/canhelp/node_modules/next/package.json`rQdescriptionlicenserepositorybugshomepagetypesfilesbinKtaskrKpeerDependenciespeerDependenciesMetaoptionalDependenciesIkeywordsenginesr15.5.14The React Framework./dist/server/next.jsMITvercel/next.jshttps://github.com/vercel/next.js/issueshttps://nextjs.orgindex.d.ts`Ddistapp.jsapp.d.tsbabel.jsbabel.d.tsclient.jsclient.d.tscompatcache.jscache.d.tsconfig.jsconfig.d.tsconstants.jsconstants.d.tsdocument.jsdocument.d.tsdynamic.jsdynamic.d.tserror.jserror.d.tsfuturelegacyscript.jsscript.d.tsserver.jsserver.d.tshead.jshead.d.tsimage.jsimage.d.tslink.jslink.d.tsform.jsform.d.tsrouter.jsrouter.d.tsjest.jsjest.d.tsamp.jsamp.d.tsog.jsog.d.tsroot-params.jsroot-params.d.tstypes.d.tstypes.jsёtypes/global.d.tstypes/compiled.d.tsimage-types/global.d.tsnavigation-types/navigation.d.tsnavigation-types/compat/navigation.d.tsfontnavigation.jsnavigation.d.tsheaders.jsheaders.d.tsnavigation-typesweb-vitals.jsweb-vitals.d.tsexperimental/testing/server.jsexperimental/testing/server.d.tsexperimental/testmode/playwright.jsexperimental/testmode/playwright.d.tsexperimental/testmode/playwright/msw.jsexperimental/testmode/playwright/msw.d.tsexperimental/testmode/proxy.jsexperimental/testmode/proxy.d.ts&./dist/bin/next releaseprepublishOnly$ncc-compiledstorybookbuild-storybooktest-storybookcross-env NEXT_SERVER_NO_MANGLE=1 taskrtaskr releasepnpm releasecd ../../ && turbo run buildtsc --project tsconfig.build.json --declaration --emitDeclarationOnly --stripInternal --declarationDir disttsec --noEmittaskr nccBROWSER=none storybook dev -p 6006storybook buildrequires./taskfile-webpack.js./taskfile-ncc.js./taskfile-swc.js./taskfile-watch.js@next/env@swc/helperscaniuse-lite styled-jsx0.5.15^1.0.300015798.4.315.1.6@opentelemetry/api@playwright/testbabel-plugin-react-compilersass^1.1.0^1.51.1*^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0^1.3.0optional     sharp@next/swc-darwin-arm64@next/swc-darwin-x64@next/swc-linux-arm64-gnu@next/swc-linux-arm64-musl@next/swc-linux-x64-gnu@next/swc-linux-x64-musl@next/swc-win32-arm64-msvc@next/swc-win32-x64-msvc^0.34.3tttttttt@@ampproject/toolbox-optimizer@babel/code-frame@babel/core@babel/eslint-parser@babel/generator@babel/plugin-syntax-bigint@babel/plugin-syntax-dynamic-import@babel/plugin-syntax-import-attributes@babel/plugin-syntax-jsx@babel/plugin-syntax-typescript@babel/plugin-transform-class-properties@babel/plugin-transform-export-namespace-from@babel/plugin-transform-modules-commonjs@babel/plugin-transform-numeric-separator@babel/plugin-transform-object-rest-spread@babel/plugin-transform-runtime@babel/preset-env@babel/preset-react@babel/preset-typescript@babel/runtime@babel/traverse@babel/types@base-ui-components/react@capsizecss/metrics@edge-runtime/cookies@edge-runtime/ponyfill@edge-runtime/primitives@hapi/accept@jest/transform@jest/types@mswjs/interceptors@napi-rs/triples@next/font@next/polyfill-module@next/polyfill-nomodule@next/react-refresh-utils@next/swc@rspack/core@storybook/addon-a11y@storybook/addon-essentials@storybook/addon-interactions@storybook/addon-webpack5-compiler-swc@storybook/blocks@storybook/react@storybook/react-webpack5@storybook/test@storybook/test-runner@swc/core@swc/types@taskr/clear@taskr/esnext@types/amphtml-validator@types/babel__code-frame@types/babel__core@types/babel__generator@types/babel__template@types/babel__traverse@types/bytes@types/ci-info@types/compression@types/content-disposition@types/content-type@types/cookie@types/cross-spawn@types/debug@types/express-serve-static-core@types/fresh@types/glob@types/jsonwebtoken@types/lodash@types/lodash.curry@types/path-to-regexp@types/picomatch@types/platform@types/react-is@types/semver@types/send@types/shell-quote@types/tar@types/text-table@types/ua-parser-js@types/webpack-sources1@types/ws@vercel/ncc@vercel/nft@vercel/turbopack-ecmascript-runtimeacornamphtml-validatoranserargassertasync-retryasync-semaaxe-playwrightbabel-loaderbabel-plugin-transform-definebabel-plugin-transform-react-remove-prop-typesbrowserify-zlibbrowserslistbusboybytesci-infocli-selectclient-onlycommandercomment-jsoncompressionconfconstants-browserifycontent-dispositioncontent-typecookiecross-envcross-spawncrypto-browserifycss-loadercss.escapecssnano-preset-defaultdata-uri-to-bufferdebugdevaluedomain-browseredge-runtimeeventsfind-upfreshglobgzip-sizehttp-proxyhttp-proxy-agenthttps-browserifyhttps-proxy-agenticss-utilsignore-loaderimage-sizeis-dockeris-wsljest-workerjson5jsonwebtokenloader-runnerloader-utils2loader-utils3lodash.currymini-css-extract-pluginmswnanoidnative-urlneo-asyncnode-html-parseroraos-browserifyp-limitp-queuepath-browserifypath-to-regexppicomatchpostcss-flexbugs-fixespostcss-modules-extract-importspostcss-modules-local-by-defaultpostcss-modules-scopepostcss-modules-valuespostcss-preset-envpostcss-safe-parserpostcss-scsspostcss-value-parserprocesspunycodequerystring-es3raw-bodyreact-refreshrecastregenerator-runtimesafe-stable-stringifysass-loaderschema-utils2schema-utils3semversendserver-onlysetimmediateshell-quotesource-mapsource-map-loadersource-map08stacktrace-parser stream-browserifystream-httpstrict-event-emitterstring-hashstring_decoderstrip-ansistyle-loadersuperstructtarterserterser-webpack-plugintext-tabletimers-browserifytty-browserifyua-parser-jsunistoreutilvm-browserifywatchpackweb-vitalswebpackwebpack-sources1webpack-sources3wszod-validation-error2.8.37.26.27.26.107.24.67.27.07.8.37.26.07.25.97.25.47.26.37.26.91.0.0-beta.23.4.06.0.04.0.05.0.229.5.00.23.01.2.01.6.01.51.11.4.58.6.03.0.00.21.01.11.240.1.71.1.01.0.07.0.67.20.57.4.47.20.73.1.12.0.00.0.360.5.41.1.30.3.34.1.54.17.330.5.07.1.19.0.04.14.1984.1.61.7.02.3.31.3.419.0.819.0.318.2.47.3.10.14.41.7.16.1.50.2.10.7.36npm:@types/webpack-sources@0.1.58.2.00.34.00.27.1*8.14.01.0.381.4.94.1.01.2.3ԅ2.0.310.0.019.1.0-rc.2܆0.4.240.2.04.24.45.6.0׷watson/ci-info#f43f6a1cefff47fb361c88cf4b943fdbcaafe5401.1.20.0.112.1.03.0.31.7.45.0.0˅0.5.31.0.40.4.16.0.37.0.33.12.07.1.21.5.1ą3.0.14.1.12.0.14.19.04.0.13.3.00.5.27.1.75.1.11.18.15.0.15.1.00.1.21.2.12.2.027.5.12.2.34.3.0npm:loader-utils@2.0.4npm:loader-utils@3.1.32.4.42.3.03.1.320.3.42.6.15.3.34.0.40.3.03.1.06.6.21.0.16.3.04.2.07.4.34.0.30.11.102.1.12.4.10.12.00.23.110.13.42.5.015.0.0npm:schema-utils@2.7.1npm:schema-utils@3.0.07.3.20.18.0ą1.0.51.7.30.6.1śnpm:source-map@0.8.0-beta.00.1.101.3.01.0.36.1.155.27.05.3.92.0.125.8.21.0.353.4.10.12.42.4.04.2.15.98.0npm:webpack-sources@1.4.3npm:webpack-sources@3.2.38.2.33.25.76n  frameworknextjsF= 20.0.0./dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js@  VyB/opt/canhelp/node_modules#next@15.5.14@/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc@/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/opt/canhelp/node_modules/next/dist/server/route-modules/opt/canhelp/node_modules/next/dist/server@/opt/canhelp/node_modules/next/distx@/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/package.json/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server@/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/package.json/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/package.json/opt/canhelp/node_modules/next/dist/server/route-modules/package.json/opt/canhelp/node_modules/next/dist/server/package.json/opt/canhelp/node_modules/next/dist/package.json  z  b@ VyBuv  /opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.mjs/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.tsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.ts/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.jsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.wasm_@T/opt/canhelp/apps/web/opt/canhelp/node_modules/next/opt/canhelp/apps/web/opt/canhelp/node_modules/package.json@/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/package.json@/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/package.jsonUimport(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/support/page.tsx"); ` `   !"#$%&()*+,=` DEFGHIJKLMPQ /opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.jsST962c91e58e732349U[ SyB`S HH  ` & DEGM SyB`S ::   0  @ WyB  ;, & c @ WyB5.@/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx.js/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx.mjs/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx.tsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx.jsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/components/Footer.tsx.wasm  @  WyB&/* __next_internal_client_entry_do_not_use__ Footer auto */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { useLocale } from '@/context/locale'; import { useEffect, useState } from 'react'; import Link from 'next/link'; import { SocialIcons } from './SocialIcons'; const API = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; export function Footer() { const { t } = useLocale(); const year = new Date().getFullYear(); const [socialLinks, setSocialLinks] = useState({}); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && useEffect(()=>{ fetch(`${API}/api/admin/social-public`).then((r)=>r.ok ? r.json() : {}).then((kv)=>{ const links = {}; for (const [k, v] of Object.entries(kv)){ if (v) links[k.replace('social.', '')] = v; } setSocialLinks(links); }).catch(()=>{}); }, []); return /*#__PURE__*/ _jsx("footer", { className: "bg-white border-t border-gray-200 mt-16", children: /*#__PURE__*/ _jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: [ /*#__PURE__*/ _jsxs("div", { className: "flex flex-col md:flex-row justify-between items-start gap-10", children: [ /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[200px] flex flex-col items-start", children: [ /*#__PURE__*/ _jsx("span", { className: "logo-text text-3xl text-green-700 font-bold mb-2", children: "CanHelp" }), /*#__PURE__*/ _jsx("p", { className: "text-base text-gray-600 mb-4", children: t('footer.slogan') }) ] }), /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.links') }), /*#__PURE__*/ _jsxs("ul", { className: "space-y-2", children: [ /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/", className: "hover:text-green-600 transition", children: t('nav.home') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/tasks", className: "hover:text-green-600 transition", children: t('nav.tasks') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/specialists", className: "hover:text-green-600 transition", children: t('nav.specialists') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/pricing", className: "hover:text-green-600 transition", children: t('nav.pricing') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/support", className: "hover:text-green-600 transition", children: t('support.title') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/privacy", className: "hover:text-green-600 transition", children: t('nav.privacy') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/delete-account", className: "hover:text-red-500 transition", children: t('nav.delete_account') }) }) ] }) ] }), /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.socials') }), /*#__PURE__*/ _jsx("p", { className: "text-gray-500 text-sm mb-2", children: "info@canhelp.gr" }), /*#__PURE__*/ _jsx(SocialIcons, { className: "mt-2", links: socialLinks }) ] }) ] }), /*#__PURE__*/ _jsxs("div", { className: "mt-10 border-t border-gray-100 pt-6 text-center text-gray-400 text-sm", children: [ "\xa9 ", year, " CanHelp. ", t('footer.rights') ] }) ] }) }); } `sideEffectFree  GW Xwebpack/DefinePlugin process.env.NEXT_PUBLIC_API_URL"https://api.canhelp.gr"e48091c3521feeb4W   API! SyB  d a<{ b<{ `|@ `- A `, A ` A! `, AqAj @ A.M b + 0AQh b F`. RR b<{ @/context/locale `- QQ `, RR ` ./SocialIcons `,A.h `F  @ useLocaleA  b HGA @@ b* 2 JIA>G << c 7 @ QRA 66 c GHA 22 c % CDA .. c# ?@AZ_ ** c&+ ABA && c.2 =>A "" c#.#2 34A38  c)&)+ 56A  c,.,2 +,A   c0.03 -.A   c363: )*A   c4D4H _`A 4 c4I4M !"AQ U   c:6:: A   c;D;H UA 4 c;I;M A'+  cA6A: Ax|  cBDBH JA}4 cBIBM   A    cH6H: AZ^  cIDIH ?A_c4 cIIIM A  cO6O: A48  cPDPH 4A9=4 cPIPM A  cV6V: A  cWDWH )A4 cWIWM A  c]6]: A  c^D^H A4 c^I^M A  ch&h+ A } ck.k2 A y co.o2 A| u cs.s2 SocialIconsA4pff cs3s> A l c{{#  /opt/canhelp/node_modules/react/jsx-runtime.js0/opt/canhelp/node_modules/react/package.json` 7exportsReact is a JavaScript library for building user interfaces.19.2.4https://react.dev/https://github.com/facebook/react/issues LICENSEREADME.mdindex.jscjs/compiler-runtime.jsjsx-runtime.jsjsx-runtime.react-server.jsjsx-dev-runtime.jsjsx-dev-runtime.react-server.jsreact.react-server.js../package.json./jsx-runtime./jsx-dev-runtime./compiler-runtime"./react.react-server.js./index.js./jsx-runtime.react-server.js./jsx-runtime.js./jsx-dev-runtime.react-server.js./jsx-dev-runtime.js./compiler-runtime.js/urlgithttps://github.com/facebook/react.gitpackages/reactx>=0.10.0/opt/canhelp/node_modules/react@ `WyB~PQ react@19.2.4 KV@ `WyB/opt/canhelp/apps/web/src/context/package.json/opt/canhelp/apps/web/src/context/locale /opt/canhelp/node_modules/@/context>ALG  >/opt/canhelp/node_modules/next/dist/client/app-dir/link.js Mg./dist/client/app-dir/link.js@ WyBhi /opt/canhelp/node_modules/next/dist/client/app-dir/opt/canhelp/node_modules/next/dist/client`/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link.js/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link.mjs/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link.tsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link.ts/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link.jsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/link.wasm/opt/canhelp/node_modules/next/link/opt/canhelp/node_modules/next/link.js/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link.js/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link.mjs/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link.tsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link.ts/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link.jsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/client/app-dir/link.wasm/opt/canhelp/node_modules/next/dist/client/app-dir/package.json/opt/canhelp/node_modules/next/dist/client/package.jsoni/opt/canhelp/node_modules/next/dist/client/app-dir/link[t xy/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js )C./dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js@ 0WyBDE /opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr` /opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/package.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.mjs/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.tsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.jsx/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.json/opt/canhelp/apps/web/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.wasm/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/package.json/opt/canhelp/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtimejFuR@ WyB @ WyBa@/opt/canhelp/apps/web/src/context/locale.json/opt/canhelp/apps/web/src/context/locale.node @/opt/canhelp/apps/web/src/context/locale.js@ WyBG KL/opt/canhelp/apps/web/src/context/locale.tsx M./src/context/locale.tsx@ @WyB/opt/canhelp/apps/web/src/context:!P%AyB@%AyBbd2910c7c0015c7f /opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/package.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale.js/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale.mjs/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale.tsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale.jsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/context/locale.wasm/opt/canhelp/apps/web/src/context/locale.mjs@  bXyB8@  cXyB2SE P TU webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource#__webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default.a), /* harmony export */ __next_app__: () => (/* binding */ __next_app__), /* harmony export */ handler: () => (/* binding */ handler), /* harmony export */ pages: () => (/* binding */ pages), /* harmony export */ routeModule: () => (/* binding */ routeModule), /* harmony export */ tree: () => (/* binding */ tree) /* harmony export */ }); /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(73653); /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97714); /* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(85250); /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37587); /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22369); /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1889); /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(96232); /* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22841); /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(46537); /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__); /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(46027); /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(78559); /* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(75928); /* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(19374); /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__); /* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(65971); /* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__); /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(261); /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__); /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(79898); /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__); /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(32967); /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__); /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(26713); /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__); /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(40139); /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__); /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(14248); /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__); /* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(59580); /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(57749); /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__); /* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(53123); /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(89745); /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__); /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(86439); /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__); /* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(58671); /* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__); /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(18283); /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__); /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(39818); /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__) if(["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourceconst module0 = () => import(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/layout.tsx"); const module1 = () => import(/* webpackMode: "eager" */ "next/dist/client/components/builtin/global-error.js"); const module2 = () => import(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/not-found.tsx"); const module3 = () => import(/* webpackMode: "eager" */ "next/dist/client/components/builtin/forbidden.js"); const module4 = () => import(/* webpackMode: "eager" */ "next/dist/client/components/builtin/unauthorized.js"); const page5 = () => import(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/support/page.tsx"); import { AppPageRouteModule } from "next/dist/server/route-modules/app-page/module.compiled" with { 'turbopack-transition': 'next-ssr' }; import { RouteKind } from "next/dist/server/route-kind" with { 'turbopack-transition': 'next-server-utility' }; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { getRequestMeta } from "next/dist/server/request-meta"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { interopDefault } from "next/dist/server/app-render/interop-default"; import { stripFlightHeaders } from "next/dist/server/app-render/strip-flight-headers"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { checkIsAppPPREnabled } from "next/dist/server/lib/experimental/ppr"; import { getFallbackRouteParams } from "next/dist/server/request/fallback-params"; import { setReferenceManifestsSingleton } from "next/dist/server/app-render/encryption-utils"; import { isHtmlBotRequest, shouldServeStreamingMetadata } from "next/dist/server/lib/streaming-metadata"; import { createServerModuleMap } from "next/dist/server/app-render/action-utils"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { getIsPossibleServerAction } from "next/dist/server/lib/server-action-request-meta"; import { RSC_HEADER, NEXT_ROUTER_PREFETCH_HEADER, NEXT_IS_PRERENDER_HEADER, NEXT_DID_POSTPONE_HEADER, RSC_CONTENT_TYPE_HEADER } from "next/dist/client/components/app-router-headers"; import { getBotType, isBot } from "next/dist/shared/lib/router/utils/is-bot"; import { CachedRouteKind } from "next/dist/server/response-cache"; import { FallbackMode, parseFallbackField } from "next/dist/lib/fallback"; import RenderResult from "next/dist/server/render-result"; import { CACHE_ONE_YEAR, HTML_CONTENT_TYPE_HEADER, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { ENCODED_TAGS } from "next/dist/server/stream-utils/encoded-tags"; import { sendRenderResult } from "next/dist/server/send-payload"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; // We inject the tree and pages here so that we can use them in the route // module. const tree = { children: [ '', { children: [ 'support', { children: ['__PAGE__', {}, { page: [page5, "/opt/canhelp/apps/web/src/app/support/page.tsx"], }] }, { metadata: { icon: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=icon&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/icon.png?__next_metadata__")).default(props))], apple: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=apple&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/apple-icon.png?__next_metadata__")).default(props))], openGraph: [], twitter: [], manifest: undefined } } ] }, { 'layout': [module0, "/opt/canhelp/apps/web/src/app/layout.tsx"], 'global-error': [module1, "next/dist/client/components/builtin/global-error.js"], 'not-found': [module2, "/opt/canhelp/apps/web/src/app/not-found.tsx"], 'forbidden': [module3, "next/dist/client/components/builtin/forbidden.js"], 'unauthorized': [module4, "next/dist/client/components/builtin/unauthorized.js"], metadata: { icon: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=icon&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/icon.png?__next_metadata__")).default(props))], apple: [(async (props) => (await import(/* webpackMode: "eager" */ "next-metadata-image-loader?type=apple&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/opt/canhelp/apps/web/src/app/apple-icon.png?__next_metadata__")).default(props))], openGraph: [], twitter: [], manifest: undefined } } ] }.children; const pages = ["/opt/canhelp/apps/web/src/app/support/page.tsx"]; export { tree, pages }; import GlobalError from "next/dist/client/components/builtin/global-error.js" with { 'turbopack-transition': 'next-server-utility' }; export { GlobalError }; const __next_app_require__ = __webpack_require__ const __next_app_load_chunk__ = () => Promise.resolve() export const __next_app__ = { require: __next_app_require__, loadChunk: __next_app_load_chunk__ }; import * as entryBase from "next/dist/server/app-render/entry-base" with { 'turbopack-transition': 'next-server-utility' }; import { RedirectStatusCode } from "next/dist/client/components/redirect-status-code"; export * from "next/dist/server/app-render/entry-base" with { 'turbopack-transition': 'next-server-utility' }; // Create and export the route module that will be consumed. export const routeModule = new AppPageRouteModule({ definition: { kind: RouteKind.APP_PAGE, page: "/support/page", pathname: "/support", // The following aren't used in production. bundlePath: '', filename: '', appPaths: [] }, userland: { loaderTree: tree }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '' }); export async function handler(req, res, ctx) { var _this; let srcPage = "/support/page"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const initialPostponed = getRequestMeta(req, 'postponed'); // TODO: replace with more specific flags const minimalMode = getRequestMeta(req, 'minimalMode'); const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, query, params, parsedUrl, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, interceptionRoutePatterns } = prepareResult; const pathname = parsedUrl.pathname || '/'; const normalizedSrcPage = normalizeAppPath(srcPage); let { isOnDemandRevalidate } = prepareResult; const prerenderInfo = routeModule.match(pathname, prerenderManifest); const isPrerendered = !!prerenderManifest.routes[resolvedPathname]; let isSSG = Boolean(prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]); const userAgent = req.headers['user-agent'] || ''; const botType = getBotType(userAgent); const isHtmlBot = isHtmlBotRequest(req); /** * If true, this indicates that the request being made is for an app * prefetch request. */ const isPrefetchRSCRequest = getRequestMeta(req, 'isPrefetchRSCRequest') ?? req.headers[NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2' ; // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later const isRSCRequest = getRequestMeta(req, 'isRSCRequest') ?? Boolean(req.headers[RSC_HEADER]); const isPossibleServerAction = getIsPossibleServerAction(req); /** * If the route being rendered is an app page, and the ppr feature has been * enabled, then the given route _could_ support PPR. */ const couldSupportPPR = checkIsAppPPREnabled(nextConfig.experimental.ppr); // When enabled, this will allow the use of the `?__nextppronly` query to // enable debugging of the static shell. const hasDebugStaticShellQuery = process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING === '1' && typeof query.__nextppronly !== 'undefined' && couldSupportPPR; // When enabled, this will allow the use of the `?__nextppronly` query // to enable debugging of the fallback shell. const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback'; // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the // prerender manifest and this is an app page. const isRoutePPREnabled = couldSupportPPR && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR // enabled or not, but that would require plumbing the appConfig through // to the server during development. We assume that the page supports it // but only during development. hasDebugStaticShellQuery && (routeModule.isDev === true || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true)); const isDebugStaticShell = hasDebugStaticShellQuery && isRoutePPREnabled; // We should enable debugging dynamic accesses when the static shell // debugging has been enabled and we're also in development mode. const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true; const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled; // If we're in minimal mode, then try to get the postponed information from // the request metadata. If available, use it for resuming the postponed // render. const minimalPostponed = isRoutePPREnabled ? initialPostponed : undefined; // If PPR is enabled, and this is a RSC request (but not a prefetch), then // we can use this fact to only generate the flight data for the request // because we can't cache the HTML (as it's also dynamic). const isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest; // Need to read this before it's stripped by stripFlightHeaders. We don't // need to transfer it to the request meta because it's only read // within this function; the static segment data should have already been // generated, so we will always either return a static response or a 404. const segmentPrefetchHeader = getRequestMeta(req, 'segmentPrefetchRSCRequest'); // TODO: investigate existing bug with shouldServeStreamingMetadata always // being true for a revalidate due to modifying the base-server this.renderOpts // when fixing this to correct logic it causes hydration issue since we set // serveStreamingMetadata to true during export let serveStreamingMetadata = !userAgent ? true : shouldServeStreamingMetadata(userAgent, nextConfig.htmlLimitedBots); if (isHtmlBot && isRoutePPREnabled) { isSSG = false; serveStreamingMetadata = false; } // In development, we always want to generate dynamic HTML. let supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's // a data request, in which case we only produce static HTML. routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isSSG || // If this request has provided postponed data, it supports dynamic // HTML. typeof initialPostponed === 'string' || // If this is a dynamic RSC request, then this render supports dynamic // HTML (it's dynamic). isDynamicRSCRequest; // When html bots request PPR page, perform the full dynamic rendering. const shouldWaitOnAllReady = isHtmlBot && isRoutePPREnabled; let ssgCacheKey = null; if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) { ssgCacheKey = resolvedPathname; } // the staticPathKey differs from ssgCacheKey since // ssgCacheKey is null in dev since we're always in "dynamic" // mode in dev to bypass the cache, but we still need to honor // dynamicParams = false in dev mode let staticPathKey = ssgCacheKey; if (!staticPathKey && routeModule.isDev) { staticPathKey = resolvedPathname; } // If this is a request for an app path that should be statically generated // and we aren't in the edge runtime, strip the flight headers so it will // generate the static response. if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) { stripFlightHeaders(req.headers); } const ComponentMod = { ...entryBase, tree, pages, GlobalError, handler, routeModule, __next_app__ }; // Before rendering (which initializes component tree modules), we have to // set the reference manifests to our global store so Server Action's // encryption util can access to them at the top level of the page module. if (serverActionsManifest && clientReferenceManifest) { setReferenceManifestsSingleton({ page: srcPage, clientReferenceManifest, serverActionsManifest, serverModuleMap: createServerModuleMap({ serverActionsManifest }) }); } const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); try { const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns); res.setHeader('Vary', varyHeader); const invokeRouteModule = async (span, context)=>{ const nextReq = new NodeNextRequest(req); const nextRes = new NodeNextResponse(res); // TODO: adapt for putting the RDC inside the postponed data // If we're in dev, and this isn't a prefetch or a server action, // we should seed the resume data cache. if (process.env.NODE_ENV === 'development') { if (nextConfig.experimental.cacheComponents && !isPrefetchRSCRequest && !context.renderOpts.isPossibleServerAction) { const warmup = await routeModule.warmup(nextReq, nextRes, context); // If the warmup is successful, we should use the resume data // cache from the warmup. if (warmup.metadata.renderResumeDataCache) { context.renderOpts.renderResumeDataCache = warmup.metadata.renderResumeDataCache; } } } return routeModule.render(nextReq, nextRes, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const doRender = async ({ span, postponed, fallbackRouteParams })=>{ const context = { query, params, page: normalizedSrcPage, sharedContext: { buildId }, serverComponentsHmrCache: getRequestMeta(req, 'serverComponentsHmrCache'), fallbackRouteParams, renderOpts: { App: ()=>null, Document: ()=>null, pageConfig: {}, ComponentMod, Component: interopDefault(ComponentMod), params, routeModule, page: srcPage, postponed, shouldWaitOnAllReady, serveStreamingMetadata, supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse, buildManifest, nextFontManifest, reactLoadableManifest, subresourceIntegrityManifest, serverActionsManifest, clientReferenceManifest, setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus, dir: process.env.NEXT_RUNTIME === 'nodejs' ? require('path').join(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : `${process.cwd()}/${routeModule.relativeProjectDir}`, isDraftMode, isRevalidate: isSSG && !postponed && !isDynamicRSCRequest, botType, isOnDemandRevalidate, isPossibleServerAction, assetPrefix: nextConfig.assetPrefix, nextConfigOutput: nextConfig.output, crossOrigin: nextConfig.crossOrigin, trailingSlash: nextConfig.trailingSlash, previewProps: prerenderManifest.preview, deploymentId: nextConfig.deploymentId, enableTainting: nextConfig.experimental.taint, htmlLimitedBots: nextConfig.htmlLimitedBots, devtoolSegmentExplorer: nextConfig.experimental.devtoolSegmentExplorer, reactMaxHeadersLength: nextConfig.reactMaxHeadersLength, multiZoneDraftMode, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: nextConfig.experimental.cacheLife, basePath: nextConfig.basePath, serverActions: nextConfig.experimental.serverActions, ...isDebugStaticShell || isDebugDynamicAccesses ? { nextExport: true, supportsDynamicResponse: false, isStaticGeneration: true, isRevalidate: true, isDebugDynamicAccesses: isDebugDynamicAccesses } : {}, experimental: { isRoutePPREnabled, expireTime: nextConfig.expireTime, staleTimes: nextConfig.experimental.staleTimes, cacheComponents: Boolean(nextConfig.experimental.cacheComponents), clientSegmentCache: Boolean(nextConfig.experimental.clientSegmentCache), clientParamParsing: Boolean(nextConfig.experimental.clientParamParsing), dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover), inlineCss: Boolean(nextConfig.experimental.inlineCss), authInterrupts: Boolean(nextConfig.experimental.authInterrupts), clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || [] }, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: ()=>{}, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext), err: getRequestMeta(req, 'invokeError'), dev: routeModule.isDev } }; const result = await invokeRouteModule(span, context); const { metadata } = result; const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers. fetchTags: cacheTags } = metadata; if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } // Pull any fetch metrics from the render onto the request. ; req.fetchMetrics = metadata.fetchMetrics; // we don't throw static to dynamic errors in dev as isSSG // is a best guess in dev since we don't have the prerender pass // to know whether the path is actually static or not if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) { const staticBailoutInfo = metadata.staticBailoutInfo; const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), "__NEXT_ERROR_CODE", { value: "E132", enumerable: false, configurable: true }); if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) { const stack = staticBailoutInfo.stack; err.stack = err.message + stack.substring(stack.indexOf('\n')); } throw err; } return { value: { kind: CachedRouteKind.APP_PAGE, html: result, headers, rscData: metadata.flightData, postponed: metadata.postponed, status: metadata.statusCode, segmentData: metadata.segmentData }, cacheControl }; }; const responseGenerator = async ({ hasResolved, previousCacheEntry, isRevalidating, span })=>{ const isProduction = routeModule.isDev === false; const didRespond = hasResolved || res.writableEnded; // skip on-demand revalidate if cache is not present and // revalidate-if-generated is set if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry && !minimalMode) { if (routerServerContext == null ? void 0 : routerServerContext.render404) { await routerServerContext.render404(req, res); } else { res.statusCode = 404; res.end('This page could not be found'); } return null; } let fallbackMode; if (prerenderInfo) { fallbackMode = parseFallbackField(prerenderInfo.fallback); } // When serving a HTML bot request, we want to serve a blocking render and // not the prerendered page. This ensures that the correct content is served // to the bot in the head. if (fallbackMode === FallbackMode.PRERENDER && isBot(userAgent)) { if (!isRoutePPREnabled || isHtmlBot) { fallbackMode = FallbackMode.BLOCKING_STATIC_RENDER; } } if ((previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) === -1) { isOnDemandRevalidate = true; } // TODO: adapt for PPR // only allow on-demand revalidate for fallback: true/blocking // or for prerendered fallback: false paths if (isOnDemandRevalidate && (fallbackMode !== FallbackMode.NOT_FOUND || previousCacheEntry)) { fallbackMode = FallbackMode.BLOCKING_STATIC_RENDER; } if (!minimalMode && fallbackMode !== FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) { // if the page has dynamicParams: false and this pathname wasn't // prerendered trigger the no fallback handling if (// In development, fall through to render to handle missing // getStaticPaths. (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404 fallbackMode === FallbackMode.NOT_FOUND) { throw new NoFallbackError(); } let fallbackResponse; if (isRoutePPREnabled && !isRSCRequest) { const cacheKey = typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : isProduction ? normalizedSrcPage : null; // We use the response cache here to handle the revalidation and // management of the fallback shell. fallbackResponse = await routeModule.handleResponse({ cacheKey, req, nextConfig, routeKind: RouteKind.APP_PAGE, isFallback: true, prerenderManifest, isRoutePPREnabled, responseGenerator: async ()=>doRender({ span, // We pass `undefined` as rendering a fallback isn't resumed // here. postponed: undefined, fallbackRouteParams: // If we're in production or we're debugging the fallback // shell then we should postpone when dynamic params are // accessed. isProduction || isDebugFallbackShell ? getFallbackRouteParams(normalizedSrcPage) : null }), waitUntil: ctx.waitUntil }); // If the fallback response was set to null, then we should return null. if (fallbackResponse === null) return null; // Otherwise, if we did get a fallback response, we should return it. if (fallbackResponse) { // Remove the cache control from the response to prevent it from being // used in the surrounding cache. delete fallbackResponse.cacheControl; return fallbackResponse; } } } // Only requests that aren't revalidating can be resumed. If we have the // minimal postponed data, then we should resume the render with it. const postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined; // When we're in minimal mode, if we're trying to debug the static shell, // we should just return nothing instead of resuming the dynamic render. if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') { return { cacheControl: { revalidate: 1, expire: undefined }, value: { kind: CachedRouteKind.PAGES, html: RenderResult.EMPTY, pageData: {}, headers: undefined, status: undefined } }; } // If this is a dynamic route with PPR enabled and the default route // matches were set, then we should pass the fallback route params to // the renderer as this is a fallback revalidation request. const fallbackRouteParams = pageIsDynamic && isRoutePPREnabled && (getRequestMeta(req, 'renderFallbackShell') || isDebugFallbackShell) ? getFallbackRouteParams(pathname) : null; // Perform the render. return doRender({ span, postponed, fallbackRouteParams }); }; const handleResponse = async (span)=>{ var _cacheEntry_value, _cachedData_headers; const cacheEntry = await routeModule.handleResponse({ cacheKey: ssgCacheKey, responseGenerator: (c)=>responseGenerator({ span, ...c }), routeKind: RouteKind.APP_PAGE, isOnDemandRevalidate, isRoutePPREnabled, req, nextConfig, prerenderManifest, waitUntil: ctx.waitUntil }); if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } // In dev, we should not cache pages for any reason. if (routeModule.isDev) { res.setHeader('Cache-Control', 'no-store, must-revalidate'); } if (!cacheEntry) { if (ssgCacheKey) { // A cache entry might not be generated if a response is written // in `getInitialProps` or `getServerSideProps`, but those shouldn't // have a cache key. If we do have a cache key but we don't end up // with a cache entry, then either Next.js or the application has a // bug that needs fixing. throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), "__NEXT_ERROR_CODE", { value: "E62", enumerable: false, configurable: true }); } return null; } if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_PAGE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E707", enumerable: false, configurable: true }); } const didPostpone = typeof cacheEntry.value.postponed === 'string'; if (isSSG && // We don't want to send a cache header for requests that contain dynamic // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC // request, then we should set the cache header. !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) { if (!minimalMode) { // set x-nextjs-cache header to match the header // we set for the image-optimizer res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Set a header used by the client router to signal the response is static // and should respect the `static` cache staleTime value. res.setHeader(NEXT_IS_PRERENDER_HEADER, '1'); } const { value: cachedData } = cacheEntry; // Coerce the cache control parameter from the render. let cacheControl; // If this is a resume request in minimal mode it is streamed with dynamic // content and should not be cached. if (minimalPostponed) { cacheControl = { revalidate: 0, expire: undefined }; } else if (minimalMode && isRSCRequest && !isPrefetchRSCRequest && isRoutePPREnabled) { cacheControl = { revalidate: 0, expire: undefined }; } else if (!routeModule.isDev) { // If this is a preview mode request, we shouldn't cache it if (isDraftMode) { cacheControl = { revalidate: 0, expire: undefined }; } else if (!isSSG) { if (!res.getHeader('Cache-Control')) { cacheControl = { revalidate: 0, expire: undefined }; } } else if (cacheEntry.cacheControl) { // If the cache entry has a cache control with a revalidate value that's // a number, use it. if (typeof cacheEntry.cacheControl.revalidate === 'number') { var _cacheEntry_cacheControl; if (cacheEntry.cacheControl.revalidate < 1) { throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), "__NEXT_ERROR_CODE", { value: "E22", enumerable: false, configurable: true }); } cacheControl = { revalidate: cacheEntry.cacheControl.revalidate, expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime }; } else { cacheControl = { revalidate: CACHE_ONE_YEAR, expire: undefined }; } } } cacheEntry.cacheControl = cacheControl; if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === CachedRouteKind.APP_PAGE && cachedData.segmentData) { var _cachedData_headers1; // This is a prefetch request issued by the client Segment Cache. These // should never reach the application layer (lambda). We should either // respond from the cache (HIT) or respond with 204 No Content (MISS). // Set a header to indicate that PPR is enabled for this route. This // lets the client distinguish between a regular cache miss and a cache // miss due to PPR being disabled. In other contexts this header is used // to indicate that the response contains dynamic data, but here we're // only using it to indicate that the feature is enabled — the segment // response itself contains whether the data is dynamic. res.setHeader(NEXT_DID_POSTPONE_HEADER, '2'); // Add the cache tags header to the response if it exists and we're in // minimal mode while rendering a static page. const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[NEXT_CACHE_TAGS_HEADER]; if (minimalMode && isSSG && tags && typeof tags === 'string') { res.setHeader(NEXT_CACHE_TAGS_HEADER, tags); } const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader); if (matchedSegment !== undefined) { // Cache hit return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: RenderResult.fromStatic(matchedSegment, RSC_CONTENT_TYPE_HEADER), cacheControl: cacheEntry.cacheControl }); } // Cache miss. Either a cache entry for this route has not been generated // (which technically should not be possible when PPR is enabled, because // at a minimum there should always be a fallback entry) or there's no // match for the requested segment. Respond with a 204 No Content. We // don't bother to respond with 404, because these requests are only // issued as part of a prefetch. res.statusCode = 204; return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: RenderResult.EMPTY, cacheControl: cacheEntry.cacheControl }); } // If there's a callback for `onCacheEntry`, call it with the cache entry // and the revalidate options. const onCacheEntry = getRequestMeta(req, 'onCacheEntry'); if (onCacheEntry) { const finished = await onCacheEntry({ ...cacheEntry, // TODO: remove this when upstream doesn't // always expect this value to be "PAGE" value: { ...cacheEntry.value, kind: 'PAGE' } }, { url: getRequestMeta(req, 'initURL') }); if (finished) { // TODO: maybe we have to end the request? return null; } } // If the request has a postponed state and it's a resume request we // should error. if (didPostpone && minimalPostponed) { throw Object.defineProperty(new Error('Invariant: postponed state should not be present on a resume request'), "__NEXT_ERROR_CODE", { value: "E396", enumerable: false, configurable: true }); } if (cachedData.headers) { const headers = { ...cachedData.headers }; if (!minimalMode || !isSSG) { delete headers[NEXT_CACHE_TAGS_HEADER]; } for (let [key, value] of Object.entries(headers)){ if (typeof value === 'undefined') continue; if (Array.isArray(value)) { for (const v of value){ res.appendHeader(key, v); } } else if (typeof value === 'number') { value = value.toString(); res.appendHeader(key, value); } else { res.appendHeader(key, value); } } } // Add the cache tags header to the response if it exists and we're in // minimal mode while rendering a static page. const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[NEXT_CACHE_TAGS_HEADER]; if (minimalMode && isSSG && tags && typeof tags === 'string') { res.setHeader(NEXT_CACHE_TAGS_HEADER, tags); } // If the request is a data request, then we shouldn't set the status code // from the response because it should always be 200. This should be gated // behind the experimental PPR flag. if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) { res.statusCode = cachedData.status; } // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes if (!minimalMode && cachedData.status && RedirectStatusCode[cachedData.status] && isRSCRequest) { res.statusCode = 200; } // Mark that the request did postpone. if (didPostpone) { res.setHeader(NEXT_DID_POSTPONE_HEADER, '1'); } // we don't go through this block when preview mode is true // as preview mode is a dynamic request (bypasses cache) and doesn't // generate both HTML and payloads in the same request so continue to just // return the generated payload if (isRSCRequest && !isDraftMode) { // If this is a dynamic RSC request, then stream the response. if (typeof cachedData.rscData === 'undefined') { if (cachedData.postponed) { throw Object.defineProperty(new Error('Invariant: Expected postponed to be undefined'), "__NEXT_ERROR_CODE", { value: "E372", enumerable: false, configurable: true }); } return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: cachedData.html, // Dynamic RSC responses cannot be cached, even if they're // configured with `force-static` because we have no way of // distinguishing between `force-static` and pages that have no // postponed state. // TODO: distinguish `force-static` from pages with no postponed state (static) cacheControl: isDynamicRSCRequest ? { revalidate: 0, expire: undefined } : cacheEntry.cacheControl }); } // As this isn't a prefetch request, we should serve the static flight // data. return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: RenderResult.fromStatic(cachedData.rscData, RSC_CONTENT_TYPE_HEADER), cacheControl: cacheEntry.cacheControl }); } // This is a request for HTML data. let body = cachedData.html; // If there's no postponed state, we should just serve the HTML. This // should also be the case for a resume request because it's completed // as a server render (rather than a static render). if (!didPostpone || minimalMode || isRSCRequest) { // If we're in test mode, we should add a sentinel chunk to the response // that's between the static and dynamic parts so we can compare the // chunks and add assertions. if (process.env.__NEXT_TEST_MODE && minimalMode && isRoutePPREnabled && body.contentType === HTML_CONTENT_TYPE_HEADER) { // As we're in minimal mode, the static part would have already been // streamed first. The only part that this streams is the dynamic part // so we should FIRST stream the sentinel and THEN the dynamic part. body.unshift(createPPRBoundarySentinel()); } return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, cacheControl: cacheEntry.cacheControl }); } // If we're debugging the static shell or the dynamic API accesses, we // should just serve the HTML without resuming the render. The returned // HTML will be the static shell so all the Dynamic API's will be used // during static generation. if (isDebugStaticShell || isDebugDynamicAccesses) { // Since we're not resuming the render, we need to at least add the // closing body and html tags to create valid HTML. body.push(new ReadableStream({ start (controller) { controller.enqueue(ENCODED_TAGS.CLOSED.BODY_AND_HTML); controller.close(); } })); return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, cacheControl: { revalidate: 0, expire: undefined } }); } // If we're in test mode, we should add a sentinel chunk to the response // that's between the static and dynamic parts so we can compare the // chunks and add assertions. if (process.env.__NEXT_TEST_MODE) { body.push(createPPRBoundarySentinel()); } // This request has postponed, so let's create a new transformer that the // dynamic data can pipe to that will attach the dynamic data to the end // of the response. const transformer = new TransformStream(); body.push(transformer.readable); // Perform the render again, but this time, provide the postponed state. // We don't await because we want the result to start streaming now, and // we've already chained the transformer's readable to the render result. doRender({ span, postponed: cachedData.postponed, // This is a resume render, not a fallback render, so we don't need to // set this. fallbackRouteParams: null }).then(async (result)=>{ var _result_value; if (!result) { throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), "__NEXT_ERROR_CODE", { value: "E463", enumerable: false, configurable: true }); } if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== CachedRouteKind.APP_PAGE) { var _result_value1; throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E305", enumerable: false, configurable: true }); } // Pipe the resume result to the transformer. await result.value.html.pipeTo(transformer.writable); }).catch((err)=>{ // An error occurred during piping or preparing the render, abort // the transformers writer so we can terminate the stream. transformer.writable.abort(err).catch((e)=>{ console.error("couldn't abort transformer", e); }); }); return sendRenderResult({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, // We don't want to cache the response if it has postponed data because // the response being sent to the client it's dynamic parts are streamed // to the client on the same request. cacheControl: { revalidate: 0, expire: undefined } }); }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'render', revalidateReason: getRevalidateReason({ isRevalidate: isSSG, isOnDemandRevalidate }) }, routerServerContext); } // rethrow so that we can handle serving error page throw err; } } // TODO: omit this from production builds, only test builds should include it /** * Creates a readable stream that emits a PPR boundary sentinel. * * @returns A readable stream that emits a PPR boundary sentinel. */ function createPPRBoundarySentinel() { return new ReadableStream({ start (controller) { controller.enqueue(new TextEncoder().encode('')); controller.close(); } }); } //# sourceMappingURL=app-page.js.map @bb{_:S.Z\FH<>_WY L N > @  _<>Ts*r 49:U{_?LJY  !!!!"5"""#'$,$_:$2-?-..55!6)6\6[677m8899;:I:q::d;;;= @@YDfD}EEYH_}HHHHILLT"TUU~[[j`{`aaaa$b/bcc1d (/* reexport default from dynamic */ next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default.a), /* harmony export */ __next_app__: () => (/* binding */ __next_app__), /* harmony export */ handler: () => (/* binding */ handler), /* harmony export */ pages: () => (/* binding */ pages), /* harmony export */ routeModule: () => (/* binding */ routeModule), /* harmony export */ tree: () => (/* binding */ tree) /* harmony export */ }); /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(73653); /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97714); /* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(85250); /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37587); /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22369); /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1889); /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(96232); /* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22841); /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(46537); /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__); /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(46027); /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(78559); /* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(75928); /* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(19374); /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__); /* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(65971); /* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__); /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(261); /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__); /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(79898); /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__); /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(32967); /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__); /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(26713); /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__); /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(40139); /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__); /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(14248); /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__); /* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(59580); /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(57749); /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__); /* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(53123); /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(89745); /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__); /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(86439); /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__); /* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(58671); /* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__); /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(18283); /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__); /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(39818); /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__) if(["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); const module0 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 47570)); const module1 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 58671, 23)); const module2 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 33506)); const module3 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 15034, 23)); const module4 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 54693, 23)); const page5 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 7497)); // We inject the tree and pages here so that we can use them in the route // module. const tree = { children: [ '', { children: [ 'support', { children: ['__PAGE__', {}, { page: [page5, "/opt/canhelp/apps/web/src/app/support/page.tsx"], }] }, { metadata: { icon: [(async (props) => (await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 2645))).default(props))], apple: [(async (props) => (await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 45639))).default(props))], openGraph: [], twitter: [], manifest: undefined } } ] }, { 'layout': [module0, "/opt/canhelp/apps/web/src/app/layout.tsx"], 'global-error': [module1, "next/dist/client/components/builtin/global-error.js"], 'not-found': [module2, "/opt/canhelp/apps/web/src/app/not-found.tsx"], 'forbidden': [module3, "next/dist/client/components/builtin/forbidden.js"], 'unauthorized': [module4, "next/dist/client/components/builtin/unauthorized.js"], metadata: { icon: [(async (props) => (await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 2645))).default(props))], apple: [(async (props) => (await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 45639))).default(props))], openGraph: [], twitter: [], manifest: undefined } } ] }.children; const pages = ["/opt/canhelp/apps/web/src/app/support/page.tsx"]; const __next_app_require__ = __webpack_require__ const __next_app_load_chunk__ = () => Promise.resolve() const __next_app__ = { require: __next_app_require__, loadChunk: __next_app_load_chunk__ }; // Create and export the route module that will be consumed. const routeModule = new next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({ definition: { kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE, page: "/support/page", pathname: "/support", // The following aren't used in production. bundlePath: '', filename: '', appPaths: [] }, userland: { loaderTree: tree }, distDir: ".next" || 0, relativeProjectDir: false || '' }); async function handler(req, res, ctx) { var _this; let srcPage = "/support/page"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const initialPostponed = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed'); // TODO: replace with more specific flags const minimalMode = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'minimalMode'); const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, query, params, parsedUrl, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, interceptionRoutePatterns } = prepareResult; const pathname = parsedUrl.pathname || '/'; const normalizedSrcPage = (0,next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__.normalizeAppPath)(srcPage); let { isOnDemandRevalidate } = prepareResult; const prerenderInfo = routeModule.match(pathname, prerenderManifest); const isPrerendered = !!prerenderManifest.routes[resolvedPathname]; let isSSG = Boolean(prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]); const userAgent = req.headers['user-agent'] || ''; const botType = (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.getBotType)(userAgent); const isHtmlBot = (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.isHtmlBotRequest)(req); /** * If true, this indicates that the request being made is for an app * prefetch request. */ const isPrefetchRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isPrefetchRSCRequest') ?? req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2' ; // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later const isRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isRSCRequest') ?? Boolean(req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_HEADER]); const isPossibleServerAction = (0,next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__.getIsPossibleServerAction)(req); /** * If the route being rendered is an app page, and the ppr feature has been * enabled, then the given route _could_ support PPR. */ const couldSupportPPR = (0,next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__.checkIsAppPPREnabled)(nextConfig.experimental.ppr); // When enabled, this will allow the use of the `?__nextppronly` query to // enable debugging of the static shell. const hasDebugStaticShellQuery = false && 0; // When enabled, this will allow the use of the `?__nextppronly` query // to enable debugging of the fallback shell. const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback'; // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the // prerender manifest and this is an app page. const isRoutePPREnabled = couldSupportPPR && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR // enabled or not, but that would require plumbing the appConfig through // to the server during development. We assume that the page supports it // but only during development. hasDebugStaticShellQuery && (routeModule.isDev === true || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true)); const isDebugStaticShell = hasDebugStaticShellQuery && isRoutePPREnabled; // We should enable debugging dynamic accesses when the static shell // debugging has been enabled and we're also in development mode. const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true; const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled; // If we're in minimal mode, then try to get the postponed information from // the request metadata. If available, use it for resuming the postponed // render. const minimalPostponed = isRoutePPREnabled ? initialPostponed : undefined; // If PPR is enabled, and this is a RSC request (but not a prefetch), then // we can use this fact to only generate the flight data for the request // because we can't cache the HTML (as it's also dynamic). const isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest; // Need to read this before it's stripped by stripFlightHeaders. We don't // need to transfer it to the request meta because it's only read // within this function; the static segment data should have already been // generated, so we will always either return a static response or a 404. const segmentPrefetchHeader = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'segmentPrefetchRSCRequest'); // TODO: investigate existing bug with shouldServeStreamingMetadata always // being true for a revalidate due to modifying the base-server this.renderOpts // when fixing this to correct logic it causes hydration issue since we set // serveStreamingMetadata to true during export let serveStreamingMetadata = !userAgent ? true : (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.shouldServeStreamingMetadata)(userAgent, nextConfig.htmlLimitedBots); if (isHtmlBot && isRoutePPREnabled) { isSSG = false; serveStreamingMetadata = false; } // In development, we always want to generate dynamic HTML. let supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's // a data request, in which case we only produce static HTML. routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isSSG || // If this request has provided postponed data, it supports dynamic // HTML. typeof initialPostponed === 'string' || // If this is a dynamic RSC request, then this render supports dynamic // HTML (it's dynamic). isDynamicRSCRequest; // When html bots request PPR page, perform the full dynamic rendering. const shouldWaitOnAllReady = isHtmlBot && isRoutePPREnabled; let ssgCacheKey = null; if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) { ssgCacheKey = resolvedPathname; } // the staticPathKey differs from ssgCacheKey since // ssgCacheKey is null in dev since we're always in "dynamic" // mode in dev to bypass the cache, but we still need to honor // dynamicParams = false in dev mode let staticPathKey = ssgCacheKey; if (!staticPathKey && routeModule.isDev) { staticPathKey = resolvedPathname; } // If this is a request for an app path that should be statically generated // and we aren't in the edge runtime, strip the flight headers so it will // generate the static response. if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) { (0,next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__/* .stripFlightHeaders */ .d)(req.headers); } const ComponentMod = { ...next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__, tree, pages, GlobalError: (next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default()), handler, routeModule, __next_app__ }; // Before rendering (which initializes component tree modules), we have to // set the reference manifests to our global store so Server Action's // encryption util can access to them at the top level of the page module. if (serverActionsManifest && clientReferenceManifest) { (0,next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__.setReferenceManifestsSingleton)({ page: srcPage, clientReferenceManifest, serverActionsManifest, serverModuleMap: (0,next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__.createServerModuleMap)({ serverActionsManifest }) }); } const method = req.method || 'GET'; const tracer = (0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); try { const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns); res.setHeader('Vary', varyHeader); const invokeRouteModule = async (span, context)=>{ const nextReq = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextRequest(req); const nextRes = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextResponse(res); // TODO: adapt for putting the RDC inside the postponed data // If we're in dev, and this isn't a prefetch or a server action, // we should seed the resume data cache. if (false) {} return routeModule.render(nextReq, nextRes, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const doRender = async ({ span, postponed, fallbackRouteParams })=>{ const context = { query, params, page: normalizedSrcPage, sharedContext: { buildId }, serverComponentsHmrCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'serverComponentsHmrCache'), fallbackRouteParams, renderOpts: { App: ()=>null, Document: ()=>null, pageConfig: {}, ComponentMod, Component: (0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__/* .interopDefault */ .T)(ComponentMod), params, routeModule, page: srcPage, postponed, shouldWaitOnAllReady, serveStreamingMetadata, supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse, buildManifest, nextFontManifest, reactLoadableManifest, subresourceIntegrityManifest, serverActionsManifest, clientReferenceManifest, setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus, dir: true ? (__webpack_require__(33873).join)(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : 0, isDraftMode, isRevalidate: isSSG && !postponed && !isDynamicRSCRequest, botType, isOnDemandRevalidate, isPossibleServerAction, assetPrefix: nextConfig.assetPrefix, nextConfigOutput: nextConfig.output, crossOrigin: nextConfig.crossOrigin, trailingSlash: nextConfig.trailingSlash, previewProps: prerenderManifest.preview, deploymentId: nextConfig.deploymentId, enableTainting: nextConfig.experimental.taint, htmlLimitedBots: nextConfig.htmlLimitedBots, devtoolSegmentExplorer: nextConfig.experimental.devtoolSegmentExplorer, reactMaxHeadersLength: nextConfig.reactMaxHeadersLength, multiZoneDraftMode, incrementalCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: nextConfig.experimental.cacheLife, basePath: nextConfig.basePath, serverActions: nextConfig.experimental.serverActions, ...isDebugStaticShell || isDebugDynamicAccesses ? { nextExport: true, supportsDynamicResponse: false, isStaticGeneration: true, isRevalidate: true, isDebugDynamicAccesses: isDebugDynamicAccesses } : {}, experimental: { isRoutePPREnabled, expireTime: nextConfig.expireTime, staleTimes: nextConfig.experimental.staleTimes, cacheComponents: Boolean(nextConfig.experimental.cacheComponents), clientSegmentCache: Boolean(nextConfig.experimental.clientSegmentCache), clientParamParsing: Boolean(nextConfig.experimental.clientParamParsing), dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover), inlineCss: Boolean(nextConfig.experimental.inlineCss), authInterrupts: Boolean(nextConfig.experimental.authInterrupts), clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || [] }, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: ()=>{}, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext), err: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'invokeError'), dev: routeModule.isDev } }; const result = await invokeRouteModule(span, context); const { metadata } = result; const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers. fetchTags: cacheTags } = metadata; if (cacheTags) { headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER] = cacheTags; } // Pull any fetch metrics from the render onto the request. ; req.fetchMetrics = metadata.fetchMetrics; // we don't throw static to dynamic errors in dev as isSSG // is a best guess in dev since we don't have the prerender pass // to know whether the path is actually static or not if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) { const staticBailoutInfo = metadata.staticBailoutInfo; const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), "__NEXT_ERROR_CODE", { value: "E132", enumerable: false, configurable: true }); if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) { const stack = staticBailoutInfo.stack; err.stack = err.message + stack.substring(stack.indexOf('\n')); } throw err; } return { value: { kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE, html: result, headers, rscData: metadata.flightData, postponed: metadata.postponed, status: metadata.statusCode, segmentData: metadata.segmentData }, cacheControl }; }; const responseGenerator = async ({ hasResolved, previousCacheEntry, isRevalidating, span })=>{ const isProduction = routeModule.isDev === false; const didRespond = hasResolved || res.writableEnded; // skip on-demand revalidate if cache is not present and // revalidate-if-generated is set if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry && !minimalMode) { if (routerServerContext == null ? void 0 : routerServerContext.render404) { await routerServerContext.render404(req, res); } else { res.statusCode = 404; res.end('This page could not be found'); } return null; } let fallbackMode; if (prerenderInfo) { fallbackMode = (0,next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.parseFallbackField)(prerenderInfo.fallback); } // When serving a HTML bot request, we want to serve a blocking render and // not the prerendered page. This ensures that the correct content is served // to the bot in the head. if (fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.PRERENDER && (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.isBot)(userAgent)) { if (!isRoutePPREnabled || isHtmlBot) { fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER; } } if ((previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) === -1) { isOnDemandRevalidate = true; } // TODO: adapt for PPR // only allow on-demand revalidate for fallback: true/blocking // or for prerendered fallback: false paths if (isOnDemandRevalidate && (fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND || previousCacheEntry)) { fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER; } if (!minimalMode && fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) { // if the page has dynamicParams: false and this pathname wasn't // prerendered trigger the no fallback handling if (// In development, fall through to render to handle missing // getStaticPaths. (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404 fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND) { throw new next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError(); } let fallbackResponse; if (isRoutePPREnabled && !isRSCRequest) { const cacheKey = typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : isProduction ? normalizedSrcPage : null; // We use the response cache here to handle the revalidation and // management of the fallback shell. fallbackResponse = await routeModule.handleResponse({ cacheKey, req, nextConfig, routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE, isFallback: true, prerenderManifest, isRoutePPREnabled, responseGenerator: async ()=>doRender({ span, // We pass `undefined` as rendering a fallback isn't resumed // here. postponed: undefined, fallbackRouteParams: // If we're in production or we're debugging the fallback // shell then we should postpone when dynamic params are // accessed. isProduction || isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__/* .getFallbackRouteParams */ .u)(normalizedSrcPage) : null }), waitUntil: ctx.waitUntil }); // If the fallback response was set to null, then we should return null. if (fallbackResponse === null) return null; // Otherwise, if we did get a fallback response, we should return it. if (fallbackResponse) { // Remove the cache control from the response to prevent it from being // used in the surrounding cache. delete fallbackResponse.cacheControl; return fallbackResponse; } } } // Only requests that aren't revalidating can be resumed. If we have the // minimal postponed data, then we should resume the render with it. const postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined; // When we're in minimal mode, if we're trying to debug the static shell, // we should just return nothing instead of resuming the dynamic render. if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') { return { cacheControl: { revalidate: 1, expire: undefined }, value: { kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.PAGES, html: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"].EMPTY, pageData: {}, headers: undefined, status: undefined } }; } // If this is a dynamic route with PPR enabled and the default route // matches were set, then we should pass the fallback route params to // the renderer as this is a fallback revalidation request. const fallbackRouteParams = pageIsDynamic && isRoutePPREnabled && ((0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'renderFallbackShell') || isDebugFallbackShell) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__/* .getFallbackRouteParams */ .u)(pathname) : null; // Perform the render. return doRender({ span, postponed, fallbackRouteParams }); }; const handleResponse = async (span)=>{ var _cacheEntry_value, _cachedData_headers; const cacheEntry = await routeModule.handleResponse({ cacheKey: ssgCacheKey, responseGenerator: (c)=>responseGenerator({ span, ...c }), routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE, isOnDemandRevalidate, isRoutePPREnabled, req, nextConfig, prerenderManifest, waitUntil: ctx.waitUntil }); if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } // In dev, we should not cache pages for any reason. if (routeModule.isDev) { res.setHeader('Cache-Control', 'no-store, must-revalidate'); } if (!cacheEntry) { if (ssgCacheKey) { // A cache entry might not be generated if a response is written // in `getInitialProps` or `getServerSideProps`, but those shouldn't // have a cache key. If we do have a cache key but we don't end up // with a cache entry, then either Next.js or the application has a // bug that needs fixing. throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), "__NEXT_ERROR_CODE", { value: "E62", enumerable: false, configurable: true }); } return null; } if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E707", enumerable: false, configurable: true }); } const didPostpone = typeof cacheEntry.value.postponed === 'string'; if (isSSG && // We don't want to send a cache header for requests that contain dynamic // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC // request, then we should set the cache header. !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) { if (!minimalMode) { // set x-nextjs-cache header to match the header // we set for the image-optimizer res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Set a header used by the client router to signal the response is static // and should respect the `static` cache staleTime value. res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_IS_PRERENDER_HEADER, '1'); } const { value: cachedData } = cacheEntry; // Coerce the cache control parameter from the render. let cacheControl; // If this is a resume request in minimal mode it is streamed with dynamic // content and should not be cached. if (minimalPostponed) { cacheControl = { revalidate: 0, expire: undefined }; } else if (minimalMode && isRSCRequest && !isPrefetchRSCRequest && isRoutePPREnabled) { cacheControl = { revalidate: 0, expire: undefined }; } else if (!routeModule.isDev) { // If this is a preview mode request, we shouldn't cache it if (isDraftMode) { cacheControl = { revalidate: 0, expire: undefined }; } else if (!isSSG) { if (!res.getHeader('Cache-Control')) { cacheControl = { revalidate: 0, expire: undefined }; } } else if (cacheEntry.cacheControl) { // If the cache entry has a cache control with a revalidate value that's // a number, use it. if (typeof cacheEntry.cacheControl.revalidate === 'number') { var _cacheEntry_cacheControl; if (cacheEntry.cacheControl.revalidate < 1) { throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), "__NEXT_ERROR_CODE", { value: "E22", enumerable: false, configurable: true }); } cacheControl = { revalidate: cacheEntry.cacheControl.revalidate, expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime }; } else { cacheControl = { revalidate: next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.CACHE_ONE_YEAR, expire: undefined }; } } } cacheEntry.cacheControl = cacheControl; if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE && cachedData.segmentData) { var _cachedData_headers1; // This is a prefetch request issued by the client Segment Cache. These // should never reach the application layer (lambda). We should either // respond from the cache (HIT) or respond with 204 No Content (MISS). // Set a header to indicate that PPR is enabled for this route. This // lets the client distinguish between a regular cache miss and a cache // miss due to PPR being disabled. In other contexts this header is used // to indicate that the response contains dynamic data, but here we're // only using it to indicate that the feature is enabled — the segment // response itself contains whether the data is dynamic. res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '2'); // Add the cache tags header to the response if it exists and we're in // minimal mode while rendering a static page. const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER]; if (minimalMode && isSSG && tags && typeof tags === 'string') { res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags); } const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader); if (matchedSegment !== undefined) { // Cache hit return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"].fromStatic(matchedSegment, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER), cacheControl: cacheEntry.cacheControl }); } // Cache miss. Either a cache entry for this route has not been generated // (which technically should not be possible when PPR is enabled, because // at a minimum there should always be a fallback entry) or there's no // match for the requested segment. Respond with a 204 No Content. We // don't bother to respond with 404, because these requests are only // issued as part of a prefetch. res.statusCode = 204; return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"].EMPTY, cacheControl: cacheEntry.cacheControl }); } // If there's a callback for `onCacheEntry`, call it with the cache entry // and the revalidate options. const onCacheEntry = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry'); if (onCacheEntry) { const finished = await onCacheEntry({ ...cacheEntry, // TODO: remove this when upstream doesn't // always expect this value to be "PAGE" value: { ...cacheEntry.value, kind: 'PAGE' } }, { url: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'initURL') }); if (finished) { // TODO: maybe we have to end the request? return null; } } // If the request has a postponed state and it's a resume request we // should error. if (didPostpone && minimalPostponed) { throw Object.defineProperty(new Error('Invariant: postponed state should not be present on a resume request'), "__NEXT_ERROR_CODE", { value: "E396", enumerable: false, configurable: true }); } if (cachedData.headers) { const headers = { ...cachedData.headers }; if (!minimalMode || !isSSG) { delete headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER]; } for (let [key, value] of Object.entries(headers)){ if (typeof value === 'undefined') continue; if (Array.isArray(value)) { for (const v of value){ res.appendHeader(key, v); } } else if (typeof value === 'number') { value = value.toString(); res.appendHeader(key, value); } else { res.appendHeader(key, value); } } } // Add the cache tags header to the response if it exists and we're in // minimal mode while rendering a static page. const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER]; if (minimalMode && isSSG && tags && typeof tags === 'string') { res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags); } // If the request is a data request, then we shouldn't set the status code // from the response because it should always be 200. This should be gated // behind the experimental PPR flag. if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) { res.statusCode = cachedData.status; } // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes if (!minimalMode && cachedData.status && next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__.RedirectStatusCode[cachedData.status] && isRSCRequest) { res.statusCode = 200; } // Mark that the request did postpone. if (didPostpone) { res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '1'); } // we don't go through this block when preview mode is true // as preview mode is a dynamic request (bypasses cache) and doesn't // generate both HTML and payloads in the same request so continue to just // return the generated payload if (isRSCRequest && !isDraftMode) { // If this is a dynamic RSC request, then stream the response. if (typeof cachedData.rscData === 'undefined') { if (cachedData.postponed) { throw Object.defineProperty(new Error('Invariant: Expected postponed to be undefined'), "__NEXT_ERROR_CODE", { value: "E372", enumerable: false, configurable: true }); } return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: cachedData.html, // Dynamic RSC responses cannot be cached, even if they're // configured with `force-static` because we have no way of // distinguishing between `force-static` and pages that have no // postponed state. // TODO: distinguish `force-static` from pages with no postponed state (static) cacheControl: isDynamicRSCRequest ? { revalidate: 0, expire: undefined } : cacheEntry.cacheControl }); } // As this isn't a prefetch request, we should serve the static flight // data. return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"].fromStatic(cachedData.rscData, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER), cacheControl: cacheEntry.cacheControl }); } // This is a request for HTML data. let body = cachedData.html; // If there's no postponed state, we should just serve the HTML. This // should also be the case for a resume request because it's completed // as a server render (rather than a static render). if (!didPostpone || minimalMode || isRSCRequest) { // If we're in test mode, we should add a sentinel chunk to the response // that's between the static and dynamic parts so we can compare the // chunks and add assertions. if (false) {} return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, cacheControl: cacheEntry.cacheControl }); } // If we're debugging the static shell or the dynamic API accesses, we // should just serve the HTML without resuming the render. The returned // HTML will be the static shell so all the Dynamic API's will be used // during static generation. if (isDebugStaticShell || isDebugDynamicAccesses) { // Since we're not resuming the render, we need to at least add the // closing body and html tags to create valid HTML. body.push(new ReadableStream({ start (controller) { controller.enqueue(next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__.ENCODED_TAGS.CLOSED.BODY_AND_HTML); controller.close(); } })); return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, cacheControl: { revalidate: 0, expire: undefined } }); } // If we're in test mode, we should add a sentinel chunk to the response // that's between the static and dynamic parts so we can compare the // chunks and add assertions. if (false) {} // This request has postponed, so let's create a new transformer that the // dynamic data can pipe to that will attach the dynamic data to the end // of the response. const transformer = new TransformStream(); body.push(transformer.readable); // Perform the render again, but this time, provide the postponed state. // We don't await because we want the result to start streaming now, and // we've already chained the transformer's readable to the render result. doRender({ span, postponed: cachedData.postponed, // This is a resume render, not a fallback render, so we don't need to // set this. fallbackRouteParams: null }).then(async (result)=>{ var _result_value; if (!result) { throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), "__NEXT_ERROR_CODE", { value: "E463", enumerable: false, configurable: true }); } if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) { var _result_value1; throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E305", enumerable: false, configurable: true }); } // Pipe the resume result to the transformer. await result.value.html.pipeTo(transformer.writable); }).catch((err)=>{ // An error occurred during piping or preparing the render, abort // the transformers writer so we can terminate the stream. transformer.writable.abort(err).catch((e)=>{ console.error("couldn't abort transformer", e); }); }); return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({ req, res, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, result: body, // We don't want to cache the response if it has postponed data because // the response being sent to the client it's dynamic parts are streamed // to the client on the same request. cacheControl: { revalidate: 0, expire: undefined } }); }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'render', revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__/* .getRevalidateReason */ .c)({ isRevalidate: isSSG, isOnDemandRevalidate }) }, routerServerContext); } // rethrow so that we can handle serving error page throw err; } } // TODO: omit this from production builds, only test builds should include it /** * Creates a readable stream that emits a PPR boundary sentinel. * * @returns A readable stream that emits a PPR boundary sentinel. */ function createPPRBoundarySentinel() { return new ReadableStream({ start (controller) { controller.enqueue(new TextEncoder().encode('')); controller.close(); } }); } //# sourceMappingURL=app-page.js.map [^ _#__webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default.a), /* harmony export */ __next_app__: () => (/* binding */ __next_app__), /* harmony export */ handler: () => (/* binding */ handler), /* harmony export */ pages: () => (/* binding */ pages), /* harmony export */ routeModule: () => (/* binding */ routeModule), /* harmony export */ tree: () => (/* binding */ tree) /* harmony export */ }); /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(73653); /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97714); /* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(85250); /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37587); /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22369); /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1889); /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(96232); /* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22841); /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(46537); /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__); /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(46027); /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(78559); /* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(75928); /* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(19374); /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__); /* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(65971); /* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__); /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(261); /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__); /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(79898); /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__); /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(32967); /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__); /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(26713); /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__); /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(40139); /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__); /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(14248); /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__); /* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(59580); /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(57749); /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__); /* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(53123); /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(89745); /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__); /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(86439); /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__); /* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(58671); /* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__); /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(18283); /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__); /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(39818); /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__) if(["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); `k$'2298Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 47570))undefined123210Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 58671, 23))undefined235314Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 33506))undefined339423Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 15034, 23))undefined448535Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 54693, 23))undefined558640Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 7497))undefined643783undefined785899undefined901977undefined9791050undefined10521114undefined11161185undefined11871263undefined12651350undefined13521435undefined14371513undefined15151596undefined15981691undefined16931797undefined17991879undefined18811959undefined19612052undefined20542235undefined22372313undefined23152380undefined23822455undefined24572514undefined25162622undefined26242697undefined26992763undefined27652846undefined32573479Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 2645))undefined35373766Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 45639))undefined43264548Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 2645))undefined46064835Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 45639))undefined50205042undefined50445180undefined51825204undefined52355253__webpack_require__undefined53115317undefined54185544undefined55465631undefined56335746undefined58095815undefined58405857next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModuleundefined58935901next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKindundefined61616196".next"undefined620162020undefined62296267 falseundefined62796285undefined65676587falseundefined65906654{}undefined68006839falseundefined68716884(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined69756988(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined77547769(0,next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__.normalizeAppPath)undefined81568165(0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.getBotType)undefined82018216(0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.isHtmlBotRequest)undefined83618374(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined84208446next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_ROUTER_PREFETCH_HEADERundefined86258638(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined86848693next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_HEADERundefined87338757(0,next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__.getIsPossibleServerAction)undefined89378956(0,next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__.checkIsAppPPREnabled)undefined91489255 falseundefined926092740undefined1157011583(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined1196811995(0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.shouldServeStreamingMetadata)undefined1378013797(0,next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__/* .stripFlightHeaders */ .d)undefined1385713865next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__undefined1391613915: (next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default())undefined1428414313(0,next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__.setReferenceManifestsSingleton)undefined1444514465(0,next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__.createServerModuleMap)undefined1459914607(0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)undefined1490714921next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextRequestundefined1496114976next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextResponseundefined1520415241falseundefined1524415819{}undefined1639716410next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpanundefined1749717510(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined1778917802(0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__/* .interopDefault */ .T)undefined1852118557 trueundefined1856118580(__webpack_require__(33873).join)undefined18659187100undefined1967119684(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined2152521538(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined2196221983next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADERundefined2342223436next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKindundefined2468224699(0,next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.parseFallbackField)undefined2498824999next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackModeundefined2501425018(0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.isBot)undefined2512425135next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackModeundefined2556925580next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackModeundefined2564925660next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackModeundefined2574925760next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackModeundefined2629326304next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackModeundefined2634926363next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackErrorundefined2701527023next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKindundefined2776927790(0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__/* .getFallbackRouteParams */ .u)undefined2931829332next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKindundefined2937129382next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"]undefined2988429897(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined2995429975(0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__/* .getFallbackRouteParams */ .u)undefined3055030558next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKindundefined3203732051next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKindundefined3340333426next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_IS_PRERENDER_HEADERundefined3589335906next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.CACHE_ONE_YEARundefined3620136215next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKindundefined3709837121next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADERundefined3739337414next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADERundefined3753237553next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADERundefined3778337798(0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)undefined3802638037next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"]undefined3806638088next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADERundefined3874438759(0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)undefined3896738978next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"]undefined3924139254(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined3970239715(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)undefined4058540606next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADERundefined4148541506next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADERundefined4161641637next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADERundefined4219042207next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__.RedirectStatusCodeundefined4241142434next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADERundefined4333043345(0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)undefined4437344388(0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)undefined4459644607next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__["default"]undefined4464044662next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADERundefined4537945491falseundefined4549445844{}undefined4586945884(0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)undefined4682846839next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__.ENCODED_TAGSundefined4697446989(0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)undefined4760047627falseundefined4763047700{}undefined4900849022next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKindundefined4994649961(0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)undefined5083650849next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpanundefined5094850955next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKindundefined5121151225next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackErrorundefined5143751455(0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__/* .getRevalidateReason */ .c)undefinedabc__webpack_require__.t__webpack_require__.rfGH webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource__webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25459); /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__); webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSource(// This file is generated by the Webpack next-flight-loader. import { registerClientReference } from "react-server-dom-webpack/server"; export default registerClientReference( function() { throw new Error("Attempted to call the default export of \"/opt/canhelp/apps/web/src/app/support/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); }, "/opt/canhelp/apps/web/src/app/support/page.tsx", "default", ); `=G& 4@/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference));MT__webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25459); /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__); // This file is generated by the Webpack next-flight-loader. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)( function() { throw new Error("Attempted to call the default export of \"/opt/canhelp/apps/web/src/app/support/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); }, "/opt/canhelp/apps/web/src/app/support/page.tsx", "default", )); NQ R__webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25459); /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__); S(// This file is generated by the Webpack next-flight-loader. import { registerClientReference } from "react-server-dom-webpack/server"; export default registerClientReference( function() { throw new Error("Attempted to call the default export of \"/opt/canhelp/apps/web/src/app/support/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); }, "/opt/canhelp/apps/web/src/app/support/page.tsx", "default", ); 61134undefined136150/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (undefined136150undefined151173(0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)undefined550550.5);undefinedSTU:; Wwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceUimport(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/support/page.tsx"); `RPromise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 31179))@bPromise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 31179)); AD Gl082Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 31179))undefinedH01 Vwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceUimport(/* webpackMode: "eager" */ "/opt/canhelp/apps/web/src/app/support/page.tsx"); `RPromise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 7497))6aPromise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 7497)); 7: =k082Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 7497))undefined>!#%$& webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource // EXPORTS __webpack_require__.d(__webpack_exports__, { Footer: () => (/* binding */ Footer) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js var react_jsx_runtime = __webpack_require__(78157); // EXTERNAL MODULE: ./src/context/locale.tsx var locale = __webpack_require__(96484); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js var react = __webpack_require__(31768); // EXTERNAL MODULE: ../../node_modules/next/dist/client/app-dir/link.js var app_dir_link = __webpack_require__(94496); var link_default = /*#__PURE__*/__webpack_require__.n(app_dir_link); ;// ./src/components/SocialIcons.tsx webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceqimport { jsx as _jsx } from "react/jsx-runtime"; const ICONS = [ { key: 'telegram', label: 'Telegram', hoverClass: 'hover:text-sky-500', svg: '' }, { key: 'instagram', label: 'Instagram', hoverClass: 'hover:text-pink-500', svg: '' }, { key: 'facebook', label: 'Facebook', hoverClass: 'hover:text-green-600', svg: '' }, { key: 'twitter', label: 'X', hoverClass: 'hover:text-gray-900', svg: '' }, { key: 'youtube', label: 'YouTube', hoverClass: 'hover:text-red-600', svg: '' }, { key: 'tiktok', label: 'TikTok', hoverClass: 'hover:text-black', svg: '' }, { key: 'whatsapp', label: 'WhatsApp', hoverClass: 'hover:text-green-500', svg: '' }, { key: 'viber', label: 'Viber', hoverClass: 'hover:text-purple-600', svg: '' } ]; export function SocialIcons({ className = '', links }) { const active = ICONS.filter(({ key })=>links?.[key]); if (active.length === 0) return null; return /*#__PURE__*/ _jsx("div", { className: `flex gap-4 flex-wrap ${className}`, children: active.map(({ key, label, hoverClass, svg })=>/*#__PURE__*/ _jsx("a", { href: links[key], target: "_blank", rel: "noopener noreferrer", "aria-label": label, className: `text-gray-500 transition ${hoverClass}`, children: /*#__PURE__*/ _jsx("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "currentColor", dangerouslySetInnerHTML: { __html: svg } }) }, key)) }); } `/G#&14__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._buffersourcesizemapshash const ICONS = [ { key: 'telegram', label: 'Telegram', hoverClass: 'hover:text-sky-500', svg: '' }, { key: 'instagram', label: 'Instagram', hoverClass: 'hover:text-pink-500', svg: '' }, { key: 'facebook', label: 'Facebook', hoverClass: 'hover:text-green-600', svg: '' }, { key: 'twitter', label: 'X', hoverClass: 'hover:text-gray-900', svg: '' }, { key: 'youtube', label: 'YouTube', hoverClass: 'hover:text-red-600', svg: '' }, { key: 'tiktok', label: 'TikTok', hoverClass: 'hover:text-black', svg: '' }, { key: 'whatsapp', label: 'WhatsApp', hoverClass: 'hover:text-green-500', svg: '' }, { key: 'viber', label: 'Viber', hoverClass: 'hover:text-purple-600', svg: '' } ]; function SocialIcons({ className = '', links }) { const active = ICONS.filter(({ key })=>links?.[key]); if (active.length === 0) return null; return /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("div", { className: `flex gap-4 flex-wrap ${className}`, children: active.map(({ key, label, hoverClass, svg })=>/*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("a", { href: links[key], target: "_blank", rel: "noopener noreferrer", "aria-label": label, className: `text-gray-500 transition ${hoverClass}`, children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "currentColor", dangerouslySetInnerHTML: { __html: svg } }) }, key)) }); } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourceqimport { jsx as _jsx } from "react/jsx-runtime"; const ICONS = [ { key: 'telegram', label: 'Telegram', hoverClass: 'hover:text-sky-500', svg: '' }, { key: 'instagram', label: 'Instagram', hoverClass: 'hover:text-pink-500', svg: '' }, { key: 'facebook', label: 'Facebook', hoverClass: 'hover:text-green-600', svg: '' }, { key: 'twitter', label: 'X', hoverClass: 'hover:text-gray-900', svg: '' }, { key: 'youtube', label: 'YouTube', hoverClass: 'hover:text-red-600', svg: '' }, { key: 'tiktok', label: 'TikTok', hoverClass: 'hover:text-black', svg: '' }, { key: 'whatsapp', label: 'WhatsApp', hoverClass: 'hover:text-green-500', svg: '' }, { key: 'viber', label: 'Viber', hoverClass: 'hover:text-purple-600', svg: '' } ]; export function SocialIcons({ className = '', links }) { const active = ICONS.filter(({ key })=>links?.[key]); if (active.length === 0) return null; return /*#__PURE__*/ _jsx("div", { className: `flex gap-4 flex-wrap ${className}`, children: active.map(({ key, label, hoverClass, svg })=>/*#__PURE__*/ _jsx("a", { href: links[key], target: "_blank", rel: "noopener noreferrer", "aria-label": label, className: `text-gray-500 transition ${hoverClass}`, children: /*#__PURE__*/ _jsx("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "currentColor", dangerouslySetInnerHTML: { __html: svg } }) }, key)) }); } 1047undefined63616367undefined65436546__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined66916694__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined69616964__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefinedEX3}(0,react_jsx_runtime.jsx)! ;// ./src/components/Footer.tsx  !webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/* __next_internal_client_entry_do_not_use__ Footer auto */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { useLocale } from '@/context/locale'; import { useEffect, useState } from 'react'; import Link from 'next/link'; import { SocialIcons } from './SocialIcons'; const API = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; export function Footer() { const { t } = useLocale(); const year = new Date().getFullYear(); const [socialLinks, setSocialLinks] = useState({}); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && useEffect(()=>{ fetch(`${API}/api/admin/social-public`).then((r)=>r.ok ? r.json() : {}).then((kv)=>{ const links = {}; for (const [k, v] of Object.entries(kv)){ if (v) links[k.replace('social.', '')] = v; } setSocialLinks(links); }).catch(()=>{}); }, []); return /*#__PURE__*/ _jsx("footer", { className: "bg-white border-t border-gray-200 mt-16", children: /*#__PURE__*/ _jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: [ /*#__PURE__*/ _jsxs("div", { className: "flex flex-col md:flex-row justify-between items-start gap-10", children: [ /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[200px] flex flex-col items-start", children: [ /*#__PURE__*/ _jsx("span", { className: "logo-text text-3xl text-green-700 font-bold mb-2", children: "CanHelp" }), /*#__PURE__*/ _jsx("p", { className: "text-base text-gray-600 mb-4", children: t('footer.slogan') }) ] }), /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.links') }), /*#__PURE__*/ _jsxs("ul", { className: "space-y-2", children: [ /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/", className: "hover:text-green-600 transition", children: t('nav.home') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/tasks", className: "hover:text-green-600 transition", children: t('nav.tasks') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/specialists", className: "hover:text-green-600 transition", children: t('nav.specialists') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/pricing", className: "hover:text-green-600 transition", children: t('nav.pricing') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/support", className: "hover:text-green-600 transition", children: t('support.title') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/privacy", className: "hover:text-green-600 transition", children: t('nav.privacy') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/delete-account", className: "hover:text-red-500 transition", children: t('nav.delete_account') }) }) ] }) ] }), /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.socials') }), /*#__PURE__*/ _jsx("p", { className: "text-gray-500 text-sm mb-2", children: "info@canhelp.gr" }), /*#__PURE__*/ _jsx(SocialIcons, { className: "mt-2", links: socialLinks }) ] }) ] }), /*#__PURE__*/ _jsxs("div", { className: "mt-10 border-t border-gray-100 pt-6 text-center text-gray-400 text-sm", children: [ "\xa9 ", year, " CanHelp. ", t('footer.rights') ] }) ] }) }); } c/FZ^3_7 Q T '*x{}  Z]_b4Z79<|"https://api.canhelp.gr"0__WEBPACK_MODULE_REFERENCE__1_5b227573654c6f63616c65225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b227573655374617465225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b22757365456666656374225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22536f6369616c49636f6e73225d_directImport_asiSafe1__._'/* __next_internal_client_entry_do_not_use__ Footer auto */ const API = "https://api.canhelp.gr" || 0; function Footer() { const { t } = __WEBPACK_MODULE_REFERENCE__1_5b227573654c6f63616c65225d_call_directImport_asiSafe1__._(); const year = new Date().getFullYear(); const [socialLinks, setSocialLinks] = __WEBPACK_MODULE_REFERENCE__2_5b227573655374617465225d_call_directImport_asiSafe1__._({}); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && __WEBPACK_MODULE_REFERENCE__2_5b22757365456666656374225d_call_directImport_asiSafe1__._(()=>{ fetch(`${API}/api/admin/social-public`).then((r)=>r.ok ? r.json() : {}).then((kv)=>{ const links = {}; for (const [k, v] of Object.entries(kv)){ if (v) links[k.replace('social.', '')] = v; } setSocialLinks(links); }).catch(()=>{}); }, []); return /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("footer", { className: "bg-white border-t border-gray-200 mt-16", children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: [ /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._("div", { className: "flex flex-col md:flex-row justify-between items-start gap-10", children: [ /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._("div", { className: "flex-1 min-w-[200px] flex flex-col items-start", children: [ /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("span", { className: "logo-text text-3xl text-green-700 font-bold mb-2", children: "CanHelp" }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("p", { className: "text-base text-gray-600 mb-4", children: t('footer.slogan') }) ] }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.links') }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._("ul", { className: "space-y-2", children: [ /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("li", { children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._, { href: "/", className: "hover:text-green-600 transition", children: t('nav.home') }) }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("li", { children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._, { href: "/tasks", className: "hover:text-green-600 transition", children: t('nav.tasks') }) }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("li", { children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._, { href: "/specialists", className: "hover:text-green-600 transition", children: t('nav.specialists') }) }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("li", { children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._, { href: "/pricing", className: "hover:text-green-600 transition", children: t('nav.pricing') }) }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("li", { children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._, { href: "/support", className: "hover:text-green-600 transition", children: t('support.title') }) }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("li", { children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._, { href: "/privacy", className: "hover:text-green-600 transition", children: t('nav.privacy') }) }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("li", { children: /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._, { href: "/delete-account", className: "hover:text-red-500 transition", children: t('nav.delete_account') }) }) ] }) ] }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.socials') }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._("p", { className: "text-gray-500 text-sm mb-2", children: "info@canhelp.gr" }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._(__WEBPACK_MODULE_REFERENCE__4_5b22536f6369616c49636f6e73225d_directImport_asiSafe1__._, { className: "mt-2", links: socialLinks }) ] }) ] }), /*#__PURE__*/ __WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._("div", { className: "mt-10 border-t border-gray-100 pt-6 text-center text-gray-400 text-sm", children: [ "\xa9 ", year, " CanHelp. ", t('footer.rights') ] }) ] }) }); }  /* __next_internal_client_entry_do_not_use__ Footer auto */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { useLocale } from '@/context/locale'; import { useEffect, useState } from 'react'; import Link from 'next/link'; import { SocialIcons } from './SocialIcons'; const API = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; export function Footer() { const { t } = useLocale(); const year = new Date().getFullYear(); const [socialLinks, setSocialLinks] = useState({}); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && useEffect(()=>{ fetch(`${API}/api/admin/social-public`).then((r)=>r.ok ? r.json() : {}).then((kv)=>{ const links = {}; for (const [k, v] of Object.entries(kv)){ if (v) links[k.replace('social.', '')] = v; } setSocialLinks(links); }).catch(()=>{}); }, []); return /*#__PURE__*/ _jsx("footer", { className: "bg-white border-t border-gray-200 mt-16", children: /*#__PURE__*/ _jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: [ /*#__PURE__*/ _jsxs("div", { className: "flex flex-col md:flex-row justify-between items-start gap-10", children: [ /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[200px] flex flex-col items-start", children: [ /*#__PURE__*/ _jsx("span", { className: "logo-text text-3xl text-green-700 font-bold mb-2", children: "CanHelp" }), /*#__PURE__*/ _jsx("p", { className: "text-base text-gray-600 mb-4", children: t('footer.slogan') }) ] }), /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.links') }), /*#__PURE__*/ _jsxs("ul", { className: "space-y-2", children: [ /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/", className: "hover:text-green-600 transition", children: t('nav.home') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/tasks", className: "hover:text-green-600 transition", children: t('nav.tasks') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/specialists", className: "hover:text-green-600 transition", children: t('nav.specialists') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/pricing", className: "hover:text-green-600 transition", children: t('nav.pricing') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/support", className: "hover:text-green-600 transition", children: t('support.title') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/privacy", className: "hover:text-green-600 transition", children: t('nav.privacy') }) }), /*#__PURE__*/ _jsx("li", { children: /*#__PURE__*/ _jsx(Link, { href: "/delete-account", className: "hover:text-red-500 transition", children: t('nav.delete_account') }) }) ] }) ] }), /*#__PURE__*/ _jsxs("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.socials') }), /*#__PURE__*/ _jsx("p", { className: "text-gray-500 text-sm mb-2", children: "info@canhelp.gr" }), /*#__PURE__*/ _jsx(SocialIcons, { className: "mt-2", links: socialLinks }) ] }) ] }), /*#__PURE__*/ _jsxs("div", { className: "mt-10 border-t border-gray-100 pt-6 text-center text-gray-400 text-sm", children: [ "\xa9 ", year, " CanHelp. ", t('footer.rights') ] }) ] }) }); } 60122undefined124168undefined170213undefined215243undefined245288undefined302332"https://api.canhelp.gr"undefined3373590undefined362368undefined407415__WEBPACK_MODULE_REFERENCE__1_5b227573654c6f63616c65225d_call_directImport_asiSafe1__._undefined505512__WEBPACK_MODULE_REFERENCE__2_5b227573655374617465225d_call_directImport_asiSafe1__._undefined574582__WEBPACK_MODULE_REFERENCE__2_5b22757365456666656374225d_call_directImport_asiSafe1__._undefined939942__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined10501054__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined11901194__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined13701374__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined15601563__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined18121815__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined20992103__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined22632266__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined25132517__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined26892692__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined27702773__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined27752778__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined31533156__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined32343237__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined32393242__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined36233626__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined37043707__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined37093712__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined41054108__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined41864189__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined41914194__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined45794582__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined46604663__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined46654668__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined50555058__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined51365139__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined51415144__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined55295532__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined56105613__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined56155618__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined61296133__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined62936296__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined65456548__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined67806783__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined67856795__WEBPACK_MODULE_REFERENCE__4_5b22536f6369616c49636f6e73225d_directImport_asiSafe1__._undefined70747078__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined`'_B*Eeae^  = 3 _)su?!#pC*C_AC[MBA -!w!p""###C$Z%%(0,locale/* useLocale */.Y)(0,react.useState)(0,react.useEffect)(0,react_jsx_runtime.jsxs)(link_default())SocialIcons+>> // EXPORTS __webpack_require__.d(__webpack_exports__, { Footer: () => (/* binding */ Footer) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js var react_jsx_runtime = __webpack_require__(78157); // EXTERNAL MODULE: ./src/context/locale.tsx var locale = __webpack_require__(96484); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js var react = __webpack_require__(31768); // EXTERNAL MODULE: ../../node_modules/next/dist/client/app-dir/link.js var app_dir_link = __webpack_require__(94496); var link_default = /*#__PURE__*/__webpack_require__.n(app_dir_link); ;// ./src/components/SocialIcons.tsx const ICONS = [ { key: 'telegram', label: 'Telegram', hoverClass: 'hover:text-sky-500', svg: '' }, { key: 'instagram', label: 'Instagram', hoverClass: 'hover:text-pink-500', svg: '' }, { key: 'facebook', label: 'Facebook', hoverClass: 'hover:text-green-600', svg: '' }, { key: 'twitter', label: 'X', hoverClass: 'hover:text-gray-900', svg: '' }, { key: 'youtube', label: 'YouTube', hoverClass: 'hover:text-red-600', svg: '' }, { key: 'tiktok', label: 'TikTok', hoverClass: 'hover:text-black', svg: '' }, { key: 'whatsapp', label: 'WhatsApp', hoverClass: 'hover:text-green-500', svg: '' }, { key: 'viber', label: 'Viber', hoverClass: 'hover:text-purple-600', svg: '' } ]; function SocialIcons({ className = '', links }) { const active = ICONS.filter(({ key })=>links?.[key]); if (active.length === 0) return null; return /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", { className: `flex gap-4 flex-wrap ${className}`, children: active.map(({ key, label, hoverClass, svg })=>/*#__PURE__*/ (0,react_jsx_runtime.jsx)("a", { href: links[key], target: "_blank", rel: "noopener noreferrer", "aria-label": label, className: `text-gray-500 transition ${hoverClass}`, children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "currentColor", dangerouslySetInnerHTML: { __html: svg } }) }, key)) }); } ;// ./src/components/Footer.tsx /* __next_internal_client_entry_do_not_use__ Footer auto */ const API = "https://api.canhelp.gr" || 0; function Footer() { const { t } = (0,locale/* useLocale */.Y)(); const year = new Date().getFullYear(); const [socialLinks, setSocialLinks] = (0,react.useState)({}); process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react.useEffect)(()=>{ fetch(`${API}/api/admin/social-public`).then((r)=>r.ok ? r.json() : {}).then((kv)=>{ const links = {}; for (const [k, v] of Object.entries(kv)){ if (v) links[k.replace('social.', '')] = v; } setSocialLinks(links); }).catch(()=>{}); }, []); return /*#__PURE__*/ (0,react_jsx_runtime.jsx)("footer", { className: "bg-white border-t border-gray-200 mt-16", children: /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: [ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", { className: "flex flex-col md:flex-row justify-between items-start gap-10", children: [ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", { className: "flex-1 min-w-[200px] flex flex-col items-start", children: [ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", { className: "logo-text text-3xl text-green-700 font-bold mb-2", children: "CanHelp" }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", { className: "text-base text-gray-600 mb-4", children: t('footer.slogan') }) ] }), /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.links') }), /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("ul", { className: "space-y-2", children: [ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("li", { children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)((link_default()), { href: "/", className: "hover:text-green-600 transition", children: t('nav.home') }) }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("li", { children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)((link_default()), { href: "/tasks", className: "hover:text-green-600 transition", children: t('nav.tasks') }) }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("li", { children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)((link_default()), { href: "/specialists", className: "hover:text-green-600 transition", children: t('nav.specialists') }) }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("li", { children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)((link_default()), { href: "/pricing", className: "hover:text-green-600 transition", children: t('nav.pricing') }) }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("li", { children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)((link_default()), { href: "/support", className: "hover:text-green-600 transition", children: t('support.title') }) }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("li", { children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)((link_default()), { href: "/privacy", className: "hover:text-green-600 transition", children: t('nav.privacy') }) }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("li", { children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)((link_default()), { href: "/delete-account", className: "hover:text-red-500 transition", children: t('nav.delete_account') }) }) ] }) ] }), /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", { className: "flex-1 min-w-[180px]", children: [ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("h3", { className: "text-lg font-semibold text-gray-900 mb-3", children: t('footer.socials') }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", { className: "text-gray-500 text-sm mb-2", children: "info@canhelp.gr" }), /*#__PURE__*/ (0,react_jsx_runtime.jsx)(SocialIcons, { className: "mt-2", links: socialLinks }) ] }) ] }), /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", { className: "mt-10 border-t border-gray-100 pt-6 text-center text-gray-400 text-sm", children: [ "\xa9 ", year, " CanHelp. ", t('footer.rights') ] }) ] }) }); } ,/ ` 0 // EXPORTS __webpack_require__.d(__webpack_exports__, { Footer: () => (/* binding */ Footer) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js var react_jsx_runtime = __webpack_require__(78157); // EXTERNAL MODULE: ./src/context/locale.tsx var locale = __webpack_require__(96484); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js var react = __webpack_require__(31768); // EXTERNAL MODULE: ../../node_modules/next/dist/client/app-dir/link.js var app_dir_link = __webpack_require__(94496); var link_default = /*#__PURE__*/__webpack_require__.n(app_dir_link); ;// ./src/components/SocialIcons.tsx  ReplaceSource0qimport { jsx as _jsx } from "react/jsx-runtime"; const ICONS = [ { key: 'telegram', label: 'Telegram', hoverClass: 'hover:text-sky-500', svg: '' }, { key: 'instagram', label: 'Instagram', hoverClass: 'hover:text-pink-500', svg: '' }, { key: 'facebook', label: 'Facebook', hoverClass: 'hover:text-green-600', svg: '' }, { key: 'twitter', label: 'X', hoverClass: 'hover:text-gray-900', svg: '' }, { key: 'youtube', label: 'YouTube', hoverClass: 'hover:text-red-600', svg: '' }, { key: 'tiktok', label: 'TikTok', hoverClass: 'hover:text-black', svg: '' }, { key: 'whatsapp', label: 'WhatsApp', hoverClass: 'hover:text-green-500', svg: '' }, { key: 'viber', label: 'Viber', hoverClass: 'hover:text-purple-600', svg: '' } ]; export function SocialIcons({ className = '', links }) { const active = ICONS.filter(({ key })=>links?.[key]); if (active.length === 0) return null; return /*#__PURE__*/ _jsx("div", { className: `flex gap-4 flex-wrap ${className}`, children: active.map(({ key, label, hoverClass, svg })=>/*#__PURE__*/ _jsx("a", { href: links[key], target: "_blank", rel: "noopener noreferrer", "aria-label": label, className: `text-gray-500 transition ${hoverClass}`, children: /*#__PURE__*/ _jsx("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "currentColor", dangerouslySetInnerHTML: { __html: svg } }) }, key)) }); } 1047undefined63616367undefined65436546__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined66916694__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined69616964__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined64886562(0,react_jsx_runtime.jsx)undefined67076781(0,react_jsx_runtime.jsx)undefined70487122(0,react_jsx_runtime.jsx)undefinedRawSource! ;// ./src/components/Footer.tsx ,?60122undefined124168undefined170213undefined215243undefined245288undefined302332"https://api.canhelp.gr"undefined3373590undefined362368undefined407415__WEBPACK_MODULE_REFERENCE__1_5b227573654c6f63616c65225d_call_directImport_asiSafe1__._undefined505512__WEBPACK_MODULE_REFERENCE__2_5b227573655374617465225d_call_directImport_asiSafe1__._undefined574582__WEBPACK_MODULE_REFERENCE__2_5b22757365456666656374225d_call_directImport_asiSafe1__._undefined939942__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined10501054__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined11901194__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined13701374__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined15601563__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined18121815__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined20992103__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined22632266__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined25132517__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined26892692__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined27702773__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined27752778__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined31533156__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined32343237__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined32393242__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined36233626__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined37043707__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined37093712__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined41054108__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined41864189__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined41914194__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined45794582__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined46604663__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined46654668__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined50555058__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined51365139__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined51415144__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined55295532__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined56105613__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined56155618__WEBPACK_MODULE_REFERENCE__3_5b2264656661756c74225d_directImport_asiSafe1__._undefined61296133__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined62936296__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined65456548__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined67806783__WEBPACK_MODULE_REFERENCE__0_5b226a7378225d_call_directImport_asiSafe1__._undefined67856795__WEBPACK_MODULE_REFERENCE__4_5b22536f6369616c49636f6e73225d_directImport_asiSafe1__._undefined70747078__WEBPACK_MODULE_REFERENCE__0_5b226a737873225d_call_directImport_asiSafe1__._undefined 146232(0,locale/* useLocale */.Y)undefined322406(0,react.useState)undefined468554(0,react.useEffect)undefined911985(0,react_jsx_runtime.jsx)undefined10931169(0,react_jsx_runtime.jsxs)undefined13051381(0,react_jsx_runtime.jsxs)undefined15571633(0,react_jsx_runtime.jsxs)undefined18191893(0,react_jsx_runtime.jsx)undefined21422216(0,react_jsx_runtime.jsx)undefined25002576(0,react_jsx_runtime.jsxs)undefined27362810(0,react_jsx_runtime.jsx)undefined30573133(0,react_jsx_runtime.jsxs)undefined33053379(0,react_jsx_runtime.jsx)undefined34573531(0,react_jsx_runtime.jsx)undefined35333610(link_default())undefined39854059(0,react_jsx_runtime.jsx)undefined41374211(0,react_jsx_runtime.jsx)undefined42134290(link_default())undefined46714745(0,react_jsx_runtime.jsx)undefined48234897(0,react_jsx_runtime.jsx)undefined48994976(link_default())undefined53695443(0,react_jsx_runtime.jsx)undefined55215595(0,react_jsx_runtime.jsx)undefined55975674(link_default())undefined60596133(0,react_jsx_runtime.jsx)undefined62116285(0,react_jsx_runtime.jsx)undefined62876364(link_default())undefined67516825(0,react_jsx_runtime.jsx)undefined69036977(0,react_jsx_runtime.jsx)undefined69797056(link_default())undefined74417515(0,react_jsx_runtime.jsx)undefined75937667(0,react_jsx_runtime.jsx)undefined76697746(link_default())undefined82578333(0,react_jsx_runtime.jsxs)undefined84938567(0,react_jsx_runtime.jsx)undefined88168890(0,react_jsx_runtime.jsx)undefined91229196(0,react_jsx_runtime.jsx)undefined91989283SocialIconsundefined95629638(0,react_jsx_runtime.jsxs)undefinedP`react_jsx_runtimereact_jsx_runtime_namespaceObjectreact_jsx_runtime_defaultlocalereact_namespaceObjectreact_defaultapp_dir_linklink_namespaceObjectlink_defaultICONSSocialIcons_namespaceObject:\Footer_namespaceObjectW /* dynamic asset route */ import { NextResponse } from 'next/server' import handler from "/opt/canhelp/apps/web/src/app/robots.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const contentType = "text/plain" const fileType = "robots" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } export async function GET() { const data = await handler() const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ` #`0123456789:;<= >?/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?@ce601af5a851acdb LcontentTypefileTypeGET yB/opt/canhelp/apps/web/src/app/robots.tsL!Б yB yB999eb5404729f494 d aD `* `E@ `= A `^ AA c next/server `*  `= next/dist/build/webpack/loaders/metadata/resolve-route-data `^ /A-4t b   c *A  c resolveRouteDataA   c" NextResponseA,84 c import { NextResponse } from 'next/server' import * as userland from "/opt/canhelp/apps/web/src/app/sitemap.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const sitemapModule = { ...userland } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } export async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new NextResponse('Not Found', { status: 404, }) } if (process.env.NODE_ENV !== 'production' && sitemapModule.generateSitemaps) { const sitemaps = await sitemapModule.generateSitemaps() for (const item of sitemaps) { if (item?.id == null) { throw new Error('id property is required for every item returned from generateSitemaps') } } } const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } `  2fcd47935ebc8876 sitemapModule yB/opt/canhelp/apps/web/src/app/sitemap.ts!Б yB yB124991c87db8e14b d `* `* a+o `D `p@ `^ AA c/ AI c" aAK< cO"  `*  `D  `^ userlandAt b#  c/ A4 c A  c''" A4 c) )`  0gmno uvwxyz*./src/app/robots.ts@ { yB  yB_/opt/canhelp/apps/web/src/app/!`nuyBPnuyBMLKJIHGI  0P./src/app/sitemap.ts@  yB A EQF} H@   yB|~@/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/package.json@/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts.js/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts.mjs/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts.tsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts.jsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/robots.ts.wasm. 2>3 5s@   yB@/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts.js/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts.mjs/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts.tsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts.jsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/sitemap.ts.wasmfunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); export default function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } `'( )*} webpack/DefinePlugin process.env.NEXT_PUBLIC_APP_URL"http://canhelp.gr"ea35be16db38e964  normalizeAppUrlAPP_URL*default*robots yBKM d A c ? AA c$ % c$function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } export default async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } `     _n opq[r\b8776b56dd1ed0ebx  |fetchAllTasksfetchAllSpecialistsAPI_URLSTATIC_ROUTESsitemap yBdf d A c ? LA c/ 0A cJ A& A  ct~A cJ  ct~     swebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); export default function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } C"http://canhelp.gr"buffersourcesizemapshashfunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); export default function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } 1421451"http://canhelp.gr"undefined455469undefinedc // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__   webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/* dynamic asset route */ import { NextResponse } from 'next/server' import handler from "/opt/canhelp/apps/web/src/app/robots.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const contentType = "text/plain" const fileType = "robots" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } export async function GET() { const data = await handler() const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } bCEL-3 ,7__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._-/* dynamic asset route */ const contentType = "text/plain" const fileType = "robots" if (typeof __WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__._ !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } async function GET() { const data = await __WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__._() const content = __WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._(data, fileType) return new __WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) }  /* dynamic asset route */ import { NextResponse } from 'next/server' import handler from "/opt/canhelp/apps/web/src/app/robots.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const contentType = "text/plain" const fileType = "robots" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } export async function GET() { const data = await handler() const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 2667undefined69129undefined131224undefined301307__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__._undefined430436undefined481487__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__._undefined509524__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined556567__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined`hF]+Krobots(0,resolve_route_data.resolveRouteData)server.NextResponse ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  fHwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceG=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map c;^`_%'np "_abd/_Aem<AB]TS - / 5 f z } O v ]k^k_$5Xmq$$$%`&m&+'8'((6(r*}*-,-..11224R444;5P5666688H9O9O:]::;L;<<__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._".next"0 false: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._A // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new __WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._({ definition: { kind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return __WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = __WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = __WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: __WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._(req); const nodeNextRes = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._(res); const nextReq = __WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._.fromNodeNextRequest(nodeNextReq, __WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = __WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(response.headers); if (cacheTags) { headers[__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = __WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(cacheEntry.value.headers); if (!(__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isIsr)) { headers.delete(__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', __WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._(cacheEntry.cacheControl)); } await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest, { spanName: `${method} ${req.url}`, kind: __WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  G=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741442undefined15831601__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16371645__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18171852".next"undefined185718580undefined18851923 falseundefined21322131: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24372447__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25162605undefined26072613undefined29182938falseundefined29413005{}undefined31513190falseundefined37163731__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41894203__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50455053__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54705483__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60876101__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61376152__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61806197__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62326253__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68896902__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78807893__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93299353__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94519472__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98249837__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1002710040__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028010294__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1086610877__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1154611564__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200112009__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1255912573__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1303913052__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1347513501__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1354813561__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1362713648__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1396813988__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1404914060__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455214565__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1466414671__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1492714941__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516215180__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552215533__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_%i@rP  x uUq_)[!n""<#_$$%&'S')),,..1c1533<555F6664888=9);w;;<=z=CW>>@t@module_compiled.AppRouteRouteModuleroute_kind.RouteKindnext_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject(0,patch_fetch.patchFetch)(0,app_paths_.normalizeAppPath)no_fallback_error_external_.NoFallbackError(0,trace_tracer.getTracer)(0,request_meta.getRequestMeta)node.NodeNextRequestnode.NodeNextResponsenext_request.NextRequestAdapter(0,next_request.signalFromNodeResponse)constants.BaseServerSpan(0,web_utils.toNodeOutgoingHttpHeaders)lib_constants.NEXT_CACHE_TAGS_HEADERlib_constants.INFINITE_CACHEresponse_cache.CachedRouteKind(0,send_response/* sendResponse */.I)(0,utils/* getRevalidateReason */.c)(0,web_utils.fromNodeOutgoingHttpHeaders)(0,cache_control.getCacheControlHeader)trace_tracer.SpanKindN// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ /* dynamic asset route */ const contentType = "text/plain" const fileType = "robots" if (typeof robots !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } async function GET() { const data = await robots() const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  ` // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts 1421451"http://canhelp.gr"undefined455469undefined RawSourcec // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ 2667undefined69129undefined131224undefined301307__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__._undefined430436undefined481487__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__._undefined509524__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined556567__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined104182robotsundefined349432robotsundefined454555(0,resolve_route_data.resolveRouteData)undefined587675server.NextResponseundefinedRawSource ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! G=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741442undefined15831601__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16371645__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18171852".next"undefined185718580undefined18851923 falseundefined21322131: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24372447__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25162605undefined26072613undefined29182938falseundefined29413005{}undefined31513190falseundefined37163731__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41894203__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50455053__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54705483__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60876101__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61376152__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61806197__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62326253__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68896902__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78807893__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93299353__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94519472__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98249837__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1002710040__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028010294__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1086610877__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1154611564__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200112009__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1255912573__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1303913052__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1347513501__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1354813561__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1362713648__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1396813988__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1404914060__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455214565__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1466414671__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1492714941__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516215180__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552215533__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined156257module_compiled.AppRouteRouteModuleundefined293361route_kind.RouteKindundefined787832next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectundefined11381226(0,patch_fetch.patchFetch)undefined22842384(0,app_paths_.normalizeAppPath)undefined28422936no_fallback_error_external_.NoFallbackErrorundefined37783864(0,trace_tracer.getTracer)undefined42814377(0,request_meta.getRequestMeta)undefined49815074node.NodeNextRequestundefined51105205node.NodeNextResponseundefined52335324next_request.NextRequestAdapterundefined53595471(0,next_request.signalFromNodeResponse)undefined61076185constants.BaseServerSpanundefined71637259(0,request_meta.getRequestMeta)undefined86958814(0,web_utils.toNodeOutgoingHttpHeaders)undefined89129020lib_constants.NEXT_CACHE_TAGS_HEADERundefined93729464lib_constants.INFINITE_CACHEundefined96549746lib_constants.INFINITE_CACHEundefined998610067response_cache.CachedRouteKindundefined1063910732(0,send_response/* sendResponse */.I)undefined1140111507(0,utils/* getRevalidateReason */.c)undefined1194412012route_kind.RouteKindundefined1256212643response_cache.CachedRouteKindundefined1310913205(0,request_meta.getRequestMeta)undefined1362813751(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1379813894(0,request_meta.getRequestMeta)undefined1396014068lib_constants.NEXT_CACHE_TAGS_HEADERundefined1438814499(0,cache_control.getCacheControlHeader)undefined1456014653(0,send_response/* sendResponse */.I)undefined1514515223constants.BaseServerSpanundefined1532215388trace_tracer.SpanKindundefined1564415738no_fallback_error_external_.NoFallbackErrorundefined1595916065(0,utils/* getRevalidateReason */.c)undefined1640716500(0,send_response/* sendResponse */.I)undefined5`@module_compiledmodule_compiled_namespaceObjectmodule_compiled_defaultroute_kindroute_kind_namespaceObjectpatch_fetchpatch_fetch_namespaceObjectpatch_fetch_defaultrequest_metarequest_meta_namespaceObjectrequest_meta_defaulttrace_tracertracer_namespaceObjecttracer_defaultapp_paths_app_paths_namespaceObjectapp_paths_default}node_namespaceObjectnode_defaultnext_requestnext_request_namespaceObjectnext_request_defaultconstantsconstants_namespaceObjectconstants_defaultutilsutils_namespaceObjectsend_responsesend_response_namespaceObjectweb_utilsweb_utils_namespaceObjectutils_defaultcache_controlcache_control_namespaceObjectlib_constantslib_constants_namespaceObjectlib_constants_defaultno_fallback_error_external_no_fallback_error_external_namespaceObjectno_fallback_error_external_defaultresponse_cacheresponse_cache_namespaceObjectresponse_cache_defaultrobots_namespaceObjectresolve_route_dataresolve_route_data_namespaceObjectresolve_route_data_defaultnext_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectnextConfigOutputworkAsyncStorageworkUnitAsyncStorageserverHookspatchFetchrnext_app_loaderpage_2Frobots_txt_2Froute_name_app_2Frobots_txt_2Froute_pagePath_private_next_app_dir_2Frobots_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Frobots_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_namespaceObjecty (4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource(// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } export default async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } G%"http://canhelp.gr""https://api.canhelp.gr"0buffersourcesizemapshashfunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); const API_URL = "https://api.canhelp.gr" || 0; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } export default async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } j421451"http://canhelp.gr"undefined471501"https://api.canhelp.gr"undefined5065280undefined36073621undefinedd // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__  vwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceimport { NextResponse } from 'next/server' import * as userland from "/opt/canhelp/apps/web/src/app/sitemap.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const sitemapModule = { ...userland } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } export async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new NextResponse('Not Found', { status: 404, }) } if (process.env.NODE_ENV !== 'production' && sitemapModule.generateSitemaps) { const sitemaps = await sitemapModule.generateSitemaps() for (const item of sitemaps) { if (item?.id == null) { throw new Error('id property is required for every item returned from generateSitemaps') } } } const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) }  c)+npNHK;__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._ const sitemapModule = { ...__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__._ } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new __WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._('Not Found', { status: 404, }) } if (false) {} const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = __WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._(data, fileType) return new __WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) }  import { NextResponse } from 'next/server' import * as userland from "/opt/canhelp/apps/web/src/app/sitemap.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const sitemapModule = { ...userland } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } export async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new NextResponse('Not Found', { status: 404, }) } if (process.env.NODE_ENV !== 'production' && sitemapModule.generateSitemaps) { const sitemaps = await sitemapModule.generateSitemaps() for (const item of sitemaps) { if (item?.id == null) { throw new Error('id property is required for every item returned from generateSitemaps') } } } const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 041undefined43110undefined112205undefined235242__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__._undefined494500undefined705716__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined770840falseundefined8431083{}undefined12231238__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined12701281__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefinedaLEl6sitemap_namespaceObjectserver.NextResponse(0,resolve_route_data.resolveRouteData) ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  mHwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceN=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map c;^`_%'np "_abd0_BfnAFGbZY 3 5 ; m V } drer_+<_tx$$$%g&t&2'?'/(=(y**!-3-..1$1234R445B5W5666688O9V9V:d:A;S;<<__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._".next"0 false: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._A // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new __WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._({ definition: { kind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return __WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = __WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = __WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: __WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._(req); const nodeNextRes = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._(res); const nextReq = __WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._.fromNodeNextRequest(nodeNextReq, __WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = __WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(response.headers); if (cacheTags) { headers[__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = __WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(cacheEntry.value.headers); if (!(__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isIsr)) { headers.delete(__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', __WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._(cacheEntry.cacheControl)); } await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest, { spanName: `${method} ${req.url}`, kind: __WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  N=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741443undefined15841602__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16381646__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18221857".next"undefined186218630undefined18901928 falseundefined21382137: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24432453__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25222611undefined26132619undefined29252945falseundefined29483012{}undefined31583197falseundefined37233738__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41964210__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50525060__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54775490__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60946108__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61446159__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61876204__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62396260__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68966909__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78877900__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93369360__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94589479__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98319844__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1003410047__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028710301__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1087310884__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1155311571__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200812016__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1256612580__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1304613059__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1348213508__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1355513568__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1363413655__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1397513995__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1405614067__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455914572__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1467114678__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1493414948__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516915187__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552915540__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`#_%iEw$*V ~ {[we/a!t"_"B#$$%&'Y')),,..1i1;33B555L666:888C9/;};;"<E"==]>>@z@module_compiled.AppRouteRouteModuleroute_kind.RouteKindnext_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject(0,patch_fetch.patchFetch)nnext_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler(0,app_paths_.normalizeAppPath)no_fallback_error_external_.NoFallbackError(0,trace_tracer.getTracer)(0,request_meta.getRequestMeta)node.NodeNextRequestnode.NodeNextResponsenext_request.NextRequestAdapter(0,next_request.signalFromNodeResponse)constants.BaseServerSpan(0,web_utils.toNodeOutgoingHttpHeaders)lib_constants.NEXT_CACHE_TAGS_HEADERlib_constants.INFINITE_CACHEresponse_cache.CachedRouteKind(0,send_response/* sendResponse */.I)(0,utils/* getRevalidateReason */.c)(0,web_utils.fromNodeOutgoingHttpHeaders)(0,cache_control.getCacheControlHeader)trace_tracer.SpanKind_// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); const API_URL = "https://api.canhelp.gr" || 0; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ const sitemapModule = { ...sitemap_namespaceObject } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new server.NextResponse('Not Found', { status: 404, }) } if (false) {} const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  `(// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts j421451"http://canhelp.gr"undefined471501"https://api.canhelp.gr"undefined5065280undefined36073621undefinedd // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ 041undefined43110undefined112205undefined235242__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__._undefined494500undefined705716__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined770840falseundefined8431083{}undefined12231238__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined12701281__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined3176sitemap_namespaceObjectundefined532620server.NextResponseundefined822923(0,resolve_route_data.resolveRouteData)undefined9551043server.NextResponseundefinedRawSource ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! N=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741443undefined15841602__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16381646__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18221857".next"undefined186218630undefined18901928 falseundefined21382137: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24432453__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25222611undefined26132619undefined29252945falseundefined29483012{}undefined31583197falseundefined37233738__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41964210__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50525060__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54775490__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60946108__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61446159__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61876204__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62396260__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68966909__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78877900__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93369360__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94589479__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98319844__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1003410047__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028710301__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1087310884__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1155311571__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200812016__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1256612580__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1304613059__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1348213508__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1355513568__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1363413655__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1397513995__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1405614067__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455914572__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1467114678__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1493414948__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516915187__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552915540__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined~156257module_compiled.AppRouteRouteModuleundefined293361route_kind.RouteKindundefined792837next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectundefined11431231(0,patch_fetch.patchFetch)undefined13161322next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handlerundefined22902390(0,app_paths_.normalizeAppPath)undefined28482942no_fallback_error_external_.NoFallbackErrorundefined37843870(0,trace_tracer.getTracer)undefined42874383(0,request_meta.getRequestMeta)undefined49875080node.NodeNextRequestundefined51165211node.NodeNextResponseundefined52395330next_request.NextRequestAdapterundefined53655477(0,next_request.signalFromNodeResponse)undefined61136191constants.BaseServerSpanundefined71697265(0,request_meta.getRequestMeta)undefined87018820(0,web_utils.toNodeOutgoingHttpHeaders)undefined89189026lib_constants.NEXT_CACHE_TAGS_HEADERundefined93789470lib_constants.INFINITE_CACHEundefined96609752lib_constants.INFINITE_CACHEundefined999210073response_cache.CachedRouteKindundefined1064510738(0,send_response/* sendResponse */.I)undefined1140711513(0,utils/* getRevalidateReason */.c)undefined1195012018route_kind.RouteKindundefined1256812649response_cache.CachedRouteKindundefined1311513211(0,request_meta.getRequestMeta)undefined1363413757(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1380413900(0,request_meta.getRequestMeta)undefined1396614074lib_constants.NEXT_CACHE_TAGS_HEADERundefined1439414505(0,cache_control.getCacheControlHeader)undefined1456614659(0,send_response/* sendResponse */.I)undefined1515115229constants.BaseServerSpanundefined1532815394trace_tracer.SpanKindundefined1565015744no_fallback_error_external_.NoFallbackErrorundefined1596516071(0,utils/* getRevalidateReason */.c)undefined1641316506(0,send_response/* sendResponse */.I)undefined`FDhisitemap_namespaceObjectnext_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectnnext_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handlervnext_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_namespaceObjecta Iwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSource`webpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceb(() => { var exports = {}; exports.id = 784; exports.ids = [784]; exports.modules = { /***/ 261: webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource 'webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths");  /***/ }) buffersourcesizemapshashv/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }) {"finalSource":true}mapbufferedMap ConcatSourceRawSource$/***/ ((module) => { "use strict";  RawSourceHmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3295:  <webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; ]module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js"); /***/ })  ]module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js");, /***/ 10846:  3webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ })  Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");, /***/ 14691:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource>/***/ ((__unused_webpack_module, exports) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource Nwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcek"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { getOrigin: null, resolveArray: null, resolveAsArrayOrUndefined: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map e :NNW@Object.defineProperty(exports, "__esModule", ())0buffersourcesizemapshash Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map {"finalSource":true}mapbufferedMap ReplaceSourceRawSourcek"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { getOrigin: null, resolveArray: null, resolveAsArrayOrUndefined: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.mape012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined871870undefined /***/ }) D/***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map /***/ })  >/***/ ((__unused_webpack_module, exports) => { "use strict"; ReplaceSourceRawSourcek"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { getOrigin: null, resolveArray: null, resolveAsArrayOrUndefined: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.mape012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined871870undefined, /***/ 14905:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource swebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); export default function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } C"http://canhelp.gr"buffersourcesizemapshashfunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); export default function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } 1421451"http://canhelp.gr"undefined455469undefinedc // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__   webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/* dynamic asset route */ import { NextResponse } from 'next/server' import handler from "/opt/canhelp/apps/web/src/app/robots.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const contentType = "text/plain" const fileType = "robots" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } export async function GET() { const data = await handler() const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } bCEL-3 ,7__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._-/* dynamic asset route */ const contentType = "text/plain" const fileType = "robots" if (typeof __WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__._ !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } async function GET() { const data = await __WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__._() const content = __WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._(data, fileType) return new __WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) }  /* dynamic asset route */ import { NextResponse } from 'next/server' import handler from "/opt/canhelp/apps/web/src/app/robots.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const contentType = "text/plain" const fileType = "robots" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } export async function GET() { const data = await handler() const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 2667undefined69129undefined131224undefined301307__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__._undefined430436undefined481487__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__._undefined509524__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined556567__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined`hF]+Krobots(0,resolve_route_data.resolveRouteData)server.NextResponse ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  fHwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceG=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map c;^`_%'np "_abd/_Aem<AB]TS - / 5 f z } O v ]k^k_$5Xmq$$$%`&m&+'8'((6(r*}*-,-..11224R444;5P5666688H9O9O:]::;L;<<__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._".next"0 false: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._A // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new __WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._({ definition: { kind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return __WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = __WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = __WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: __WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._(req); const nodeNextRes = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._(res); const nextReq = __WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._.fromNodeNextRequest(nodeNextReq, __WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = __WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(response.headers); if (cacheTags) { headers[__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = __WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(cacheEntry.value.headers); if (!(__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isIsr)) { headers.delete(__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', __WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._(cacheEntry.cacheControl)); } await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest, { spanName: `${method} ${req.url}`, kind: __WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  G=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741442undefined15831601__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16371645__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18171852".next"undefined185718580undefined18851923 falseundefined21322131: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24372447__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25162605undefined26072613undefined29182938falseundefined29413005{}undefined31513190falseundefined37163731__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41894203__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50455053__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54705483__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60876101__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61376152__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61806197__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62326253__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68896902__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78807893__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93299353__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94519472__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98249837__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1002710040__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028010294__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1086610877__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1154611564__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200112009__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1255912573__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1303913052__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1347513501__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1354813561__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1362713648__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1396813988__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1404914060__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455214565__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1466414671__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1492714941__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516215180__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552215533__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_%i@rP  x uUq_)[!n""<#_$$%&'S')),,..1c1533<555F6664888=9);w;;<=z=CW>>@t@module_compiled.AppRouteRouteModuleroute_kind.RouteKindnext_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject(0,patch_fetch.patchFetch)(0,app_paths_.normalizeAppPath)no_fallback_error_external_.NoFallbackError(0,trace_tracer.getTracer)(0,request_meta.getRequestMeta)node.NodeNextRequestnode.NodeNextResponsenext_request.NextRequestAdapter(0,next_request.signalFromNodeResponse)constants.BaseServerSpan(0,web_utils.toNodeOutgoingHttpHeaders)lib_constants.NEXT_CACHE_TAGS_HEADERlib_constants.INFINITE_CACHEresponse_cache.CachedRouteKind(0,send_response/* sendResponse */.I)(0,utils/* getRevalidateReason */.c)(0,web_utils.fromNodeOutgoingHttpHeaders)(0,cache_control.getCacheControlHeader)trace_tracer.SpanKindbuffersourcesizemapshashN// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ /* dynamic asset route */ const contentType = "text/plain" const fileType = "robots" if (typeof robots !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } async function GET() { const data = await robots() const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map {"finalSource":true}mapbufferedMap `ConcatSourceRawSource // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts  ReplaceSourceReplaceSourceRawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); export default function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } 1421451"http://canhelp.gr"undefined455469undefined RawSourcec // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ /* dynamic asset route */ import { NextResponse } from 'next/server' import handler from "/opt/canhelp/apps/web/src/app/robots.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const contentType = "text/plain" const fileType = "robots" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } export async function GET() { const data = await handler() const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 2667undefined69129undefined131224undefined301307__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__._undefined430436undefined481487__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__._undefined509524__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined556567__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined104182robotsundefined349432robotsundefined454555(0,resolve_route_data.resolveRouteData)undefined587675server.NextResponseundefinedRawSource ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! G=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741442undefined15831601__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16371645__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18171852".next"undefined185718580undefined18851923 falseundefined21322131: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24372447__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25162605undefined26072613undefined29182938falseundefined29413005{}undefined31513190falseundefined37163731__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41894203__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50455053__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54705483__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60876101__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61376152__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61806197__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62326253__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68896902__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78807893__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93299353__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94519472__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98249837__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1002710040__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028010294__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1086610877__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1154611564__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200112009__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1255912573__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1303913052__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1347513501__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1354813561__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1362713648__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1396813988__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1404914060__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455214565__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1466414671__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1492714941__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516215180__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552215533__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined156257module_compiled.AppRouteRouteModuleundefined293361route_kind.RouteKindundefined787832next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectundefined11381226(0,patch_fetch.patchFetch)undefined22842384(0,app_paths_.normalizeAppPath)undefined28422936no_fallback_error_external_.NoFallbackErrorundefined37783864(0,trace_tracer.getTracer)undefined42814377(0,request_meta.getRequestMeta)undefined49815074node.NodeNextRequestundefined51105205node.NodeNextResponseundefined52335324next_request.NextRequestAdapterundefined53595471(0,next_request.signalFromNodeResponse)undefined61076185constants.BaseServerSpanundefined71637259(0,request_meta.getRequestMeta)undefined86958814(0,web_utils.toNodeOutgoingHttpHeaders)undefined89129020lib_constants.NEXT_CACHE_TAGS_HEADERundefined93729464lib_constants.INFINITE_CACHEundefined96549746lib_constants.INFINITE_CACHEundefined998610067response_cache.CachedRouteKindundefined1063910732(0,send_response/* sendResponse */.I)undefined1140111507(0,utils/* getRevalidateReason */.c)undefined1194412012route_kind.RouteKindundefined1256212643response_cache.CachedRouteKindundefined1310913205(0,request_meta.getRequestMeta)undefined1362813751(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1379813894(0,request_meta.getRequestMeta)undefined1396014068lib_constants.NEXT_CACHE_TAGS_HEADERundefined1438814499(0,cache_control.getCacheControlHeader)undefined1456014653(0,send_response/* sendResponse */.I)undefined1514515223constants.BaseServerSpanundefined1532215388trace_tracer.SpanKindundefined1564415738no_fallback_error_external_.NoFallbackErrorundefined1595916065(0,utils/* getRevalidateReason */.c)undefined1640716500(0,send_response/* sendResponse */.I)undefined /***/ }) hO/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ /* dynamic asset route */ const contentType = "text/plain" const fileType = "robots" if (typeof robots !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } async function GET() { const data = await robots() const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ })  `_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict";  // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts  ReplaceSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); export default function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } 1421451"http://canhelp.gr"undefined455469undefinedc // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ /* dynamic asset route */ import { NextResponse } from 'next/server' import handler from "/opt/canhelp/apps/web/src/app/robots.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const contentType = "text/plain" const fileType = "robots" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } export async function GET() { const data = await handler() const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 2667undefined69129undefined131224undefined301307__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_directImport_asiSafe1__._undefined430436undefined481487__WEBPACK_MODULE_REFERENCE__17_5b2264656661756c74225d_call_directImport_asiSafe1__._undefined509524__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined556567__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined104182robotsundefined349432robotsundefined454555(0,resolve_route_data.resolveRouteData)undefined587675server.NextResponseundefinedRawSource ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! G=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741442undefined15831601__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16371645__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18171852".next"undefined185718580undefined18851923 falseundefined21322131: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24372447__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25162605undefined26072613undefined29182938falseundefined29413005{}undefined31513190falseundefined37163731__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41894203__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50455053__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54705483__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60876101__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61376152__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61806197__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62326253__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68896902__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78807893__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93299353__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94519472__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98249837__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1002710040__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028010294__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1086610877__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1154611564__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200112009__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1255912573__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1303913052__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1347513501__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1354813561__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1362713648__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1396813988__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1404914060__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455214565__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1466414671__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1492714941__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516215180__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552215533__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined156257module_compiled.AppRouteRouteModuleundefined293361route_kind.RouteKindundefined787832next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectundefined11381226(0,patch_fetch.patchFetch)undefined22842384(0,app_paths_.normalizeAppPath)undefined28422936no_fallback_error_external_.NoFallbackErrorundefined37783864(0,trace_tracer.getTracer)undefined42814377(0,request_meta.getRequestMeta)undefined49815074node.NodeNextRequestundefined51105205node.NodeNextResponseundefined52335324next_request.NextRequestAdapterundefined53595471(0,next_request.signalFromNodeResponse)undefined61076185constants.BaseServerSpanundefined71637259(0,request_meta.getRequestMeta)undefined86958814(0,web_utils.toNodeOutgoingHttpHeaders)undefined89129020lib_constants.NEXT_CACHE_TAGS_HEADERundefined93729464lib_constants.INFINITE_CACHEundefined96549746lib_constants.INFINITE_CACHEundefined998610067response_cache.CachedRouteKindundefined1063910732(0,send_response/* sendResponse */.I)undefined1140111507(0,utils/* getRevalidateReason */.c)undefined1194412012route_kind.RouteKindundefined1256212643response_cache.CachedRouteKindundefined1310913205(0,request_meta.getRequestMeta)undefined1362813751(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1379813894(0,request_meta.getRequestMeta)undefined1396014068lib_constants.NEXT_CACHE_TAGS_HEADERundefined1438814499(0,cache_control.getCacheControlHeader)undefined1456014653(0,send_response/* sendResponse */.I)undefined1514515223constants.BaseServerSpanundefined1532215388trace_tracer.SpanKindundefined1564415738no_fallback_error_external_.NoFallbackErrorundefined1595916065(0,utils/* getRevalidateReason */.c)undefined1640716500(0,send_response/* sendResponse */.I)undefined, /***/ 19121:  8webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Ymodule.exports = require("next/dist/server/app-render/action-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/action-async-storage.external.js"); /***/ })  Ymodule.exports = require("next/dist/server/app-render/action-async-storage.external.js");, /***/ 23757:  \Vwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { resolveManifest: null, resolveRobots: null, resolveRouteData: null, resolveSitemap: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = require("../../../../lib/metadata/generate/utils"); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map e :NNWDObject.defineProperty(exports, "__esModule", ())0__webpack_require__14691buffersourcesizemapshash1 Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = __webpack_require__(14691); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map {"finalSource":true}mapbufferedMap ReplaceSourceRawSource"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { resolveManifest: null, resolveRobots: null, resolveRouteData: null, resolveSitemap: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = require("../../../../lib/metadata/generate/utils"); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined872110undefined693699__webpack_require__undefined70174114691undefined /***/ }) /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = __webpack_require__(14691); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map /***/ })  S/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { resolveManifest: null, resolveRobots: null, resolveRouteData: null, resolveSitemap: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = require("../../../../lib/metadata/generate/utils"); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined872110undefined693699__webpack_require__undefined70174114691undefined, /***/ 29294:  6webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ })  Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");, /***/ 44870:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ })  Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 63033:  ;webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ })  \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");, /***/ 80408:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) /***/ (() => { /***/ })  /***/ (() => { , /***/ 86439:  +webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");  /***/ }) z/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ })  Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");, /***/ 87032:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) y {~ w }; ; // load runtime var __webpack_require__ = require("../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [901,825], () => (__webpack_exec__(14905))); ,module.exports = __webpack_exports__; })(); v(() => { var exports = {}; exports.id = 784; exports.ids = [784]; exports.modules = { /***/ 261: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3295: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js"); /***/ }), /***/ 10846: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ }), /***/ 14691: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map /***/ }), /***/ 14905: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/robots.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); function robots() { return { rules: { userAgent: '*', allow: [ '/', '/site/' ], disallow: [ '/admin/', '/dashboard/', '/profile/', '/chat/', '/notifications/', '/favorites/', '/schedule/', '/payment/' ] }, sitemap: `${APP_URL}/sitemap.xml` }; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__ /* dynamic asset route */ const contentType = "text/plain" const fileType = "robots" if (typeof robots !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/robots.ts"') } async function GET() { const data = await robots() const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Frobots.txt%2Froute&name=app%2Frobots.txt%2Froute&pagePath=private-next-app-dir%2Frobots.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Frobots&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/robots.txt/route", pathname: "/robots.txt", filename: "robots", bundlePath: "app/robots.txt/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Frobots_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/robots.txt/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ }), /***/ 19121: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/action-async-storage.external.js"); /***/ }), /***/ 23757: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = __webpack_require__(14691); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map /***/ }), /***/ 29294: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ }), /***/ 44870: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ }), /***/ 63033: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }), /***/ 80408: /***/ (() => { /***/ }), /***/ 86439: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }), /***/ 87032: /***/ (() => { /***/ }) }; ; // load runtime var __webpack_require__ = require("../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [901,825], () => (__webpack_exec__(14905))); module.exports = __webpack_exports__; })(); X @b(() => { var exports = {}; exports.id = 784; exports.ids = [784]; exports.modules = { /***/ 261: $/***/ ((module) => { "use strict"; Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3295: ]module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js");, /***/ 10846: Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");, /***/ 14691: >/***/ ((__unused_webpack_module, exports) => { "use strict"; k"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { getOrigin: null, resolveArray: null, resolveAsArrayOrUndefined: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.mape012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined871870undefined, /***/ 14905: _/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; wDww, /***/ 19121: Ymodule.exports = require("next/dist/server/app-render/action-async-storage.external.js");, /***/ 23757: S/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { resolveManifest: null, resolveRobots: null, resolveRouteData: null, resolveSitemap: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = require("../../../../lib/metadata/generate/utils"); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined872110undefined693699__webpack_require__undefined70174114691undefined, /***/ 29294: Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");, /***/ 44870: Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 63033: \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");, /***/ 80408: /***/ (() => { , /***/ 86439: Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");, /***/ 87032: w }; ; // load runtime var __webpack_require__ = require("../../webpack-runtime.js"); __webpack_require__.C(exports); ~var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [901,825], () => (__webpack_exec__(14905))); },module.exports = __webpack_exports__; })(); 7webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSource`webpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceb(() => { var exports = {}; exports.id = 475; exports.ids = [475]; exports.modules = { /***/ 261: webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource 'webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths");  /***/ }) buffersourcesizemapshashv/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }) {"finalSource":true}mapbufferedMap ConcatSourceRawSource$/***/ ((module) => { "use strict";  RawSourceHmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3295:  <webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; ]module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js"); /***/ })  ]module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js");, /***/ 10846:  3webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ })  Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");, /***/ 14691:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource>/***/ ((__unused_webpack_module, exports) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource Nwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcek"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { getOrigin: null, resolveArray: null, resolveAsArrayOrUndefined: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map e :NNW@Object.defineProperty(exports, "__esModule", ())0buffersourcesizemapshash Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map {"finalSource":true}mapbufferedMap ReplaceSourceRawSourcek"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { getOrigin: null, resolveArray: null, resolveAsArrayOrUndefined: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.mape012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined871870undefined /***/ }) D/***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map /***/ })  >/***/ ((__unused_webpack_module, exports) => { "use strict"; ReplaceSourceRawSourcek"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { getOrigin: null, resolveArray: null, resolveAsArrayOrUndefined: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.mape012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined871870undefined, /***/ 19121:  8webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Ymodule.exports = require("next/dist/server/app-render/action-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/action-async-storage.external.js"); /***/ })  Ymodule.exports = require("next/dist/server/app-render/action-async-storage.external.js");, /***/ 23757:  \Vwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { resolveManifest: null, resolveRobots: null, resolveRouteData: null, resolveSitemap: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = require("../../../../lib/metadata/generate/utils"); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map e :NNWDObject.defineProperty(exports, "__esModule", ())0__webpack_require__14691buffersourcesizemapshash1 Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = __webpack_require__(14691); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map {"finalSource":true}mapbufferedMap ReplaceSourceRawSource"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { resolveManifest: null, resolveRobots: null, resolveRouteData: null, resolveSitemap: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = require("../../../../lib/metadata/generate/utils"); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined872110undefined693699__webpack_require__undefined70174114691undefined /***/ }) /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = __webpack_require__(14691); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map /***/ })  S/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { resolveManifest: null, resolveRobots: null, resolveRouteData: null, resolveSitemap: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = require("../../../../lib/metadata/generate/utils"); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map012undefined1458Object.defineProperty(exports, "__esModule", (undefined7878))undefined872110undefined693699__webpack_require__undefined70174114691undefined, /***/ 29294:  6webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ })  Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");, /***/ 44870:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ })  Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 63033:  ;webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ })  \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");, /***/ 80408:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) /***/ (() => { /***/ })  /***/ (() => { , /***/ 83019:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource (4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource(// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } export default async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } G%"http://canhelp.gr""https://api.canhelp.gr"0buffersourcesizemapshashfunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); const API_URL = "https://api.canhelp.gr" || 0; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } export default async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } j421451"http://canhelp.gr"undefined471501"https://api.canhelp.gr"undefined5065280undefined36073621undefinedd // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__  vwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceimport { NextResponse } from 'next/server' import * as userland from "/opt/canhelp/apps/web/src/app/sitemap.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const sitemapModule = { ...userland } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } export async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new NextResponse('Not Found', { status: 404, }) } if (process.env.NODE_ENV !== 'production' && sitemapModule.generateSitemaps) { const sitemaps = await sitemapModule.generateSitemaps() for (const item of sitemaps) { if (item?.id == null) { throw new Error('id property is required for every item returned from generateSitemaps') } } } const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) }  c)+npNHK;__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._ const sitemapModule = { ...__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__._ } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new __WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._('Not Found', { status: 404, }) } if (false) {} const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = __WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._(data, fileType) return new __WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) }  import { NextResponse } from 'next/server' import * as userland from "/opt/canhelp/apps/web/src/app/sitemap.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const sitemapModule = { ...userland } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } export async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new NextResponse('Not Found', { status: 404, }) } if (process.env.NODE_ENV !== 'production' && sitemapModule.generateSitemaps) { const sitemaps = await sitemapModule.generateSitemaps() for (const item of sitemaps) { if (item?.id == null) { throw new Error('id property is required for every item returned from generateSitemaps') } } } const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 041undefined43110undefined112205undefined235242__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__._undefined494500undefined705716__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined770840falseundefined8431083{}undefined12231238__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined12701281__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefinedaLEl6sitemap_namespaceObjectserver.NextResponse(0,resolve_route_data.resolveRouteData) ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  mHwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceN=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map c;^`_%'np "_abd0_BfnAFGbZY 3 5 ; m V } drer_+<_tx$$$%g&t&2'?'/(=(y**!-3-..1$1234R445B5W5666688O9V9V:d:A;S;<<__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._".next"0 false: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._A // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new __WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._({ definition: { kind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return __WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = __WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = __WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: __WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._(req); const nodeNextRes = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._(res); const nextReq = __WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._.fromNodeNextRequest(nodeNextReq, __WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = __WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(response.headers); if (cacheTags) { headers[__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = __WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(cacheEntry.value.headers); if (!(__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isIsr)) { headers.delete(__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', __WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._(cacheEntry.cacheControl)); } await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest, { spanName: `${method} ${req.url}`, kind: __WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  N=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741443undefined15841602__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16381646__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18221857".next"undefined186218630undefined18901928 falseundefined21382137: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24432453__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25222611undefined26132619undefined29252945falseundefined29483012{}undefined31583197falseundefined37233738__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41964210__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50525060__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54775490__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60946108__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61446159__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61876204__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62396260__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68966909__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78877900__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93369360__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94589479__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98319844__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1003410047__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028710301__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1087310884__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1155311571__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200812016__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1256612580__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1304613059__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1348213508__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1355513568__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1363413655__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1397513995__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1405614067__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455914572__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1467114678__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1493414948__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516915187__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552915540__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`#_%iEw$*V ~ {[we/a!t"_"B#$$%&'Y')),,..1i1;33B555L666:888C9/;};;"<E"==]>>@z@module_compiled.AppRouteRouteModuleroute_kind.RouteKindnext_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject(0,patch_fetch.patchFetch)nnext_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler(0,app_paths_.normalizeAppPath)no_fallback_error_external_.NoFallbackError(0,trace_tracer.getTracer)(0,request_meta.getRequestMeta)node.NodeNextRequestnode.NodeNextResponsenext_request.NextRequestAdapter(0,next_request.signalFromNodeResponse)constants.BaseServerSpan(0,web_utils.toNodeOutgoingHttpHeaders)lib_constants.NEXT_CACHE_TAGS_HEADERlib_constants.INFINITE_CACHEresponse_cache.CachedRouteKind(0,send_response/* sendResponse */.I)(0,utils/* getRevalidateReason */.c)(0,web_utils.fromNodeOutgoingHttpHeaders)(0,cache_control.getCacheControlHeader)trace_tracer.SpanKindbuffersourcesizemapshash_// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); const API_URL = "https://api.canhelp.gr" || 0; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ const sitemapModule = { ...sitemap_namespaceObject } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new server.NextResponse('Not Found', { status: 404, }) } if (false) {} const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map {"finalSource":true}mapbufferedMap `ConcatSourceRawSource(// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts  ReplaceSourceReplaceSourceRawSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } export default async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } j421451"http://canhelp.gr"undefined471501"https://api.canhelp.gr"undefined5065280undefined36073621undefined RawSourced // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ import { NextResponse } from 'next/server' import * as userland from "/opt/canhelp/apps/web/src/app/sitemap.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const sitemapModule = { ...userland } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } export async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new NextResponse('Not Found', { status: 404, }) } if (process.env.NODE_ENV !== 'production' && sitemapModule.generateSitemaps) { const sitemaps = await sitemapModule.generateSitemaps() for (const item of sitemaps) { if (item?.id == null) { throw new Error('id property is required for every item returned from generateSitemaps') } } } const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 041undefined43110undefined112205undefined235242__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__._undefined494500undefined705716__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined770840falseundefined8431083{}undefined12231238__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined12701281__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined3176sitemap_namespaceObjectundefined532620server.NextResponseundefined822923(0,resolve_route_data.resolveRouteData)undefined9551043server.NextResponseundefinedRawSource ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! N=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741443undefined15841602__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16381646__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18221857".next"undefined186218630undefined18901928 falseundefined21382137: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24432453__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25222611undefined26132619undefined29252945falseundefined29483012{}undefined31583197falseundefined37233738__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41964210__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50525060__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54775490__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60946108__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61446159__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61876204__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62396260__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68966909__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78877900__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93369360__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94589479__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98319844__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1003410047__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028710301__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1087310884__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1155311571__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200812016__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1256612580__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1304613059__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1348213508__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1355513568__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1363413655__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1397513995__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1405614067__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455914572__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1467114678__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1493414948__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516915187__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552915540__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined~156257module_compiled.AppRouteRouteModuleundefined293361route_kind.RouteKindundefined792837next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectundefined11431231(0,patch_fetch.patchFetch)undefined13161322next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handlerundefined22902390(0,app_paths_.normalizeAppPath)undefined28482942no_fallback_error_external_.NoFallbackErrorundefined37843870(0,trace_tracer.getTracer)undefined42874383(0,request_meta.getRequestMeta)undefined49875080node.NodeNextRequestundefined51165211node.NodeNextResponseundefined52395330next_request.NextRequestAdapterundefined53655477(0,next_request.signalFromNodeResponse)undefined61136191constants.BaseServerSpanundefined71697265(0,request_meta.getRequestMeta)undefined87018820(0,web_utils.toNodeOutgoingHttpHeaders)undefined89189026lib_constants.NEXT_CACHE_TAGS_HEADERundefined93789470lib_constants.INFINITE_CACHEundefined96609752lib_constants.INFINITE_CACHEundefined999210073response_cache.CachedRouteKindundefined1064510738(0,send_response/* sendResponse */.I)undefined1140711513(0,utils/* getRevalidateReason */.c)undefined1195012018route_kind.RouteKindundefined1256812649response_cache.CachedRouteKindundefined1311513211(0,request_meta.getRequestMeta)undefined1363413757(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1380413900(0,request_meta.getRequestMeta)undefined1396614074lib_constants.NEXT_CACHE_TAGS_HEADERundefined1439414505(0,cache_control.getCacheControlHeader)undefined1456614659(0,send_response/* sendResponse */.I)undefined1515115229constants.BaseServerSpanundefined1532815394trace_tracer.SpanKindundefined1565015744no_fallback_error_external_.NoFallbackErrorundefined1596516071(0,utils/* getRevalidateReason */.c)undefined1641316506(0,send_response/* sendResponse */.I)undefined /***/ }) _/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); const API_URL = "https://api.canhelp.gr" || 0; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ const sitemapModule = { ...sitemap_namespaceObject } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new server.NextResponse('Not Found', { status: 404, }) } if (false) {} const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ })  `_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; (// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts  ReplaceSourcefunction normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl(process.env.NEXT_PUBLIC_APP_URL); const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000'; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } export default async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } j421451"http://canhelp.gr"undefined471501"https://api.canhelp.gr"undefined5065280undefined36073621undefinedd // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ import { NextResponse } from 'next/server' import * as userland from "/opt/canhelp/apps/web/src/app/sitemap.ts" import { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data' const sitemapModule = { ...userland } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } export async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new NextResponse('Not Found', { status: 404, }) } if (process.env.NODE_ENV !== 'production' && sitemapModule.generateSitemaps) { const sitemaps = await sitemapModule.generateSitemaps() for (const item of sitemaps) { if (item?.id == null) { throw new Error('id property is required for every item returned from generateSitemaps') } } } const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = resolveRouteData(data, fileType) return new NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } 041undefined43110undefined112205undefined235242__WEBPACK_MODULE_REFERENCE__17_ns_asiSafe1__._undefined494500undefined705716__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined770840falseundefined8431083{}undefined12231238__WEBPACK_MODULE_REFERENCE__18_5b227265736f6c7665526f75746544617461225d_call_directImport_asiSafe1__._undefined12701281__WEBPACK_MODULE_REFERENCE__16_5b224e657874526573706f6e7365225d_directImport_asiSafe1__._undefined3176sitemap_namespaceObjectundefined532620server.NextResponseundefined822923(0,resolve_route_data.resolveRouteData)undefined9551043server.NextResponseundefinedRawSource ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! N=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741443undefined15841602__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16381646__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18221857".next"undefined186218630undefined18901928 falseundefined21382137: __WEBPACK_MODULE_REFERENCE__19_ns_asiSafe1__._undefined24432453__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined25222611undefined26132619undefined29252945falseundefined29483012{}undefined31583197falseundefined37233738__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined41964210__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined50525060__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined54775490__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined60946108__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined61446159__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined61876204__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined62396260__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined68966909__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined78877900__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined93369360__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined94589479__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined98319844__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1003410047__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1028710301__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1087310884__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1155311571__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1200812016__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1256612580__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1304613059__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1348213508__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1355513568__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1363413655__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1397513995__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1405614067__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1455914572__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1467114678__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1493414948__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1516915187__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1552915540__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined~156257module_compiled.AppRouteRouteModuleundefined293361route_kind.RouteKindundefined792837next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObjectundefined11431231(0,patch_fetch.patchFetch)undefined13161322next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handlerundefined22902390(0,app_paths_.normalizeAppPath)undefined28482942no_fallback_error_external_.NoFallbackErrorundefined37843870(0,trace_tracer.getTracer)undefined42874383(0,request_meta.getRequestMeta)undefined49875080node.NodeNextRequestundefined51165211node.NodeNextResponseundefined52395330next_request.NextRequestAdapterundefined53655477(0,next_request.signalFromNodeResponse)undefined61136191constants.BaseServerSpanundefined71697265(0,request_meta.getRequestMeta)undefined87018820(0,web_utils.toNodeOutgoingHttpHeaders)undefined89189026lib_constants.NEXT_CACHE_TAGS_HEADERundefined93789470lib_constants.INFINITE_CACHEundefined96609752lib_constants.INFINITE_CACHEundefined999210073response_cache.CachedRouteKindundefined1064510738(0,send_response/* sendResponse */.I)undefined1140711513(0,utils/* getRevalidateReason */.c)undefined1195012018route_kind.RouteKindundefined1256812649response_cache.CachedRouteKindundefined1311513211(0,request_meta.getRequestMeta)undefined1363413757(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1380413900(0,request_meta.getRequestMeta)undefined1396614074lib_constants.NEXT_CACHE_TAGS_HEADERundefined1439414505(0,cache_control.getCacheControlHeader)undefined1456614659(0,send_response/* sendResponse */.I)undefined1515115229constants.BaseServerSpanundefined1532815394trace_tracer.SpanKindundefined1565015744no_fallback_error_external_.NoFallbackErrorundefined1596516071(0,utils/* getRevalidateReason */.c)undefined1641316506(0,send_response/* sendResponse */.I)undefined, /***/ 86439:  +webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");  /***/ }) z/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ })  Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");, /***/ 87032:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) y {~ w }; ; // load runtime var __webpack_require__ = require("../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [901,825], () => (__webpack_exec__(83019))); ,module.exports = __webpack_exports__; })(); (() => { var exports = {}; exports.id = 475; exports.ids = [475]; exports.modules = { /***/ 261: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3295: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js"); /***/ }), /***/ 10846: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ }), /***/ 14691: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { getOrigin: function() { return getOrigin; }, resolveArray: function() { return resolveArray; }, resolveAsArrayOrUndefined: function() { return resolveAsArrayOrUndefined; } }); function resolveArray(value) { if (Array.isArray(value)) { return value; } return [ value ]; } function resolveAsArrayOrUndefined(value) { if (typeof value === 'undefined' || value === null) { return undefined; } return resolveArray(value); } function getOrigin(url) { let origin = undefined; if (typeof url === 'string') { try { url = new URL(url); origin = url.origin; } catch {} } return origin; } //# sourceMappingURL=utils.js.map /***/ }), /***/ 19121: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/action-async-storage.external.js"); /***/ }), /***/ 23757: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); 0 && (0); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveManifest: function() { return resolveManifest; }, resolveRobots: function() { return resolveRobots; }, resolveRouteData: function() { return resolveRouteData; }, resolveSitemap: function() { return resolveSitemap; } }); const _utils = __webpack_require__(14691); function resolveRobots(data) { let content = ''; const rules = Array.isArray(data.rules) ? data.rules : [ data.rules ]; for (const rule of rules){ const userAgent = (0, _utils.resolveArray)(rule.userAgent || [ '*' ]); for (const agent of userAgent){ content += `User-Agent: ${agent}\n`; } if (rule.allow) { const allow = (0, _utils.resolveArray)(rule.allow); for (const item of allow){ content += `Allow: ${item}\n`; } } if (rule.disallow) { const disallow = (0, _utils.resolveArray)(rule.disallow); for (const item of disallow){ content += `Disallow: ${item}\n`; } } if (rule.crawlDelay) { content += `Crawl-delay: ${rule.crawlDelay}\n`; } content += '\n'; } if (data.host) { content += `Host: ${data.host}\n`; } if (data.sitemap) { const sitemap = (0, _utils.resolveArray)(data.sitemap); // TODO-METADATA: support injecting sitemap url into robots.txt sitemap.forEach((item)=>{ content += `Sitemap: ${item}\n`; }); } return content; } function resolveSitemap(data) { const hasAlternates = data.some((item)=>Object.keys(item.alternates ?? {}).length > 0); const hasImages = data.some((item)=>{ var _item_images; return Boolean((_item_images = item.images) == null ? void 0 : _item_images.length); }); const hasVideos = data.some((item)=>{ var _item_videos; return Boolean((_item_videos = item.videos) == null ? void 0 : _item_videos.length); }); let content = ''; content += '\n'; content += '${item.url}\n`; const languages = (_item_alternates = item.alternates) == null ? void 0 : _item_alternates.languages; if (languages && Object.keys(languages).length) { // Since sitemap is separated from the page rendering, there's not metadataBase accessible yet. // we give the default setting that won't effect the languages resolving. for(const language in languages){ content += `\n`; } } if ((_item_images = item.images) == null ? void 0 : _item_images.length) { for (const image of item.images){ content += `\n${image}\n\n`; } } if ((_item_videos = item.videos) == null ? void 0 : _item_videos.length) { for (const video of item.videos){ let videoFields = [ ``, `${video.title}`, `${video.thumbnail_loc}`, `${video.description}`, video.content_loc && `${video.content_loc}`, video.player_loc && `${video.player_loc}`, video.duration && `${video.duration}`, video.view_count && `${video.view_count}`, video.tag && `${video.tag}`, video.rating && `${video.rating}`, video.expiration_date && `${video.expiration_date}`, video.publication_date && `${video.publication_date}`, video.family_friendly && `${video.family_friendly}`, video.requires_subscription && `${video.requires_subscription}`, video.live && `${video.live}`, video.restriction && `${video.restriction.content}`, video.platform && `${video.platform.content}`, video.uploader && `${video.uploader.content}`, `\n` ].filter(Boolean); content += videoFields.join('\n'); } } if (item.lastModified) { const serializedDate = item.lastModified instanceof Date ? item.lastModified.toISOString() : item.lastModified; content += `${serializedDate}\n`; } if (item.changeFrequency) { content += `${item.changeFrequency}\n`; } if (typeof item.priority === 'number') { content += `${item.priority}\n`; } content += '\n'; } content += '\n'; return content; } function resolveManifest(data) { return JSON.stringify(data); } function resolveRouteData(data, fileType) { if (fileType === 'robots') { return resolveRobots(data); } if (fileType === 'sitemap') { return resolveSitemap(data); } if (fileType === 'manifest') { return resolveManifest(data); } return ''; } //# sourceMappingURL=resolve-route-data.js.map /***/ }), /***/ 29294: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ }), /***/ 44870: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ }), /***/ 63033: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }), /***/ 80408: /***/ (() => { /***/ }), /***/ 83019: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/sitemap.ts var sitemap_namespaceObject = {}; __webpack_require__.r(sitemap_namespaceObject); __webpack_require__.d(sitemap_namespaceObject, { "default": () => (sitemap) }); // NAMESPACE OBJECT: ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ var next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject = {}; __webpack_require__.r(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject); __webpack_require__.d(next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(26421); // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(97714); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(85681); // EXTERNAL MODULE: ../../node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(22369); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(37587); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ../../node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(46537); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(3463); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(1889); // EXTERNAL MODULE: ../../node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(85250); // EXTERNAL MODULE: ../../node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(23620); // EXTERNAL MODULE: ../../node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(29790); // EXTERNAL MODULE: ../../node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(67876); // EXTERNAL MODULE: ../../node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(57749); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ../../node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(40139); // EXTERNAL MODULE: ../../node_modules/next/dist/api/server.js var server = __webpack_require__(53444); ;// ./src/app/sitemap.ts function normalizeAppUrl(raw) { const fallback = 'http://localhost:3000'; const base = raw && raw.trim() || fallback; try { const url = new URL(base); if (url.hostname !== 'localhost' && url.protocol !== 'https:') { url.protocol = 'https:'; } return url.toString().replace(/\/$/, ''); } catch { return fallback; } } const APP_URL = normalizeAppUrl("http://canhelp.gr"); const API_URL = "https://api.canhelp.gr" || 0; const STATIC_ROUTES = [ { url: `${APP_URL}/`, changeFrequency: 'daily', priority: 1.0 }, { url: `${APP_URL}/tasks`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/specialists`, changeFrequency: 'hourly', priority: 0.9 }, { url: `${APP_URL}/pricing`, changeFrequency: 'weekly', priority: 0.6 }, { url: `${APP_URL}/support`, changeFrequency: 'monthly', priority: 0.4 }, { url: `${APP_URL}/become-specialist`, changeFrequency: 'monthly', priority: 0.7 } ]; async function fetchAllTasks() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/tasks?page=${page}&limit=${limit}&status=open`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const tasks = json.data ?? []; for (const { task } of tasks){ entries.push({ url: `${APP_URL}/tasks/${task.id}`, lastModified: task.updatedAt ? new Date(task.updatedAt) : undefined, changeFrequency: 'daily', priority: 0.8 }); } if (entries.length >= json.total || tasks.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function fetchAllSpecialists() { const entries = []; let page = 1; const limit = 100; try { while(true){ const res = await fetch(`${API_URL}/api/users/specialists?page=${page}&limit=${limit}`, { next: { revalidate: 3600 } }); if (!res.ok) break; const json = await res.json(); const specialists = json.data ?? []; for (const specialist of specialists){ entries.push({ url: `${APP_URL}/users/${specialist.id}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.75 }); if (specialist.personalSiteSlug) { entries.push({ url: `${APP_URL}/site/${specialist.personalSiteSlug}`, lastModified: specialist.updatedAt ? new Date(specialist.updatedAt) : undefined, changeFrequency: 'weekly', priority: 0.85 }); } } if (entries.length >= json.total || specialists.length < limit) break; page++; } } catch { // silently skip if API is unavailable during build } return entries; } async function sitemap() { const [tasks, specialists] = await Promise.all([ fetchAllTasks(), fetchAllSpecialists() ]); return [ ...STATIC_ROUTES, ...tasks, ...specialists ]; } // EXTERNAL MODULE: ../../node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js var resolve_route_data = __webpack_require__(23757); ;// ../../node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__ const sitemapModule = { ...sitemap_namespaceObject } const handler = sitemapModule.default const contentType = "application/xml" const fileType = "sitemap" if (typeof handler !== 'function') { throw new Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"') } async function GET(_, ctx) { const { __metadata_id__: id, ...params } = await ctx.params || {} const hasXmlExtension = id ? id.endsWith('.xml') : false if (id && !hasXmlExtension) { return new server.NextResponse('Not Found', { status: 404, }) } if (false) {} const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined const data = await handler({ id: targetId }) const content = (0,resolve_route_data.resolveRouteData)(data, fileType) return new server.NextResponse(content, { headers: { 'Content-Type': contentType, 'Cache-Control': "public, max-age=0, must-revalidate", }, }) } ;// ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fsitemap.xml%2Froute&name=app%2Fsitemap.xml%2Froute&pagePath=private-next-app-dir%2Fsitemap.ts&appDir=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp&appPaths=%2Fsitemap&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/sitemap.xml/route", pathname: "/sitemap.xml", filename: "sitemap", bundlePath: "app/sitemap.xml/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__", nextConfigOutput, userland: next_metadata_route_loaderfilePath_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_2Fsitemap_ts_isDynamicRouteExtension_1_next_metadata_route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function next_app_loaderpage_2Fsitemap_xml_2Froute_name_app_2Fsitemap_xml_2Froute_pagePath_private_next_app_dir_2Fsitemap_ts_appDir_2Fopt_2Fcanhelp_2Fapps_2Fweb_2Fsrc_2Fapp_appPaths_2Fsitemap_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/sitemap.xml/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ }), /***/ 86439: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }), /***/ 87032: /***/ (() => { /***/ }) }; ; // load runtime var __webpack_require__ = require("../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [901,825], () => (__webpack_exec__(83019))); module.exports = __webpack_exports__; })(); / @b(() => { var exports = {}; exports.id = 475; exports.ids = [475]; exports.modules = { /***/ 261: uuuuuuuuuuuuuuuuuuuuuuuuuuu, /***/ 83019: ZEtZZttttttttvar __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [901,825], () => (__webpack_exec__(83019))); sz+(()=>{var a={};a.id=784,a.ids=[784],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14691:(a,b)=>{"use strict";function c(a){return Array.isArray(a)?a:[a]}function d(a){if(null!=a)return c(a)}function e(a){let b;if("string"==typeof a)try{b=(a=new URL(a)).origin}catch{}return b}Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getOrigin:function(){return e},resolveArray:function(){return c},resolveAsArrayOrUndefined:function(){return d}})},14905:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>D,patchFetch:()=>C,routeModule:()=>y,serverHooks:()=>B,workAsyncStorage:()=>z,workUnitAsyncStorage:()=>A});var d={};c.r(d),c.d(d,{GET:()=>x});var e=c(26421),f=c(97714),g=c(85681),h=c(22369),i=c(37587),j=c(261),k=c(46537),l=c(3463),m=c(1889),n=c(85250),o=c(23620),p=c(29790),q=c(67876),r=c(57749),s=c(86439),t=c(40139),u=c(53444);let v=function(a){let b="http://localhost:3000",c=a&&a.trim()||b;try{let a=new URL(c);return"localhost"!==a.hostname&&"https:"!==a.protocol&&(a.protocol="https:"),a.toString().replace(/\/$/,"")}catch{return b}}("http://canhelp.gr");var w=c(23757);async function x(){let a=await {rules:{userAgent:"*",allow:["/","/site/"],disallow:["/admin/","/dashboard/","/profile/","/chat/","/notifications/","/favorites/","/schedule/","/payment/"]},sitemap:`${v}/sitemap.xml`},b=(0,w.resolveRouteData)(a,"robots");return new u.NextResponse(b,{headers:{"Content-Type":"text/plain","Cache-Control":"public, max-age=0, must-revalidate"}})}let y=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/robots.txt/route",pathname:"/robots.txt",filename:"robots",bundlePath:"app/robots.txt/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Frobots.ts&isDynamicRouteExtension=1!?__next_metadata_route__",nextConfigOutput:"",userland:d}),{workAsyncStorage:z,workUnitAsyncStorage:A,serverHooks:B}=y;function C(){return(0,g.patchFetch)({workAsyncStorage:z,workUnitAsyncStorage:A})}async function D(a,b,c){var d;let e="/robots.txt/route";"/index"===e&&(e="/");let g=await y.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D}=g,E=(0,j.normalizeAppPath)(e),F=!!(z.dynamicRoutes[E]||z.routes[D]);if(F&&!x){let a=!!z.routes[D],b=z.dynamicRoutes[E];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!F||y.isDev||x||(G="/index"===(G=D)?"/":G);let H=!0===y.isDev||!F,I=F&&!H,J=a.method||"GET",K=(0,i.getTracer)(),L=K.getActiveScopeSpan(),M={params:v,prerenderManifest:z,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>y.onRequestError(a,b,d,A)},sharedContext:{buildId:u}},N=new k.NodeNextRequest(a),O=new k.NodeNextResponse(b),P=l.NextRequestAdapter.fromNodeNextRequest(N,(0,l.signalFromNodeResponse)(b));try{let d=async c=>y.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=M.renderOpts.collectedTags;if(!F)return await (0,o.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await y.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})},A),b}},l=await y.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil});if(!F)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",B?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&F||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};L?await g(L):await K.withPropagatedContext(a.headers,()=>K.trace(m.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await y.onRequestError(a,b,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})}),F)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},23757:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{resolveManifest:function(){return g},resolveRobots:function(){return e},resolveRouteData:function(){return h},resolveSitemap:function(){return f}});let d=c(14691);function e(a){let b="";for(let c of Array.isArray(a.rules)?a.rules:[a.rules]){for(let a of(0,d.resolveArray)(c.userAgent||["*"]))b+=`User-Agent: ${a} `;if(c.allow)for(let a of(0,d.resolveArray)(c.allow))b+=`Allow: ${a} `;if(c.disallow)for(let a of(0,d.resolveArray)(c.disallow))b+=`Disallow: ${a} `;c.crawlDelay&&(b+=`Crawl-delay: ${c.crawlDelay} `),b+="\n"}return a.host&&(b+=`Host: ${a.host} `),a.sitemap&&(0,d.resolveArray)(a.sitemap).forEach(a=>{b+=`Sitemap: ${a} `}),b}function f(a){let b=a.some(a=>Object.keys(a.alternates??{}).length>0),c=a.some(a=>{var b;return!!(null==(b=a.images)?void 0:b.length)}),d=a.some(a=>{var b;return!!(null==(b=a.videos)?void 0:b.length)}),e="";for(let i of(e+='\n',e+='${i.url} `;let a=null==(f=i.alternates)?void 0:f.languages;if(a&&Object.keys(a).length)for(let b in a)e+=` `;if(null==(g=i.images)?void 0:g.length)for(let a of i.images)e+=` ${a} `;if(null==(h=i.videos)?void 0:h.length)for(let a of i.videos)e+=["",`${a.title}`,`${a.thumbnail_loc}`,`${a.description}`,a.content_loc&&`${a.content_loc}`,a.player_loc&&`${a.player_loc}`,a.duration&&`${a.duration}`,a.view_count&&`${a.view_count}`,a.tag&&`${a.tag}`,a.rating&&`${a.rating}`,a.expiration_date&&`${a.expiration_date}`,a.publication_date&&`${a.publication_date}`,a.family_friendly&&`${a.family_friendly}`,a.requires_subscription&&`${a.requires_subscription}`,a.live&&`${a.live}`,a.restriction&&`${a.restriction.content}`,a.platform&&`${a.platform.content}`,a.uploader&&`${a.uploader.content}`,` `].filter(Boolean).join("\n");if(i.lastModified){let a=i.lastModified instanceof Date?i.lastModified.toISOString():i.lastModified;e+=`${a} `}i.changeFrequency&&(e+=`${i.changeFrequency} `),"number"==typeof i.priority&&(e+=`${i.priority} `),e+="\n"}return e+"\n"}function g(a){return JSON.stringify(a)}function h(a,b){return"robots"===b?e(a):"sitemap"===b?f(a):"manifest"===b?g(a):""}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},80408:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87032:()=>{}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[901,825],()=>b(b.s=14905));module.exports=c})(); w"2(()=>{var a={};a.id=475,a.ids=[475],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14691:(a,b)=>{"use strict";function c(a){return Array.isArray(a)?a:[a]}function d(a){if(null!=a)return c(a)}function e(a){let b;if("string"==typeof a)try{b=(a=new URL(a)).origin}catch{}return b}Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getOrigin:function(){return e},resolveArray:function(){return c},resolveAsArrayOrUndefined:function(){return d}})},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},23757:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{resolveManifest:function(){return g},resolveRobots:function(){return e},resolveRouteData:function(){return h},resolveSitemap:function(){return f}});let d=c(14691);function e(a){let b="";for(let c of Array.isArray(a.rules)?a.rules:[a.rules]){for(let a of(0,d.resolveArray)(c.userAgent||["*"]))b+=`User-Agent: ${a} `;if(c.allow)for(let a of(0,d.resolveArray)(c.allow))b+=`Allow: ${a} `;if(c.disallow)for(let a of(0,d.resolveArray)(c.disallow))b+=`Disallow: ${a} `;c.crawlDelay&&(b+=`Crawl-delay: ${c.crawlDelay} `),b+="\n"}return a.host&&(b+=`Host: ${a.host} `),a.sitemap&&(0,d.resolveArray)(a.sitemap).forEach(a=>{b+=`Sitemap: ${a} `}),b}function f(a){let b=a.some(a=>Object.keys(a.alternates??{}).length>0),c=a.some(a=>{var b;return!!(null==(b=a.images)?void 0:b.length)}),d=a.some(a=>{var b;return!!(null==(b=a.videos)?void 0:b.length)}),e="";for(let i of(e+='\n',e+='${i.url} `;let a=null==(f=i.alternates)?void 0:f.languages;if(a&&Object.keys(a).length)for(let b in a)e+=` `;if(null==(g=i.images)?void 0:g.length)for(let a of i.images)e+=` ${a} `;if(null==(h=i.videos)?void 0:h.length)for(let a of i.videos)e+=["",`${a.title}`,`${a.thumbnail_loc}`,`${a.description}`,a.content_loc&&`${a.content_loc}`,a.player_loc&&`${a.player_loc}`,a.duration&&`${a.duration}`,a.view_count&&`${a.view_count}`,a.tag&&`${a.tag}`,a.rating&&`${a.rating}`,a.expiration_date&&`${a.expiration_date}`,a.publication_date&&`${a.publication_date}`,a.family_friendly&&`${a.family_friendly}`,a.requires_subscription&&`${a.requires_subscription}`,a.live&&`${a.live}`,a.restriction&&`${a.restriction.content}`,a.platform&&`${a.platform.content}`,a.uploader&&`${a.uploader.content}`,` `].filter(Boolean).join("\n");if(i.lastModified){let a=i.lastModified instanceof Date?i.lastModified.toISOString():i.lastModified;e+=`${a} `}i.changeFrequency&&(e+=`${i.changeFrequency} `),"number"==typeof i.priority&&(e+=`${i.priority} `),e+="\n"}return e+"\n"}function g(a){return JSON.stringify(a)}function h(a,b){return"robots"===b?e(a):"sitemap"===b?f(a):"manifest"===b?g(a):""}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},80408:()=>{},83019:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>K,patchFetch:()=>J,routeModule:()=>F,serverHooks:()=>I,workAsyncStorage:()=>G,workUnitAsyncStorage:()=>H});var d={};c.r(d),c.d(d,{default:()=>B});var e={};c.r(e),c.d(e,{GET:()=>E});var f=c(26421),g=c(97714),h=c(85681),i=c(22369),j=c(37587),k=c(261),l=c(46537),m=c(3463),n=c(1889),o=c(85250),p=c(23620),q=c(29790),r=c(67876),s=c(57749),t=c(86439),u=c(40139),v=c(53444);let w=function(a){let b="http://localhost:3000",c=a&&a.trim()||b;try{let a=new URL(c);return"localhost"!==a.hostname&&"https:"!==a.protocol&&(a.protocol="https:"),a.toString().replace(/\/$/,"")}catch{return b}}("http://canhelp.gr"),x="https://api.canhelp.gr",y=[{url:`${w}/`,changeFrequency:"daily",priority:1},{url:`${w}/tasks`,changeFrequency:"hourly",priority:.9},{url:`${w}/specialists`,changeFrequency:"hourly",priority:.9},{url:`${w}/pricing`,changeFrequency:"weekly",priority:.6},{url:`${w}/support`,changeFrequency:"monthly",priority:.4},{url:`${w}/become-specialist`,changeFrequency:"monthly",priority:.7}];async function z(){let a=[],b=1;try{for(;;){let c=await fetch(`${x}/api/tasks?page=${b}&limit=100&status=open`,{next:{revalidate:3600}});if(!c.ok)break;let d=await c.json(),e=d.data??[];for(let{task:b}of e)a.push({url:`${w}/tasks/${b.id}`,lastModified:b.updatedAt?new Date(b.updatedAt):void 0,changeFrequency:"daily",priority:.8});if(a.length>=d.total||e.length<100)break;b++}}catch{}return a}async function A(){let a=[],b=1;try{for(;;){let c=await fetch(`${x}/api/users/specialists?page=${b}&limit=100`,{next:{revalidate:3600}});if(!c.ok)break;let d=await c.json(),e=d.data??[];for(let b of e)a.push({url:`${w}/users/${b.id}`,lastModified:b.updatedAt?new Date(b.updatedAt):void 0,changeFrequency:"weekly",priority:.75}),b.personalSiteSlug&&a.push({url:`${w}/site/${b.personalSiteSlug}`,lastModified:b.updatedAt?new Date(b.updatedAt):void 0,changeFrequency:"weekly",priority:.85});if(a.length>=d.total||e.length<100)break;b++}}catch{}return a}async function B(){let[a,b]=await Promise.all([z(),A()]);return[...y,...a,...b]}var C=c(23757);let D={...d}.default;if("function"!=typeof D)throw Error('Default export is missing in "/opt/canhelp/apps/web/src/app/sitemap.ts"');async function E(a,b){let{__metadata_id__:c,...d}=await b.params||{},e=!!c&&c.endsWith(".xml");if(c&&!e)return new v.NextResponse("Not Found",{status:404});let f=c&&e?c.slice(0,-4):void 0,g=await D({id:f}),h=(0,C.resolveRouteData)(g,"sitemap");return new v.NextResponse(h,{headers:{"Content-Type":"application/xml","Cache-Control":"public, max-age=0, must-revalidate"}})}let F=new f.AppRouteRouteModule({definition:{kind:g.RouteKind.APP_ROUTE,page:"/sitemap.xml/route",pathname:"/sitemap.xml",filename:"sitemap",bundlePath:"app/sitemap.xml/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"next-metadata-route-loader?filePath=%2Fopt%2Fcanhelp%2Fapps%2Fweb%2Fsrc%2Fapp%2Fsitemap.ts&isDynamicRouteExtension=1!?__next_metadata_route__",nextConfigOutput:"",userland:e}),{workAsyncStorage:G,workUnitAsyncStorage:H,serverHooks:I}=F;function J(){return(0,h.patchFetch)({workAsyncStorage:G,workUnitAsyncStorage:H})}async function K(a,b,c){var d;let e="/sitemap.xml/route";"/index"===e&&(e="/");let f=await F.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:h,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:y,routerServerContext:z,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,resolvedPathname:C}=f,D=(0,k.normalizeAppPath)(e),E=!!(y.dynamicRoutes[D]||y.routes[C]);if(E&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[D];if(b&&!1===b.fallback&&!a)throw new t.NoFallbackError}let G=null;!E||F.isDev||x||(G="/index"===(G=C)?"/":G);let H=!0===F.isDev||!E,I=E&&!H,J=a.method||"GET",K=(0,j.getTracer)(),L=K.getActiveScopeSpan(),M={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,i.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>F.onRequestError(a,b,d,z)},sharedContext:{buildId:h}},N=new l.NodeNextRequest(a),O=new l.NodeNextResponse(b),P=m.NextRequestAdapter.fromNodeNextRequest(N,(0,m.signalFromNodeResponse)(b));try{let d=async c=>F.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),f=async f=>{var h,j;let k=async({previousCacheEntry:g})=>{try{if(!(0,i.getRequestMeta)(a,"minimalMode")&&A&&B&&!g)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(f);a.fetchMetrics=M.renderOpts.fetchMetrics;let h=M.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let j=M.renderOpts.collectedTags;if(!E)return await (0,p.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[s.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==g?void 0:g.isStale)&&await F.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,o.c)({isRevalidate:I,isOnDemandRevalidate:A})},z),b}},l=await F.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:g.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!E)return null;if((null==l||null==(h=l.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,i.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,q.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,i.getRequestMeta)(a,"minimalMode")&&E||m.delete(s.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,r.getCacheControlHeader)(l.cacheControl)),await (0,p.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};L?await f(L):await K.withPropagatedContext(a.headers,()=>K.trace(n.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:j.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},f))}catch(b){if(b instanceof t.NoFallbackError||await F.onRequestError(a,b,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,o.c)({isRevalidate:I,isOnDemandRevalidate:A})}),E)throw b;return await (0,p.I)(N,O,new Response(null,{status:500})),null}}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87032:()=>{}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[901,825],()=>b(b.s=83019));module.exports=c})();