@imolko/create-ultra-reporter 2.1.23-beta
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 +219 -0
- package/bin/classes/index.d.ts +0 -0
- package/bin/classes/index.js +2 -0
- package/bin/classes/index.js.map +1 -0
- package/bin/classes/logger.d.ts +42 -0
- package/bin/classes/logger.js +185 -0
- package/bin/classes/logger.js.map +1 -0
- package/bin/cli.d.ts +2 -0
- package/bin/cli.js +48 -0
- package/bin/cli.js.map +1 -0
- package/bin/commands/build.d.ts +2 -0
- package/bin/commands/build.js +151 -0
- package/bin/commands/build.js.map +1 -0
- package/bin/commands/create.d.ts +60 -0
- package/bin/commands/create.js +368 -0
- package/bin/commands/create.js.map +1 -0
- package/bin/commands/generate-documentation.d.ts +2 -0
- package/bin/commands/generate-documentation.js +249 -0
- package/bin/commands/generate-documentation.js.map +1 -0
- package/bin/commands/generate.d.ts +2 -0
- package/bin/commands/generate.js +79 -0
- package/bin/commands/generate.js.map +1 -0
- package/bin/commands/index.d.ts +6 -0
- package/bin/commands/index.js +16 -0
- package/bin/commands/index.js.map +1 -0
- package/bin/commands/init.d.ts +2 -0
- package/bin/commands/init.js +54 -0
- package/bin/commands/init.js.map +1 -0
- package/bin/commands/serve.d.ts +2 -0
- package/bin/commands/serve.js +124 -0
- package/bin/commands/serve.js.map +1 -0
- package/bin/commands/types.d.ts +65 -0
- package/bin/commands/types.js +9 -0
- package/bin/commands/types.js.map +1 -0
- package/bin/config/reader.d.ts +17 -0
- package/bin/config/reader.js +166 -0
- package/bin/config/reader.js.map +1 -0
- package/bin/config/types.d.ts +57 -0
- package/bin/config/types.js +21 -0
- package/bin/config/types.js.map +1 -0
- package/bin/data/documentation-folder.d.ts +1 -0
- package/bin/data/documentation-folder.js +5 -0
- package/bin/data/documentation-folder.js.map +1 -0
- package/bin/data/files-generated.d.ts +1 -0
- package/bin/data/files-generated.js +10 -0
- package/bin/data/files-generated.js.map +1 -0
- package/bin/data/index.d.ts +2 -0
- package/bin/data/index.js +8 -0
- package/bin/data/index.js.map +1 -0
- package/bin/pipeline/generate.d.ts +26 -0
- package/bin/pipeline/generate.js +269 -0
- package/bin/pipeline/generate.js.map +1 -0
- package/bin/reporters/data-loading.d.ts +121 -0
- package/bin/reporters/data-loading.js +398 -0
- package/bin/reporters/data-loading.js.map +1 -0
- package/bin/reporters/data-transformation.d.ts +101 -0
- package/bin/reporters/data-transformation.js +392 -0
- package/bin/reporters/data-transformation.js.map +1 -0
- package/bin/reporters/file-writing.d.ts +29 -0
- package/bin/reporters/file-writing.js +100 -0
- package/bin/reporters/file-writing.js.map +1 -0
- package/bin/reporters/generate-domain-documentation.d.ts +17 -0
- package/bin/reporters/generate-domain-documentation.js +161 -0
- package/bin/reporters/generate-domain-documentation.js.map +1 -0
- package/bin/reporters/generate-use-cases-documentation.d.ts +18 -0
- package/bin/reporters/generate-use-cases-documentation.js +123 -0
- package/bin/reporters/generate-use-cases-documentation.js.map +1 -0
- package/bin/reporters/rendering.d.ts +116 -0
- package/bin/reporters/rendering.js +385 -0
- package/bin/reporters/rendering.js.map +1 -0
- package/bin/reporters/templates/README.md +28 -0
- package/bin/reporters/templates/card.template.jsx +5 -0
- package/bin/reporters/templates/cards-container.template.jsx +5 -0
- package/bin/reporters/types.d.ts +190 -0
- package/bin/reporters/types.js +8 -0
- package/bin/reporters/types.js.map +1 -0
- package/bin/scaffold/assembler.d.ts +13 -0
- package/bin/scaffold/assembler.js +371 -0
- package/bin/scaffold/assembler.js.map +1 -0
- package/bin/scaffold/doc-assembler.d.ts +10 -0
- package/bin/scaffold/doc-assembler.js +113 -0
- package/bin/scaffold/doc-assembler.js.map +1 -0
- package/bin/scripts/add-import.d.ts +1 -0
- package/bin/scripts/add-import.js +26 -0
- package/bin/scripts/add-import.js.map +1 -0
- package/bin/scripts/converter.d.ts +6 -0
- package/bin/scripts/converter.js +120 -0
- package/bin/scripts/converter.js.map +1 -0
- package/bin/scripts/copy-files.d.ts +1 -0
- package/bin/scripts/copy-files.js +96 -0
- package/bin/scripts/copy-files.js.map +1 -0
- package/bin/scripts/create-folder.d.ts +1 -0
- package/bin/scripts/create-folder.js +23 -0
- package/bin/scripts/create-folder.js.map +1 -0
- package/bin/scripts/delete-paths.d.ts +1 -0
- package/bin/scripts/delete-paths.js +34 -0
- package/bin/scripts/delete-paths.js.map +1 -0
- package/bin/scripts/exists-file.d.ts +5 -0
- package/bin/scripts/exists-file.js +12 -0
- package/bin/scripts/exists-file.js.map +1 -0
- package/bin/scripts/generate-track-artifacts.d.ts +1 -0
- package/bin/scripts/generate-track-artifacts.js +59 -0
- package/bin/scripts/generate-track-artifacts.js.map +1 -0
- package/bin/scripts/get-artifacts.d.ts +1 -0
- package/bin/scripts/get-artifacts.js +38 -0
- package/bin/scripts/get-artifacts.js.map +1 -0
- package/bin/scripts/get-directories.d.ts +1 -0
- package/bin/scripts/get-directories.js +10 -0
- package/bin/scripts/get-directories.js.map +1 -0
- package/bin/scripts/get-file.d.ts +9 -0
- package/bin/scripts/get-file.js +38 -0
- package/bin/scripts/get-file.js.map +1 -0
- package/bin/scripts/labels.d.ts +35 -0
- package/bin/scripts/labels.js +108 -0
- package/bin/scripts/labels.js.map +1 -0
- package/bin/scripts/markdown.d.ts +34 -0
- package/bin/scripts/markdown.js +99 -0
- package/bin/scripts/markdown.js.map +1 -0
- package/bin/scripts/names.d.ts +18 -0
- package/bin/scripts/names.js +64 -0
- package/bin/scripts/names.js.map +1 -0
- package/bin/scripts/track-artifacts.d.ts +2 -0
- package/bin/scripts/track-artifacts.js +101 -0
- package/bin/scripts/track-artifacts.js.map +1 -0
- package/bin/utils/create-folder.d.ts +1 -0
- package/bin/utils/create-folder.js +23 -0
- package/bin/utils/create-folder.js.map +1 -0
- package/bin/utils/delete-markdown-files.d.ts +1 -0
- package/bin/utils/delete-markdown-files.js +46 -0
- package/bin/utils/delete-markdown-files.js.map +1 -0
- package/bin/utils/delete-paths.d.ts +5 -0
- package/bin/utils/delete-paths.js +26 -0
- package/bin/utils/delete-paths.js.map +1 -0
- package/bin/utils/exists-file.d.ts +6 -0
- package/bin/utils/exists-file.js +13 -0
- package/bin/utils/exists-file.js.map +1 -0
- package/bin/utils/exists-folder.d.ts +6 -0
- package/bin/utils/exists-folder.js +13 -0
- package/bin/utils/exists-folder.js.map +1 -0
- package/bin/utils/get-internal-resource-path.d.ts +1 -0
- package/bin/utils/get-internal-resource-path.js +43 -0
- package/bin/utils/get-internal-resource-path.js.map +1 -0
- package/bin/utils/get-json-file.d.ts +1 -0
- package/bin/utils/get-json-file.js +27 -0
- package/bin/utils/get-json-file.js.map +1 -0
- package/bin/utils/index.d.ts +6 -0
- package/bin/utils/index.js +16 -0
- package/bin/utils/index.js.map +1 -0
- package/bin/utils/run-command.d.ts +5 -0
- package/bin/utils/run-command.js +36 -0
- package/bin/utils/run-command.js.map +1 -0
- package/jsdoc.conf.json +30 -0
- package/package.json +75 -0
- package/templates/documentation/README.md +41 -0
- package/templates/documentation/docs/.gitkeep +0 -0
- package/templates/documentation/docusaurus.config.ts +127 -0
- package/templates/documentation/package-lock.json +19431 -0
- package/templates/documentation/package.json +49 -0
- package/templates/documentation/sidebars.ts +33 -0
- package/templates/documentation/src/components/ArtifactTable/FilterBar.tsx +185 -0
- package/templates/documentation/src/components/ArtifactTable/index.tsx +298 -0
- package/templates/documentation/src/components/ArtifactTable/styles.module.css +282 -0
- package/templates/documentation/src/components/ArtifactTable/types.ts +31 -0
- package/templates/documentation/src/components/HomepageFeatures/index.tsx +77 -0
- package/templates/documentation/src/components/HomepageFeatures/styles.module.css +11 -0
- package/templates/documentation/src/css/custom.css +30 -0
- package/templates/documentation/src/pages/index.module.css +23 -0
- package/templates/documentation/src/pages/index.tsx +43 -0
- package/templates/documentation/src/pages/markdown-page.md +7 -0
- package/templates/documentation/static/.nojekyll +0 -0
- package/templates/documentation/static/img/docusaurus-social-card.jpg +0 -0
- package/templates/documentation/static/img/docusaurus.png +0 -0
- package/templates/documentation/static/img/favicon.ico +0 -0
- package/templates/documentation/static/img/logo.svg +1 -0
- package/templates/documentation/static/img/logo_imolko_azul.png +0 -0
- package/templates/documentation/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/templates/documentation/static/img/undraw_docusaurus_react.svg +170 -0
- package/templates/documentation/static/img/undraw_docusaurus_tree.svg +40 -0
- package/templates/documentation/tsconfig.json +8 -0
- package/templates/documentation/ultra-reporter.config.json +55 -0
- package/templates/track-artifacts-script.ts +44 -0
- package/tsconfig.build-track.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
## Quick Start
|
|
2
|
+
|
|
3
|
+
```bash
|
|
4
|
+
# One-time setup (interactive wizard)
|
|
5
|
+
npm create @imolko/ultra-reporter
|
|
6
|
+
|
|
7
|
+
# Daily workflow
|
|
8
|
+
npm run docs:serve # Generate docs + start dev server at http://localhost:3000
|
|
9
|
+
npm run docs:gen # Generate docs only (CI/CD)
|
|
10
|
+
npm run docs:build # Production static build
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The wizard auto-detects your project structure and asks a few questions with smart defaults. After setup, everything lives in:
|
|
14
|
+
|
|
15
|
+
| Location | Purpose | Git |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `ultra-reporter.config.json` | Your configuration | ✅ Commit |
|
|
18
|
+
| `docs/` | Your manual markdown files | ✅ Commit |
|
|
19
|
+
| `.ultra-reporter/` | Generated docs + Docusaurus internals | ❌ Gitignored |
|
|
20
|
+
| `.ultra-reporter-overrides/` | Optional theme customizations | ✅ Commit |
|
|
21
|
+
|
|
22
|
+
## Command Reference
|
|
23
|
+
|
|
24
|
+
### `ultra-reporter create`
|
|
25
|
+
|
|
26
|
+
Interactive wizard to configure ultra-reporter. Can also be run non-interactively:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
ultra-reporter create \
|
|
30
|
+
--domain-name sentinel \
|
|
31
|
+
--domain-src ./domain/src \
|
|
32
|
+
--use-cases-src ./features/src \
|
|
33
|
+
--docs-path ./docs \
|
|
34
|
+
--repo-source-url https://github.com/myorg/myrepo
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### `ultra-reporter serve [--port 3000] [--full]`
|
|
38
|
+
|
|
39
|
+
Generates documentation, assembles the Docusaurus site, installs dependencies (first run), and starts the dev server. Watches source files for changes.
|
|
40
|
+
|
|
41
|
+
- `--port`: Port to serve on (default: 3000)
|
|
42
|
+
- `--full`: Force full regeneration including JSDoc extraction (slower)
|
|
43
|
+
|
|
44
|
+
### `ultra-reporter generate`
|
|
45
|
+
|
|
46
|
+
Generates documentation without starting a server. Useful for CI/CD pipelines.
|
|
47
|
+
|
|
48
|
+
### `ultra-reporter build [--output ./public]`
|
|
49
|
+
|
|
50
|
+
Generates documentation and produces a static production build. Output goes to `.ultra-reporter/build/` by default, configurable via `--output`.
|
|
51
|
+
|
|
52
|
+
## Configuration
|
|
53
|
+
|
|
54
|
+
`ultra-reporter.config.json` at your project root:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"repoSourceUrl": "https://github.com/myorg/myrepo",
|
|
59
|
+
"domain": {
|
|
60
|
+
"name": "sentinel",
|
|
61
|
+
"srcPath": "./domain/src",
|
|
62
|
+
"testResultsPath": "./domain/ctrf.json"
|
|
63
|
+
},
|
|
64
|
+
"useCases": {
|
|
65
|
+
"title": "Sentinel Use Cases",
|
|
66
|
+
"srcPath": "./features/src",
|
|
67
|
+
"testResultsPath": "./features/ctrf.json"
|
|
68
|
+
},
|
|
69
|
+
"docs": {
|
|
70
|
+
"path": "./docs"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Only `domain.name` and `domain.srcPath` are required. All other fields are optional.
|
|
76
|
+
|
|
77
|
+
### Test Integration
|
|
78
|
+
|
|
79
|
+
If you use Jest, the wizard can install and configure `jest-ctrf-json-reporter` automatically. This adds a `reporters` entry to your jest config:
|
|
80
|
+
|
|
81
|
+
```js
|
|
82
|
+
reporters: [
|
|
83
|
+
"default",
|
|
84
|
+
["jest-ctrf-json-reporter", { outputDir: ".", outputFile: "ctrf.json" }]
|
|
85
|
+
]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Run your tests before generating docs:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm run test
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Manual Docs
|
|
95
|
+
|
|
96
|
+
Place `.md` files in your configured `docs/` folder. They'll appear in the documentation site under the "Documentation" section.
|
|
97
|
+
|
|
98
|
+
### Customization
|
|
99
|
+
|
|
100
|
+
For advanced customization, create a `.ultra-reporter-overrides/` folder:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
.ultra-reporter-overrides/
|
|
104
|
+
├── docusaurus.config.override.ts # Merged with generated config
|
|
105
|
+
├── custom.css # Additional CSS
|
|
106
|
+
├── components/ # Custom React components
|
|
107
|
+
└── static/ # Extra static assets (logos, favicon)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Old Workflow (deprecated)
|
|
111
|
+
|
|
112
|
+
The previous workflow using `init` and `generate-documentation` commands is still available but deprecated. New projects should use the `create` → `serve`/`generate`/`build` workflow.
|
|
113
|
+
|
|
114
|
+
## Consideraciones
|
|
115
|
+
|
|
116
|
+
1. El generador escanea todos los archivos `.md` dentro de cada carpeta de artefacto y extrae el frontmatter de cada uno. El metadata se mergea combinando todos los `.md`, y sus cuerpos se concatenan en orden alfabético para formar la documentación del artefacto. Se recomienda usar `README.md` como nombre para el archivo de explicación, siguiendo el mismo patrón que GitHub y GitLab usan en sus exploradores online.
|
|
117
|
+
|
|
118
|
+
2. El archivo `definition.yaml` **ya no es requerido**. Si existe, se carga como metadata base, y el frontmatter de los `.md` lo sobrescribe. Para proyectos nuevos, toda la metadata puede declararse directamente como frontmatter en los archivos `.md`.
|
|
119
|
+
|
|
120
|
+
3. Este generador asume que la estructura de los archivos en la carpeta de cada artefacto hace uso del paquete `@imolko/ultra-ddd` y por tanto tiene una estructura como la siguiente:
|
|
121
|
+
|
|
122
|
+
```plaintext
|
|
123
|
+
domain
|
|
124
|
+
├── src
|
|
125
|
+
│ ├── Artifact1
|
|
126
|
+
│ │ ├── README.md
|
|
127
|
+
│ │ ├── conditions.ts
|
|
128
|
+
│ │ ├── definition.ts
|
|
129
|
+
│ │ ├── entity.spec.ts
|
|
130
|
+
│ │ ├── entity.ts
|
|
131
|
+
│ │ ├── index.ts
|
|
132
|
+
│ │ ├── payload.ts
|
|
133
|
+
│ │ ├── primitive.ts
|
|
134
|
+
│ │ ├── props.ts
|
|
135
|
+
│ └── Artifact2
|
|
136
|
+
│ │ ├── ...
|
|
137
|
+
└── README.md
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Los archivos `.md` contienen la documentación de los artefactos a través de su frontmatter y cuerpo. Es importante que estén presentes y bien documentados.
|
|
141
|
+
|
|
142
|
+
4. En la carpeta `documentation` se generan los archivos relacionados con la documentacion de los artefactos y una introducccion al contexto.
|
|
143
|
+
|
|
144
|
+
5. Dentro de `documentation` hay archivos que deben ser editados para ajustarlos a cada contexto, como:
|
|
145
|
+
|
|
146
|
+
- `/documentation/docusaurus.config.ts`
|
|
147
|
+
|
|
148
|
+
6. Dentro de `documentation` se pueden generar paginas y blogs para documentar de forma manual otros aspectos del contexto. Vea [Docusaurus](https://docusaurus.io/docs/)
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 🛠 Desarrollo del generador (para contributors)
|
|
153
|
+
|
|
154
|
+
Si vas a modificar las plantillas o scripts que generan la documentación, usa este flujo para iterar rápidamente.
|
|
155
|
+
|
|
156
|
+
### Arquitectura
|
|
157
|
+
|
|
158
|
+
El generador tiene **dos capas** que producen la documentación final:
|
|
159
|
+
|
|
160
|
+
| Capa | Qué controla | Dónde editar |
|
|
161
|
+
|---|---|---|
|
|
162
|
+
| **1. Contenido `.md`** | Layout de páginas de artefactos y use-cases, estructura de cards, estilos inline de los docs generados | `src/reporters/rendering.ts` (templates), `src/reporters/generate-*.ts` (orquestadores), `src/reporters/data-*.ts` (carga y transformación) |
|
|
163
|
+
| **2. Sitio Docusaurus** | CSS, branding, navbar, footer, landing page, sidebar | `templates/documentation/` |
|
|
164
|
+
|
|
165
|
+
#### Detalle de archivos — Capa 1
|
|
166
|
+
|
|
167
|
+
| Archivo | Función |
|
|
168
|
+
|---|---|
|
|
169
|
+
| `src/reporters/rendering.ts` | Templates hardcodeados de las páginas de artefacto y use-case, panels de test, tabla de propiedades, definiciones de métodos. **Acá se editan los estilos visuales.** |
|
|
170
|
+
| `src/reporters/generate-domain-documentation.ts` | Orquestador del pipeline domain: load → transform → render → write |
|
|
171
|
+
| `src/reporters/generate-use-cases-documentation.ts` | Orquestador del pipeline use-cases |
|
|
172
|
+
| `src/reporters/data-loading.ts` | Carga de artifacts, JSDoc, test results, frontmatter de `.md` (y `definition.yaml` legacy) |
|
|
173
|
+
| `src/reporters/data-transformation.ts` | Enriquecimiento: match JSDoc ↔ artifacts, merge de datos |
|
|
174
|
+
| `src/reporters/file-writing.ts` | Escritura de archivos `.md` generados |
|
|
175
|
+
| `src/reporters/types.ts` | Tipos compartidos entre todas las capas |
|
|
176
|
+
| `src/scripts/labels.ts` | Labels HTML para tags (type, model status, test status) |
|
|
177
|
+
| `src/scripts/markdown.ts` | Utilidades de formato markdown |
|
|
178
|
+
| `templates/track-artifacts-script.ts` | Template del script que descubre artefactos del dominio |
|
|
179
|
+
|
|
180
|
+
#### Detalle de archivos — Capa 2
|
|
181
|
+
|
|
182
|
+
| Archivo | Función |
|
|
183
|
+
|---|---|
|
|
184
|
+
| `templates/documentation/docusaurus.config.ts` | Config del sitio: título, navbar, footer, Mermaid |
|
|
185
|
+
| `templates/documentation/src/css/custom.css` | Variables de color, estilos globales |
|
|
186
|
+
| `templates/documentation/src/pages/index.tsx` | Landing page |
|
|
187
|
+
| `templates/documentation/src/pages/index.module.css` | Estilos de la landing page |
|
|
188
|
+
| `templates/documentation/sidebars.ts` | Configuración de sidebar |
|
|
189
|
+
| `templates/documentation/static/` | Assets estáticos (imágenes, favicon) |
|
|
190
|
+
|
|
191
|
+
### Scripts de desarrollo
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# Terminal A — Arranca el servidor (solo una vez)
|
|
195
|
+
./bootstrap_fixture.sh
|
|
196
|
+
# → Genera docs del fixture, copia scaffold Docusaurus, instala deps, inicia en http://localhost:3000
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Terminal B — Regenera los .md después de editar archivos de Capa 1
|
|
201
|
+
./regenerate_fixture_docs.sh
|
|
202
|
+
# → Docusaurus hace hot-reload automático en el navegador
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
| Editaste... | Comando |
|
|
206
|
+
|---|---|
|
|
207
|
+
| `src/reporters/rendering.ts` | `./regenerate_fixture_docs.sh` |
|
|
208
|
+
| `src/reporters/generate-*.ts` | `./regenerate_fixture_docs.sh` |
|
|
209
|
+
| `src/reporters/data-*.ts` | `./regenerate_fixture_docs.sh` |
|
|
210
|
+
| `src/reporters/file-writing.ts` | `./regenerate_fixture_docs.sh` |
|
|
211
|
+
| `src/scripts/labels.ts` | `./regenerate_fixture_docs.sh` |
|
|
212
|
+
| `src/scripts/markdown.ts` | `./regenerate_fixture_docs.sh` |
|
|
213
|
+
| `templates/documentation/src/**` | Nada (hot-reload automático) |
|
|
214
|
+
| `templates/documentation/docusaurus.config.ts` | Nada (hot-reload automático) |
|
|
215
|
+
| Archivos nuevos en `templates/documentation/` | Borrar `__fixtures__/minimal-project/documentation/` y re-ejecutar `./bootstrap_fixture.sh` |
|
|
216
|
+
|
|
217
|
+
### Documentación detallada
|
|
218
|
+
|
|
219
|
+
Para una explicación completa de la arquitectura y el flujo de trabajo, consultá: [`docs/developer-workflow.md`](docs/developer-workflow.md)
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
interface LoggerOptions {
|
|
2
|
+
enabled?: boolean;
|
|
3
|
+
level?: string;
|
|
4
|
+
context?: string;
|
|
5
|
+
}
|
|
6
|
+
interface LogMetadata {
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
context?: string;
|
|
9
|
+
}
|
|
10
|
+
declare class Logger {
|
|
11
|
+
private initialized;
|
|
12
|
+
private logger;
|
|
13
|
+
private enabled;
|
|
14
|
+
private level;
|
|
15
|
+
private globalContext;
|
|
16
|
+
constructor();
|
|
17
|
+
initialize(options?: LoggerOptions): Logger;
|
|
18
|
+
get isInitialized(): boolean;
|
|
19
|
+
private getColorizedLevel;
|
|
20
|
+
log(level: string, message: string, meta?: LogMetadata): void;
|
|
21
|
+
error(message: string, meta?: LogMetadata): void;
|
|
22
|
+
warn(message: string, meta?: LogMetadata): void;
|
|
23
|
+
info(message: string, meta?: LogMetadata): void;
|
|
24
|
+
debug(message: string, meta?: LogMetadata): void;
|
|
25
|
+
verbose(message: string, meta?: LogMetadata): void;
|
|
26
|
+
setEnabled(enabled: boolean): void;
|
|
27
|
+
setLevel(level: string): void;
|
|
28
|
+
createContextLogger(context: string): ContextLogger;
|
|
29
|
+
}
|
|
30
|
+
declare class ContextLogger {
|
|
31
|
+
private logger;
|
|
32
|
+
private context;
|
|
33
|
+
constructor(logger: Logger, context: string);
|
|
34
|
+
error(message: string, meta?: LogMetadata): void;
|
|
35
|
+
warn(message: string, meta?: LogMetadata): void;
|
|
36
|
+
info(message: string, meta?: LogMetadata): void;
|
|
37
|
+
debug(message: string, meta?: LogMetadata): void;
|
|
38
|
+
verbose(message: string, meta?: LogMetadata): void;
|
|
39
|
+
setContext(context: string): void;
|
|
40
|
+
}
|
|
41
|
+
declare const loggerInstance: Logger;
|
|
42
|
+
export default loggerInstance;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const winston_1 = __importStar(require("winston"));
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
// Configuración de colores para diferentes niveles de log
|
|
42
|
+
const colors = {
|
|
43
|
+
error: 'red',
|
|
44
|
+
warn: 'yellow',
|
|
45
|
+
info: 'green',
|
|
46
|
+
debug: 'blue',
|
|
47
|
+
verbose: 'magenta'
|
|
48
|
+
};
|
|
49
|
+
class Logger {
|
|
50
|
+
constructor() {
|
|
51
|
+
this.initialized = false;
|
|
52
|
+
this.logger = null;
|
|
53
|
+
this.enabled = true;
|
|
54
|
+
this.level = 'info';
|
|
55
|
+
this.globalContext = 'app';
|
|
56
|
+
// Constructor intencionalmente vacío para el singleton
|
|
57
|
+
}
|
|
58
|
+
// Método de inicialización que acepta opciones de configuración
|
|
59
|
+
initialize(options = {}) {
|
|
60
|
+
if (this.initialized) {
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
this.enabled = options.enabled !== false;
|
|
64
|
+
this.level = options.level || 'info';
|
|
65
|
+
this.globalContext = options.context || 'app';
|
|
66
|
+
// Crear el logger con Winston
|
|
67
|
+
this.logger = winston_1.default.createLogger({
|
|
68
|
+
level: this.level,
|
|
69
|
+
format: winston_1.format.combine(winston_1.format.timestamp({
|
|
70
|
+
format: 'YYYY-MM-DD HH:mm:ss'
|
|
71
|
+
}), winston_1.format.printf(info => {
|
|
72
|
+
const { timestamp, level, message, context, ...rest } = info;
|
|
73
|
+
const colorizedLevel = this.getColorizedLevel(level);
|
|
74
|
+
const contextStr = context ? chalk_1.default.cyan(`[${context}]`) : '';
|
|
75
|
+
// Extraer metadatos sin contexto para evitar duplicación
|
|
76
|
+
const { context: _, ...metadata } = rest;
|
|
77
|
+
const metadataStr = Object.keys(metadata).length ?
|
|
78
|
+
chalk_1.default.gray(` ${JSON.stringify(metadata)}`) : '';
|
|
79
|
+
return `${chalk_1.default.gray(timestamp)} ${colorizedLevel} ${contextStr}: ${message}${metadataStr}`;
|
|
80
|
+
})),
|
|
81
|
+
transports: [
|
|
82
|
+
new winston_1.default.transports.Console({
|
|
83
|
+
silent: !this.enabled
|
|
84
|
+
})
|
|
85
|
+
]
|
|
86
|
+
});
|
|
87
|
+
// Marcar como inicializado
|
|
88
|
+
this.initialized = true;
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
// Getter para verificar estado de inicialización
|
|
92
|
+
get isInitialized() {
|
|
93
|
+
return this.initialized;
|
|
94
|
+
}
|
|
95
|
+
// Colorear el nivel de log según su tipo
|
|
96
|
+
getColorizedLevel(level) {
|
|
97
|
+
const color = colors[level] || 'white';
|
|
98
|
+
return chalk_1.default[color].bold(`[${level.toUpperCase()}]`);
|
|
99
|
+
}
|
|
100
|
+
// Método para registrar mensajes - verifica inicialización primero
|
|
101
|
+
log(level, message, meta = {}) {
|
|
102
|
+
if (!this.initialized) {
|
|
103
|
+
console.warn('Logger no inicializado. Llamando a initialize() con valores predeterminados...');
|
|
104
|
+
this.initialize();
|
|
105
|
+
}
|
|
106
|
+
// Asegurar que context siempre exista en los metadatos
|
|
107
|
+
const context = meta.context || this.globalContext;
|
|
108
|
+
this.logger?.log(level, message, { ...meta, context });
|
|
109
|
+
}
|
|
110
|
+
// Métodos convenientes para cada nivel de log
|
|
111
|
+
error(message, meta = {}) {
|
|
112
|
+
this.log('error', message, meta);
|
|
113
|
+
}
|
|
114
|
+
warn(message, meta = {}) {
|
|
115
|
+
this.log('warn', message, meta);
|
|
116
|
+
}
|
|
117
|
+
info(message, meta = {}) {
|
|
118
|
+
this.log('info', message, meta);
|
|
119
|
+
}
|
|
120
|
+
debug(message, meta = {}) {
|
|
121
|
+
this.log('debug', message, meta);
|
|
122
|
+
}
|
|
123
|
+
verbose(message, meta = {}) {
|
|
124
|
+
this.log('verbose', message, meta);
|
|
125
|
+
}
|
|
126
|
+
// Habilitar o deshabilitar los logs
|
|
127
|
+
setEnabled(enabled) {
|
|
128
|
+
if (!this.initialized) {
|
|
129
|
+
this.initialize({ enabled });
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.enabled = enabled;
|
|
133
|
+
this.logger?.transports.forEach(transport => {
|
|
134
|
+
if (transport instanceof winston_1.default.transports.Console) {
|
|
135
|
+
transport.silent = !enabled;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
// Cambiar el nivel de log
|
|
140
|
+
setLevel(level) {
|
|
141
|
+
if (!this.initialized) {
|
|
142
|
+
this.initialize({ level });
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this.level = level;
|
|
146
|
+
if (this.logger) {
|
|
147
|
+
this.logger.level = level;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Crear una instancia de logger con contexto específico
|
|
151
|
+
createContextLogger(context) {
|
|
152
|
+
return new ContextLogger(this, context);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Clase para logger con contexto
|
|
156
|
+
class ContextLogger {
|
|
157
|
+
constructor(logger, context) {
|
|
158
|
+
this.logger = logger;
|
|
159
|
+
this.context = context;
|
|
160
|
+
}
|
|
161
|
+
error(message, meta = {}) {
|
|
162
|
+
this.logger.error(message, { ...meta, context: this.context });
|
|
163
|
+
}
|
|
164
|
+
warn(message, meta = {}) {
|
|
165
|
+
this.logger.warn(message, { ...meta, context: this.context });
|
|
166
|
+
}
|
|
167
|
+
info(message, meta = {}) {
|
|
168
|
+
this.logger.info(message, { ...meta, context: this.context });
|
|
169
|
+
}
|
|
170
|
+
debug(message, meta = {}) {
|
|
171
|
+
this.logger.debug(message, { ...meta, context: this.context });
|
|
172
|
+
}
|
|
173
|
+
verbose(message, meta = {}) {
|
|
174
|
+
this.logger.verbose(message, { ...meta, context: this.context });
|
|
175
|
+
}
|
|
176
|
+
// Método para cambiar el contexto
|
|
177
|
+
setContext(context) {
|
|
178
|
+
this.context = context;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Crear la instancia singleton
|
|
182
|
+
const loggerInstance = new Logger();
|
|
183
|
+
// Exportar la instancia singleton
|
|
184
|
+
exports.default = loggerInstance;
|
|
185
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/classes/logger.ts"],"names":[],"mappings":"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"}
|
package/bin/cli.d.ts
ADDED
package/bin/cli.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const logger_1 = __importDefault(require("./classes/logger"));
|
|
9
|
+
const commands_1 = require("./commands");
|
|
10
|
+
// Create a specific logger for the main CLI
|
|
11
|
+
const cliLogger = logger_1.default.createContextLogger('cli');
|
|
12
|
+
commander_1.program
|
|
13
|
+
.version("1.0.0")
|
|
14
|
+
.description("Ultra Reporter CLI")
|
|
15
|
+
.option('-d, --debug', 'enable debug logs')
|
|
16
|
+
.option('-s, --silent', 'disable all logs')
|
|
17
|
+
.option('-l, --log-level <level>', 'log level (error, warn, info, debug, verbose)', 'info')
|
|
18
|
+
.hook("preAction", async () => {
|
|
19
|
+
// Initialize logger based on global options before any command
|
|
20
|
+
const options = commander_1.program.opts();
|
|
21
|
+
logger_1.default.initialize({
|
|
22
|
+
enabled: !options.silent,
|
|
23
|
+
level: options.debug ? 'debug' : options.logLevel,
|
|
24
|
+
context: 'app' // Default global context
|
|
25
|
+
});
|
|
26
|
+
cliLogger.info('CLI initialized');
|
|
27
|
+
cliLogger.debug('CLI options', options);
|
|
28
|
+
})
|
|
29
|
+
.action(async (options) => {
|
|
30
|
+
});
|
|
31
|
+
// Custom help command
|
|
32
|
+
commander_1.program.on("--help", () => {
|
|
33
|
+
console.log("");
|
|
34
|
+
console.log("Examples:");
|
|
35
|
+
console.log("\t\t$ npx @imolko/create-ultra-reporter -d -p documentation"); // Enable debug logs
|
|
36
|
+
console.log("\t\t$ npx @imolko/create-ultra-reporter -s -p documentation"); // Disable all logs
|
|
37
|
+
console.log("\t\t$ npx @imolko/create-ultra-reporter -l debug -p documentation"); // Set log level
|
|
38
|
+
console.log("\t\t$ npx @imolko/create-ultra-reporter -c my-config.json");
|
|
39
|
+
});
|
|
40
|
+
// Register modular commands
|
|
41
|
+
(0, commands_1.registerCommandInit)(commander_1.program);
|
|
42
|
+
(0, commands_1.registerCommandGenerateDocumentation)(commander_1.program);
|
|
43
|
+
(0, commands_1.registerCommandCreate)(commander_1.program);
|
|
44
|
+
(0, commands_1.registerCommandServe)(commander_1.program);
|
|
45
|
+
(0, commands_1.registerCommandGenerate)(commander_1.program);
|
|
46
|
+
(0, commands_1.registerCommandBuild)(commander_1.program);
|
|
47
|
+
commander_1.program.parse(process.argv);
|
|
48
|
+
//# sourceMappingURL=cli.js.map
|
package/bin/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,yCAAmC;AACnC,8DAAqC;AACrC,yCAAkL;AAGlL,4CAA4C;AAC5C,MAAM,SAAS,GAAG,gBAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpD,mBAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC;KAC1C,MAAM,CAAC,yBAAyB,EAAE,+CAA+C,EAAE,MAAM,CAAC;KAC1F,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;IAC5B,+DAA+D;IAC/D,MAAM,OAAO,GAAG,mBAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,gBAAM,CAAC,UAAU,CAAC;QAChB,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAkB;QAC3D,OAAO,EAAE,KAAK,CAAC,yBAAyB;KACzC,CAAC,CAAC;IACH,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC;KACD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;AAE1B,CAAC,CAAC,CAAC;AAEL,sBAAsB;AACtB,mBAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC,oBAAoB;IAChG,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC,mBAAmB;IAC/F,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC,gBAAgB;IAClG,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH,4BAA4B;AAC5B,IAAA,8BAAmB,EAAC,mBAAO,CAAC,CAAA;AAC5B,IAAA,+CAAoC,EAAC,mBAAO,CAAC,CAAA;AAC7C,IAAA,gCAAqB,EAAC,mBAAO,CAAC,CAAA;AAC9B,IAAA,+BAAoB,EAAC,mBAAO,CAAC,CAAA;AAC7B,IAAA,kCAAuB,EAAC,mBAAO,CAAC,CAAA;AAChC,IAAA,+BAAoB,EAAC,mBAAO,CAAC,CAAA;AAE7B,mBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|