wlmaker 1.8.0 → 1.9.0
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 +87 -3
- package/dist/cli.mjs +1814 -187
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -60,8 +60,9 @@ Te va a recibir un menú interactivo con todas las opciones disponibles:
|
|
|
60
60
|
```
|
|
61
61
|
┌ wlmaker ┐
|
|
62
62
|
│ │
|
|
63
|
-
◇ What do you want to
|
|
64
|
-
│ ●
|
|
63
|
+
◇ What do you want to do?
|
|
64
|
+
│ ● Vault NEW — sync encrypted STG/PROD…
|
|
65
|
+
│ ○ App
|
|
65
66
|
│ ○ BLoC
|
|
66
67
|
│ ○ Widget
|
|
67
68
|
│ ○ Widgetbook Use-Case
|
|
@@ -69,7 +70,6 @@ Te va a recibir un menú interactivo con todas las opciones disponibles:
|
|
|
69
70
|
│ ○ Endpoint
|
|
70
71
|
│ ○ Package
|
|
71
72
|
│ ○ Env Var
|
|
72
|
-
│ ○ Personal Information
|
|
73
73
|
│ ○ Collaborative
|
|
74
74
|
│ ○ Docs
|
|
75
75
|
└ ┘
|
|
@@ -534,6 +534,89 @@ packages/personal_information/lib/countries/<code>/
|
|
|
534
534
|
|
|
535
535
|
---
|
|
536
536
|
|
|
537
|
+
### 4.14 Vault — Compartir Variables de Entorno Cifradas
|
|
538
|
+
|
|
539
|
+
> **Guía para el día a día:** [`docs/VAULT.md`](docs/VAULT.md) — onboarding, cuándo hacer apply/capture y FAQ (español neutro).
|
|
540
|
+
|
|
541
|
+
**Cuándo usarlo:** cuando necesitás distribuir valores reales de `development.env.json`
|
|
542
|
+
(STG) y `production.env.json` (PROD) entre el equipo sin mandarlos por Slack ni 1Password,
|
|
543
|
+
y sin perder el rastro de quién tiene acceso. Vault guarda cada valor cifrado dentro del
|
|
544
|
+
repo (`.wlmaker.vault.json`) y solo lo materializa en texto plano en tu máquina cuando vos
|
|
545
|
+
lo pedís explícitamente con Apply.
|
|
546
|
+
|
|
547
|
+
Vault **complementa** a `wlmaker env-var` (4.7), no lo reemplaza: primero declarás la
|
|
548
|
+
variable con `env-var` (eso la agrega a `example.env.json`, la plantilla committeada), y
|
|
549
|
+
recién después la capturás en el Vault con el valor real. `example.env.json` sigue siendo
|
|
550
|
+
el allowlist — Capture rechaza cualquier clave que no esté ahí, porque los nombres viajan
|
|
551
|
+
en texto plano dentro del ciphertext y en v1 todo el equipo aprobado puede descifrar STG y
|
|
552
|
+
PROD.
|
|
553
|
+
|
|
554
|
+
#### Identidad local (una sola vez por persona)
|
|
555
|
+
|
|
556
|
+
Cada persona tiene un par de llaves X25519 en `~/.wlmaker/identity`, cifrado en disco con
|
|
557
|
+
una passphrase que vos elegís (scrypt + AES-256-GCM). Nadie más puede usar tu identidad sin
|
|
558
|
+
esa passphrase, y no existe una "llave maestra": perder el archivo *y* la passphrase te deja
|
|
559
|
+
sin acceso hasta que alguien te vuelva a aprobar.
|
|
560
|
+
|
|
561
|
+
#### Modo interactivo
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
wlmaker
|
|
565
|
+
# → Vault (primera opción del menú)
|
|
566
|
+
# o: wlmaker vault
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
El submenú de Vault ofrece:
|
|
570
|
+
|
|
571
|
+
| Acción | Qué hace |
|
|
572
|
+
|--------|----------|
|
|
573
|
+
| Status | Apps capturadas, cantidad de recipients/pendientes, tu estado de acceso |
|
|
574
|
+
| Init | Crea el vault (una sola vez por monorepo) con vos como primer recipient |
|
|
575
|
+
| Capture | Sella los valores locales de un app en el vault (respeta el allowlist de `example.env.json`) |
|
|
576
|
+
| Apply | Descifra y escribe los valores del vault en `development.env.json` / `production.env.json` locales |
|
|
577
|
+
| Diff | Compara tus archivos locales contra el vault sin mostrar valores descifrados |
|
|
578
|
+
| Request Access | Pide unirte al keyring compartido (no necesita tener acceso previo) |
|
|
579
|
+
| Approve | Aprueba una solicitud pendiente y le da acceso a STG + PROD juntos |
|
|
580
|
+
| Who | Lista recipients y solicitudes pendientes (sin exponer llaves) |
|
|
581
|
+
| Identity | Muestra tu fingerprint y clave pública (para compartir al pedir acceso) |
|
|
582
|
+
| Revoke | Saca a un recipient y rota la data key compartida, invalidando su copia anterior |
|
|
583
|
+
|
|
584
|
+
#### Modo directo
|
|
585
|
+
|
|
586
|
+
```bash
|
|
587
|
+
wlmaker vault status
|
|
588
|
+
wlmaker vault init
|
|
589
|
+
wlmaker vault capture --app co_jumbo
|
|
590
|
+
wlmaker vault apply --app co_jumbo --env production
|
|
591
|
+
wlmaker vault diff --app co_jumbo
|
|
592
|
+
wlmaker vault who
|
|
593
|
+
wlmaker vault identity
|
|
594
|
+
wlmaker vault revoke
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
| Opción | Aplica a | Descripción |
|
|
598
|
+
|--------|----------|-------------|
|
|
599
|
+
| `--app <name>` | `capture`, `apply`, `diff` | App a targetear (si se omite, te lo pregunta) |
|
|
600
|
+
| `--env <development\|production>` | `capture`, `apply`, `diff` | Limita a un solo entorno (default: ambos) |
|
|
601
|
+
| `--force` | `capture` | Sella claves no declaradas en `example.env.json` sin la confirmación tipeada |
|
|
602
|
+
|
|
603
|
+
Si corrés `wlmaker vault` sin una acción, se abre el mismo submenú interactivo.
|
|
604
|
+
(`wlmaker app vault` sigue funcionando como alias.)
|
|
605
|
+
|
|
606
|
+
#### Qué se commitea y qué no
|
|
607
|
+
|
|
608
|
+
| Archivo | Se commitea | Contenido |
|
|
609
|
+
|---------|-------------|-----------|
|
|
610
|
+
| `.wlmaker.vault.json` (raíz del monorepo) | **Sí** | Ciphertext AES-256-GCM por valor, nombres de variable en texto plano, recipients y su llave pública |
|
|
611
|
+
| `apps/<app>/env/example.env.json` | **Sí** | Plantilla — nombres de variables permitidas, sin valores reales |
|
|
612
|
+
| `apps/<app>/env/development.env.json` / `production.env.json` | **No** (gitignored) | Valores reales en texto plano, escritos solo por Apply |
|
|
613
|
+
| `~/.wlmaker/identity` | **No** — vive fuera del repo | Tu llave privada X25519, cifrada con tu passphrase |
|
|
614
|
+
|
|
615
|
+
Antes de escribir un archivo, Apply verifica que el `.gitignore` de `apps/<app>/env/` lo
|
|
616
|
+
cubra (`*.json` + `!example.env.json`); si no puede probarlo, aborta sin escribir nada.
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
537
620
|
## 5. Herramientas de Documentación
|
|
538
621
|
|
|
539
622
|
### 5.1 Servir Documentación (Docusaurus)
|
|
@@ -708,6 +791,7 @@ El scaffold de Personal Information requiere al menos un AppType definido en
|
|
|
708
791
|
| `wlmaker endpoint` | — | — | Stack completa de endpoint BFF |
|
|
709
792
|
| `wlmaker package` | — | — | Crear paquete en el monorepo |
|
|
710
793
|
| `wlmaker env-var` | — | — | Agregar variable de entorno |
|
|
794
|
+
| `wlmaker vault` | `[status\|init\|capture\|apply\|diff\|request-access\|approve\|who\|identity\|revoke]` | `--app`, `--env`, `--force` | Vault: sincronizar env cifrados entre el equipo |
|
|
711
795
|
| `wlmaker app` | — | — | Crear y gestionar apps |
|
|
712
796
|
|
|
713
797
|
### Comandos colaborativos
|