theus-cli-linux-x64 1.2.1 → 1.3.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 +15 -0
- package/RELEASE.json +6 -6
- package/bin/theus +0 -0
- package/package.json +1 -1
- package/vendor/chrome-extension/README.md +142 -0
- package/vendor/chrome-extension/background.js +540 -0
- package/vendor/chrome-extension/cdp-core.js +400 -0
- package/vendor/chrome-extension/cdp-core.test.ts +321 -0
- package/vendor/chrome-extension/cdp.js +672 -0
- package/vendor/chrome-extension/icons/icon128.png +0 -0
- package/vendor/chrome-extension/icons/icon16.png +0 -0
- package/vendor/chrome-extension/icons/icon32.png +0 -0
- package/vendor/chrome-extension/icons/icon48.png +0 -0
- package/vendor/chrome-extension/manifest.json +36 -0
- package/vendor/chrome-extension/popup.html +78 -0
- package/vendor/chrome-extension/popup.js +47 -0
- package/vendor/chrome-extension/recorder.js +316 -0
- package/vendor/higiene-motor/PARCHES.md +244 -0
- package/vendor/higiene-motor/audit_dir.py +166 -0
- package/vendor/higiene-motor/audit_lib.py +333 -0
- package/vendor/higiene-motor/audit_website.py +635 -0
- package/vendor/higiene-motor/av_meta.py +498 -0
- package/vendor/higiene-motor/check_staged.py +71 -0
- package/vendor/higiene-motor/clean_ctrlregen.py +212 -0
- package/vendor/higiene-motor/clean_file.py +237 -0
- package/vendor/higiene-motor/clean_image.py +218 -0
- package/vendor/higiene-motor/clean_staged.py +143 -0
- package/vendor/higiene-motor/clean_text.py +108 -0
- package/vendor/higiene-motor/common.py +486 -0
- package/vendor/higiene-motor/container_meta.py +2522 -0
- package/vendor/higiene-motor/detect_gumbel.py +308 -0
- package/vendor/higiene-motor/detect_text_watermark.py +613 -0
- package/vendor/higiene-motor/format_dispatch.py +157 -0
- package/vendor/higiene-motor/hook_written_file.py +253 -0
- package/vendor/higiene-motor/image_meta.py +2171 -0
- package/vendor/higiene-motor/inspect_file.py +138 -0
- package/vendor/higiene-motor/inspect_image.py +72 -0
- package/vendor/higiene-motor/inspect_text.py +86 -0
- package/vendor/higiene-motor/markdiffusion_harness.py +533 -0
- package/vendor/higiene-motor/rewrite_text.py +737 -0
- package/vendor/higiene-motor/score_stylometry.py +460 -0
- package/vendor/higiene-motor/score_synthid.py +165 -0
- package/vendor/higiene-motor/server.py +1059 -0
- package/vendor/higiene-motor/synthid_score_server.py +176 -0
- package/vendor/higiene-motor/text_detectors.py +433 -0
- package/vendor/higiene-motor/text_unicode.py +730 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola2.json +0 -6
- package/vendor/theus-arsenal/.arsenal-nombres-ola3.json +0 -72
- package/vendor/theus-arsenal/.mailmap +0 -2
- package/vendor/theus-arsenal/.theus-plugin/marketplace.json +0 -25
- package/vendor/theus-arsenal/.theus-plugin/plugin.json +0 -20
- package/vendor/theus-arsenal/AUTHORS.md +0 -8
- package/vendor/theus-arsenal/CLEANROOM_REPLACEMENT_PLAN.md +0 -11
- package/vendor/theus-arsenal/LICENSE +0 -26
- package/vendor/theus-arsenal/PROVENANCE.md +0 -9
- package/vendor/theus-arsenal/README.md +0 -41
- package/vendor/theus-arsenal/THIRD_PARTY.md +0 -80
- package/vendor/theus-arsenal/agents/actualizador-docs.md +0 -123
- package/vendor/theus-arsenal/agents/analista-comentarios.md +0 -53
- package/vendor/theus-arsenal/agents/analista-conversaciones.md +0 -60
- package/vendor/theus-arsenal/agents/analista-tests-pr.md +0 -53
- package/vendor/theus-arsenal/agents/analista-tipos.md +0 -49
- package/vendor/theus-arsenal/agents/arquitecto-accesibilidad.md +0 -148
- package/vendor/theus-arsenal/agents/arquitecto-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/arquitecto-homelab.md +0 -90
- package/vendor/theus-arsenal/agents/arquitecto-redes.md +0 -116
- package/vendor/theus-arsenal/agents/arquitecto-sistemas.md +0 -219
- package/vendor/theus-arsenal/agents/bifurcador-opensource.md +0 -206
- package/vendor/theus-arsenal/agents/cazador-fallos-silenciosos.md +0 -58
- package/vendor/theus-arsenal/agents/consultor-documentacion.md +0 -76
- package/vendor/theus-arsenal/agents/diagnosticador-redes.md +0 -135
- package/vendor/theus-arsenal/agents/ejecutor-e2e.md +0 -96
- package/vendor/theus-arsenal/agents/empaquetador-opensource.md +0 -257
- package/vendor/theus-arsenal/agents/escaner-secretos.md +0 -196
- package/vendor/theus-arsenal/agents/especialista-seo.md +0 -70
- package/vendor/theus-arsenal/agents/estratega-marketing.md +0 -158
- package/vendor/theus-arsenal/agents/evaluador-agentes.md +0 -214
- package/vendor/theus-arsenal/agents/evaluador-harness.md +0 -217
- package/vendor/theus-arsenal/agents/explorador-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/extractor-specs.md +0 -214
- package/vendor/theus-arsenal/agents/generador-harness.md +0 -139
- package/vendor/theus-arsenal/agents/guia-tdd.md +0 -99
- package/vendor/theus-arsenal/agents/jefe-de-gabinete.md +0 -162
- package/vendor/theus-arsenal/agents/limpiador-refactors.md +0 -93
- package/vendor/theus-arsenal/agents/optimizador-rendimiento.md +0 -454
- package/vendor/theus-arsenal/agents/planificador-harness.md +0 -107
- package/vendor/theus-arsenal/agents/planificador.md +0 -221
- package/vendor/theus-arsenal/agents/resolutor-apps-harmonyos.md +0 -181
- package/vendor/theus-arsenal/agents/resolutor-builds-cpp.md +0 -98
- package/vendor/theus-arsenal/agents/resolutor-builds-dart.md +0 -209
- package/vendor/theus-arsenal/agents/resolutor-builds-django.md +0 -253
- package/vendor/theus-arsenal/agents/resolutor-builds-go.md +0 -102
- package/vendor/theus-arsenal/agents/resolutor-builds-java.md +0 -274
- package/vendor/theus-arsenal/agents/resolutor-builds-kotlin.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-pytorch.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-react.md +0 -214
- package/vendor/theus-arsenal/agents/resolutor-builds-rust.md +0 -156
- package/vendor/theus-arsenal/agents/resolutor-builds-swift.md +0 -169
- package/vendor/theus-arsenal/agents/resolutor-builds.md +0 -122
- package/vendor/theus-arsenal/agents/revisor-bd.md +0 -97
- package/vendor/theus-arsenal/agents/revisor-codigo.md +0 -291
- package/vendor/theus-arsenal/agents/revisor-config-red.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-cpp.md +0 -80
- package/vendor/theus-arsenal/agents/revisor-csharp.md +0 -109
- package/vendor/theus-arsenal/agents/revisor-django.md +0 -168
- package/vendor/theus-arsenal/agents/revisor-fastapi.md +0 -82
- package/vendor/theus-arsenal/agents/revisor-flutter.md +0 -251
- package/vendor/theus-arsenal/agents/revisor-go.md +0 -84
- package/vendor/theus-arsenal/agents/revisor-java.md +0 -192
- package/vendor/theus-arsenal/agents/revisor-kotlin.md +0 -171
- package/vendor/theus-arsenal/agents/revisor-ml.md +0 -159
- package/vendor/theus-arsenal/agents/revisor-php.md +0 -108
- package/vendor/theus-arsenal/agents/revisor-python.md +0 -106
- package/vendor/theus-arsenal/agents/revisor-react.md +0 -166
- package/vendor/theus-arsenal/agents/revisor-rust.md +0 -102
- package/vendor/theus-arsenal/agents/revisor-seguridad.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-software-clinico.md +0 -95
- package/vendor/theus-arsenal/agents/revisor-swift.md +0 -115
- package/vendor/theus-arsenal/agents/revisor-typescript.md +0 -123
- package/vendor/theus-arsenal/agents/revisor-vue.md +0 -205
- package/vendor/theus-arsenal/agents/simplificador-codigo.md +0 -55
- package/vendor/theus-arsenal/commands/actualizar-docs.md +0 -88
- package/vendor/theus-arsenal/commands/actualizar-mapas-codigo.md +0 -78
- package/vendor/theus-arsenal/commands/aprender-evaluar.md +0 -109
- package/vendor/theus-arsenal/commands/aprender.md +0 -74
- package/vendor/theus-arsenal/commands/arreglar-build.md +0 -66
- package/vendor/theus-arsenal/commands/bucle-multiperspectiva.md +0 -153
- package/vendor/theus-arsenal/commands/build-cpp.md +0 -173
- package/vendor/theus-arsenal/commands/build-flutter.md +0 -164
- package/vendor/theus-arsenal/commands/build-go.md +0 -183
- package/vendor/theus-arsenal/commands/build-gradle.md +0 -75
- package/vendor/theus-arsenal/commands/build-kotlin.md +0 -176
- package/vendor/theus-arsenal/commands/build-react.md +0 -187
- package/vendor/theus-arsenal/commands/build-rust.md +0 -187
- package/vendor/theus-arsenal/commands/campana-marketing.md +0 -125
- package/vendor/theus-arsenal/commands/checkpoint.md +0 -78
- package/vendor/theus-arsenal/commands/cobertura-tests.md +0 -73
- package/vendor/theus-arsenal/commands/configurar-gestor-paquetes.md +0 -86
- package/vendor/theus-arsenal/commands/consulta.md +0 -164
- package/vendor/theus-arsenal/commands/control-calidad.md +0 -50
- package/vendor/theus-arsenal/commands/crear-skill.md +0 -77
- package/vendor/theus-arsenal/commands/enrutar-modelo.md +0 -30
- package/vendor/theus-arsenal/commands/epica-desbloquear.md +0 -17
- package/vendor/theus-arsenal/commands/epica-descomponer.md +0 -22
- package/vendor/theus-arsenal/commands/epica-publicar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-reclamar.md +0 -25
- package/vendor/theus-arsenal/commands/epica-revisar.md +0 -22
- package/vendor/theus-arsenal/commands/epica-sincronizar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-validar.md +0 -21
- package/vendor/theus-arsenal/commands/evolucionar.md +0 -176
- package/vendor/theus-arsenal/commands/funcionalidad.md +0 -49
- package/vendor/theus-arsenal/commands/guardar-sesion.md +0 -278
- package/vendor/theus-arsenal/commands/harness-build.md +0 -111
- package/vendor/theus-arsenal/commands/harness-diseno.md +0 -46
- package/vendor/theus-arsenal/commands/informe-costos.md +0 -90
- package/vendor/theus-arsenal/commands/iniciar-bucle.md +0 -36
- package/vendor/theus-arsenal/commands/instintos-estado.md +0 -53
- package/vendor/theus-arsenal/commands/instintos-exportar.md +0 -69
- package/vendor/theus-arsenal/commands/instintos-importar.md +0 -120
- package/vendor/theus-arsenal/commands/lienzo-planes.md +0 -48
- package/vendor/theus-arsenal/commands/limpiar-refactor.md +0 -84
- package/vendor/theus-arsenal/commands/modo-seguro.md +0 -96
- package/vendor/theus-arsenal/commands/orq-agregar-funcionalidad.md +0 -36
- package/vendor/theus-arsenal/commands/orq-cambiar-funcionalidad.md +0 -38
- package/vendor/theus-arsenal/commands/orq-construir-mvp.md +0 -36
- package/vendor/theus-arsenal/commands/orq-corregir-defecto.md +0 -40
- package/vendor/theus-arsenal/commands/orq-refinar-codigo.md +0 -44
- package/vendor/theus-arsenal/commands/orq-revisar.md +0 -135
- package/vendor/theus-arsenal/commands/plan-prd.md +0 -160
- package/vendor/theus-arsenal/commands/plan.md +0 -198
- package/vendor/theus-arsenal/commands/podar.md +0 -31
- package/vendor/theus-arsenal/commands/pr.md +0 -181
- package/vendor/theus-arsenal/commands/promover.md +0 -41
- package/vendor/theus-arsenal/commands/proyectos.md +0 -33
- package/vendor/theus-arsenal/commands/prp-commit.md +0 -112
- package/vendor/theus-arsenal/commands/prp-implementar.md +0 -385
- package/vendor/theus-arsenal/commands/prp-planificar.md +0 -501
- package/vendor/theus-arsenal/commands/reanudar-sesion.md +0 -160
- package/vendor/theus-arsenal/commands/revisar-codigo.md +0 -289
- package/vendor/theus-arsenal/commands/revisar-cpp.md +0 -132
- package/vendor/theus-arsenal/commands/revisar-fastapi.md +0 -39
- package/vendor/theus-arsenal/commands/revisar-flutter.md +0 -115
- package/vendor/theus-arsenal/commands/revisar-go.md +0 -148
- package/vendor/theus-arsenal/commands/revisar-kotlin.md +0 -140
- package/vendor/theus-arsenal/commands/revisar-pr.md +0 -37
- package/vendor/theus-arsenal/commands/revisar-python.md +0 -297
- package/vendor/theus-arsenal/commands/revisar-react.md +0 -170
- package/vendor/theus-arsenal/commands/revisar-rust.md +0 -142
- package/vendor/theus-arsenal/commands/revisar-vue.md +0 -174
- package/vendor/theus-arsenal/commands/salud-skills.md +0 -52
- package/vendor/theus-arsenal/commands/sesiones.md +0 -345
- package/vendor/theus-arsenal/commands/test-cpp.md +0 -252
- package/vendor/theus-arsenal/commands/test-flutter.md +0 -143
- package/vendor/theus-arsenal/commands/test-go.md +0 -268
- package/vendor/theus-arsenal/commands/test-kotlin.md +0 -312
- package/vendor/theus-arsenal/commands/test-react.md +0 -265
- package/vendor/theus-arsenal/commands/test-rust.md +0 -309
- package/vendor/theus-arsenal/commands/vigilancia-canary.md +0 -43
- package/vendor/theus-arsenal/hooks/hooks.json +0 -274
- package/vendor/theus-arsenal/package.json +0 -6
- package/vendor/theus-arsenal/rules/angular/coding-style.md +0 -182
- package/vendor/theus-arsenal/rules/angular/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/angular/patterns.md +0 -249
- package/vendor/theus-arsenal/rules/angular/security.md +0 -87
- package/vendor/theus-arsenal/rules/angular/testing.md +0 -164
- package/vendor/theus-arsenal/rules/arkts/coding-style.md +0 -153
- package/vendor/theus-arsenal/rules/arkts/hooks.md +0 -80
- package/vendor/theus-arsenal/rules/arkts/patterns.md +0 -236
- package/vendor/theus-arsenal/rules/arkts/security.md +0 -141
- package/vendor/theus-arsenal/rules/arkts/testing.md +0 -126
- package/vendor/theus-arsenal/rules/common/agents.md +0 -49
- package/vendor/theus-arsenal/rules/common/code-review.md +0 -123
- package/vendor/theus-arsenal/rules/common/coding-style.md +0 -90
- package/vendor/theus-arsenal/rules/common/development-workflow.md +0 -44
- package/vendor/theus-arsenal/rules/common/git-workflow.md +0 -24
- package/vendor/theus-arsenal/rules/common/hooks.md +0 -32
- package/vendor/theus-arsenal/rules/common/patterns.md +0 -31
- package/vendor/theus-arsenal/rules/common/performance.md +0 -53
- package/vendor/theus-arsenal/rules/common/security.md +0 -29
- package/vendor/theus-arsenal/rules/common/testing.md +0 -57
- package/vendor/theus-arsenal/rules/cpp/coding-style.md +0 -44
- package/vendor/theus-arsenal/rules/cpp/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/cpp/patterns.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/security.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/testing.md +0 -44
- package/vendor/theus-arsenal/rules/csharp/coding-style.md +0 -72
- package/vendor/theus-arsenal/rules/csharp/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/csharp/patterns.md +0 -50
- package/vendor/theus-arsenal/rules/csharp/security.md +0 -58
- package/vendor/theus-arsenal/rules/csharp/testing.md +0 -50
- package/vendor/theus-arsenal/rules/dart/coding-style.md +0 -159
- package/vendor/theus-arsenal/rules/dart/hooks.md +0 -68
- package/vendor/theus-arsenal/rules/dart/patterns.md +0 -261
- package/vendor/theus-arsenal/rules/dart/security.md +0 -135
- package/vendor/theus-arsenal/rules/dart/testing.md +0 -215
- package/vendor/theus-arsenal/rules/fsharp/coding-style.md +0 -112
- package/vendor/theus-arsenal/rules/fsharp/hooks.md +0 -26
- package/vendor/theus-arsenal/rules/fsharp/patterns.md +0 -111
- package/vendor/theus-arsenal/rules/fsharp/security.md +0 -76
- package/vendor/theus-arsenal/rules/fsharp/testing.md +0 -62
- package/vendor/theus-arsenal/rules/golang/coding-style.md +0 -32
- package/vendor/theus-arsenal/rules/golang/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/golang/patterns.md +0 -45
- package/vendor/theus-arsenal/rules/golang/security.md +0 -34
- package/vendor/theus-arsenal/rules/golang/testing.md +0 -31
- package/vendor/theus-arsenal/rules/java/coding-style.md +0 -114
- package/vendor/theus-arsenal/rules/java/hooks.md +0 -18
- package/vendor/theus-arsenal/rules/java/patterns.md +0 -147
- package/vendor/theus-arsenal/rules/java/security.md +0 -101
- package/vendor/theus-arsenal/rules/java/testing.md +0 -133
- package/vendor/theus-arsenal/rules/kotlin/coding-style.md +0 -86
- package/vendor/theus-arsenal/rules/kotlin/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/kotlin/patterns.md +0 -146
- package/vendor/theus-arsenal/rules/kotlin/security.md +0 -82
- package/vendor/theus-arsenal/rules/kotlin/testing.md +0 -128
- package/vendor/theus-arsenal/rules/nuxt/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/nuxt/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/nuxt/patterns.md +0 -54
- package/vendor/theus-arsenal/rules/nuxt/security.md +0 -48
- package/vendor/theus-arsenal/rules/nuxt/testing.md +0 -49
- package/vendor/theus-arsenal/rules/php/coding-style.md +0 -40
- package/vendor/theus-arsenal/rules/php/hooks.md +0 -24
- package/vendor/theus-arsenal/rules/php/patterns.md +0 -33
- package/vendor/theus-arsenal/rules/php/security.md +0 -37
- package/vendor/theus-arsenal/rules/php/testing.md +0 -38
- package/vendor/theus-arsenal/rules/python/coding-style.md +0 -42
- package/vendor/theus-arsenal/rules/python/fastapi.md +0 -58
- package/vendor/theus-arsenal/rules/python/hooks.md +0 -19
- package/vendor/theus-arsenal/rules/python/patterns.md +0 -39
- package/vendor/theus-arsenal/rules/python/security.md +0 -30
- package/vendor/theus-arsenal/rules/python/testing.md +0 -38
- package/vendor/theus-arsenal/rules/react/coding-style.md +0 -109
- package/vendor/theus-arsenal/rules/react/hooks.md +0 -187
- package/vendor/theus-arsenal/rules/react/patterns.md +0 -194
- package/vendor/theus-arsenal/rules/react/security.md +0 -180
- package/vendor/theus-arsenal/rules/react/testing.md +0 -208
- package/vendor/theus-arsenal/rules/react-native/accessibility.md +0 -55
- package/vendor/theus-arsenal/rules/react-native/coding-style.md +0 -71
- package/vendor/theus-arsenal/rules/react-native/hooks.md +0 -28
- package/vendor/theus-arsenal/rules/react-native/patterns.md +0 -88
- package/vendor/theus-arsenal/rules/react-native/performance.md +0 -45
- package/vendor/theus-arsenal/rules/react-native/production-readiness.md +0 -51
- package/vendor/theus-arsenal/rules/react-native/security.md +0 -43
- package/vendor/theus-arsenal/rules/react-native/testing.md +0 -52
- package/vendor/theus-arsenal/rules/ruby/coding-style.md +0 -46
- package/vendor/theus-arsenal/rules/ruby/hooks.md +0 -37
- package/vendor/theus-arsenal/rules/ruby/patterns.md +0 -44
- package/vendor/theus-arsenal/rules/ruby/security.md +0 -51
- package/vendor/theus-arsenal/rules/ruby/testing.md +0 -51
- package/vendor/theus-arsenal/rules/rust/coding-style.md +0 -151
- package/vendor/theus-arsenal/rules/rust/hooks.md +0 -16
- package/vendor/theus-arsenal/rules/rust/patterns.md +0 -168
- package/vendor/theus-arsenal/rules/rust/security.md +0 -141
- package/vendor/theus-arsenal/rules/rust/testing.md +0 -154
- package/vendor/theus-arsenal/rules/swift/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/swift/hooks.md +0 -20
- package/vendor/theus-arsenal/rules/swift/patterns.md +0 -66
- package/vendor/theus-arsenal/rules/swift/security.md +0 -33
- package/vendor/theus-arsenal/rules/swift/testing.md +0 -45
- package/vendor/theus-arsenal/rules/typescript/coding-style.md +0 -199
- package/vendor/theus-arsenal/rules/typescript/hooks.md +0 -22
- package/vendor/theus-arsenal/rules/typescript/patterns.md +0 -52
- package/vendor/theus-arsenal/rules/typescript/security.md +0 -28
- package/vendor/theus-arsenal/rules/typescript/testing.md +0 -18
- package/vendor/theus-arsenal/rules/vue/coding-style.md +0 -54
- package/vendor/theus-arsenal/rules/vue/hooks.md +0 -45
- package/vendor/theus-arsenal/rules/vue/patterns.md +0 -56
- package/vendor/theus-arsenal/rules/vue/security.md +0 -46
- package/vendor/theus-arsenal/rules/vue/testing.md +0 -53
- package/vendor/theus-arsenal/rules/web/coding-style.md +0 -108
- package/vendor/theus-arsenal/rules/web/design-quality.md +0 -75
- package/vendor/theus-arsenal/rules/web/hooks.md +0 -141
- package/vendor/theus-arsenal/rules/web/patterns.md +0 -91
- package/vendor/theus-arsenal/rules/web/performance.md +0 -76
- package/vendor/theus-arsenal/rules/web/security.md +0 -69
- package/vendor/theus-arsenal/rules/web/testing.md +0 -67
- package/vendor/theus-arsenal/scripts/hooks/bash-hook-dispatcher.js +0 -192
- package/vendor/theus-arsenal/scripts/hooks/block-no-verify.js +0 -556
- package/vendor/theus-arsenal/scripts/hooks/check-console-log.js +0 -92
- package/vendor/theus-arsenal/scripts/hooks/check-hook-enabled.js +0 -16
- package/vendor/theus-arsenal/scripts/hooks/config-protection.js +0 -171
- package/vendor/theus-arsenal/scripts/hooks/design-quality-check.js +0 -132
- package/vendor/theus-arsenal/scripts/hooks/doc-file-warning.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/modo-seguro.js +0 -158
- package/vendor/theus-arsenal/scripts/hooks/notificacion-escritorio.js +0 -208
- package/vendor/theus-arsenal/scripts/hooks/plugin-hook-bootstrap.js +0 -280
- package/vendor/theus-arsenal/scripts/hooks/post-bash-command-log.js +0 -87
- package/vendor/theus-arsenal/scripts/hooks/post-bash-dispatcher.js +0 -24
- package/vendor/theus-arsenal/scripts/hooks/post-bash-pr-created.js +0 -60
- package/vendor/theus-arsenal/scripts/hooks/post-edit-accumulator.js +0 -94
- package/vendor/theus-arsenal/scripts/hooks/post-edit-console-warn.js +0 -54
- package/vendor/theus-arsenal/scripts/hooks/post-edit-format.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/post-edit-typecheck.js +0 -98
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-commit-quality.js +0 -447
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dev-server-block.js +0 -232
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dispatcher.js +0 -27
- package/vendor/theus-arsenal/scripts/hooks/pre-compact.js +0 -101
- package/vendor/theus-arsenal/scripts/hooks/pretooluse-visible-output.js +0 -49
- package/vendor/theus-arsenal/scripts/hooks/quality-gate.js +0 -168
- package/vendor/theus-arsenal/scripts/hooks/run-with-flags.js +0 -271
- package/vendor/theus-arsenal/scripts/hooks/salud-mcp.js +0 -749
- package/vendor/theus-arsenal/scripts/hooks/seguimiento-costos.js +0 -161
- package/vendor/theus-arsenal/scripts/hooks/session-end.js +0 -340
- package/vendor/theus-arsenal/scripts/hooks/session-start.js +0 -906
- package/vendor/theus-arsenal/scripts/hooks/stop-format-typecheck.js +0 -263
- package/vendor/theus-arsenal/scripts/hooks/suggest-compact.js +0 -286
- package/vendor/theus-arsenal/scripts/hooks/theus-context-monitor.js +0 -289
- package/vendor/theus-arsenal/scripts/hooks/verificacion-factual.js +0 -1278
- package/vendor/theus-arsenal/scripts/lib/agent-data-home.js +0 -96
- package/vendor/theus-arsenal/scripts/lib/cost-estimate.js +0 -66
- package/vendor/theus-arsenal/scripts/lib/hook-flags.js +0 -79
- package/vendor/theus-arsenal/scripts/lib/llm-summary.js +0 -185
- package/vendor/theus-arsenal/scripts/lib/loopback-guard.js +0 -54
- package/vendor/theus-arsenal/scripts/lib/observer-sessions.js +0 -237
- package/vendor/theus-arsenal/scripts/lib/package-manager.d.ts +0 -120
- package/vendor/theus-arsenal/scripts/lib/package-manager.js +0 -434
- package/vendor/theus-arsenal/scripts/lib/path-safety.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/markdown.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sdk.js +0 -238
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/server.js +0 -534
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sessions.js +0 -274
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/ui.js +0 -546
- package/vendor/theus-arsenal/scripts/lib/project-detect.js +0 -451
- package/vendor/theus-arsenal/scripts/lib/resolve-formatter.js +0 -193
- package/vendor/theus-arsenal/scripts/lib/resolve-theus-root.js +0 -101
- package/vendor/theus-arsenal/scripts/lib/session-aliases.d.ts +0 -138
- package/vendor/theus-arsenal/scripts/lib/session-aliases.js +0 -483
- package/vendor/theus-arsenal/scripts/lib/session-bridge.js +0 -155
- package/vendor/theus-arsenal/scripts/lib/session-manager.d.ts +0 -137
- package/vendor/theus-arsenal/scripts/lib/session-manager.js +0 -555
- package/vendor/theus-arsenal/scripts/lib/shell-split.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/shell-substitution.js +0 -501
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/dashboard.js +0 -414
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/health.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/index.js +0 -22
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/provenance.js +0 -200
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/tracker.js +0 -157
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/versioning.js +0 -246
- package/vendor/theus-arsenal/scripts/lib/transcript-context.js +0 -232
- package/vendor/theus-arsenal/scripts/lib/utils.d.ts +0 -205
- package/vendor/theus-arsenal/scripts/lib/utils.js +0 -658
- package/vendor/theus-arsenal/scripts/plan-canvas.js +0 -341
- package/vendor/theus-arsenal/scripts/setup-package-manager.js +0 -46
- package/vendor/theus-arsenal/scripts/skills-health.js +0 -143
- package/vendor/theus-arsenal/skills/a11y-frontend/SKILL.md +0 -444
- package/vendor/theus-arsenal/skills/accesibilidad/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/acelerador-throughput-datos/SKILL.md +0 -72
- package/vendor/theus-arsenal/skills/agente-scraper-datos/SKILL.md +0 -771
- package/vendor/theus-arsenal/skills/analisis-plataformas-competencia/SKILL.md +0 -137
- package/vendor/theus-arsenal/skills/api-x/SKILL.md +0 -233
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/SKILL.md +0 -335
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer-loop.sh +0 -374
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer.md +0 -188
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/session-guardian.sh +0 -153
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/start-observer.sh +0 -253
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/config.json +0 -8
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/hooks/observe.sh +0 -594
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/detect-project.sh +0 -325
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/instinct-cli.py +0 -1918
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/lib/arsenal-dir.sh +0 -23
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/test_parse_instinct.py +0 -1420
- package/vendor/theus-arsenal/skills/arquitectura-hexagonal/SKILL.md +0 -275
- package/vendor/theus-arsenal/skills/arquitectura-limpia-android/SKILL.md +0 -340
- package/vendor/theus-arsenal/skills/arquitectura-pipelines-recomendacion/SKILL.md +0 -112
- package/vendor/theus-arsenal/skills/atlas-datos-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/auditoria-arquitectura-agentes/SKILL.md +0 -257
- package/vendor/theus-arsenal/skills/auditoria-produccion/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/auditoria-rutas-clic/SKILL.md +0 -243
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/high-score-example.md +0 -89
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/low-score-example.md +0 -87
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/evaluation-criteria.md +0 -71
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/hook-integration.md +0 -90
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/scripts/evaluate.py +0 -409
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/templates/evaluation-report.md +0 -86
- package/vendor/theus-arsenal/skills/automatizacion-ssh-netmiko/SKILL.md +0 -176
- package/vendor/theus-arsenal/skills/base-datos-pubmed/SKILL.md +0 -174
- package/vendor/theus-arsenal/skills/base-datos-uspto/SKILL.md +0 -173
- package/vendor/theus-arsenal/skills/benchmark/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/bitacora-crecimiento/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/bucle-verificacion/SKILL.md +0 -125
- package/vendor/theus-arsenal/skills/buscar-primero/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/busqueda-exa/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/cache-por-hash/SKILL.md +0 -160
- package/vendor/theus-arsenal/skills/campana-marketing/SKILL.md +0 -118
- package/vendor/theus-arsenal/skills/capacidad-producto/SKILL.md +0 -138
- package/vendor/theus-arsenal/skills/cazador-vulnerabilidades/SKILL.md +0 -104
- package/vendor/theus-arsenal/skills/compactacion-estrategica/SKILL.md +0 -115
- package/vendor/theus-arsenal/skills/comparador-baskets-prediccion/SKILL.md +0 -69
- package/vendor/theus-arsenal/skills/compras-energia/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/concurrencia-swift-6-2/SKILL.md +0 -224
- package/vendor/theus-arsenal/skills/consejo/SKILL.md +0 -201
- package/vendor/theus-arsenal/skills/construccion-harness-agentes/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/constructor-conectores/SKILL.md +0 -119
- package/vendor/theus-arsenal/skills/constructor-equipos/SKILL.md +0 -169
- package/vendor/theus-arsenal/skills/consulta-documentacion/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/consultas-genomicas-gget/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/contacto-inversores/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/corrutinas-flows-kotlin/SKILL.md +0 -284
- package/vendor/theus-arsenal/skills/creacion-video-remotion/SKILL.md +0 -46
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/3d.md +0 -86
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/animations.md +0 -29
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/charts-bar-chart.tsx +0 -173
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-typewriter.tsx +0 -100
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-word-highlight.tsx +0 -108
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets.md +0 -78
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/audio.md +0 -172
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/calculate-metadata.md +0 -104
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/can-decode.md +0 -75
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/charts.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/compositions.md +0 -146
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/display-captions.md +0 -126
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/extract-frames.md +0 -229
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/fonts.md +0 -152
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-audio-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-dimensions.md +0 -68
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/gifs.md +0 -138
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/images.md +0 -130
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/import-srt-captions.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/lottie.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-dom-nodes.md +0 -34
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-text.md +0 -143
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/sequencing.md +0 -106
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/tailwind.md +0 -11
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/text-animations.md +0 -20
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/timing.md +0 -179
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transcribe-captions.md +0 -19
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transitions.md +0 -122
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/trimming.md +0 -52
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/videos.md +0 -171
- package/vendor/theus-arsenal/skills/cumplimiento-aduanero/SKILL.md +0 -270
- package/vendor/theus-arsenal/skills/cumplimiento-hipaa/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/datos-sensibles-salud/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/decimales-tokens-evm/SKILL.md +0 -128
- package/vendor/theus-arsenal/skills/decisiones-arquitectura/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/demos-ui/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/desarrollo-por-intencion/SKILL.md +0 -369
- package/vendor/theus-arsenal/skills/descubrimiento-marca/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/10_proposito-porque.md +0 -42
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/20_posicionamiento.md +0 -47
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/30_audiencia-nicho.md +0 -53
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/40_personalidad-arquetipo.md +0 -61
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/50_voz-tono.md +0 -62
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/60_narrativa-historia.md +0 -54
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/70_tension-fundador.md +0 -50
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/90_SINTESIS.md +0 -133
- package/vendor/theus-arsenal/skills/descubrimiento-plugins-laravel/SKILL.md +0 -230
- package/vendor/theus-arsenal/skills/destilado-reglas/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-rules.sh +0 -58
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-skills.sh +0 -129
- package/vendor/theus-arsenal/skills/diagnostico-bgp/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/direccion-estetica/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/direccion-estetica/references/taxonomia-generos.md +0 -89
- package/vendor/theus-arsenal/skills/diseno-api/SKILL.md +0 -522
- package/vendor/theus-arsenal/skills/diseno-liquid-glass/SKILL.md +0 -282
- package/vendor/theus-arsenal/skills/e2e-escritorio-windows/SKILL.md +0 -879
- package/vendor/theus-arsenal/skills/edicion-video/SKILL.md +0 -289
- package/vendor/theus-arsenal/skills/enfoque-producto/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/entornos-flox/SKILL.md +0 -493
- package/vendor/theus-arsenal/skills/estandares-codigo/SKILL.md +0 -548
- package/vendor/theus-arsenal/skills/estandares-cpp/SKILL.md +0 -727
- package/vendor/theus-arsenal/skills/estandares-java/SKILL.md +0 -389
- package/vendor/theus-arsenal/skills/estilo-legado/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/estructura-informes-competencia/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/evaluacion-academica/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/explorador-skills/SKILL.md +0 -129
- package/vendor/theus-arsenal/skills/flujo-git/SKILL.md +0 -714
- package/vendor/theus-arsenal/skills/flujo-ingenieria-ml/SKILL.md +0 -343
- package/vendor/theus-arsenal/skills/flujo-tdd/SKILL.md +0 -584
- package/vendor/theus-arsenal/skills/forja-personas/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/forja-personas/gacha.py +0 -224
- package/vendor/theus-arsenal/skills/forja-personas/gacha.sh +0 -5
- package/vendor/theus-arsenal/skills/forja-personas/references/avatar-style.md +0 -123
- package/vendor/theus-arsenal/skills/forja-personas/references/boundary-rules.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/error-handling.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/identity-tension.md +0 -48
- package/vendor/theus-arsenal/skills/forja-personas/references/naming-system.md +0 -39
- package/vendor/theus-arsenal/skills/forja-personas/references/output-template.md +0 -166
- package/vendor/theus-arsenal/skills/fundamentos-animacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/generate_icons.swift +0 -258
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/iconify_gen.sh +0 -235
- package/vendor/theus-arsenal/skills/gestion-excepciones-logisticas/SKILL.md +0 -208
- package/vendor/theus-arsenal/skills/gestion-transportistas/SKILL.md +0 -204
- package/vendor/theus-arsenal/skills/guia-adopcion-ml/SKILL.md +0 -64
- package/vendor/theus-arsenal/skills/harness-agente-autonomo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/harness-eval-clinico/SKILL.md +0 -212
- package/vendor/theus-arsenal/skills/harness-evaluacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/harness-generador-evaluador/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/homelab-diseno-red/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/homelab-dns-pihole/SKILL.md +0 -264
- package/vendor/theus-arsenal/skills/homelab-preparacion-red/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/homelab-segmentacion-vlan/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/homelab-vpn-wireguard/SKILL.md +0 -299
- package/vendor/theus-arsenal/skills/ingenieria-agentica/SKILL.md +0 -96
- package/vendor/theus-arsenal/skills/inspeccion-animaciones-blender/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/instaladores-python/SKILL.md +0 -820
- package/vendor/theus-arsenal/skills/integracion-jira/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/inteligencia-leads/SKILL.md +0 -312
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/agente-enriquecimiento.md +0 -87
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/mapeador-mutuos.md +0 -76
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/puntuador-senales.md +0 -60
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/redactor-outreach.md +0 -102
- package/vendor/theus-arsenal/skills/inteligencia-mercados-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/introspeccion-agente/SKILL.md +0 -150
- package/vendor/theus-arsenal/skills/inventario-skills/SKILL.md +0 -194
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/quick-diff.sh +0 -87
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/save-results.sh +0 -57
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/scan.sh +0 -170
- package/vendor/theus-arsenal/skills/investigacion-mercado/SKILL.md +0 -87
- package/vendor/theus-arsenal/skills/investigacion-oraculos-prediccion/SKILL.md +0 -59
- package/vendor/theus-arsenal/skills/investigacion-profunda/SKILL.md +0 -161
- package/vendor/theus-arsenal/skills/keccak256-nodejs/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/libro-decisiones-recursivo/SKILL.md +0 -82
- package/vendor/theus-arsenal/skills/lienzo-planes/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/limpieza-configuracion/SKILL.md +0 -116
- package/vendor/theus-arsenal/skills/logistica-inversa-devoluciones/SKILL.md +0 -241
- package/vendor/theus-arsenal/skills/manejo-errores/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/materiales-inversores/SKILL.md +0 -101
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/forget.mjs +0 -44
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/info.mjs +0 -24
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/init.mjs +0 -152
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/list.mjs +0 -40
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/migrate.mjs +0 -214
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/resume.mjs +0 -36
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/save.mjs +0 -210
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/shared.mjs +0 -402
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/hooks/session-start.mjs +0 -238
- package/vendor/theus-arsenal/skills/metodologia-benchmarks/SKILL.md +0 -131
- package/vendor/theus-arsenal/skills/migraciones-bd/SKILL.md +0 -430
- package/vendor/theus-arsenal/skills/modelos-fundacionales-en-dispositivo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/modo-seguro/SKILL.md +0 -86
- package/vendor/theus-arsenal/skills/motion-avanzado/SKILL.md +0 -592
- package/vendor/theus-arsenal/skills/motor-de-contenido/SKILL.md +0 -136
- package/vendor/theus-arsenal/skills/no-conformidades-calidad/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/onboarding-codigo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/operaciones-agentes-empresariales/SKILL.md +0 -51
- package/vendor/theus-arsenal/skills/operaciones-conocimiento/SKILL.md +0 -159
- package/vendor/theus-arsenal/skills/operaciones-correo/SKILL.md +0 -123
- package/vendor/theus-arsenal/skills/operaciones-facturacion/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/operaciones-flujo-proyectos/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/operaciones-github/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/operaciones-google-workspace/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/operaciones-investigacion/SKILL.md +0 -124
- package/vendor/theus-arsenal/skills/operaciones-mensajes/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/operaciones-terminal/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/optimizacion-benchmark/SKILL.md +0 -70
- package/vendor/theus-arsenal/skills/optimizacion-costos-llm/SKILL.md +0 -182
- package/vendor/theus-arsenal/skills/optimizador-conexiones/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/optimizador-paralelismo/SKILL.md +0 -75
- package/vendor/theus-arsenal/skills/optimizador-prompts/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/orq-agregar-funcionalidad/SKILL.md +0 -37
- package/vendor/theus-arsenal/skills/orq-cambiar-funcionalidad/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-construir-mvp/SKILL.md +0 -38
- package/vendor/theus-arsenal/skills/orq-corregir-defecto/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-pipeline/SKILL.md +0 -134
- package/vendor/theus-arsenal/skills/orq-refinar-codigo/SKILL.md +0 -49
- package/vendor/theus-arsenal/skills/orquestacion-equipos-agentes/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/pagos-agentes-x402/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/patrones-angular/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-animations.md +0 -160
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-aria.md +0 -410
- package/vendor/theus-arsenal/skills/patrones-angular/references/cli.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-harnesses.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-styling.md +0 -91
- package/vendor/theus-arsenal/skills/patrones-angular/references/components.md +0 -117
- package/vendor/theus-arsenal/skills/patrones-angular/references/creating-services.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-angular/references/data-resolvers.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/define-routes.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/defining-providers.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-angular/references/di-fundamentals.md +0 -120
- package/vendor/theus-arsenal/skills/patrones-angular/references/e2e-testing.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/effects.md +0 -83
- package/vendor/theus-arsenal/skills/patrones-angular/references/hierarchical-injectors.md +0 -43
- package/vendor/theus-arsenal/skills/patrones-angular/references/host-elements.md +0 -80
- package/vendor/theus-arsenal/skills/patrones-angular/references/injection-context.md +0 -63
- package/vendor/theus-arsenal/skills/patrones-angular/references/inputs.md +0 -101
- package/vendor/theus-arsenal/skills/patrones-angular/references/linked-signal.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/loading-strategies.md +0 -61
- package/vendor/theus-arsenal/skills/patrones-angular/references/mcp.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/navigate-to-routes.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/outputs.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/reactive-forms.md +0 -122
- package/vendor/theus-arsenal/skills/patrones-angular/references/rendering-strategies.md +0 -44
- package/vendor/theus-arsenal/skills/patrones-angular/references/resource.md +0 -77
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-animations.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-guards.md +0 -52
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-lifecycle.md +0 -45
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-testing.md +0 -87
- package/vendor/theus-arsenal/skills/patrones-angular/references/show-routes-with-outlets.md +0 -68
- package/vendor/theus-arsenal/skills/patrones-angular/references/signal-forms.md +0 -795
- package/vendor/theus-arsenal/skills/patrones-angular/references/signals-overview.md +0 -94
- package/vendor/theus-arsenal/skills/patrones-angular/references/tailwind-css.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/template-driven-forms.md +0 -114
- package/vendor/theus-arsenal/skills/patrones-angular/references/testing-fundamentals.md +0 -65
- package/vendor/theus-arsenal/skills/patrones-animacion/SKILL.md +0 -432
- package/vendor/theus-arsenal/skills/patrones-backend/SKILL.md +0 -560
- package/vendor/theus-arsenal/skills/patrones-cdss-clinico/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/patrones-cisco-ios/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/patrones-clickhouse/SKILL.md +0 -443
- package/vendor/theus-arsenal/skills/patrones-compose-multiplatform/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/patrones-dart-flutter/SKILL.md +0 -566
- package/vendor/theus-arsenal/skills/patrones-despliegue/SKILL.md +0 -426
- package/vendor/theus-arsenal/skills/patrones-django/SKILL.md +0 -739
- package/vendor/theus-arsenal/skills/patrones-django-celery/SKILL.md +0 -456
- package/vendor/theus-arsenal/skills/patrones-docker/SKILL.md +0 -363
- package/vendor/theus-arsenal/skills/patrones-dotnet/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/patrones-emr-clinico/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/patrones-fastapi/SKILL.md +0 -513
- package/vendor/theus-arsenal/skills/patrones-frontend/SKILL.md +0 -655
- package/vendor/theus-arsenal/skills/patrones-go/SKILL.md +0 -674
- package/vendor/theus-arsenal/skills/patrones-jpa/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/patrones-kotlin/SKILL.md +0 -717
- package/vendor/theus-arsenal/skills/patrones-kotlin-exposed/SKILL.md +0 -724
- package/vendor/theus-arsenal/skills/patrones-kotlin-ktor/SKILL.md +0 -694
- package/vendor/theus-arsenal/skills/patrones-kubernetes/SKILL.md +0 -754
- package/vendor/theus-arsenal/skills/patrones-laravel/SKILL.md +0 -414
- package/vendor/theus-arsenal/skills/patrones-mcp/SKILL.md +0 -66
- package/vendor/theus-arsenal/skills/patrones-mysql/SKILL.md +0 -420
- package/vendor/theus-arsenal/skills/patrones-nestjs/SKILL.md +0 -229
- package/vendor/theus-arsenal/skills/patrones-nextjs/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-nuxt4/SKILL.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-perl/SKILL.md +0 -508
- package/vendor/theus-arsenal/skills/patrones-postgres/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/patrones-prisma/SKILL.md +0 -399
- package/vendor/theus-arsenal/skills/patrones-python/SKILL.md +0 -750
- package/vendor/theus-arsenal/skills/patrones-pytorch/SKILL.md +0 -400
- package/vendor/theus-arsenal/skills/patrones-quarkus/SKILL.md +0 -729
- package/vendor/theus-arsenal/skills/patrones-react/SKILL.md +0 -339
- package/vendor/theus-arsenal/skills/patrones-react-native/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/patrones-redis/SKILL.md +0 -401
- package/vendor/theus-arsenal/skills/patrones-rust/SKILL.md +0 -504
- package/vendor/theus-arsenal/skills/patrones-springboot/SKILL.md +0 -314
- package/vendor/theus-arsenal/skills/patrones-swiftui/SKILL.md +0 -261
- package/vendor/theus-arsenal/skills/patrones-tinystruct/SKILL.md +0 -281
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/architecture.md +0 -90
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/data-handling.md +0 -60
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/database.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/routing.md +0 -64
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/system-usage.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/testing.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-vite/SKILL.md +0 -449
- package/vendor/theus-arsenal/skills/patrones-vue/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/persistencia-actores-swift/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/pipeline-opensource/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/planificacion-demanda-inventario/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/planificador-trades-prediccion/SKILL.md +0 -60
- package/vendor/theus-arsenal/skills/plano-tecnico/SKILL.md +0 -102
- package/vendor/theus-arsenal/skills/presentaciones-html/SKILL.md +0 -189
- package/vendor/theus-arsenal/skills/presentaciones-html/STYLE_PRESETS.md +0 -330
- package/vendor/theus-arsenal/skills/presentaciones-html/animation-patterns.md +0 -122
- package/vendor/theus-arsenal/skills/presentaciones-html/html-template.md +0 -419
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/export-pdf.sh +0 -418
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/extract-pptx.py +0 -96
- package/vendor/theus-arsenal/skills/presentaciones-html/viewport-base.css +0 -153
- package/vendor/theus-arsenal/skills/presupuesto-contexto/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/procesamiento-documentos-nutrient/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/programacion-produccion/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/publicacion-cruzada/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/publicador-social/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/puerta-de-entrega/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/puerta-de-entrega/hooks/puerta-entrega.py +0 -242
- package/vendor/theus-arsenal/skills/pulir-interfaces/SKILL.md +0 -126
- package/vendor/theus-arsenal/skills/qa-navegador/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/ranking-grafo-social/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/recuperacion-iterativa/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/redaccion-articulos/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/regex-vs-llm/SKILL.md +0 -221
- package/vendor/theus-arsenal/skills/regresion-codigo-ia/SKILL.md +0 -388
- package/vendor/theus-arsenal/skills/rendimiento-react/SKILL.md +0 -567
- package/vendor/theus-arsenal/skills/revision-codigo-flutter-dart/SKILL.md +0 -442
- package/vendor/theus-arsenal/skills/revision-literatura-cientifica/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/revision-multiperspectiva/SKILL.md +0 -302
- package/vendor/theus-arsenal/skills/revision-riesgo-prediccion/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/revision-seguridad/SKILL.md +0 -505
- package/vendor/theus-arsenal/skills/revision-seguridad/cloud-infrastructure-security.md +0 -361
- package/vendor/theus-arsenal/skills/runtime-bun/SKILL.md +0 -83
- package/vendor/theus-arsenal/skills/salud-codigo-codescene/SKILL.md +0 -163
- package/vendor/theus-arsenal/skills/salud-interfaces-red/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/seguimiento-costos/SKILL.md +0 -122
- package/vendor/theus-arsenal/skills/seguridad-agentes-trading/SKILL.md +0 -145
- package/vendor/theus-arsenal/skills/seguridad-amm-defi/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/seguridad-django/SKILL.md +0 -648
- package/vendor/theus-arsenal/skills/seguridad-laravel/SKILL.md +0 -945
- package/vendor/theus-arsenal/skills/seguridad-perl/SKILL.md +0 -507
- package/vendor/theus-arsenal/skills/seguridad-quarkus/SKILL.md +0 -474
- package/vendor/theus-arsenal/skills/seguridad-springboot/SKILL.md +0 -279
- package/vendor/theus-arsenal/skills/seo/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/sistema-diseno/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/sistema-operativo-agentico/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/sistemas-latencia-critica/SKILL.md +0 -65
- package/vendor/theus-arsenal/skills/tdd-django/SKILL.md +0 -735
- package/vendor/theus-arsenal/skills/tdd-laravel/SKILL.md +0 -673
- package/vendor/theus-arsenal/skills/tdd-quarkus/SKILL.md +0 -817
- package/vendor/theus-arsenal/skills/tdd-springboot/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/testing-cpp/SKILL.md +0 -328
- package/vendor/theus-arsenal/skills/testing-csharp/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/testing-e2e/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/testing-go/SKILL.md +0 -719
- package/vendor/theus-arsenal/skills/testing-kotlin/SKILL.md +0 -829
- package/vendor/theus-arsenal/skills/testing-perl/SKILL.md +0 -479
- package/vendor/theus-arsenal/skills/testing-protocolos-di-swift/SKILL.md +0 -196
- package/vendor/theus-arsenal/skills/testing-python/SKILL.md +0 -815
- package/vendor/theus-arsenal/skills/testing-react/SKILL.md +0 -421
- package/vendor/theus-arsenal/skills/testing-rust/SKILL.md +0 -506
- package/vendor/theus-arsenal/skills/tours-de-codigo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/traduccion-documentos-visado/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/ui-a-vue/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/validacion-config-red/SKILL.md +0 -211
- package/vendor/theus-arsenal/skills/verificacion-django/SKILL.md +0 -470
- package/vendor/theus-arsenal/skills/verificacion-factual/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/verificacion-laravel/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/verificacion-quarkus/SKILL.md +0 -485
- package/vendor/theus-arsenal/skills/verificacion-springboot/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/videodb/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/videodb/reference/api-reference.md +0 -550
- package/vendor/theus-arsenal/skills/videodb/reference/capture-reference.md +0 -407
- package/vendor/theus-arsenal/skills/videodb/reference/capture.md +0 -101
- package/vendor/theus-arsenal/skills/videodb/reference/editor.md +0 -443
- package/vendor/theus-arsenal/skills/videodb/reference/generative.md +0 -331
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream-reference.md +0 -564
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream.md +0 -65
- package/vendor/theus-arsenal/skills/videodb/reference/search.md +0 -230
- package/vendor/theus-arsenal/skills/videodb/reference/streaming.md +0 -406
- package/vendor/theus-arsenal/skills/videodb/reference/use-cases.md +0 -118
- package/vendor/theus-arsenal/skills/videodb/scripts/ws_listener.py +0 -279
- package/vendor/theus-arsenal/skills/videos-manim/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/videos-manim/assets/network_graph_scene.py +0 -52
- package/vendor/theus-arsenal/skills/vigilancia-canary/SKILL.md +0 -108
- package/vendor/theus-arsenal/skills/voz-de-marca/SKILL.md +0 -106
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# Outputs (eventos personalizados)
|
|
2
|
-
|
|
3
|
-
Los outputs permiten que un componente hijo emita eventos personalizados que un componente padre puede escuchar. Angular recomienda usar la nueva función `output()` para aplicaciones modernas.
|
|
4
|
-
|
|
5
|
-
## Outputs basados en función
|
|
6
|
-
|
|
7
|
-
Declara los outputs con la función `output()`. Devuelve un `OutputEmitterRef`.
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import {Component, output} from '@angular/core';
|
|
11
|
-
|
|
12
|
-
@Component({
|
|
13
|
-
selector: 'custom-slider',
|
|
14
|
-
template: `<button (click)="changeValue(50)">Fijar en 50</button>`,
|
|
15
|
-
})
|
|
16
|
-
export class CustomSlider {
|
|
17
|
-
// Output sin datos de evento
|
|
18
|
-
panelClosed = output<void>();
|
|
19
|
-
|
|
20
|
-
// Output con datos de evento (número)
|
|
21
|
-
valueChanged = output<number>();
|
|
22
|
-
|
|
23
|
-
changeValue(newValue: number) {
|
|
24
|
-
this.valueChanged.emit(newValue);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Uso en la plantilla
|
|
30
|
-
|
|
31
|
-
Enlaza el evento del output con paréntesis `()`. Si el evento emite datos, accede a ellos con la variable especial `$event`.
|
|
32
|
-
|
|
33
|
-
```html
|
|
34
|
-
<custom-slider (panelClosed)="savePanelState()" (valueChanged)="logValue($event)" />
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Opciones de configuración
|
|
38
|
-
|
|
39
|
-
La función `output` acepta un objeto de configuración para indicar un alias.
|
|
40
|
-
|
|
41
|
-
```ts
|
|
42
|
-
@Component({...})
|
|
43
|
-
export class CustomSlider {
|
|
44
|
-
// El evento se llama 'valueChanged' en la plantilla,
|
|
45
|
-
// pero se accede como 'changed' en la clase del componente.
|
|
46
|
-
changed = output<number>({ alias: 'valueChanged' });
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Suscripción programática
|
|
51
|
-
|
|
52
|
-
Al crear componentes dinámicamente, puedes suscribirte a los outputs de forma programática:
|
|
53
|
-
|
|
54
|
-
```ts
|
|
55
|
-
const componentRef = viewContainerRef.createComponent(CustomSlider);
|
|
56
|
-
|
|
57
|
-
const subscription = componentRef.instance.valueChanged.subscribe((val) => {
|
|
58
|
-
console.log('Valor cambiado:', val);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// Limpia manualmente si es necesario (Angular limpia automáticamente los componentes destruidos)
|
|
62
|
-
subscription.unsubscribe();
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Outputs con decorador (@Output)
|
|
66
|
-
|
|
67
|
-
La API heredada usa el decorador `@Output()` con un `EventEmitter`. Sigue soportada, pero no se recomienda para código nuevo.
|
|
68
|
-
|
|
69
|
-
```ts
|
|
70
|
-
import { Component, Output, EventEmitter } from '@angular/core';
|
|
71
|
-
|
|
72
|
-
@Component({...})
|
|
73
|
-
export class LegacyExample {
|
|
74
|
-
@Output() valueChanged = new EventEmitter<number>();
|
|
75
|
-
|
|
76
|
-
// Con alias
|
|
77
|
-
@Output('customEventName') changed = new EventEmitter<void>();
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Buenas prácticas
|
|
82
|
-
|
|
83
|
-
- **Prefiere `output()`**: usa el `output()` basado en función en lugar de `@Output()` y `EventEmitter`.
|
|
84
|
-
- **Nomenclatura**: usa `camelCase` para los nombres de outputs. Evita el prefijo `on` (p. ej., usa `valueChanged` en lugar de `onValueChanged`).
|
|
85
|
-
- **Sin burbujeo en el DOM**: los eventos personalizados de Angular no burbujean por el árbol DOM como los eventos nativos.
|
|
86
|
-
- **Evita colisiones**: no elijas nombres que colisionen con eventos nativos del DOM (como `click` o `submit`).
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# Formularios reactivos
|
|
2
|
-
|
|
3
|
-
Los formularios reactivos ofrecen un enfoque guiado por el modelo para gestionar entradas de formulario. Se construyen sobre flujos observables y proporcionan acceso síncrono al modelo de datos, lo que los hace más escalables y testeables que los formularios basados en plantilla.
|
|
4
|
-
|
|
5
|
-
## Clases base
|
|
6
|
-
|
|
7
|
-
Los formularios reactivos se construyen con estas clases fundamentales de `@angular/forms`:
|
|
8
|
-
|
|
9
|
-
- `FormControl`: gestiona el valor y la validez de una entrada individual.
|
|
10
|
-
- `FormGroup`: gestiona un grupo de controles (estructura tipo objeto).
|
|
11
|
-
- `FormArray`: gestiona un array de controles indexado numéricamente.
|
|
12
|
-
- `FormBuilder`: servicio que provee métodos de fábrica para crear instancias de controles.
|
|
13
|
-
|
|
14
|
-
## Configuración
|
|
15
|
-
|
|
16
|
-
Importa `ReactiveFormsModule` en tu componente.
|
|
17
|
-
|
|
18
|
-
```ts
|
|
19
|
-
import {Component, inject} from '@angular/core';
|
|
20
|
-
import {ReactiveFormsModule, FormGroup, FormControl, Validators, FormBuilder} from '@angular/forms';
|
|
21
|
-
|
|
22
|
-
@Component({
|
|
23
|
-
selector: 'app-profile-editor',
|
|
24
|
-
imports: [ReactiveFormsModule],
|
|
25
|
-
templateUrl: './profile-editor.component.html',
|
|
26
|
-
})
|
|
27
|
-
export class ProfileEditor {
|
|
28
|
-
private fb = inject(FormBuilder);
|
|
29
|
-
|
|
30
|
-
// FormBuilder permite una definición concisa
|
|
31
|
-
profileForm = this.fb.group({
|
|
32
|
-
firstName: ['', Validators.required],
|
|
33
|
-
lastName: [''],
|
|
34
|
-
address: this.fb.group({
|
|
35
|
-
street: [''],
|
|
36
|
-
city: [''],
|
|
37
|
-
}),
|
|
38
|
-
aliases: this.fb.array([this.fb.control('')]),
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
onSubmit() {
|
|
42
|
-
console.warn(this.profileForm.value);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Enlace en la plantilla
|
|
48
|
-
|
|
49
|
-
Usa directivas para enlazar el modelo con la vista:
|
|
50
|
-
|
|
51
|
-
- `[formGroup]`: enlaza un `FormGroup` a un `<form>` o `<div>`.
|
|
52
|
-
- `formControlName`: enlaza un control con nombre dentro de un grupo a una entrada.
|
|
53
|
-
- `formGroupName`: enlaza un `FormGroup` anidado.
|
|
54
|
-
- `formArrayName`: enlaza un `FormArray` anidado.
|
|
55
|
-
- `[formControl]`: enlaza un `FormControl` independiente.
|
|
56
|
-
|
|
57
|
-
```html
|
|
58
|
-
<form [formGroup]="profileForm" (ngSubmit)="onSubmit()">
|
|
59
|
-
<input type="text" formControlName="firstName" />
|
|
60
|
-
|
|
61
|
-
<div formGroupName="address">
|
|
62
|
-
<input type="text" formControlName="street" />
|
|
63
|
-
</div>
|
|
64
|
-
|
|
65
|
-
<div formArrayName="aliases">
|
|
66
|
-
@for (alias of aliases.controls; track $index) {
|
|
67
|
-
<input type="text" [formControlName]="$index" />
|
|
68
|
-
}
|
|
69
|
-
</div>
|
|
70
|
-
|
|
71
|
-
<button type="submit" [disabled]="!profileForm.valid">Enviar</button>
|
|
72
|
-
</form>
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Acceder a los controles
|
|
76
|
-
|
|
77
|
-
Usa getters para acceder fácilmente a los controles, en especial con `FormArray`.
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
get aliases() {
|
|
81
|
-
return this.profileForm.get('aliases') as FormArray;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
addAlias() {
|
|
85
|
-
this.aliases.push(this.fb.control(''));
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Actualizar valores
|
|
90
|
-
|
|
91
|
-
- `patchValue()`: actualiza solo las propiedades indicadas. Falla silenciosamente ante discrepancias estructurales.
|
|
92
|
-
- `setValue()`: reemplaza el modelo completo. Exige estrictamente la estructura del formulario.
|
|
93
|
-
|
|
94
|
-
```ts
|
|
95
|
-
updateProfile() {
|
|
96
|
-
this.profileForm.patchValue({
|
|
97
|
-
firstName: 'Nancy',
|
|
98
|
-
address: { street: 'Calle Drew 123' }
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Eventos de cambio unificados
|
|
104
|
-
|
|
105
|
-
Angular moderno (v18+) provee un único observable `events` en todos los controles para rastrear eventos de valor, estado, pristine, touched, reset y submit.
|
|
106
|
-
|
|
107
|
-
```ts
|
|
108
|
-
import {ValueChangeEvent, StatusChangeEvent} from '@angular/forms';
|
|
109
|
-
|
|
110
|
-
this.profileForm.events.subscribe((event) => {
|
|
111
|
-
if (event instanceof ValueChangeEvent) {
|
|
112
|
-
console.log('Nuevo valor:', event.value);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Gestión manual del estado
|
|
118
|
-
|
|
119
|
-
- `markAsTouched()` / `markAllAsTouched()`: útiles para mostrar errores de validación al enviar.
|
|
120
|
-
- `markAsDirty()` / `markAsPristine()`: rastrean si el valor fue modificado.
|
|
121
|
-
- `updateValueAndValidity()`: dispara manualmente el recálculo del valor y el estado.
|
|
122
|
-
- Las opciones `{ emitEvent: false }` u `{ onlySelf: true }` pueden pasarse a la mayoría de los métodos para controlar la propagación.
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Estrategias de renderizado
|
|
2
|
-
|
|
3
|
-
Angular soporta múltiples estrategias de renderizado para optimizar SEO, rendimiento e interactividad.
|
|
4
|
-
|
|
5
|
-
## 1. Renderizado en el cliente (CSR)
|
|
6
|
-
|
|
7
|
-
**Estrategia por defecto.** El contenido se renderiza completamente en el navegador.
|
|
8
|
-
|
|
9
|
-
- **Caso de uso**: paneles interactivos, herramientas internas.
|
|
10
|
-
- **Ventajas**: la más simple de configurar, bajo coste de servidor.
|
|
11
|
-
- **Desventajas**: SEO pobre, visibilidad inicial del contenido más lenta (hay que esperar al JS).
|
|
12
|
-
|
|
13
|
-
## 2. Generación de sitio estático (SSG / prerenderizado)
|
|
14
|
-
|
|
15
|
-
El contenido se prerenderiza en archivos HTML estáticos en **tiempo de build**.
|
|
16
|
-
|
|
17
|
-
- **Caso de uso**: páginas de marketing, blogs, documentación.
|
|
18
|
-
- **Ventajas**: carga inicial más rápida, SEO excelente, compatible con CDN.
|
|
19
|
-
- **Desventajas**: requiere rebuild para actualizar contenido; no sirve para datos específicos del usuario.
|
|
20
|
-
|
|
21
|
-
## 3. Renderizado en el servidor (SSR)
|
|
22
|
-
|
|
23
|
-
El contenido se renderiza en el servidor para la **petición inicial**. Las navegaciones posteriores ocurren en el cliente (estilo SPA).
|
|
24
|
-
|
|
25
|
-
- **Caso de uso**: páginas de producto de e-commerce, sitios de noticias, contenido dinámico personalizado.
|
|
26
|
-
- **Ventajas**: SEO excelente, visibilidad rápida del contenido inicial.
|
|
27
|
-
- **Desventajas**: requiere un servidor (Node.js), mayor coste/latencia de servidor.
|
|
28
|
-
|
|
29
|
-
## Hidratación
|
|
30
|
-
|
|
31
|
-
La hidratación es el proceso de hacer interactivo en el navegador el HTML renderizado en servidor.
|
|
32
|
-
|
|
33
|
-
- **Hidratación completa**: toda la app se vuelve interactiva de una vez.
|
|
34
|
-
- **Hidratación incremental**: (avanzado) las partes se vuelven interactivas según se necesiten usando bloques `@defer`.
|
|
35
|
-
- **Reproducción de eventos**: captura y reproduce los eventos del usuario ocurridos antes de que terminara la hidratación.
|
|
36
|
-
|
|
37
|
-
## Matriz de decisión
|
|
38
|
-
|
|
39
|
-
| Requisito | Estrategia |
|
|
40
|
-
| :--------------------------------- | :-------------------- |
|
|
41
|
-
| **SEO + contenido estático** | SSG |
|
|
42
|
-
| **SEO + contenido dinámico** | SSR |
|
|
43
|
-
| **Sin SEO + alta interactividad** | CSR |
|
|
44
|
-
| **Mixto** | Híbrido (por ruta) |
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Reactividad asíncrona con `resource`
|
|
2
|
-
|
|
3
|
-
> [!IMPORTANT]
|
|
4
|
-
> La API `resource` es actualmente experimental en Angular.
|
|
5
|
-
|
|
6
|
-
Un `Resource` incorpora la carga asíncrona de datos a la reactividad basada en signals de Angular. Ejecuta una función loader asíncrona cada vez que sus dependencias cambian, y expone el estado y el resultado como signals síncronas.
|
|
7
|
-
|
|
8
|
-
## Uso básico
|
|
9
|
-
|
|
10
|
-
La función `resource` acepta un objeto de opciones con dos propiedades principales:
|
|
11
|
-
|
|
12
|
-
1. `params`: un cálculo reactivo (como `computed`). Cuando cambian las signals leídas aquí, el resource vuelve a cargar.
|
|
13
|
-
2. `loader`: una función asíncrona que obtiene los datos según los parámetros.
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
import { Component, resource, signal, computed } from '@angular/core';
|
|
17
|
-
|
|
18
|
-
@Component({...})
|
|
19
|
-
export class UserProfile {
|
|
20
|
-
userId = signal('123');
|
|
21
|
-
|
|
22
|
-
userResource = resource({
|
|
23
|
-
// Rastrea userId de forma reactiva
|
|
24
|
-
params: () => ({ id: this.userId() }),
|
|
25
|
-
|
|
26
|
-
// Se ejecuta cada vez que params cambia
|
|
27
|
-
loader: async ({ params, abortSignal }) => {
|
|
28
|
-
const response = await fetch(`/api/users/${params.id}`, { signal: abortSignal });
|
|
29
|
-
if (!response.ok) throw new Error('Error de red');
|
|
30
|
-
return response.json();
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
// Usa el valor del resource en signals computadas
|
|
35
|
-
userName = computed(() => {
|
|
36
|
-
if (this.userResource.hasValue()) {
|
|
37
|
-
return this.userResource.value()?.name;
|
|
38
|
-
} else {
|
|
39
|
-
return 'Cargando...';
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Abortar peticiones
|
|
46
|
-
|
|
47
|
-
Si la signal `params` cambia mientras un loader anterior sigue ejecutándose, el `Resource` intentará abortar la petición pendiente usando el `abortSignal` proporcionado. **Pasa siempre `abortSignal` a tus llamadas `fetch`.**
|
|
48
|
-
|
|
49
|
-
## Recargar datos
|
|
50
|
-
|
|
51
|
-
Puedes forzar imperativamente que el resource vuelva a ejecutar el loader sin que cambien los params llamando a `.reload()`.
|
|
52
|
-
|
|
53
|
-
```ts
|
|
54
|
-
this.userResource.reload();
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Signals de estado del resource
|
|
58
|
-
|
|
59
|
-
El objeto `Resource` provee varias signals para leer su estado actual:
|
|
60
|
-
|
|
61
|
-
- `value()`: los datos resueltos, o `undefined`.
|
|
62
|
-
- `hasValue()`: booleano que actúa como type-guard. `true` si existe un valor.
|
|
63
|
-
- `isLoading()`: booleano que indica si el loader se está ejecutando.
|
|
64
|
-
- `error()`: el error lanzado por el loader, o `undefined`.
|
|
65
|
-
- `status()`: constante de texto que representa el estado exacto (`'idle'`, `'loading'`, `'resolved'`, `'error'`, `'reloading'`, `'local'`).
|
|
66
|
-
|
|
67
|
-
## Mutación local
|
|
68
|
-
|
|
69
|
-
Puedes actualizar el valor del resource directamente de forma optimista. Esto cambia el estado a `'local'`.
|
|
70
|
-
|
|
71
|
-
```ts
|
|
72
|
-
this.userResource.value.set({name: 'Actualización optimista'});
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Carga reactiva de datos con `httpResource`
|
|
76
|
-
|
|
77
|
-
Si usas el `HttpClient` de Angular, prefiere `httpResource`. Es un envoltorio especializado que aprovecha la pila HTTP de Angular (incluidos los interceptores) mientras ofrece la misma API de resource basada en signals.
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Animaciones de transición de ruta
|
|
2
|
-
|
|
3
|
-
El Router de Angular soporta la **View Transitions API** del navegador para transiciones visuales suaves entre rutas.
|
|
4
|
-
|
|
5
|
-
## Habilitar las view transitions
|
|
6
|
-
|
|
7
|
-
Añade `withViewTransitions()` a la configuración de tu router.
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
provideRouter(routes, withViewTransitions());
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Es una **mejora progresiva**. En navegadores que no soportan la API, el router seguirá funcionando pero sin la animación de transición.
|
|
14
|
-
|
|
15
|
-
## Cómo funciona
|
|
16
|
-
|
|
17
|
-
1. El navegador toma una captura del estado anterior.
|
|
18
|
-
2. El router actualiza el DOM (activa el nuevo componente).
|
|
19
|
-
3. El navegador toma una captura del nuevo estado.
|
|
20
|
-
4. El navegador anima entre los dos estados.
|
|
21
|
-
|
|
22
|
-
## Personalizar con CSS
|
|
23
|
-
|
|
24
|
-
Las transiciones se personalizan en **archivos CSS globales** (no en CSS acotado al componente).
|
|
25
|
-
|
|
26
|
-
Usa los pseudoelementos `::view-transition-old()` y `::view-transition-new()`.
|
|
27
|
-
|
|
28
|
-
```css
|
|
29
|
-
/* Ejemplo: fundido cruzado + deslizamiento */
|
|
30
|
-
::view-transition-old(root) {
|
|
31
|
-
animation: 90ms cubic-bezier(0.4, 0, 1, 1) both fade-out;
|
|
32
|
-
}
|
|
33
|
-
::view-transition-new(root) {
|
|
34
|
-
animation: 210ms cubic-bezier(0, 0, 0.2, 1) 90ms both fade-in;
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Control avanzado
|
|
39
|
-
|
|
40
|
-
Usa `onViewTransitionCreated` para omitir transiciones o personalizar el comportamiento según el contexto de navegación.
|
|
41
|
-
|
|
42
|
-
```ts
|
|
43
|
-
withViewTransitions({
|
|
44
|
-
onViewTransitionCreated: ({transition, from, to}) => {
|
|
45
|
-
// Omitir la animación para rutas específicas
|
|
46
|
-
if (to.url === '/no-animation') {
|
|
47
|
-
transition.skipTransition();
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Buenas prácticas
|
|
54
|
-
|
|
55
|
-
- **Estilos globales**: define siempre las animaciones de transición en `styles.css` para evitar problemas de encapsulación de vistas.
|
|
56
|
-
- **Nombres de view transition**: asigna un `view-transition-name` único a los elementos que deban transicionar suavemente entre rutas (p. ej., una imagen de cabecera).
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Guards de ruta
|
|
2
|
-
|
|
3
|
-
Los guards de ruta controlan si un usuario puede navegar hacia una ruta o abandonarla.
|
|
4
|
-
|
|
5
|
-
## Tipos de guards
|
|
6
|
-
|
|
7
|
-
- **`CanActivate`**: ¿puede el usuario acceder a esta ruta? (p. ej., comprobación de autenticación).
|
|
8
|
-
- **`CanActivateChild`**: ¿puede el usuario acceder a las hijas de esta ruta?
|
|
9
|
-
- **`CanDeactivate`**: ¿puede el usuario abandonar esta ruta? (p. ej., cambios sin guardar).
|
|
10
|
-
- **`CanMatch`**: ¿debería siquiera considerarse esta ruta para la coincidencia? (p. ej., feature flags). Si devuelve `false`, el router sigue comprobando otras rutas.
|
|
11
|
-
|
|
12
|
-
## Crear un guard
|
|
13
|
-
|
|
14
|
-
Desde Angular 15, los guards suelen ser funcionales.
|
|
15
|
-
|
|
16
|
-
```ts
|
|
17
|
-
export const authGuard: CanActivateFn = (route, state) => {
|
|
18
|
-
const authService = inject(AuthService);
|
|
19
|
-
const router = inject(Router);
|
|
20
|
-
|
|
21
|
-
if (authService.isLoggedIn()) {
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// Redirigir al login
|
|
26
|
-
return router.parseUrl('/login');
|
|
27
|
-
};
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Aplicar guards
|
|
31
|
-
|
|
32
|
-
Añádelos a la configuración de la ruta como un array. Se ejecutan en orden.
|
|
33
|
-
|
|
34
|
-
```ts
|
|
35
|
-
{
|
|
36
|
-
path: 'admin',
|
|
37
|
-
component: Admin,
|
|
38
|
-
canActivate: [authGuard],
|
|
39
|
-
canActivateChild: [adminChildGuard],
|
|
40
|
-
canDeactivate: [unsavedChangesGuard]
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Valores de retorno
|
|
45
|
-
|
|
46
|
-
- `boolean`: `true` para permitir, `false` para bloquear.
|
|
47
|
-
- `UrlTree` o `RedirectCommand`: redirigir a otra ruta.
|
|
48
|
-
- `Observable` o `Promise`: se resuelven a los tipos anteriores.
|
|
49
|
-
|
|
50
|
-
## Nota de seguridad
|
|
51
|
-
|
|
52
|
-
**Los guards del lado del cliente NO sustituyen la seguridad del lado del servidor.** Verifica siempre los permisos en el servidor.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Ciclo de vida y eventos del router
|
|
2
|
-
|
|
3
|
-
El Router de Angular emite eventos a través del observable `Router.events`, lo que permite rastrear el ciclo de vida de la navegación de inicio a fin.
|
|
4
|
-
|
|
5
|
-
## Eventos comunes del router (orden cronológico)
|
|
6
|
-
|
|
7
|
-
1. **`NavigationStart`**: comienza la navegación.
|
|
8
|
-
2. **`RoutesRecognized`**: el router hace coincidir la URL con una ruta.
|
|
9
|
-
3. **`GuardsCheckStart` / `End`**: evaluación de `canActivate`, `canMatch`, etc.
|
|
10
|
-
4. **`ResolveStart` / `End`**: fase de resolución de datos (carga de datos vía resolvers).
|
|
11
|
-
5. **`NavigationEnd`**: la navegación se completó con éxito.
|
|
12
|
-
6. **`NavigationCancel`**: navegación cancelada (p. ej., un guard devolvió `false`).
|
|
13
|
-
7. **`NavigationError`**: la navegación falló (p. ej., error en un resolver).
|
|
14
|
-
|
|
15
|
-
## Suscribirse a los eventos
|
|
16
|
-
|
|
17
|
-
Inyecta el `Router` y filtra el observable `events`.
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
import {Router, NavigationStart, NavigationEnd} from '@angular/router';
|
|
21
|
-
|
|
22
|
-
export class MyService {
|
|
23
|
-
private router = inject(Router);
|
|
24
|
-
|
|
25
|
-
constructor() {
|
|
26
|
-
this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe((event) => {
|
|
27
|
-
console.log('Se navegó a:', event.url);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Depuración
|
|
34
|
-
|
|
35
|
-
Habilita el registro detallado en consola de todos los eventos de enrutamiento durante el bootstrap de la aplicación.
|
|
36
|
-
|
|
37
|
-
```ts
|
|
38
|
-
provideRouter(routes, withDebugTracing());
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Casos de uso comunes
|
|
42
|
-
|
|
43
|
-
- **Indicadores de carga**: muestra un spinner cuando se dispara `NavigationStart` y ocúltalo en `NavigationEnd`/`Cancel`/`Error`.
|
|
44
|
-
- **Analíticas**: rastrea vistas de página escuchando `NavigationEnd`.
|
|
45
|
-
- **Gestión del scroll**: responde a los eventos `Scroll` para comportamiento de scroll personalizado.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# Testing con RouterTestingHarness
|
|
2
|
-
|
|
3
|
-
Al probar componentes que involucran enrutamiento, es crucial **no mockear el Router ni los servicios relacionados**. En su lugar, usa el `RouterTestingHarness`, que ofrece una forma robusta y fiable de probar la lógica de enrutamiento en un entorno muy cercano al de una aplicación real.
|
|
4
|
-
|
|
5
|
-
Usar el harness garantiza que estás probando la configuración real del router, sus guards y resolvers, lo que produce pruebas más significativas.
|
|
6
|
-
|
|
7
|
-
## Preparación para probar el router
|
|
8
|
-
|
|
9
|
-
El `RouterTestingHarness` es la herramienta principal para probar escenarios de enrutamiento. También necesitas proveer tus rutas de prueba con la función `provideRouter` en la configuración del `TestBed`.
|
|
10
|
-
|
|
11
|
-
### Ejemplo de configuración
|
|
12
|
-
|
|
13
|
-
```ts
|
|
14
|
-
import {TestBed} from '@angular/core/testing';
|
|
15
|
-
import {provideRouter} from '@angular/router';
|
|
16
|
-
import {RouterTestingHarness} from '@angular/router/testing';
|
|
17
|
-
import {Dashboard} from './dashboard.component';
|
|
18
|
-
import {HeroDetail} from './hero-detail.component';
|
|
19
|
-
|
|
20
|
-
describe('Enrutamiento del componente Dashboard', () => {
|
|
21
|
-
let harness: RouterTestingHarness;
|
|
22
|
-
|
|
23
|
-
beforeEach(async () => {
|
|
24
|
-
// 1. Configura el TestBed con rutas de prueba
|
|
25
|
-
await TestBed.configureTestingModule({
|
|
26
|
-
providers: [
|
|
27
|
-
// Usa provideRouter con tus rutas específicas de prueba
|
|
28
|
-
provideRouter([
|
|
29
|
-
{path: '', component: Dashboard},
|
|
30
|
-
{path: 'heroes/:id', component: HeroDetail},
|
|
31
|
-
]),
|
|
32
|
-
],
|
|
33
|
-
}).compileComponents();
|
|
34
|
-
|
|
35
|
-
// 2. Crea el RouterTestingHarness
|
|
36
|
-
harness = await RouterTestingHarness.create();
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Conceptos clave
|
|
42
|
-
|
|
43
|
-
1. **`provideRouter([...])`**: provee una configuración de enrutamiento específica de la prueba. Debe incluir las rutas necesarias para que el componente bajo prueba funcione correctamente.
|
|
44
|
-
2. **`RouterTestingHarness.create()`**: crea e inicializa el harness de forma asíncrona y realiza una navegación inicial a la URL raíz (`/`).
|
|
45
|
-
|
|
46
|
-
## Escribir pruebas del router
|
|
47
|
-
|
|
48
|
-
Una vez creado el harness, puedes usarlo para dirigir la navegación y hacer verificaciones sobre el estado del router y de los componentes activados.
|
|
49
|
-
|
|
50
|
-
### Ejemplo: probar la navegación
|
|
51
|
-
|
|
52
|
-
```ts
|
|
53
|
-
it('debería navegar al detalle de un héroe al seleccionarlo', async () => {
|
|
54
|
-
// 1. Navega al componente inicial y obtén su instancia
|
|
55
|
-
const dashboard = await harness.navigateByUrl('/', Dashboard);
|
|
56
|
-
|
|
57
|
-
// Supón que el dashboard tiene un método para seleccionar un héroe
|
|
58
|
-
const heroToSelect = {id: 42, name: 'Test Hero'};
|
|
59
|
-
dashboard.selectHero(heroToSelect);
|
|
60
|
-
|
|
61
|
-
// Espera la estabilidad tras la acción que dispara la navegación
|
|
62
|
-
await harness.fixture.whenStable();
|
|
63
|
-
|
|
64
|
-
// 2. Verifica la URL
|
|
65
|
-
expect(harness.router.url).toEqual('/heroes/42');
|
|
66
|
-
|
|
67
|
-
// 3. Obtén el componente activado tras la navegación
|
|
68
|
-
const heroDetail = await harness.getHarness(HeroDetail);
|
|
69
|
-
|
|
70
|
-
// 4. Verifica el estado del nuevo componente
|
|
71
|
-
expect(await heroDetail.componentInstance.hero.name).toBe('Test Hero');
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it('debería obtener el componente activado directamente', async () => {
|
|
75
|
-
// Navega y obtén la instancia del componente en un solo paso
|
|
76
|
-
const dashboardInstance = await harness.navigateByUrl('/', Dashboard);
|
|
77
|
-
|
|
78
|
-
expect(dashboardInstance).toBeInstanceOf(Dashboard);
|
|
79
|
-
});
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Buenas prácticas
|
|
83
|
-
|
|
84
|
-
- **Navega con el harness:** usa siempre `harness.navigateByUrl()` para simular la navegación. Este método devuelve una promesa que se resuelve con la instancia del componente activado.
|
|
85
|
-
- **Accede al estado del router:** usa `harness.router` para acceder a la instancia viva del router y verificar su estado (p. ej., `harness.router.url`).
|
|
86
|
-
- **Obtén los componentes activados:** usa `harness.getHarness(ComponentType)` para obtener una instancia del harness del componente enrutado actualmente activo, o `harness.routeDebugElement` para obtener el `DebugElement`.
|
|
87
|
-
- **Espera la estabilidad:** tras realizar una acción que provoque navegación, haz siempre `await harness.fixture.whenStable()` para asegurar que el enrutamiento se completó antes de verificar.
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Mostrar rutas con outlets
|
|
2
|
-
|
|
3
|
-
La directiva `RouterOutlet` es un marcador de posición donde Angular renderiza el componente de la URL actual.
|
|
4
|
-
|
|
5
|
-
## Uso básico
|
|
6
|
-
|
|
7
|
-
Incluye `<router-outlet />` en tu plantilla. Angular inserta el componente enrutado como hermano inmediatamente después del outlet.
|
|
8
|
-
|
|
9
|
-
```html
|
|
10
|
-
<app-header /> <router-outlet />
|
|
11
|
-
<!-- El contenido de la ruta aparece aquí -->
|
|
12
|
-
<app-footer />
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Outlets anidados
|
|
16
|
-
|
|
17
|
-
Las rutas hijas requieren su propio `<router-outlet />` dentro de la plantilla del componente padre.
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
// Plantilla del componente padre
|
|
21
|
-
<h1>Configuración</h1>
|
|
22
|
-
<router-outlet /> <!-- Los componentes hijos como Profile o Security se renderizan aquí -->
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Outlets con nombre (rutas secundarias)
|
|
26
|
-
|
|
27
|
-
Las páginas pueden tener múltiples outlets. Asigna un `name` a un outlet para apuntarlo específicamente. El nombre por defecto es `'primary'`.
|
|
28
|
-
|
|
29
|
-
```html
|
|
30
|
-
<router-outlet />
|
|
31
|
-
<!-- Primario -->
|
|
32
|
-
<router-outlet name="sidebar" />
|
|
33
|
-
<!-- Secundario -->
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Define el `outlet` en la configuración de la ruta:
|
|
37
|
-
|
|
38
|
-
```ts
|
|
39
|
-
{
|
|
40
|
-
path: 'chat',
|
|
41
|
-
component: Chat,
|
|
42
|
-
outlet: 'sidebar'
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Eventos del ciclo de vida del outlet
|
|
47
|
-
|
|
48
|
-
`RouterOutlet` emite eventos cuando cambian los componentes:
|
|
49
|
-
|
|
50
|
-
- `activate`: nuevo componente instanciado.
|
|
51
|
-
- `deactivate`: componente destruido.
|
|
52
|
-
- `attach` / `detach`: usados con `RouteReuseStrategy`.
|
|
53
|
-
|
|
54
|
-
```html
|
|
55
|
-
<router-outlet (activate)="onActivate($event)" />
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Pasar datos con `routerOutletData`
|
|
59
|
-
|
|
60
|
-
Puedes pasar datos contextuales al componente enrutado mediante el input `routerOutletData`. El componente accede a ellos vía el token de inyección `ROUTER_OUTLET_DATA` como una signal.
|
|
61
|
-
|
|
62
|
-
```ts
|
|
63
|
-
// En el padre
|
|
64
|
-
<router-outlet [routerOutletData]="{ theme: 'dark' }" />
|
|
65
|
-
|
|
66
|
-
// En el componente enrutado
|
|
67
|
-
outletData = inject(ROUTER_OUTLET_DATA) as Signal<{ theme: string }>;
|
|
68
|
-
```
|