UNPKG

clown

Version:
28 lines (24 loc) 843 B
var joi = require('joi'), traverse = require('traverse'); module.exports = function traverser(schema, visitor) { traverse(joi.compile(schema)).forEach(function(node) { if (node && node.isJoi) { var self = this, ctx = {}, parent = self.parent || {}; ctx.node = self.node; ctx.path = self.path.filter(function(p) { return p !== '_inner'; }); ctx.parent = parent.parent; ctx.key = parent.key; ctx.isRoot = self.isRoot; ctx.notRoot = self.notRoot; ctx.isLeaf = !Object.keys(node._inner || {}).length; ctx.notLeaf = !ctx.isLeaf; ctx.level = Math.floor(self.level / 2); ctx.update = self.update.bind(self); ctx.remove = self.remove.bind(self); ctx.delete = self.remove.bind(self); visitor.call(ctx, node.describe()); } }); };