JSON Schema validation in Node.js core
Personne n'a encore pris cette issue.
- Langage dominant
- JavaScript
- Étoiles
- 122k
- Forks
- 37.3k
- Merge moyen
- 4 j 2 h
- PR mergées (30 j)
- 283
Description
What is the problem this feature will solve?
Hi all,
I wanted to open a discussion about whether JSON Schema validation could be a useful addition to Node.js core.
Current state
- Node.js currently has no built-in JSON Schema validation
node.config.json(experimental) uses hand-written type checking against a JSON Schema 2020-12 definition generated from C++ option metadatapackage.jsonparsing uses simdjson but has no schema validation, fields are extracted structurally- The only schema validation in the Node.js tree lives inside
deps/npm(Ajv)
Potential use cases
- Validate
node.config.jsonagainst its own schema properly - Future validation for
package.jsonfields (opt-in, non-breaking) - Expose as a built-in module (
node:jsonschema) so userland doesn't need to pull in external validators
Context
I've been working on a project in this area, ata-validator, a JSON Schema validator built on simdjson and RE2. It currently passes 96.9% of the official JSON Schema Test Suite (Draft 2020-12) and falls back to a pure JS engine when native bindings aren't available.
I'm not proposing to land it as-is, I'd love to hear from the group first:
- Is there interest in having JSON Schema validation available in core?
- What would be the most useful entry point? (config validation, public API, both?)
- Any concerns about the dependency story? (RE2/abseil weight, simdjson already in core)
Happy to share benchmarks or more details if this sounds worth exploring.
fyi @Qard
What is the feature you are proposing to solve the problem?
A built-in JSON Schema validator, potentially exposed as node:jsonschema, that could also be used internally for validating node.config.json and other configuration files.
This would provide Node.js users with a fast, native JSON Schema (Draft 2020-12) validation capability without needing external dependencies.
What alternatives have you considered?
-
Continuing with hand-written validation for each config format individually,
doesn't scale as more config formats are added -
Bundling an existing JS-based validator like Ajv into core, lacks native performance benefits
-
Leaving JSON Schema validation entirely to userland
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par lire le chemin de validation de node.config.json, la définition de JSON Schema 2020-12 issue des métadonnées des options C++, ainsi que le code de validation du schéma dans deps/npm. Comparez les points d’entrée proposés node:jsonschema, config-validation et package.json avec l’utilisation existante d’Ajv. Le travail est considéré comme terminé lorsqu’un périmètre et une stratégie de dépendances ont été convenus avant de pouvoir définir l’implémentation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, node.js
- Domaine
- backend
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Calme
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100