current commit
230330.1 · chore: move to ESM, update all dependencies (#113)
export default class Rule {
  constructor (opts) {
    opts = Object.assign({
      options: {},
      defaults: {},
      meta: {}
    }, opts)

    if (!opts.id) {
      throw new Error('Rule must have an id')
    }

    if (typeof opts.validate !== 'function') {
      throw new TypeError('Rule must have validate function')
    }

    this.id = opts.id
    this.disabled = opts.disabled === true
    this.meta = opts.meta
    this.defaults = Object.assign({}, opts.defaults)
    this.options = Object.assign({}, opts.defaults, opts.options)
    this._validate = opts.validate
  }

  validate (commit) {
    this._validate(commit, this)
  }
}