Mibizum.init(opts)
Configura el cliente. Devuelve una instancia con el resto de metodos.
Firma
ts
function init(opts: InitOptions): MibizumClient;
interface InitOptions {
/** Slug del tenant. Lo recibes al crear cuenta en mibizum.io. */
tenant: string;
/** API key publica (`mb_pk_live_...` o `mb_pk_test_...`). NUNCA la privada. */
publicKey: string;
/** URL base del API. Default: produccion. Util para staging / on-prem. */
baseUrl?: string;
/** Data source por defecto (e.g. `productos`, `recetas`). Default: el del tenant. */
source?: string;
/** Debounce en ms entre keystrokes para autocompletar. Default: 0 (el backend ya debounce). */
debounceMs?: number;
/** Persistir sessionId en localStorage. Default: true. */
persistSession?: boolean;
/** Logger custom. Default: console. */
logger?: { debug: (...a: unknown[]) => void; warn: (...a: unknown[]) => void };
}
interface MibizumClient {
search: (q: string, opts?: SearchOptions) => Promise<SearchResult>;
trackClick: (itemId: string, opts?: TrackClickOptions) => Promise<void>;
trackConversion: (opts: TrackConversionOptions) => Promise<void>;
getSessionId: () => string;
on: (event: MibizumEvent, handler: Function) => () => void;
}Ejemplo
ts
import { Mibizum } from '@mibizum/sdk';
const mb = Mibizum.init({
tenant: 'tu-tienda',
publicKey: 'mb_pk_live_a1b2c3d4...',
baseUrl: 'https://api.mibizum.io/v1',
source: 'productos',
debounceMs: 150,
persistSession: true,
});
// El cliente esta listo. Usa `mb.search()`, `mb.trackClick()`, etc.Multiples tenants
Si tu app sirve a varios tenants (caso raro pero valido), crea instancias separadas:
ts
const mbA = Mibizum.init({ tenant: 'tienda-a', publicKey: 'mb_pk_..._a' });
const mbB = Mibizum.init({ tenant: 'tienda-b', publicKey: 'mb_pk_..._b' });Cada instancia tiene su propio sessionId y no comparten estado.
Singleton global
Si no quieres pasar la instancia por parametros, el SDK la expone tambien como window.__mibizum (en el navegador):
ts
Mibizum.init({ ... });
// ... en otro fichero:
window.__mibizum.search('hidratante');Solo recomendado para integraciones rapidas. En apps grandes, importa la instancia explicitamente.