@elding/cli 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dist/lib/apiUrl.js +2 -2
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# @elding/cli
|
|
2
|
+
|
|
3
|
+
Le CLI Elding. Lance ton app en local avec tes clés API injectées par un proxy :
|
|
4
|
+
la vraie clé n'entre jamais dans la mémoire de ton app.
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
npm install -g @elding/cli
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Démarrage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
elding login # connexion (ouvre le navigateur)
|
|
14
|
+
elding init # lie le dossier courant à un set de secrets
|
|
15
|
+
elding proxy -- npm run dev # lance ton app avec le proxy actif
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Dans ton code, utilise [`@elding/sdk`](https://www.npmjs.com/package/@elding/sdk)
|
|
19
|
+
(`configure()` pour les clés HTTP, `secret()` pour le reste).
|
|
20
|
+
|
|
21
|
+
## Commandes
|
|
22
|
+
|
|
23
|
+
| Commande | Rôle |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `elding login` / `logout` | Connexion / déconnexion (token dans le keychain de l'OS) |
|
|
26
|
+
| `elding init` | Lie le projet à une organisation + un set |
|
|
27
|
+
| `elding proxy -- <cmd>` | Lance `<cmd>` avec le proxy local (clé hors process) |
|
|
28
|
+
| `elding run -- <cmd>` | Injecte les secrets en variables d'env (si autorisé par l'org) |
|
|
29
|
+
| `elding keys` / `sets` | Liste les clés / les sets |
|
|
30
|
+
| `elding use` | Change le set actif |
|
|
31
|
+
| `elding status` / `whoami` | État courant / utilisateur connecté |
|
|
32
|
+
| `elding doctor` | Diagnostique la config locale |
|
|
33
|
+
| `elding open` | Ouvre le dashboard web |
|
|
34
|
+
|
|
35
|
+
## `proxy` vs `run`
|
|
36
|
+
|
|
37
|
+
- **`proxy`** (recommandé) : ton app reçoit un placeholder, le proxy injecte la
|
|
38
|
+
vraie clé dans la requête sortante et la verrouille à son domaine. La clé
|
|
39
|
+
n'entre jamais dans `process.env`. Réservé aux **clés API HTTP**.
|
|
40
|
+
- **`run`** : injecte les secrets en clair dans `process.env` (tous types, tous
|
|
41
|
+
langages). Désactivé par défaut côté organisation, à activer explicitement.
|
|
42
|
+
|
|
43
|
+
## Sécurité
|
|
44
|
+
|
|
45
|
+
- Token stocké dans le **keychain de l'OS**, jamais en clair sur disque.
|
|
46
|
+
- Le proxy bind `127.0.0.1` uniquement, anti-SSRF, valeurs de secrets jamais loggées.
|
|
47
|
+
- Chaque clé peut être verrouillée à un domaine (`allowedHost`) et coupée (`INACTIVE`).
|
package/dist/lib/apiUrl.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.resolveBaseUrl = resolveBaseUrl;
|
|
7
7
|
const net_1 = __importDefault(require("net"));
|
|
8
|
-
const DEFAULT_BASE_URL = "https://elding
|
|
8
|
+
const DEFAULT_BASE_URL = "https://elding.app";
|
|
9
9
|
function stripBrackets(hostname) {
|
|
10
10
|
return hostname.startsWith("[") && hostname.endsWith("]")
|
|
11
11
|
? hostname.slice(1, -1)
|
|
@@ -34,7 +34,7 @@ function resolveBaseUrl(raw = process.env.ELDING_API_URL) {
|
|
|
34
34
|
throw new Error("ELDING_API_URL ne doit pas contenir d'identifiants.");
|
|
35
35
|
}
|
|
36
36
|
if (url.pathname !== "/" || url.search || url.hash) {
|
|
37
|
-
throw new Error("ELDING_API_URL doit etre une origine seule, par exemple https://elding
|
|
37
|
+
throw new Error("ELDING_API_URL doit etre une origine seule, par exemple https://elding.app.");
|
|
38
38
|
}
|
|
39
39
|
if (url.protocol === "https:")
|
|
40
40
|
return url.origin;
|