/opt/canhelp/apps/web/.next/cache/webpack/server-production
Edit: /opt/canhelp/apps/web/.next/cache/webpack/server-production/8.pack (4845296B)
wpc I webpack/lib/cache/PackFileCacheStrategyPackContentItems 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/app/layout.tsxK 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|next=|/opt/canhelp/node_modules/next|]|dependencyType=|esm|path=|/opt/canhelp/apps/web|request=|/opt/canhelp/apps/web/src/app/layout.tsx 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/app/layout.tsx|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/layout.tsx|rsc0 Compilation/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/layout.tsx|rsc|webpack-runtimeCompilation/assets|chunk809MinifierWebpackPlugin|809.jswebpack/lib/cache/ResolverCachePlugin`_ResolverCachePluginCacheMisscontextpathrequestqueryfragmentmoduledirectoryfileinternalfullySpecifieddescriptionFilePathdescriptionFileDatadescriptionFileRootrelativePath/opt/canhelp/apps/web/src/app/layout.tsx0/opt/canhelp/apps/web/package.jsonnameversionprivatescriptsdependenciesdevDependenciesweb0.1.0devbuildstartlinttypechecknext dev --port 3000NODE_ENV=production next buildnext startnext linttsc --noEmit`
@canhelp/shared@marsidev/react-turnstile@types/leafletbetter-authleafletnanostoresnextreactreact-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/app/layout.tsxwebpack/lib/FileSystemInfoSnapshot@ x2yB /opt/canhelp/apps/web/src/app/package.json/opt/canhelp/apps/web/src/package.json
x2yB /opt/canhelp/apps/web/src/app/opt/canhelp/apps/web/src/opt/canhelp/apps/opt/canhelp/opt/safeTimetimestamphash! `nuyB PnuyBd1168d5d5ce4fcb8! P.yB @.yB1b80f4f5560022f3 issuerissuerLayercompilerrscserver @ 2yB`/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/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/app/layout.tsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/layout.tsx.js/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/layout.tsx.mjs/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/layout.tsx.tsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/layout.tsx.ts/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/layout.tsx.jsx/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/layout.tsx.json/opt/canhelp/apps/web/opt/canhelp/apps/web/src/app/layout.tsx.wasm webpack/lib/NormalModulewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { cookies, headers } from 'next/headers';
import { cache } from 'react';
import './globals.css';
import { Header } from '@/components/Header';
import { Footer } from '@/components/Footer';
import { LocaleProvider } from '@/context/locale';
import { LocationProvider } from '@/context/location';
import { ScrollToTopButton } from '@/components/ScrollToTopButton';
import { AdminRolePreview } from '@/components/AdminRolePreview';
// React.cache() deduplicates identical calls within the same request render pass
const fetchSeoSettings = cache(async ()=>{
try {
const apiBase = process.env.INTERNAL_API_URL || 'http://localhost:4000';
const res = await fetch(`${apiBase}/api/admin/seo-public`, {
next: {
revalidate: 60
}
});
if (!res.ok) return {};
return res.json();
} catch {
return {};
}
});
export async function generateMetadata() {
const seo = await fetchSeoSettings();
const cookieStore = await cookies();
const rawLocale = cookieStore.get('canhelp_locale')?.value;
const locale = [
'el',
'en',
'ru',
'uk'
].includes(rawLocale ?? '') ? rawLocale : 'el';
const title = seo[`seo.siteTitle.${locale}`] || seo['seo.siteTitle.el'] || seo['seo.siteTitle'] || 'CanHelp — Βρες ειδικό για κάθε δουλειά';
const description = seo[`seo.siteDescription.${locale}`] || seo['seo.siteDescription.el'] || seo['seo.siteDescription'] || 'Η ελληνική πλατφόρμα για online ανάθεση εργασιών. Βρες επαγγελματίες για καθαρισμό, υδραυλικά, μαθήματα και πολλά άλλα.';
return {
title,
description,
keywords: 'εργασίες, ειδικοί, Ελλάδα, freelance, καθαρισμός, υδραυλικά',
robots: seo['seo.indexingEnabled'] === 'false' ? 'noindex, nofollow' : undefined
};
}
export default async function RootLayout({ children }) {
const cookieStore = await cookies();
const headerStore = await headers();
const pathname = headerStore.get('x-pathname') ?? '';
const isStandalone = pathname.startsWith('/site/');
const rawLocale = cookieStore.get('canhelp_locale')?.value;
const locales = [
'el',
'en',
'uk',
'ru'
];
const initialLocale = locales.includes(rawLocale) ? rawLocale : 'el';
const initialLocation = decodeURIComponent(cookieStore.get('canhelp_location')?.value ?? '');
const seo = await fetchSeoSettings();
const headScripts = seo['seo.headScripts'] ?? '';
const parsedScripts = [];
if (headScripts.trim()) {
const re = /