Ir al contenido

Resumen del SDK

import { Aside } from ‘@astrojs/starlight/components’;

Los artifacts publicados vienen con un SDK de navegador. Sumás una sola etiqueta de script y tu página obtiene almacenamiento, subida de archivos, colaboración en tiempo real, email, Python y un agente de chat con IA — sin ningún backend que cablear.

<script src="https://shareout.site/sdk/shareout.js"></script>
<script>
const sdk = await ShareOut.create();
</script>
// Preferido para HTML publicado — espera el token de sesión del sandbox
const sdk = await ShareOut.create();
// Constructor sync — sirve para local/mock, pero hay race para datos en vivo en un iframe
const sdk = new ShareOut();

artifactId y baseUrl se autodetectan desde la URL. Los artifacts publicados corren en un iframe sandboxeado; create() espera el token de vida corta que el frame padre inyecta.

El viewer muestra un esqueleto de carga con la marca mientras arranca tu artifact — automáticamente, sin código. El SDK publica shareout:content-ready cuando tus llamadas de datos se estabilizan, y el viewer quita el esqueleto.

const sdk = await ShareOut.create();
renderEverything(await sdk.json.get('snapshot'));
ShareOut.ready(); // opcional: ocultá el esqueleto en el instante en que la página está pintada

ShareOut.ready() es opcional — sin él el SDK detecta el listo solo (red inactiva). Llamalo para un hand-off más preciso, sobre todo en páginas con muchos gráficos. Mantené el first paint rápido: leé datos iniciales desde sdk.json/sdk.table() (prefetch, cero round-trip) y dejá connection.query() en vivo fuera del load path. Ver Renderizado rápido.

Usá sdk.me() para leer el rol e identidad del viewer actual dentro de un artifact. Devuelve { role, isOwner, canEdit, email, name }, desde datos que la plataforma inyecta al servir. Viewers anónimos resuelven a role: 'viewer'.

const me = await sdk.me();
if (me.canEdit) showAdminPanel();
else showClientView(me.email);

Los permisos del servidor siempre se aplican sin importar lo que devuelva me() — usalo solo para ramificar la UI. La gestión de colaboradores es solo REST (no hay método SDK).

En file://, localhost o 127.0.0.1 el SDK cambia automáticamente a un mock de localStorage — sin red, sin auth. Forzalo con new ShareOut({ mock: true }), limpialo con sdk.clearMockData().

NivelAPIPara
1sdk.jsonEstado simple — preferencias, flags, valores cacheados
2sdk.table(name)Registros estructurados — tareas, leads, entradas
2bsdk.grid(name)Grilla editable (tabla o Sheets)
3sdk.realtime(id)Colaboración en vivo — documentos, pizarras
APIHace
sdk.blobsAlmacenamiento de archivos, servido directo desde R2
sdk.filesIncrustar Assets del workspace (dlv_*) entre artifacts
sdk.emailEmail de formulario de contacto al dueño del artifact
sdk.pythonEjecutá Python en el navegador (Pyodide)
sdk.agentAgente de chat para visitantes
sdk.crewAgente autónomo del servidor (solo owner)
sdk.me()Identidad y rol del viewer actual (para ramificar la UI)
ShareOut.ready()Señal al viewer para ocultar el esqueleto de carga
sdk.commentsComentarios en hilos
sdk.sourcesDrawer de procedencia de datos + badges “¿de dónde?” por elemento
sdk.sheets / sdk.shopifyIntegraciones

La mayoría de los stores requieren que declares sus keys/schemas en un bloque de manifest dentro del <head> de tu HTML:

<script type="shareout/manifest">
{ "version": "2.0", "sources": { "json": { "counter": { "default": 0 } } } }
</script>

Cada página de store más abajo muestra la forma de su manifest.

try {
await sdk.json.get('key');
} catch (e) {
if (e instanceof ShareOutError) console.log(e.code, e.status, e.message);
}