Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Duplicate Code] Shared JSON-object validation helper

Chiusa Adatta ai principianti
#10,040 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@lpcox ci sta già lavorando.

Dal 16/10/2026.

  • #10062 di @copilot-swe-agent — integrata

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
68/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
typescript
Ambito
tooling

Direzione di ricerca

L'helper duplicato requireObject(value, label) compare in src/cloud-hypervisor/artifact-manifest.ts (righe 37-54) e in src/nvx/outcome.ts (righe 137-154). Confronta le due copie, quindi sposta una versione condivisa in un nuovo modulo di validazione comune e importala da entrambi i punti di chiamata. Il lavoro è completo quando resta una sola definizione, entrambi i file usano l'import e i test esistenti per questi moduli continuano a passare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

code-quality refactoring

Duplicate Code Opportunity

Summary
  • Pattern: Two modules independently implement the same requireObject(value, label) guard that checks for a non-null plain object and throws an identical error message.
  • Locations: src/cloud-hypervisor/artifact-manifest.ts lines 37-54; src/nvx/outcome.ts lines 137-154.
  • Impact: This is a small but repeated validation helper in configuration/persistence code. A shared utility would centralize object-shape validation and keep error text consistent.
Evidence
  • src/cloud-hypervisor/artifact-manifest.ts: lines 37-54
  • src/nvx/outcome.ts: lines 137-154
// src/cloud-hypervisor/artifact-manifest.ts
function requireObject(value: unknown, label: string): Record<string, unknown> {
  if (!value || typeof value !== 'object' || Array.isArray(value)) {
    throw new Error(`${label} must be a JSON object`);
// src/nvx/outcome.ts
function requireObject(value: unknown, label: string): Record<string, unknown> {
  if (!value || typeof value !== 'object' || Array.isArray(value)) {
    throw new Error(`${label} must be a JSON object`);
Suggested Refactoring

Extract a shared requireObject(...) helper into a common validation module and reuse it across both persistence/manifest parsers.

Affected Files
  • src/cloud-hypervisor/artifact-manifest.ts — lines 37-54
  • src/nvx/outcome.ts — lines 137-154
Effort Estimate

Low


Detected by Duplicate Code Detector workflow. Run date: 2026-10-15

Generated by Duplicate Code Detector · copilot · gpt54mini · 3.44 AIC · ⊞ 29.7K · ◷

  • expires on Nov 14, 2026, 9:51 PM UTC
Lingua principale
TypeScript
Stelle
157
Fork
80
Merge medio
3h 44m
PR unite (30g)
439

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di github/gh-aw-firewall

Tutte le issue di github/gh-aw-firewall

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.