Files
apps-registry/workloads/ecommerce/lib/headless/providers/medusa.ts
T
2026-07-19 19:37:41 -05:00

32 lines
1.1 KiB
TypeScript

import type { CatalogProvider, Product } from "@/lib/headless/types";
async function medusaFetch<T>(path: string): Promise<T> {
const baseUrl = process.env.MEDUSA_BACKEND_URL;
if (!baseUrl) throw new Error("Medusa no está configurado.");
const response = await fetch(`${baseUrl.replace(/\/$/, "")}${path}`, {
headers: process.env.MEDUSA_PUBLISHABLE_KEY
? { "x-publishable-api-key": process.env.MEDUSA_PUBLISHABLE_KEY }
: undefined,
next: { revalidate: 300 },
});
if (!response.ok) throw new Error(`Medusa respondió HTTP ${response.status}`);
return (await response.json()) as T;
}
function notImplemented(): never {
throw new Error("Completa el mapeo Medusa → Product en lib/headless/providers/medusa.ts.");
}
export const medusaCatalogProvider: CatalogProvider = {
async getProducts() {
await medusaFetch<unknown>("/store/products?limit=24");
return notImplemented();
},
async getProductBySlug(): Promise<Product | null> {
return notImplemented();
},
async searchProducts(): Promise<Product[]> {
return notImplemented();
},
};