JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 16
  • Score
    100M100P100Q77925F
  • License MIT

Mongoose-Like JSON Schema Validator

Package Exports

  • molijv

Readme

MoliJV - Mongoose-Like JSON Validador

JSON validator inspired by Mongoose for Node.js.

  • Type validation and coercion similar to Mongoose, but with no external dependencies.
  • Supports types: String, Number, Boolean, Date, Int32, Decimal128, Double, Array, Object.
  • Allows defining validation schemas in a simple and flexible way.

Installation

npm install molijv

Quick Example

import { Schema } from 'molijv'

const userSchema = new Schema({
  name: { type: String, required: true, trim: true },
  age: { type: Number, min: 0 },
  email: { type: String, match: /@/, message: 'Invalid email' }
})

const user = {
  name: '  Arthur  ',
  age: '22',
  email: 'arthur@email.com'
}

userSchema.validate(user) // returns validated/coerced object or throws error

Features

  • Type validation and automatic coercion (optional)
  • Customizable error messages
  • Supports custom validation, enum, min/max, required, match (regex), default, etc.
  • Inspired by Mongoose schema API

API Documentation

Class: Schema

Creates a validator from a schema.

new Schema(schemaDef, options?)

  • schemaDef: Object that defines the schema (types, validations, etc)
  • options: (optional) { coerce: boolean } (default: true)

validate(data)

Validates and (optionally) coerces the input data.

  • data: Object to be validated
  • Returns: validated/coerced object (may be the same or a new object)
  • Throws: Error if validation fails

Supported types

  • String, Number, Boolean, Date, Int32, Decimal128, Double, Array, Object

Field options

  • type: Field type
  • required: true or [true, "message"]
  • min, max: For numbers or dates. Ex: { min: 0 }
  • enum: List of allowed values or [values, "message"]
  • match: Regex or [regex, "message"]
  • default: Default value
  • validate: Custom function or [function, "message"]
  • trim, lowercase, uppercase: For strings

Full schema example

const schema = new Schema({
  name: { type: String, required: [true, 'Name is required'], trim: true },
  age: { type: Int32, min: 0, max: 120 },
  email: { type: String, match: [/@/, 'Invalid email'] },
  tags: [String],
  createdAt: { type: Date, default: () => new Date() }
})

License

MIT