All files / lib siteMetadata.ts

100% Statements 86/86
100% Branches 6/6
100% Functions 4/4
100% Lines 86/86

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 871x 1x 1x 1x 1x 11x 11x 11x 11x 11x 11x 11x 11x 1x 1x 8x 8x 8x 8x 8x 8x 8x 8x 1x 7x 8x 8x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x  
import type { Metadata } from "next"
import { landingEnv } from "@workspace/env/landing"
import { resolveWebOrigin } from "@workspace/env/origins"
 
export function siteOrigin(): string {
  return resolveWebOrigin({
    configuredUrl: landingEnv.NEXT_PUBLIC_SITE_URL,
    vercelUrl: landingEnv.VERCEL_URL,
    vercelEnv: landingEnv.VERCEL_ENV,
    variableName: "NEXT_PUBLIC_SITE_URL",
    localOrigin: "http://localhost:3001",
  })
}
 
export function appOrigin(): string {
  return resolveWebOrigin({
    configuredUrl: landingEnv.NEXT_PUBLIC_APP_URL,
    vercelUrl: landingEnv.VERCEL_URL,
    vercelEnv: landingEnv.VERCEL_ENV,
    allowVercelUrl: false,
    variableName: "NEXT_PUBLIC_APP_URL",
    localOrigin:
      landingEnv.NODE_ENV === "development"
        ? "https://localhost:3000"
        : "http://localhost:3000",
  })
}
 
export function siteMetadata(): Metadata {
  const description =
    "Manage your Discord server with Cleo's moderation, welcome, logs, support, automation, and AI-assisted tools."
  return {
    metadataBase: new URL(siteOrigin()),
    title: {
      default: "Cleo | Manage your Discord community",
      template: "%s | Cleo",
    },
    description,
    applicationName: "Cleo",
    authors: [{ name: "JCoNet LTD" }],
    creator: "JCoNet LTD",
    publisher: "JCoNet LTD",
    category: "technology",
    referrer: "origin-when-cross-origin",
    formatDetection: { address: false, email: false, telephone: false },
    icons: {
      icon: [
        { url: "/favicon-16x16.png", sizes: "16x16", type: "image/png" },
        { url: "/favicon-32x32.png", sizes: "32x32", type: "image/png" },
      ],
      apple: [
        { url: "/apple-touch-icon.png", sizes: "180x180", type: "image/png" },
      ],
    },
    openGraph: {
      type: "website",
      siteName: "Cleo",
      title: "Cleo | Manage your Discord community",
      description,
      url: "/",
      images: [
        {
          url: "/android-chrome-512x512.png",
          width: 512,
          height: 512,
          alt: "Cleo, the community assistant",
        },
      ],
    },
    twitter: {
      card: "summary",
      title: "Cleo | Manage your Discord community",
      description,
      images: ["/android-chrome-512x512.png"],
    },
    robots: {
      index: landingEnv.VERCEL_ENV !== "preview",
      follow: landingEnv.VERCEL_ENV !== "preview",
    },
    appleWebApp: {
      capable: true,
      title: "Cleo",
      statusBarStyle: "black-translucent",
    },
  }
}