physalis-sdk
v0.1.1
Published
SDK Physalis — charge tes secrets self-host en mémoire (Physalis.load), avec rafraîchissement rotation-aware.
Maintainers
Readme
physalis-sdk
SDK du gestionnaire de secrets Physalis (self-host). Charge tes secrets en mémoire, avec un mode rotation-aware : re-récupère un secret après rotation sans redéployer.
Zéro dépendance, isomorphe (Node ≥ 18 / navigateur — fetch natif).
Installation
npm install physalis-sdkUsage
One-shot (équivalent .env, en mémoire)
import { Physalis } from "physalis-sdk";
const secrets = await Physalis.load({
url: "https://vault.exemple.fr",
token: process.env.PHYSALIS_TOKEN!,
project: "mon-projet",
env: "production",
});
console.log(secrets.DATABASE_URL);Rotation-aware (le différenciateur)
import { Physalis } from "physalis-sdk";
const physalis = new Physalis({
url: "https://vault.exemple.fr",
token: process.env.PHYSALIS_TOKEN!,
project: "mon-projet",
env: "production",
});
// Charge + rafraîchit toutes les 60 s en tâche de fond.
await physalis.load({ refreshMs: 60_000, onError: (e) => console.warn(e) });
// Renvoie TOUJOURS la dernière valeur connue (mise à jour après rotation).
const dbUrl = physalis.get("DATABASE_URL");
// À l'arrêt :
physalis.stop();API
| Membre | Description |
|---|---|
| Physalis.load(opts) | (statique) récupère les secrets une fois → Record<string,string>. |
| new Physalis(opts) | crée un client (rotation-aware). |
| client.load({ refreshMs?, onError? }) | charge + (optionnel) rafraîchit en fond ; renvoie le snapshot initial. |
| client.get(key) | dernière valeur connue (undefined si absente). |
| client.all() | copie de tous les secrets en mémoire. |
| client.stop() | arrête le rafraîchissement. |
opts = { url, token, project, env }.
Notes
- Fail-soft au refresh : si un rafraîchissement échoue, les dernières
valeurs connues sont conservées (et
onErrorest appelé). - Le timer de refresh est
unref(): il n'empêche pas le process de se terminer. - Wrapper mince sur l'API REST
GET /api/secrets/{project}/{env}(Bearer) — contrat stable, aucun couplage à un endpoint interne.
Licence
MIT
