KO
베타 번역

@core / kit-store

1.0.1 ▾
인증됨MIT
GitHub

Next.js 온라인 스토어 키트: 카탈로그, 장바구니, Stripe 결제, 주문, 배송, 쿠폰, 검증 리뷰, 계정

코드파일 27개컨텍스트약 1천토큰검사 통과

.genpmignore 적용 후 주입될 정확한 트리입니다. 고정 대상:

src/app/(store)/_lib/store.ts읽기 전용 · 6a45dae
// Utilidades de la tienda: rutas, formato de precios, cookies y usuario actual.
import '@/genpm';
import { cookies } from 'next/headers';
import { currentUser } from '@/app/(cms)/_lib/session';
import { format, type Money } from '@/lib/money';

export const productPath = (p: { slug: string }) => `/products/${p.slug}`;
export const price = (m: Money, locale = 'en') => format(m, locale);

/** Cabecera Cookie de la petición actual (para las funciones de @core/cart). */
export async function cookieHeader(): Promise<string> {
  return (await cookies())
    .getAll()
    .map((c) => `${c.name}=${c.value}`)
    .join('; ');
}

export async function currentUserId(): Promise<string | null> {
  return (await currentUser())?.id ?? null;
}

/** Aplica una cabecera Set-Cookie (de @core/cart) con la API de cookies de Next. */
export async function applySetCookie(header: string | null): Promise<void> {
  if (!header) return;
  const [pair, ...attrs] = header.split(/;\s*/);
  const eq = pair!.indexOf('=');
  const opts: { path?: string; httpOnly?: boolean; secure?: boolean; sameSite?: 'lax' | 'strict' | 'none'; maxAge?: number } = {};
  for (const a of attrs) {
    const [k, v] = a.split('=');
    const key = k!.toLowerCase();
    if (key === 'path') opts.path = v ?? '/';
    else if (key === 'httponly') opts.httpOnly = true;
    else if (key === 'secure') opts.secure = true;
    else if (key === 'samesite') opts.sameSite = (v ?? 'lax').toLowerCase() as 'lax';
    else if (key === 'max-age') opts.maxAge = Number(v);
  }
  (await cookies()).set(pair!.slice(0, eq), pair!.slice(eq + 1), opts);
}

export const one = (v: string | string[] | undefined) => (Array.isArray(v) ? v[0] : v);
export function pageParam(sp: Record<string, string | string[] | undefined>): number {
  const v = Number(one(sp.page));
  return Number.isInteger(v) && v > 0 && v < 10_000 ? v : 1;
}

@core/kit-store 신고

패키지를 신고하려면 GitHub로 로그인하세요.