Skip to content
On this page

ObjectPaser schemas

ObjectParser has 2 structures that are needed to parse objects: ObjectSchema and PropertySchema. They describe what an object and its properties should be.

Object schema

This schema type is used to describe object hierarchies and applied to an object. Use .schema() to create.

Example:

javascript
parser.schema({
  a: String,
  b: [Number, Number],
  c: {
    d: Function,
  },
})

The object that was passed to the function will be converted to a schema, where each property will be a property schema or a nested schema.

Property schema

This type of schema is used to describe a property of an object and applied to an object property. Use .property() to create.

Example:

javascript
parser.property({
  type: String,
  required: false,
  default: () => 'Hello World',
  validator: (val) => val.length > 0,
})

Immutable

All schemas are immutable, which guarantees that they will not change properties at runtime and that two identical objects will have same results at different intervals.

Example:

javascript
const propertySchema = parser.property({ type: String })
propertySchema.type = [Number, Boolean]
// => throws an error

Combining

All schemas are reusable, which allows you to create complex structures from smaller ones and can completely remove the need to duplicate code. It also allows for more efficient use of memory.

Example:

javascript
// Shared schemas

const id = parser.property({
  type: [Number, String],
})

const username = parser.property({
  type: String,
})

const tag = parser.schema({
  id,
  name: String,
})

const tags = parser.property({
  type: Array,
  element: tag,
})

// Other schemas

const userInfoSchema = parser.schema({
  id,
  name: userName,
})

const postDataSchema = parser.schema({
  id,
  tags,
  title: String,
  user: {
    name: userInfoSchema.name,
  },
})

In this example, we have created id, username, tags property schemas, where the tags schema depends on the tag object schema. And then, they used them in complex schemes userInfoSchema and postDataSchema.

Released under the MIT License.