How to use the joi.extend function in joi

To help you get started, we’ve selected a few joi examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github zaaack / koa-joi-swagger / src / joi.js View on Github external
import Joi from 'joi'

let myJoi = Joi.extend({
  base: Joi.object(),
  name: 'object',
  language: {
    json: 'invalid json', // Used below as 'number.round'
  },
  coerce(value, state, options) {
    if (this._flags.json && value &&
        typeof value.toJSON === 'function') {
      return value.toJSON()
    }
    return value
  },
  pre(value, state, options) {
    return value
  },
  rules: [{
github wavesplatform / data-service / src / services / presets / pg / searchWithPagination / commonFilterSchemas.js View on Github external
const rawJoi = require('joi');
const Cursor = require('../../../_common/pagination/cursor');
const DATE0 = new Date(0);
const Joi = rawJoi.extend(joi => ({
  base: joi.string().base64({ paddingRequired: false }),
  name: 'cursor',
  rules: [
    {
      name: 'valid',
      validate(_, value, state, options) {
        const [ts, id, sort] = Cursor.decode(value);
        if (!ts || !id || !sort) {
          // Generate an error, state and options need to be passed
          return this.createError('cursor.wrong', { v: value }, state, options);
        }
        return value; // Everything is OK
      },
    },
  ],
}));
github wavesplatform / data-service / src / resolvers / transactions / exchange / validation / schema / many.js View on Github external
const rawJoi = require('joi');
const { output } = require('./common');

const Cursor = require('../../../../pagination/cursor');
const DATE0 = new Date(0);
const Joi = rawJoi.extend(joi => ({
  base: joi.string().base64({ paddingRequired: false }),
  name: 'cursor',
  rules: [
    {
      name: 'valid',
      validate(params, value, state, options) {
        const [ts, id, sort] = Cursor.decode(value);
        if (!ts || !id || !sort) {
          // Generate an error, state and options need to be passed
          return this.createError('cursor.wrong', { v: value }, state, options);
        }
        return value; // Everything is OK
      },
    },
  ],
}));
github ArkEcosystem / core / packages / crypto / src / validation / engine.ts View on Github external
public static init(): void {
        this.joi = Joi.extend(extensions);
    }
github HelpAssistHer / help-assist-her / server / util / object-id-validator.js View on Github external
'use strict'

const Joi = require('joi')
const mongoose = require('mongoose')

const objectIdJoi = Joi.extend({
	base: Joi.string(),
	name: 'objectId',
	language: {
		isValid: 'needs to be a valid MongoDB ObjectId',
	},
	rules: [
		{
			name: 'isValid',
			validate(params, value, state, options) {
				if (!mongoose.Types.ObjectId.isValid(value)) {
					return this.createError(
						'objectId.isValid',
						{ v: value },
						state,
						options,
					)
github nodejs / security-wg / tools / vuln_valid / vulnValidate.js View on Github external
"use strict";
const joi = require("joi").extend(require("joi-extension-semver"));
const path = require("path");
const fs = require("fs");

const vulnPaths = require("../../vuln").paths;
const coreModel = joi.object().keys({
  cve: joi
    .array()
    .items(joi.string().regex(/CVE-\d{4}-\d+/))
    .required(),
  ref: joi
    .string()
    .uri()
    .optional(),
  vulnerable: joi
    .semver()
    .validRange()
github weareopensource / Node / modules / users / models / user.schema.js View on Github external
/**
 * Module dependencies
 */
const joiZxcvbn = require('joi-zxcvbn');
const PlainJoi = require('joi');
const path = require('path');

const Joi = PlainJoi.extend(joiZxcvbn(PlainJoi));
const config = require(path.resolve('./config'));

/**
 * User Data Schema
 */
const UserSchema = Joi.object().keys({
  sub: Joi.string().trim().default(''),
  firstName: Joi.string().alphanum().min(1).max(30)
    .trim()
    .required(),
  lastName: Joi.string().alphanum().min(1).max(30)
    .trim()
    .required(),
  displayName: Joi.string().trim(),
  email: Joi.string().email({ minDomainAtoms: 2 }),
  profileImageURL: Joi.string(),
github bokub / linky-cli / src / validate.js View on Github external
const BaseJoi = require('joi');
const DateExtension = require('joi-date-extensions');

const Joi = BaseJoi.extend(DateExtension);

const schema = Joi.object().keys({
	flags: Joi.object().keys({
		user: Joi.string().email().required(),
		password: Joi.string().required(),
		start: Joi.date().format('DD/MM/YYYY'),
		end: Joi.date().format('DD/MM/YYYY')
	}),
	input: Joi.array().items(Joi.string().equal('hour', 'day', 'month', 'year').required()).length(1)
}).options({stripUnknown: true});

module.exports = input => {
	if (input.input.length === 0) {
		return {error: true, message: 'You need to choose between "hour", "day", "month" and "year"'};
	}
	const res = Joi.validate(input, schema);