Les plugins sandboxés sont isolés par défaut. Pour faire quoi que ce soit au-delà de la lecture et l’écriture de leur propre KV et stockage, un plugin doit déclarer une capacité dans son manifeste.
Déclarer des capacités
{
"slug": "plugin-hello",
"capabilities": ["content:read", "network:request"],
"allowedHosts": ["api.example.com"]
}
Référence des capacités
| Capacité | Accorde l’accès à |
|---|---|
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() — restreint à allowedHosts |
network:request:unrestricted | ctx.http.fetch() sans restriction d’hôte |
users:read | ctx.users.get(), ctx.users.getByEmail(), ctx.users.list() |
email:send | ctx.email.send() |
Ce que le sandbox impose
- Contrôle des capacités.
- Portée du stockage et KV.
- Isolation réseau.
- Pas de bindings hôte.
- Limites de ressources.
Ce que le sandbox n’impose pas
- Comportement au sein d’une capacité accordée.
- Confiance de l’opérateur sur Node.js.
- Canaux latéraux.
Consentement des capacités
Lors de l’installation, EmDash affiche un dialogue de consentement.
Validation au moment du build
Voir Bundling et publication.