Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

refactor(config): drop unused safeParse wrappers and stale Zod comments in config/schema.ts

Abierto
#740 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
Medio día
Aptitud para principiantes
62/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
typescript
Área
cli

Línea de trabajo

Start by running rg for the five unused exports (ApiKeyAuthSchema, BasicAuthSchema, AuthSchema, ServiceBlockSchema, ConfigFileSchema) in src/config/schema.ts to confirm only tests use them, then run rg -i zod src to find the stale comments in loader.ts, ajv-validate.ts, json-schema-args.ts, namespaces.ts and factory.ts. Done means the wrappers and their tests are removed with a justification, the post-checks live only in ContextSchema, rg -i zod src is empty, and npm test and npx tsc --noEmit pass. Leave the strip* helpers and additionalProperties alone, since #716 covers them.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

src/config/schema.ts exports five ajv-backed safeParse wrappers that nothing in src/ calls. Only tests use them. Several comments across src/ also still describe validation as Zod-based, but zod has been removed from the project.

Unused exports (current main):

  • ApiKeyAuthSchema (line 306)
  • BasicAuthSchema (line 316)
  • AuthSchema (line 326)
  • ServiceBlockSchema (line 335)
  • ConfigFileSchema (line 402)

Production code uses only StructuralConfigSchema (loader.ts, completion/complete.ts, completers/context-names.ts), ContextSchema (loader.ts, config/commands.ts) and CommandPolicySchema (loader.ts, completion/complete.ts).

ConfigFileSchema also duplicates the three per-context post-checks from ContextSchema, with different wording:

  • At least one service block: ContextSchema line 382-383 vs ConfigFileSchema line 426-427 ("at least one service block required").
  • contextUrlErrors: line 385 vs line 429.
  • contextVersionErrors: line 387 vs line 431.

These were around lines 378-385 and 431-440 in an earlier revision.

Stale Zod comments:

  • src/config/loader.ts:14: "Validate active context with full Zod schemas"
  • src/lib/ajv-validate.ts:7
  • src/lib/json-schema-args.ts:9
  • src/namespaces.ts:107
  • src/factory.ts:737

Proposal

  1. Delete the five unused wrappers and their tests. Deleting ConfigFileSchema removes the duplicated post-checks, so ContextSchema becomes their single home.
  2. Update the Zod comments so they describe the current ajv/JSON Schema behaviour.

The PR must explicitly justify deleting the tests for the removed wrappers: they cover only code being removed, and the behaviour that remains is still covered through ContextSchema/StructuralConfigSchema.

Out of scope: deferred to #716 (design decision 1)

This issue does not cover replacing the strip* helpers (schema.ts ~238-298, plus the ! assertions on their results) with ValidateFunction<T> type guards, or adding additionalProperties: false. Either change would alter behaviour. Today unknown config keys are silently stripped (schema.ts:137: "no additionalProperties — we strip manually"). A type guard would pass them through, and additionalProperties: false would reject them, which would break existing configs that have extra keys. Both options also overlap with #716's raw-shape plus per-field leaf validator split, which reshapes ContextSchema, contextUrlErrors, contextVersionErrors and the strip* helpers. Decide them there.

Acceptance criteria

  • ConfigFileSchema, AuthSchema, ApiKeyAuthSchema, BasicAuthSchema and ServiceBlockSchema are removed, or any that stay have a documented reason.
  • The three per-context post-checks exist only in ContextSchema.
  • No comment in src/ refers to Zod (rg -i zod src is empty).
  • The PR justifies each deleted test.
  • No behaviour change: unknown keys are still stripped, and npm test and npx tsc --noEmit pass.

Related

  • #716 (design decision 1: the strip*/type-guard and unknown-key handling is deferred there)

authored by Pi Coding Agent (Claude Opus)

Lenguaje dominante
TypeScript
Estrellas
47
Forks
27
Merge medio
2 d 6 h
PR fusionados (30 d)
52

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de elastic/cli

Todos los issues de elastic/cli

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.