How to use the joi.string 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 muraljs / joiql / examples / artsy / index.js View on Github external
const joiql = require('../../')
const app = require('express')()
const graphqlHTTP = require('express-graphql')
const Article = require('./models/article')
const Artwork = require('./models/artwork')
const Artist = require('./models/artist')
const Show = require('./models/show')
const { object, string } = require('joi')
const artsyXapp = require('artsy-xapp')
const cache = require('./middleware/cache')
const rest = require('./middleware/rest')

const api = joiql({
  query: {
    artwork: object(Artwork.Attrs).meta({ args: { id: string().required() } }),
    article: object(Article.Attrs).meta({ args: { id: string().required() } }),
    artist: object(Artist.Attrs).meta({ args: { id: string().required() } }),
    show: object(Show.Attrs).meta({ args: { id: string().required() } })
  }
})

// JoiQL Middleware
api.on('query', cache.get)
api.on('query', rest.fetch)
api.on('query.artwork.fields.artist', Artwork.resolveArtist)
api.on('query', cache.set)

// Start express server
app.use('/graphql', graphqlHTTP({
  schema: api.schema,
  graphiql: true
}))
github magda-io / magda / magda-search-api-node / src / createApiRouter.ts View on Github external
// const status = {
    //     probes: {
    //         database: database.check.bind(database),
    //         auth: createServiceProbe(options.authApiUrl)
    //     }
    // };
    // installStatusRouter(router, status);

    const baseValidators = {
        start: joi.number().default(0),
        limit: joi.number().default(10),
        publisher: joi
            .array()
            .items(joi.string())
            .optional(),
        dateFrom: joi.string().optional(),
        dateTo: joi.string().optional(),
        region: joi
            .alternatives([joi.array().items(joi.string()), joi.string()])
            .optional(),
        format: joi
            .array()
            .items(joi.string())
            .optional(),
        publishingState: joi
            .array()
            .items(joi.string())
            .optional()
    };

    const facetQueryValidation = {
        query: {
github bentonam / fakeit / test / fixtures / models / music / validation / countries.data.js View on Github external
var is = require('joi');

module.exports = is.object({
  _id: is.string(),
  gdp: is.number(),
  country_code: is.string().uppercase().length(2),
  name: is.string(),
  updated: is.date(),
  'region-number': is.string(),
  population: is.number(),
});
github bentonam / fakeit / test / fixtures / models / music / validation / countries.model.js View on Github external
var utils = require('../../../../utils.js');
var is = require('joi');

module.exports = is.object({
  name: 'Countries',
  type: 'object',
  file: is.string(),
  root: is.string(),
  is_dependency: is.boolean(),
  dependants: is.array(),
  key: '_id',
  seed: 0,
  data: {
    min: 0,
    max: 0,
    count: 1,
    inputs: is.array().items(is.string()).length(1),
    dependencies: is.array().length(0),
    pre_run: is.func(),
    pre_build: is.func(),
  },
  properties: {
    _id: utils.check('string', 'The document id', { post_build: is.func() }),
github CoderDojo / cp-zen-platform / web / api / mastermind / dojo.js View on Github external
deleted: Joi.number()
              .valid(0)
              .valid(1),
            deletedBy: Joi.any(),
            deletedAt: Joi.any(),
            private: Joi.number()
              .valid(0)
              .valid(1),
            urlSlug: Joi.string(),
            continent: joiValidator.continent(),
            alpha2: joiValidator.alpha2(),
            alpha3: joiValidator.alpha3(),
            address1: Joi.string(),
            address2: Joi.any(),
            countryNumber: Joi.number().integer(),
            countryName: Joi.string(),
            admin1Code: Joi.any(),
            admin1Name: Joi.any(),
            admin2Code: Joi.any(),
            admin2Name: Joi.any(),
            admin3Code: Joi.any(),
            admin3Name: Joi.any(),
            admin4Code: Joi.any(),
            admin4Name: Joi.any(),
            placeGeonameId: Joi.any(),
            placeName: Joi.string(),
            userInvites: Joi.alternatives().try(
              Joi.array().items(
                Joi.object().keys({
                  id: Joi.string(),
                  email: joiValidator.mail(),
                  userType: Joi.string(),
github Code4HR / okcandidate-platform / api / policies / SurveyResult.js View on Github external
name: 'string',
    rules: [
        {
            name: 'phone',
            validate(params, value, state, options) {
                const phone = value.replace(/\D/g, '');
                if (phone.length === 10) {
                    return value;
                }
            }
        }
    ]
}));

const electionReminderSchema = Joi.object().keys({
    email: Joi.string().email(),
    phone: customJoi.string().phone()
}).or('email', 'phone');

const options = {
    abortEarly: false,
    language: {
    }
};

/**
 * @module SurveyResultPolicy
 * @description A policy for working with surveys
 */
module.exports = class SurveyPolicy extends Policy {

    electionReminder(request, reply) {
github paralect / ship / api / src / resources / user / user.schema.js View on Github external
const Joi = require('joi');

const userSchema = {
  _id: Joi.string(),
  createdOn: Joi.date(),
  firstName: Joi.string().required(),
  lastName: Joi.string().required(),
  email: Joi.string().email({ minDomainAtoms: 2 }),
  passwordHash: Joi.string(),
  signupToken: Joi.string(),
  resetPasswordToken: Joi.string()
    .allow(null)
    .default(null),
  isEmailVerified: Joi.boolean().default(false),
  oauth: Joi.object().keys({
    google: Joi.boolean().default(false),
  }),
};

module.exports = obj => Joi.validate(obj, userSchema, { allowUnknown: true });
github icodeforlove / node-cloudflare / index.js View on Github external
userBillingHistoryGetAll: function ($deferred, query, raw) {
		$deferred.resolve(this._request({
			query: {
				auto_pagination: Joi.boolean(),
				order: Joi.string().valid('type', 'occured_at', 'action'),
				type: Joi.string(),
				occured_at: Joi.string(),
				action: Joi.string()
			}
		}, {
			callee: 'userBillingHistoryGetAll',
			method: 'GET',
			path: 'user/billing/history',
			required: 'result',
			query: query || {}
		}, raw));
	},
github tyrchen / transformer / lib / processors / HtmlProcessor.js View on Github external
use(rule) {
    const schema = Joi.object().keys({
      name: Joi.string().required(),
      filters: Joi.array().items(Joi.func(), Joi.array().items(Joi.func())).required(),
      results: Joi.array().required(),
      transform: Joi.func().required(),
    });

    Joi.validate(rule, schema, (err, value) => {
      if (err) {
        logger.error(err, value);
        throw err;
      }
    });

    this._rules.push(rule);
    return this;
  }
github GIScience / openrouteservice-js / src / schemas / geocode / OrsStructuredGeocodeSchema.js View on Github external
'county',
          'macrocounty',
          'region',
          'macroregion',
          'county',
          'coarse'
        )
      )
      .description(
        ' The administrative hierarchy level for the query. Refer to https://github.com/pelias/documentation/blob/master/search.md#filter-by-data-type for details.'
      ),

    size: Joi.number()
      .description('The amount of results returned. Default 10')
      .default(10),
    host: Joi.string()
      .default('https://api.openrouteservice.org/geocode/search/structured')
      .description('Determines the API url.'),
    mime_type: Joi.string()
      .valid(['application/json'])
      .default('application/json')
      .description('Determines the mime type of request.')
  })
  .unknown(false)

export default schema