Usando o SDK

SDK TypeScript tipado para todas as operações da Storefront API, feito para desenvolvedores de templates e temas.

Para quem é o SDK? O SDK é usado dentro do código da storefront (templates/temas) para acessar produtos, carrinho, autenticação e pedidos. Ele já sabe qual loja acessar baseado no contexto da página.

Instalação

Terminal
npm install @acessocomercial/storefront-sdk

Uso Básico

Importe os módulos que precisa diretamente. O SDK detecta automaticamente o hostname da loja pelo contexto da página:

TypeScript
import { products, cart, auth, orders, store } from '@acessocomercial/storefront-sdk';

Módulos

Produtos

TypeScript
import { products } from '@acessocomercial/storefront-sdk';

// Listar produtos
const { items, total } = await products.list({ first: 10 });

// Buscar por slug (URL amigável)
const product = await products.getBySlug('camiseta-azul');

// Buscar por ID
const product = await products.getById('product-id');

// Listar categorias/seções
const sections = await products.getSections();

Opções de listagem

ParâmetroTipoDescrição
firstnumberQuantidade de produtos (padrão: 20)
skipnumberPaginação: quantos pular
searchstringBusca textual
sectionstring[]Filtrar por seções/categorias
sortstringOrdenação
menustringFiltrar por menu

Carrinho

TypeScript
import { cart } from '@acessocomercial/storefront-sdk';

// Consultar carrinho
const shoppingCart = await cart.get();

// Adicionar item
const updatedCart = await cart.addItem({ productId: 'abc', quantity: 2 });

// Remover item
const updatedCart = await cart.removeItem({ productId: 'abc' });

// Aplicar cupom
const updatedCart = await cart.applyCoupon({ code: 'DESCONTO10' });

// Calcular frete
const options = await cart.calculateShipping({ zipCode: '01001000' });

Autenticação

TypeScript
import { auth } from '@acessocomercial/storefront-sdk';

// Login
const { success, user } = await auth.login({
  email: 'cliente@email.com',
  password: 'senha123'
});

// Criar conta
const { success, user } = await auth.signup({
  name: 'João Silva',
  email: 'joao@email.com',
  password: 'senha123'
});

// Login com Google
const { success, user } = await auth.googleLogin({ token: 'google-oauth-token' });

// Usuário logado
const currentUser = await auth.me();

// Logout
await auth.logout();

// Solicitar reset de senha
await auth.resetPassword({ email: 'joao@email.com' });

Pedidos

TypeScript
import { orders } from '@acessocomercial/storefront-sdk';

// Listar pedidos do cliente
const { orders: orderList, total } = await orders.list();

// Buscar pedido por ID
const order = await orders.getById('order-id');

Loja

TypeScript
import { store } from '@acessocomercial/storefront-sdk';

// Dados da loja
const storeData = await store.get();

// Seções da homepage
const sections = await store.getSections();

// Menus de navegação
const menus = await store.getMenus();

// Categorias
const categories = await store.getCategories();

// Barra de anúncios
const adBar = await store.getAdBar();

Tipos Exportados

O SDK exporta todos os tipos para uso direto em TypeScript:

TypeScript
import type {
  Product,
  ProductListItem,
  ProductListResponse,
  ShoppingCart,
  CartItem,
  ShippingOption,
  Store,
  StoreMenu,
  User,
  Order,
  AuthResponse,
} from '@acessocomercial/storefront-sdk';

GraphQL Direto

Para queries customizadas, use a função graphqlFetch diretamente:

TypeScript
import { graphqlFetch } from '@acessocomercial/storefront-sdk';

interface MyResponse {
  client: { store: { name: string } };
}

const data = await graphqlFetch<MyResponse>(`
  query ($hostname: String!) {
    client(hostname: $hostname) {
      store { name }
    }
  }
`, { hostname: 'minhaloja' });