// TODO: This file is not used in the project. Fix the type errors.
// import { URLS } from '@akinon/next/data/urls';
// import { Metadata, PageProps } from '@akinon/next/types';
// import logger from '@akinon/next/utils/log';
// import { notFound } from 'next/navigation';
// type PrettyUrlResult = {
// matched: boolean;
// path?: string;
// pk?: number;
// };
// const resolvePrettyUrlHandler =
// (pathname: string, ip: string | null) => async () => {
// let results = [] as { old_path: string }[];
// let prettyUrlResult: PrettyUrlResult = {
// matched: false
// };
// try {
// const requestUrl = URLS.misc.prettyUrls(`/${pathname}/`);
// logger.debug(`Resolving pretty url`, { pathname, requestUrl, ip });
// const start = Date.now();
// const apiResponse = await fetch(requestUrl, {
// next: {
// revalidate: 0
// }
// });
// const data = await apiResponse.json();
// ({ results } = data);
// const end = Date.now();
// console.warn('Pretty url response time', end - start, requestUrl);
// const matched = results.length > 0;
// const [{ old_path: path } = { old_path: '' }] = results;
// let pk;
// if (matched) {
// const pkRegex = /\/(\d+)\/$/;
// const match = path.match(pkRegex);
// pk = match ? parseInt(match[1]) : undefined;
// }
// prettyUrlResult = {
// matched,
// path,
// pk
// };
// logger.trace('Pretty url result', { prettyUrlResult, ip });
// } catch (error) {
// logger.error('Error resolving pretty url', { error, pathname, ip });
// }
// return prettyUrlResult;
// };
// export async function generateMetadata({ params }: PageProps) {
// let result: Metadata = {};
// const { prettyurl } = params;
// const pageSlug = prettyurl
// .filter((x) => !x.startsWith('searchparams'))
// .join('/');
// const searchParams = new URLSearchParams(
// decodeURIComponent(
// prettyurl
// .find((x) => x.startsWith('searchparams'))
// ?.replace('searchparams%7C', '')
// ) ?? {}
// );
// const prettyUrlResult = await resolvePrettyUrlHandler(pageSlug, null)();
// if (!prettyUrlResult.matched) {
// return notFound();
// }
// const commonProps = {
// params: {
// ...params,
// pk: prettyUrlResult.pk
// },
// searchParams
// };
// try {
// if (prettyUrlResult.path.startsWith('/product/')) {
// await import('@product/[pk]/page').then(async (module) => {
// result = await module['generateMetadata']?.(commonProps);
// });
// }
// if (prettyUrlResult.path.startsWith('/group-product/')) {
// await import('@group-product/[pk]/page').then(async (module) => {
// result = await module['generateMetadata']?.(commonProps);
// });
// }
// if (prettyUrlResult.path.startsWith('/category/')) {
// await import('@category/[pk]/page').then(async (module) => {
// result = await module['generateMetadata']?.(commonProps);
// });
// }
// if (prettyUrlResult.path.startsWith('/special-page/')) {
// await import('@special-page/[pk]/page').then(async (module) => {
// result = await module['generateMetadata']?.(commonProps);
// });
// }
// if (prettyUrlResult.path.startsWith('/flat-page/')) {
// await import('@flat-page/[pk]/page').then(async (module) => {
// result = await module['generateMetadata']?.(commonProps);
// });
// }
// // eslint-disable-next-line no-empty
// } catch (error) {}
// return result;
// }
// export const dynamic = 'force-static';
// export const revalidate = 300;
// export default async function Page({ params }) {
// const { prettyurl } = params;
// const pageSlug = prettyurl
// .filter((x) => !x.startsWith('searchparams'))
// .join('/');
// const urlSearchParams = new URLSearchParams(
// decodeURIComponent(
// prettyurl
// .find((x) => x.startsWith('searchparams'))
// ?.replace('searchparams%7C', '')
// ) ?? {}
// );
// const searchParams = {};
// for (const [key, value] of urlSearchParams.entries() as unknown as Array<
// [string, string]
// >) {
// if (!searchParams[key]) {
// searchParams[key] = [];
// }
// searchParams[key].push(value);
// }
// const result = await resolvePrettyUrlHandler(pageSlug, null)();
// if (!result.matched) {
// return notFound();
// }
// const commonProps = {
// params: {
// ...params,
// pk: result.pk
// },
// searchParams: urlSearchParams
// };
// if (result.path.startsWith('/category/')) {
// const CategoryPage = (await import('@category/[pk]/page')).default;
// return ;
// }
// if (result.path.startsWith('/product/')) {
// const ProductPage = (await import('@product/[pk]/page')).default;
// return ;
// }
// if (result.path.startsWith('/group-product/')) {
// const GroupProduct = (await import('@group-product/[pk]/page')).default;
// return ;
// }
// if (result.path.startsWith('/special-page/')) {
// const SpecialPage = (await import('@special-page/[pk]/page')).default;
// return ;
// }
// if (result.path.startsWith('/flat-page/')) {
// const FlatPage = (await import('@flat-page/[pk]/page')).default;
// return ;
// }
// return null;
// }