I plugin sandboxed sono isolati per impostazione predefinita. Per fare qualsiasi cosa oltre alla lettura e scrittura del proprio KV e storage, un plugin deve dichiarare una capacità nel suo manifesto.
Dichiarare le capacità
{
"slug": "plugin-hello",
"capabilities": ["content:read", "network:request"],
"allowedHosts": ["api.example.com"]
}
Riferimento delle capacità
| Capacità | Concede accesso a |
|---|---|
content:read | ctx.content.get(), ctx.content.list() |
content:write | ctx.content.create(), ctx.content.update(), ctx.content.delete() |
taxonomies:read | ctx.taxonomies.getAll(), ctx.taxonomies.getTerms() |
media:read | ctx.media.get(), ctx.media.list() |
media:write | ctx.media.getUploadUrl(), ctx.media.upload(), ctx.media.delete() |
network:request | ctx.http.fetch() — limitato a allowedHosts |
network:request:unrestricted | ctx.http.fetch() senza restrizioni di host |
users:read | ctx.users.get(), ctx.users.getByEmail(), ctx.users.list() |
email:send | ctx.email.send() |
Cosa impone il sandbox
- Controllo delle capacità.
- Ambito di storage e KV.
- Isolamento di rete.
- Nessun binding host.
- Limiti delle risorse.
Cosa il sandbox non impone
- Comportamento all’interno di una capacità concessa.
- Fiducia dell’operatore su Node.js.
- Canali laterali.
Consenso delle capacità
Al momento dell’installazione, EmDash mostra un dialogo di consenso.
Validazione in fase di build
Vedi Bundling e pubblicazione.