# lexicon-js A plain JavaScript validator for [AT Protocol Lexicon](https://atproto.com/specs/lexicon) schemas. ## Install ```bash npm install @bigmoves/lexicon ``` ## Usage ```javascript import { validateLexicons, validateRecord } from '@bigmoves/lexicon' // Validate a lexicon schema const lexicon = { lexicon: 1, id: 'app.example.post', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: ['text'], properties: { text: { type: 'string', maxLength: 300 } } } } } } const schemaError = validateLexicons([lexicon]) // null if valid, error object if invalid // Validate a record against a lexicon const record = { text: 'Hello, world!' } const dataError = validateRecord([lexicon], 'app.example.post', record) // null if valid, { path, message } if invalid ``` ## Testing ```bash npm test ``` ## Spec Compliance This implementation follows the [AT Protocol specs](https://atproto.com/specs/lexicon). See [docs/oracle-differences.md](./docs/oracle-differences.md) for documented differences with @atproto/lexicon. ## License MIT