Pular para o conteúdo
📦 SDK JS

@superdb/supabase-compat e @superdb/auth-js

Dois SDKs: o drop-in compatível com Supabase e o cliente nativo com mais recursos brasileiros.

Instalação

terminal
# Drop-in do Supabase (recomendado pra migrar)
npm install @superdb/supabase-compat

# Cliente nativo (mais recursos BR)
npm install @superdb/auth-js

@superdb/supabase-compat

Drop-in parcial do @supabase/supabase-js. O módulo .auth funciona completamente — delegado ao @superdb/auth-js. Os módulos .from(), .storage, .rpc() e .channel() estão implementados como stubs que lançam not_implemented na versão atual.

⚠️

.from() retorna erro not_implemented. Para dados, use HTTP direto contra https://api.superdb.com.br/<tabela> (sem prefixo /rest/v1/), ou use @supabase/supabase-js com a URL base api.superdb.com.br.

createClient

lib/db.ts
import { createClient } from '@superdb/supabase-compat'

const db = createClient(
  process.env.NEXT_PUBLIC_SUPERDB_URL!,   // https://auth.superdb.com.br
  process.env.NEXT_PUBLIC_SUPERDB_ANON_KEY!
)

Auth (funciona)

auth.ts
// Signup
await db.auth.signUp({ email, password })

// Login email/senha
await db.auth.signInWithPassword({ email, password })

// OAuth
await db.auth.signInWithOAuth({ provider: 'google' })

// Logout
await db.auth.signOut()

// Usuário atual
const { data: { user } } = await db.auth.getUser()

// Escutar mudanças de auth
db.auth.onAuthStateChange((event, session) => {
  console.log(event, session)
})

Database (PostgREST) — use HTTP direto

O endpoint PostgREST é https://api.superdb.com.br — path raiz, sem /rest/v1/. Use fetch direto ou @supabase/supabase-js apontando para essa URL:

tasks.ts — fetch direto (recomendado)
const ANON_KEY = process.env.NEXT_PUBLIC_SUPERDB_ANON_KEY!
const DATA_URL = 'https://api.superdb.com.br'

// Select
const res = await fetch(`${DATA_URL}/tasks?done=eq.false`, {
  headers: { 'Authorization': `Bearer ${ANON_KEY}`, 'apikey': ANON_KEY }
})
const data = await res.json()

// Insert
await fetch(`${DATA_URL}/tasks`, {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${ANON_KEY}`, 'apikey': ANON_KEY,
             'Content-Type': 'application/json', 'Prefer': 'return=minimal' },
  body: JSON.stringify({ title: 'Comprar pão' })
})
tasks.ts — alternativa com @supabase/supabase-js
import { createClient } from '@supabase/supabase-js'

// URL base = api.superdb.com.br (sem /rest/v1/)
const db = createClient('https://api.superdb.com.br', ANON_KEY)

const { data } = await db.from('tasks').select('*').eq('done', false)
await db.from('tasks').insert({ title: 'Comprar pão' })
await db.from('tasks').update({ done: true }).eq('id', taskId)
await db.from('tasks').delete().eq('id', taskId)

Storage

O Storage é acessível via https://storage.superdb.com.br. Use a API HTTP diretamente ou o cliente do Supabase Storage:

upload.ts — HTTP direto
// Upload
const form = new FormData()
form.append('file', file)
await fetch('https://storage.superdb.com.br/object/avatares/user1.png', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${ANON_KEY}`, 'apikey': ANON_KEY },
  body: form
})

// URL pública
const publicUrl = `https://storage.superdb.com.br/object/public/avatares/user1.png`

Realtime

O Realtime é acessível via wss://realtime.superdb.com.br. Use a biblioteca Supabase Realtime diretamente:

realtime.ts
import { createClient } from '@supabase/supabase-js'

const rt = createClient('https://realtime.superdb.com.br', ANON_KEY)
const channel = rt.channel('tasks-changes')
  .on('postgres_changes',
    { event: 'INSERT', schema: 'proj_meuapp', table: 'tasks' },
    (payload) => console.log(payload.new)
  )
  .subscribe()

@superdb/auth-js

Cliente Auth nativo com features brasileiras: CPF, WhatsApp OTP, MFA TOTP, audit hash chain.

auth-br.ts
import { SuperDBAuth } from '@superdb/auth-js'

const auth = new SuperDBAuth({
  url: process.env.SUPERDB_AUTH_URL!,
  anonKey: process.env.SUPERDB_ANON_KEY!,
  project: 'meu-projeto'
})

// Signup com CPF
await auth.signUp({
  email: 'user@exemplo.com.br',
  password: 'senha-segura',
  data: { cpf: '123.456.789-09' }
})

// WhatsApp OTP
await auth.sendOTP({ phone: '+5511999998888', channel: 'whatsapp' })

// Verificar OTP
await auth.verifyOTP({ phone: '+5511999998888', token: '123456' })

// Enroll MFA TOTP
const { qrCode, secret } = await auth.mfa.enroll({ type: 'totp' })

Preview no Studio

Tudo que você faz pelo SDK aparece em tempo real no Studio. Veja seus dados, queries e logs em superdb.com.br/dash/<projeto>:

superdb.com.br/dash/meu-app/editor
v0.4.2
tasks.sql ×
1-- query gerada pelo SDK
2select * from proj_meuapp.tasks
3 where done = false;

TypeScript

Ambos os SDKs são totalmente tipados:

types.ts
import type { User, Session } from '@superdb/supabase-compat'
import type { SuperDBUser, MFAFactor } from '@superdb/auth-js'
💡

Dica: Use supabase-compat se você já tem código Supabase. Use auth-js se quer aproveitar features 100% BR (CPF, WhatsApp, audit).

Essa página ajudou?