diff --git a/apps/server/src/app-version.ts b/apps/server/src/app-version.ts new file mode 100644 index 000000000..375c5bb8e --- /dev/null +++ b/apps/server/src/app-version.ts @@ -0,0 +1 @@ +export const appVersion = typeof __APP_VERSION__ === "undefined" ? "0.0.0" : __APP_VERSION__; diff --git a/apps/server/src/mcp/server.ts b/apps/server/src/mcp/server.ts index f026fd017..a8d0064bc 100644 --- a/apps/server/src/mcp/server.ts +++ b/apps/server/src/mcp/server.ts @@ -4,6 +4,7 @@ import { onError } from "@orpc/client"; import { createRouterClient } from "@orpc/server"; import router from "@reactive-resume/api/routers"; import { MCP_TOOL_NAME, registerPrompts, registerResources, registerTools } from "@reactive-resume/mcp"; +import { appVersion } from "../app-version"; import { getRequestLocale } from "../rpc/locale"; function createRequestClient(request: Request): RouterClient { @@ -25,7 +26,7 @@ export async function createMcpServer(request: Request) { const server = new McpServer( { name: "reactive-resume", - version: __APP_VERSION__, + version: appVersion, title: "Reactive Resume", websiteUrl: "https://rxresu.me", description: diff --git a/apps/server/src/openapi/handler.ts b/apps/server/src/openapi/handler.ts index fd51663ad..a1e031abd 100644 --- a/apps/server/src/openapi/handler.ts +++ b/apps/server/src/openapi/handler.ts @@ -8,6 +8,7 @@ import { downloadResumePdfProcedure } from "@reactive-resume/api/features/resume import router from "@reactive-resume/api/routers"; import { env } from "@reactive-resume/env/server"; import { resumeDataSchema } from "@reactive-resume/schema/resume/data"; +import { appVersion } from "../app-version"; import { mergeResponseHeaders } from "../http/headers"; import { getRequestLocale } from "../rpc/locale"; @@ -44,7 +45,7 @@ export async function handleOpenApi(request: Request) { const spec = await openAPIGenerator.generate(openAPIRouter, { info: { title: "Reactive Resume", - version: __APP_VERSION__, + version: appVersion, description: "Reactive Resume API", license: { name: "MIT", url: "https://github.com/amruthpillai/reactive-resume/blob/main/LICENSE" }, contact: { name: "Amruth Pillai", email: "hello@amruthpillai.com", url: "https://amruthpillai.com" }, diff --git a/apps/server/src/openapi/metadata.ts b/apps/server/src/openapi/metadata.ts index 2e4cfc72d..a100133bc 100644 --- a/apps/server/src/openapi/metadata.ts +++ b/apps/server/src/openapi/metadata.ts @@ -2,6 +2,7 @@ import { oauthProviderAuthServerMetadata, oauthProviderOpenIdConfigMetadata } fr import { auth } from "@reactive-resume/auth/config"; import { env } from "@reactive-resume/env/server"; import { buildMcpServerCard } from "@reactive-resume/mcp/server-card"; +import { appVersion } from "../app-version"; const oauthAuthorizationServerHandler = oauthProviderAuthServerMetadata(auth); const openIdConfigurationHandler = oauthProviderOpenIdConfigMetadata(auth); @@ -11,7 +12,7 @@ export function handleWellKnownFallback() { } export function handleMcpServerCard() { - return Response.json(buildMcpServerCard(__APP_VERSION__), { + return Response.json(buildMcpServerCard(appVersion), { headers: { "Content-Type": "application/json", "Cache-Control": "public, max-age=60, stale-while-revalidate=120", diff --git a/apps/server/src/static/schema.ts b/apps/server/src/static/schema.ts index 2c3113e24..cef0552a8 100644 --- a/apps/server/src/static/schema.ts +++ b/apps/server/src/static/schema.ts @@ -1,5 +1,6 @@ import z from "zod"; import { resumeDataSchema } from "@reactive-resume/schema/resume/data"; +import { appVersion } from "../app-version"; export function handleSchemaJson() { const resumeDataJSONSchema = z.toJSONSchema(resumeDataSchema); @@ -12,7 +13,7 @@ export function handleSchemaJson() { "Surrogate-Control": "max-age=86400", "X-Content-Type-Options": "nosniff", "X-Robots-Tag": "index, follow", - ETag: __APP_VERSION__, + ETag: appVersion, Vary: "Accept", }, });