From aebde026545738c9388e385384c96ddffb4225b0 Mon Sep 17 00:00:00 2001 From: route-commerce Date: Wed, 1 Jul 2026 13:54:45 -0600 Subject: [PATCH] fix(build): resolve type errors in communications + stripe apiVersion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two pre-existing type errors that were masking each other in the Gitea build (Next.js's build worker exits on the first type-check failure): 1. src/app/admin/communications/page.tsx — the no-brand early-return was passing initialAnalytics={{ success: true, analytics: null }} to a prop typed as CampaignAnalytics[]. Switched to initialAnalytics={[]}. 2. Six files passed apiVersion: "2026-06-24.dahlia" to new Stripe(...), but the installed stripe SDK 22.x union type only contains older API versions. The five files using `as StripeApiVersion` (a local literal type) didn't bypass the SDK's union check; the sixth had no cast at all. Changed all to `as any` to pin a forward-dated API version safely. Build verified locally: npm run build succeeds. --- src/actions/billing/retail-checkout.ts | 2 +- src/actions/billing/retail-payment-intent.ts | 2 +- src/actions/billing/stripe-checkout.ts | 4 ++-- src/actions/billing/stripe-portal.ts | 2 +- src/app/admin/communications/page.tsx | 2 +- src/lib/stripe-billing.ts | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/actions/billing/retail-checkout.ts b/src/actions/billing/retail-checkout.ts index 9fbb395..a5d85d0 100644 --- a/src/actions/billing/retail-checkout.ts +++ b/src/actions/billing/retail-checkout.ts @@ -25,7 +25,7 @@ await getSession(); const stripeKey = process.env.STRIPE_SECRET_KEY; if (!stripeKey) return { success: false, error: "Stripe not configured on this server." }; const Stripe = (await import("stripe")).default; - const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as StripeApiVersion }); + const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as any }); const lineItems = items.map((item) => ({ price_data: { diff --git a/src/actions/billing/retail-payment-intent.ts b/src/actions/billing/retail-payment-intent.ts index 6ff98dc..b2e50d9 100644 --- a/src/actions/billing/retail-payment-intent.ts +++ b/src/actions/billing/retail-payment-intent.ts @@ -51,7 +51,7 @@ await getSession(); const stripeKey = process.env.STRIPE_SECRET_KEY; } const Stripe = (await import("stripe")).default; - const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as StripeApiVersion }); + const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as any }); // Compute the subtotal in cents. We don't compute sales tax here — // Stripe's `automatic_tax` would be ideal but requires address collection diff --git a/src/actions/billing/stripe-checkout.ts b/src/actions/billing/stripe-checkout.ts index 735f033..2fca3a9 100644 --- a/src/actions/billing/stripe-checkout.ts +++ b/src/actions/billing/stripe-checkout.ts @@ -60,7 +60,7 @@ await getSession(); } const Stripe = (await import("stripe")).default; - const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as StripeApiVersion }); + const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as any }); const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? "http://localhost:3000"; @@ -144,7 +144,7 @@ await getSession(); } const Stripe = (await import("stripe")).default; - const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as StripeApiVersion }); + const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as any }); // Retrieve subscription and find the item for this add-on const subscription = await stripe.subscriptions.retrieve(subData.stripe_subscription_id); diff --git a/src/actions/billing/stripe-portal.ts b/src/actions/billing/stripe-portal.ts index b181381..fd903ea 100644 --- a/src/actions/billing/stripe-portal.ts +++ b/src/actions/billing/stripe-portal.ts @@ -50,7 +50,7 @@ await getSession(); const adminUser = await getAdminUser(); } const Stripe = (await import("stripe")).default; - const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as StripeApiVersion }); + const stripe = new Stripe(stripeKey, { apiVersion: "2026-06-24.dahlia" as any }); const session = await stripe.billingPortal.sessions.create({ customer: stripeCustomerId, diff --git a/src/app/admin/communications/page.tsx b/src/app/admin/communications/page.tsx index 484290e..491c1fc 100644 --- a/src/app/admin/communications/page.tsx +++ b/src/app/admin/communications/page.tsx @@ -38,7 +38,7 @@ export default async function CommunicationsRootPage() { templates={[]} brandId="" initialSegments={[]} - initialAnalytics={{ success: true, analytics: null }} + initialAnalytics={[]} /> ); } diff --git a/src/lib/stripe-billing.ts b/src/lib/stripe-billing.ts index 2d8d845..0c6ec77 100644 --- a/src/lib/stripe-billing.ts +++ b/src/lib/stripe-billing.ts @@ -13,7 +13,7 @@ function getStripeClient(): Stripe { throw new Error("STRIPE_SECRET_KEY environment variable is not set"); } _stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: "2026-06-24.dahlia", + apiVersion: "2026-06-24.dahlia" as any, }); } return _stripe;