
Security News
Google’s OSV Fix Just Added 500+ New Advisories — All Thanks to One Small Policy Change
A data handling bug in OSV.dev caused disputed CVEs to disappear from vulnerability feeds until a recent fix restored over 500 advisories.
@bett3r-dev/jsonschema-definer
Advanced tools
This package provides simple, well typed API for creating and validating JSON Schemas
npm install jsonschema-definer
This package was inspired by fluent-schema
and prop-types
, and is used to create and validate JSON Schema. It was written in typescript and provide a lot of usefull info from typings, such as infering interface types from schema. Here is an example:
import S from 'jsonschema-definer'
// Lets define a simple object schema
const UserSchema = S.shape({
name: S.string(),
email: S.string().format('email').optional(),
password: S.string().minLength(8),
role: S.enum('client', 'suplier'),
birthday: S.instanceOf(Date)
})
// Now lets get interface of User from schema
type User = typeof UserSchema.type
/*
type User = {
name: string,
email?: string | undefined,
password: string,
role: 'client' | 'suplier',
birthday: Date
}
*/
// We can validate user using .validate(data) function (ajv used)
const [valid, errors] = UserSchema.validate({
name: 'Igor',
email: 'fumo.sujimoshi@gmail.com',
password: '12345678',
role: 'client',
birthday: new Date()
})
console.log(valid, errors) // [boolean, Error[]]
// Or get plain JSON Schema using .valueOf()
console.log(UserSchema.valueOf())
Give a ⭐️ if this project helped you!
Full documentation available here
Method | Description | JSON Schema |
---|---|---|
S.any(): BaseSchema | Correspond to any type | { } |
S.string(): StringSchema | For strings validation | { "type": "string" } |
S.number(): NumericSchema | For float/integer validation | { "type": "number" } |
S.integer(): NumericSchema | For integer values validation | { "type": "integer" } |
S.boolean(): BaseSchema | For boolean values | { "type": "boolean" } |
S.null(): BaseSchema | For null value validation | { "type": "null" } |
S.array(): ArraySchema | Array validation | { "type": "array" } |
S.list(itemType: T): ArraySchema | Validation of lists. Example: S.list(S.string()): ArraySchema | { "type": "array", "items": { ... } } |
S.object(): ObjectSchema | Validation of object | { "type": "object" } |
S.shape({ key: Schema }: T): ObjectSchema | Validation of objects | { "type": "object", properties: T, additionalProperties: false } } |
S.instanceOf(type: T): BaseSchema | For validating instanceOf data. (Custom keyword used) | { instanceOf: T.name } |
S.enum(...constants: T[]): BaseSchema | Enumerable schema | { enum: [ T[0], T[1] ] } |
S.const(constant: T): BaseSchema | Constant value | { const: T } |
S.anyOf(...schemas: BaseSchema[]): BaseSchema | Any (one or more) of given types | { anyOf: [ T[0], T[1], ... ] } |
S.oneOf(...schemas: BaseSchema[]): BaseSchema | Value shoud correspond to ONE of given types | { oneOf: [ T[0], T[1], ... ] } |
S.allOf(...schemas: BaseSchema[]): BaseSchema | Value should correspond to ALL of given type | { allOf: [ T[0], T[1], ... ] } |
S.raw(values: any): BaseSchema | Set custom schema values (For Swagger definitions for example) | { ...values } |
S.custom(...validators: (value: T) => boolean): BaseSchema | Add custom validation functions to schema. Supported by AJV custom keyword | Does not supported by standard JSON Schema (Ajv support) |
Contributions, issues and feature requests are welcome!
Feel free to check issues page.
npm run test
👤 Igor Solomakha fumo.sujimoshi@gmail.com
Copyright © 2020 Igor Solomakha fumo.sujimoshi@gmail.com.
This project is ISC licensed.
This README was generated with ❤️ by readme-md-generator
FAQs
JSON Schema constructor and validator
The npm package @bett3r-dev/jsonschema-definer receives a total of 4 weekly downloads. As such, @bett3r-dev/jsonschema-definer popularity was classified as not popular.
We found that @bett3r-dev/jsonschema-definer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A data handling bug in OSV.dev caused disputed CVEs to disappear from vulnerability feeds until a recent fix restored over 500 advisories.
Research
/Security News
175 malicious npm packages (26k+ downloads) used unpkg CDN to host redirect scripts for a credential-phishing campaign targeting 135+ organizations worldwide.
Security News
Python 3.14 adds template strings, deferred annotations, and subinterpreters, plus free-threaded mode, an experimental JIT, and Sigstore verification.