@graphjson/schema
v0.0.1
Published
> Schema validation utilities for GraphJSON queries
Readme
@graphjson/schema
Schema validation utilities for GraphJSON queries
GraphJSON Schema provides validation utilities to ensure your JSON queries are valid before generating GraphQL documents.
Why Use This?
- ✅ Validation - Validate JSON queries against schema rules
- 🛡️ Error Prevention - Catch errors early
- 🎯 Type-Safe - Full TypeScript support
- 📋 Schema Rules - Enforce query structure
- 🔍 Detailed Errors - Clear validation messages
Installation
npm install @graphjson/schemaQuick Start
import { validateDocument } from '@graphjson/schema';
const query = {
query: {
users: {
select: {
id: true,
name: true
}
}
}
};
const result = validateDocument(query);
if (result.valid) {
console.log('✓ Query is valid');
} else {
console.error('✗ Validation errors:', result.errors);
}API Reference
validateDocument(json: JsonDocument): ValidationResult
Validates a JSON document against GraphJSON schema rules.
Parameters:
| Parameter | Type | Description |
|-----------|------|-------------|
| json | JsonDocument | The JSON query to validate |
Returns: ValidationResult object with:
| Property | Type | Description |
|----------|------|-------------|
| valid | boolean | Whether the document is valid |
| errors | string[] | Array of validation error messages |
Validation Rules
The validator checks for:
- ✅ Valid operation types (query, mutation, subscription)
- ✅ Proper field structure
- ✅ Valid variable declarations
- ✅ Correct select syntax
- ✅ Valid argument types
Usage Examples
Basic Validation
import { validateDocument } from '@graphjson/schema';
const valid = validateDocument({
query: {
users: {
select: {
id: true,
name: true
}
}
}
});
console.log(valid); // { valid: true, errors: [] }Handling Validation Errors
const result = validateDocument(query);
if (!result.valid) {
result.errors.forEach(error => {
console.error(`Validation error: ${error}`);
});
throw new Error('Invalid query structure');
}Pre-Generation Validation
import { validateDocument } from '@graphjson/schema';
import { generateDocument } from '@graphjson/core';
function safeGenerate(json) {
const validation = validateDocument(json);
if (!validation.valid) {
throw new Error(`Invalid query: ${validation.errors.join(', ')}`);
}
return generateDocument(json);
}GraphJSON Ecosystem
| Package | Description | NPM |
|---------|-------------|-----|
| @graphjson/json-dsl | Type definitions | |
| @graphjson/core | Core document generation |
|
Contributing
Contributions are welcome! Please see CONTRIBUTING.md.
License
MIT © NexaLeaf
