@obsidiane/meridiane 2.0.4 → 2.0.5

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.
Files changed (2) hide show
  1. package/README.md +45 -41
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @obsidiane/meridiane
2
2
 
3
- CLI pour générer une librairie Angular “bridge” (Symfony / API Platform / Mercure) et générer des modèles TypeScript depuis une spec OpenAPI.
3
+ CLI pour générer un bridge Angular (API Platform + Mercure) depuis une spec OpenAPI.
4
4
 
5
- Documentation détaillée (repo) : `docs/index.md`.
5
+ Documentation complète (repo) : `docs/guide-bridge.md`.
6
6
 
7
7
  ## Installation
8
8
 
@@ -16,54 +16,58 @@ Ou en global :
16
16
  npm i -g @obsidiane/meridiane
17
17
  ```
18
18
 
19
- ## Usage
19
+ ## Commandes
20
+
21
+ ### `meridiane generate <packageName>`
22
+
23
+ Génère uniquement les fichiers du bridge dans le workspace courant (pas de build, pas de `npm pack`).
20
24
 
21
25
  ```bash
22
- # Dev: génère le bridge (+ models par défaut)
23
- # (build standalone + install local dans node_modules)
24
- npx meridiane dev <packageName> --spec <url|file> [--formats <mimeTypes>]... [--include <substr>]... [--exclude <substr>]... [--no-models] [--debug]
26
+ npx meridiane generate @acme/backend-bridge --spec ./openapi.json
27
+ ```
25
28
 
26
- # Monorepo: génère uniquement les fichiers (pas de npm pack)
27
- npx meridiane generate <packageName> --spec <url|file> [--formats <mimeTypes>]... [--include <substr>]... [--exclude <substr>]... [--no-models] [--out <dir>] [--debug]
29
+ Sortie par défaut : `projects/<libName>/` (modifiable via `--out`).
28
30
 
29
- # CI/CD: génère + build Angular + npm pack (artefact prêt à publier)
30
- npx meridiane build <packageName> [--version <semver>] --spec <url|file> [--formats <mimeTypes>]... [--include <substr>]... [--exclude <substr>]... [--no-models] [--debug]
31
+ ### `meridiane dev [packageName]`
32
+
33
+ Build standalone + installation locale dans `node_modules`.
34
+
35
+ ```bash
36
+ npx meridiane dev @acme/backend-bridge --spec http://localhost:8000/api/docs.json
31
37
  ```
32
38
 
33
- Options :
34
- - `--debug` : active des logs supplémentaires (CLI).
35
- - `--version` : pour `build` et `generate` ; par défaut `0.0.0` si omis (déconseillé pour publier).
36
- - `--out` : uniquement pour `generate` ; répertoire de sortie (défaut `projects/<libName>`).
37
- - `--formats` : peut être répété ou fourni en liste séparée par virgules :
38
- - `--formats application/ld+json`
39
- - `--formats application/ld+json,application/json`
40
-
41
- Bonnes pratiques :
42
- - utiliser `--formats application/ld+json` (ou plusieurs formats) pour un mode “contract-driven” :
43
- - modèles générés uniquement s’ils sont utilisés par les endpoints (pour ces formats)
44
- - groups conservés
45
- - pas de modèles `*.jsonMergePatch` (PATCH = `Partial<...>`)
46
- - noms normalisés (pas de suffixe `.jsonld`)
47
- - utiliser `--no-models` si vous voulez uniquement le runtime (pas besoin de `--spec`)
48
- - le `README.md` du projet (si présent à la racine) est ajouté à la fin du README du bridge
49
- - laisser le registry à la CI (`.npmrc`, variables d’environnement, `npm publish --registry …`)
50
-
51
- Note (repo Meridiane) :
52
- - dans le repo Meridiane, `meridiane dev` peut être exécutée sans `packageName` et se préconfigure pour `apps/sandbox` (`@obsidiane/bridge-sandbox`).
53
-
54
- ## Exemple CI (générer + build + publish)
39
+ Sorties :
40
+ - `dist/<libName>/` + `dist/<libName>/*.tgz`
41
+ - `node_modules/<packageName>/`
42
+
43
+ ### `meridiane build <packageName>`
44
+
45
+ Build standalone + `npm pack` (artefact publiable).
55
46
 
56
47
  ```bash
57
- npx -y @obsidiane/meridiane@0.1.0 build @acme/backend-bridge --version 0.1.0 --spec https://staging.example/api/docs.json --formats application/ld+json
58
- npm publish dist/backend-bridge
48
+ npx meridiane build @acme/backend-bridge --version 0.1.0 --spec https://staging.example/api/docs.json
59
49
  ```
60
50
 
61
- Note : Meridiane installe le toolchain (`ng-packagr`, `@angular/*`, …) dans `dist/.meridiane-workspace` si nécessaire.
51
+ Sorties :
52
+ - `dist/<libName>/`
53
+ - `dist/<libName>/*.tgz`
54
+
55
+ ## Options
56
+
57
+ - `--spec <url|file>` : source OpenAPI (URL ou fichier JSON local) ; requis sauf `--no-models`.
58
+ - `--formats <mimeTypes>` : répétable ou liste `,` (ordre significatif). Active le mode contract-driven.
59
+ - `--include/--exclude <substr>` : filtrer des noms de schémas OpenAPI.
60
+ - `--no-models` : ne génère que le runtime (pas de models).
61
+ - `--version <semver>` : version écrite dans le `package.json` (`build` + `generate`).
62
+ - `--out <dir>` : répertoire de sortie pour `generate` (défaut `projects/<libName>`).
63
+ - `--debug` : logs détaillés.
64
+
65
+ ## Notes importantes
66
+
67
+ - `--formats` active un mode contract-driven : seuls les schemas réellement utilisés par les endpoints/paths sont générés.
68
+ - Les modèles `*.jsonMergePatch` ne sont jamais générés (`PATCH` est typé en `Partial<T>`).
69
+ - Meridiane **ne publie pas** : utilisez `npm publish` côté CI.
62
70
 
63
- ## Structure interne (mainteneurs)
71
+ ## Note (repo Meridiane)
64
72
 
65
- - `tools/app/` : orchestration des commandes (use-cases).
66
- - `tools/domain/` : logique pure (options, naming).
67
- - `tools/infra/` : I/O (spec, workspace, exec, logs) + génération.
68
- - `tools/generator/` : génération des modèles TypeScript.
69
- - `templates/_lib_template/` : runtime Angular du bridge.
73
+ Dans ce repo, `meridiane dev` peut être exécutée sans `packageName` et cible l’app sandbox (`apps/sandbox`).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@obsidiane/meridiane",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "description": "Générateur de librairie Angular et modèles TypeScript (OpenAPI) pour un bridge Symfony/API Platform + Mercure.",
5
5
  "repository": {
6
6
  "type": "git",