From edb3d80253cd69d2ec37f39646b113d7c386ea9b Mon Sep 17 00:00:00 2001 From: Mohab Sameh Date: Fri, 10 May 2024 17:59:02 +0300 Subject: [PATCH 1/2] Create vercel.json --- apps/frontend/vercel.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 apps/frontend/vercel.json diff --git a/apps/frontend/vercel.json b/apps/frontend/vercel.json new file mode 100644 index 000000000..2325f3ef5 --- /dev/null +++ b/apps/frontend/vercel.json @@ -0,0 +1,9 @@ +{ + "redirects": [ + { + "source": "/automations/eslint-to-biome-migrate-rules/", + "destination": "/registry/biome-migrate-rules", + "permanent": false + } + ] +} From 3057d7c3723b10be2a258b377a50e2e673080f91 Mon Sep 17 00:00:00 2001 From: Mohab Sameh <37941642+mohab-sameh@users.noreply.github.com> Date: Fri, 10 May 2024 19:16:54 +0300 Subject: [PATCH 2/2] [Frontend] fix: env usages (#537) (#540) Co-authored-by: Sasha --- apps/frontend/app/(website)/layout.tsx | 6 +++--- apps/frontend/app/api/draft/route.ts | 4 ++-- apps/frontend/app/manage/[[...index]]/page.tsx | 4 ++-- apps/frontend/app/sitemap.ts | 3 +-- apps/frontend/config.ts | 16 +++++++--------- apps/frontend/data/sanity/client.ts | 10 +++++----- apps/frontend/data/sanity/generateStaticSlugs.ts | 4 ++-- apps/frontend/data/sanity/loadQuery.ts | 5 ++--- apps/frontend/data/sanity/redirects.ts | 4 ++-- .../data/sanity/resolveSanityRouteMetadata.tsx | 6 +++--- apps/frontend/sanity.config.ts | 12 ++++++------ apps/frontend/sanity/lib/utils.ts | 8 +++----- apps/frontend/utils/urls/index.ts | 4 ++-- 13 files changed, 40 insertions(+), 46 deletions(-) diff --git a/apps/frontend/app/(website)/layout.tsx b/apps/frontend/app/(website)/layout.tsx index e8290b0e7..aae5c3196 100644 --- a/apps/frontend/app/(website)/layout.tsx +++ b/apps/frontend/app/(website)/layout.tsx @@ -4,7 +4,7 @@ import { draftMode } from "next/headers"; import GlobalLayout from "@/components/global/GlobalLayout"; import GlobalLayoutPreview from "@/components/global/GlobalLayoutPreview"; -import config from "@/config"; +import publicConfig from "@/config"; import { loadGlobalData } from "@/data/sanity"; import { GLOBAL_QUERY } from "@/data/sanity/queries"; import { getOgImages } from "@/data/sanity/resolveSanityRouteMetadata"; @@ -17,9 +17,9 @@ export async function generateMetadata(): Promise { const { data } = await loadGlobalData(GLOBAL_QUERY); return { - title: config.siteName, + title: publicConfig.siteName, openGraph: { - title: config.siteName, + title: publicConfig.siteName, images: !data?.fallbackOGImage ? undefined : getOgImages(data.fallbackOGImage), diff --git a/apps/frontend/app/api/draft/route.ts b/apps/frontend/app/api/draft/route.ts index 08232fee9..ada849653 100644 --- a/apps/frontend/app/api/draft/route.ts +++ b/apps/frontend/app/api/draft/route.ts @@ -2,10 +2,10 @@ import { validatePreviewUrl } from "@sanity/preview-url-secret"; import { draftMode } from "next/headers"; import { redirect } from "next/navigation"; -import config from "@/config"; import { client } from "@/data/sanity/client"; +import { env } from "@/env"; -const clientWithToken = client.withConfig({ token: config.sanity.token }); +const clientWithToken = client.withConfig({ token: env.SANITY_API_TOKEN }); export async function GET(request: Request) { const { isValid, redirectTo = "/" } = await validatePreviewUrl( diff --git a/apps/frontend/app/manage/[[...index]]/page.tsx b/apps/frontend/app/manage/[[...index]]/page.tsx index 02eedddf3..a3fe7d539 100644 --- a/apps/frontend/app/manage/[[...index]]/page.tsx +++ b/apps/frontend/app/manage/[[...index]]/page.tsx @@ -1,11 +1,11 @@ -import config from "@/config"; +import publicConfig from "@/config"; import type { Metadata } from "next"; import Studio from "./Studio"; export const dynamic = "force-static"; export const metadata: Metadata = { - title: `${config.siteName} - CMS`, + title: `${publicConfig.siteName} - CMS`, }; export default function StudioPage() { diff --git a/apps/frontend/app/sitemap.ts b/apps/frontend/app/sitemap.ts index 65ae5bb67..a86b485e2 100644 --- a/apps/frontend/app/sitemap.ts +++ b/apps/frontend/app/sitemap.ts @@ -1,4 +1,3 @@ -import config from "@/config"; import type { MetadataRoute } from "next"; import { groq } from "next-sanity"; @@ -10,7 +9,7 @@ import type { AutomationAPIListResponse } from "@/types/object.types"; import { pathToAbsUrl } from "@/utils/urls"; const sanityClient = client.withConfig({ - token: config.sanity.token, + token: env.SANITY_API_TOKEN, perspective: "published", useCdn: false, stega: false, diff --git a/apps/frontend/config.ts b/apps/frontend/config.ts index cb8ceacb1..06d35bf42 100644 --- a/apps/frontend/config.ts +++ b/apps/frontend/config.ts @@ -1,18 +1,16 @@ import { env } from "./env"; -const config = { +const publicConfig = { sanity: { - projectId: env.NEXT_PUBLIC_SANITY_PROJECT_ID || "", - dataset: env.NEXT_PUBLIC_SANITY_DATASET || "", + projectId: env.NEXT_PUBLIC_SANITY_PROJECT_ID ?? "", + dataset: env.NEXT_PUBLIC_SANITY_DATASET ?? "", // Not exposed to the front-end, used solely by the server - token: env.SANITY_API_TOKEN || "", - apiVersion: env.NEXT_PUBLIC_SANITY_API_VERSION || "2023-06-21", - revalidateSecret: env.SANITY_REVALIDATE_SECRET || "", + apiVersion: env.NEXT_PUBLIC_SANITY_API_VERSION ?? "2023-06-21", studioUrl: "/manage", }, siteName: "Codemod", - siteDomain: env.NEXT_PUBLIC_SITE_DOMAIN || "", - baseUrl: env.NEXT_PUBLIC_BASE_URL || "", + siteDomain: env.NEXT_PUBLIC_SITE_DOMAIN ?? "", + baseUrl: env.NEXT_PUBLIC_BASE_URL ?? "", }; -export default config; +export default publicConfig; diff --git a/apps/frontend/data/sanity/client.ts b/apps/frontend/data/sanity/client.ts index c91c2dd1a..084fd2a8d 100644 --- a/apps/frontend/data/sanity/client.ts +++ b/apps/frontend/data/sanity/client.ts @@ -1,11 +1,11 @@ -import config from "@/config"; +import publicConfig from "@/config"; import { type ClientPerspective, createClient } from "@sanity/client/stega"; import createImageUrlBuilder from "@sanity/image-url"; const clientConfig = { - projectId: config.sanity.projectId, - dataset: config.sanity.dataset, - apiVersion: config.sanity.apiVersion, + projectId: publicConfig.sanity.projectId, + dataset: publicConfig.sanity.dataset, + apiVersion: publicConfig.sanity.apiVersion, useCdn: process.env.NODE_ENV === "production", perspective: "published" as ClientPerspective, }; @@ -13,7 +13,7 @@ const clientConfig = { export const client = createClient({ ...clientConfig, stega: { - studioUrl: config.sanity.studioUrl, + studioUrl: publicConfig.sanity.studioUrl, // logger: console, }, }); diff --git a/apps/frontend/data/sanity/generateStaticSlugs.ts b/apps/frontend/data/sanity/generateStaticSlugs.ts index 95f5717ae..723c0008a 100644 --- a/apps/frontend/data/sanity/generateStaticSlugs.ts +++ b/apps/frontend/data/sanity/generateStaticSlugs.ts @@ -2,14 +2,14 @@ import "server-only"; import { groq } from "next-sanity"; -import config from "@/config"; import { client } from "@/data/sanity/client"; +import { env } from "@/env"; // Used in `generateStaticParams` export function generateStaticPaths(types: string[]) { return client .withConfig({ - token: config.sanity.token, + token: env.SANITY_API_TOKEN, perspective: "published", useCdn: false, stega: false, diff --git a/apps/frontend/data/sanity/loadQuery.ts b/apps/frontend/data/sanity/loadQuery.ts index 18714a23c..933e9ae4a 100644 --- a/apps/frontend/data/sanity/loadQuery.ts +++ b/apps/frontend/data/sanity/loadQuery.ts @@ -3,7 +3,7 @@ import * as queryStore from "@sanity/react-loader"; import { draftMode } from "next/headers"; import type { QueryParams } from "sanity"; -import config from "@/config"; +import { env } from "@/env"; import type { BlogIndexPayload, NotFoundPayload, @@ -17,7 +17,6 @@ import type { } from "@/types/object.types"; import { AUTOMATION_PAGE_QUERY, - AUTOMATION_STORIES, NOT_FOUND_DOC_QUERY, ROUTE_QUERY, buildBlogIndexQuery, @@ -28,7 +27,7 @@ let serverClientSet = false; function initClient() { const serverClient = client.withConfig({ - token: config.sanity.token, + token: env.SANITY_API_TOKEN, stega: { enabled: draftMode().isEnabled, }, diff --git a/apps/frontend/data/sanity/redirects.ts b/apps/frontend/data/sanity/redirects.ts index f76359b9c..4e51a6de1 100644 --- a/apps/frontend/data/sanity/redirects.ts +++ b/apps/frontend/data/sanity/redirects.ts @@ -1,5 +1,5 @@ -import config from "@/config"; import { client } from "@/data/sanity/client"; +import { env } from "@/env"; import { groq } from "next-sanity"; export type RedirectSetting = { @@ -9,7 +9,7 @@ export type RedirectSetting = { }; const sanityClient = client.withConfig({ - token: config.sanity.token, + token: env.SANITY_API_TOKEN, perspective: "published", useCdn: true, stega: false, diff --git a/apps/frontend/data/sanity/resolveSanityRouteMetadata.tsx b/apps/frontend/data/sanity/resolveSanityRouteMetadata.tsx index a7d3f8f21..76f79d399 100644 --- a/apps/frontend/data/sanity/resolveSanityRouteMetadata.tsx +++ b/apps/frontend/data/sanity/resolveSanityRouteMetadata.tsx @@ -5,7 +5,7 @@ import { getFilterIcon, getFilterSection, } from "@/components/templates/Registry/helpers"; -import config from "@/config"; +import publicConfig from "@/config"; import { REGISTRY_FILTER_TYPES } from "@/constants"; import { env } from "@/env"; import { @@ -90,7 +90,7 @@ export async function resolveSanityRouteMetadata( const seo = data?.seo; if (!seo) { - return { title: config.siteName }; + return { title: publicConfig.siteName }; } const parent = await parentPromise; @@ -99,7 +99,7 @@ export async function resolveSanityRouteMetadata( seo?.title || capitalize((data as CodemodPagePayload)?.automationName) || data.title || - config.siteName; + publicConfig.siteName; const canonicalUrl = seo?.canonicalUrl || pathToAbsUrl(data.pathname); diff --git a/apps/frontend/sanity.config.ts b/apps/frontend/sanity.config.ts index fb322467e..d19c85f6e 100644 --- a/apps/frontend/sanity.config.ts +++ b/apps/frontend/sanity.config.ts @@ -10,13 +10,13 @@ import { muxInput } from "sanity-plugin-mux-input"; import { structureTool } from "sanity/structure"; import StudioLogo from "@/components/shared/StudioLogo"; -import config from "@/config"; +import publicConfig from "@/config"; export default defineConfig({ - basePath: config.sanity.studioUrl, - projectId: config.sanity.projectId, - dataset: config.sanity.dataset, - title: config.siteName, + basePath: publicConfig.sanity.studioUrl, + projectId: publicConfig.sanity.projectId, + dataset: publicConfig.sanity.dataset, + title: publicConfig.siteName, icon: StudioLogo, schema: { types: schemas, @@ -111,7 +111,7 @@ export default defineConfig({ }), media(), codeInput(), - visionTool({ defaultApiVersion: config.sanity.apiVersion }), + visionTool({ defaultApiVersion: publicConfig.sanity.apiVersion }), muxInput({ mp4_support: "standard" }), ], tools: (tools) => { diff --git a/apps/frontend/sanity/lib/utils.ts b/apps/frontend/sanity/lib/utils.ts index 6787628fe..43efd46f8 100644 --- a/apps/frontend/sanity/lib/utils.ts +++ b/apps/frontend/sanity/lib/utils.ts @@ -1,12 +1,10 @@ -import config from "@/config"; +import publicConfig from "@/config"; import createImageUrlBuilder from "@sanity/image-url"; import type { Image } from "sanity"; -const { dataset, projectId } = config.sanity; - export const imageBuilder = createImageUrlBuilder({ - projectId: projectId || "", - dataset: dataset || "", + projectId: publicConfig.sanity.projectId ?? "", + dataset: publicConfig.sanity.dataset ?? "", }); export const urlForImage = (source: Image | undefined) => { diff --git a/apps/frontend/utils/urls/index.ts b/apps/frontend/utils/urls/index.ts index f9e7785c2..34e799f64 100644 --- a/apps/frontend/utils/urls/index.ts +++ b/apps/frontend/utils/urls/index.ts @@ -1,4 +1,4 @@ -import config from "@/config"; +import publicConfig from "@/config"; import { formatPath } from "@tinloof/sanity-web"; export function isExternalUrl(url: string) { @@ -11,7 +11,7 @@ export function pathToAbsUrl(path?: string): string | undefined { if (typeof path !== "string") return; return ( - config.baseUrl + + publicConfig.baseUrl + // When creating absolute URLs, ensure the homepage doesn't have a trailing slash (path === "/" ? "" : formatPath(path)) );