How to use the joi.valid 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 elifesciences / elife-xpub / config / non-serializable / validations.js View on Github external
const Joi = require('joi')

module.exports = {
  fragment: [
    {
      fragmentType: Joi.valid('manuscript').required(),
      title: Joi.string().required(),
      source: Joi.string(),
      metadata: Joi.any(),
    },
  ],
  user: {
    // make these core fields optional
    email: Joi.string().email(),
    passwordHash: Joi.string(),

    // auth fields
    orcid: Joi.string(),
    oauth: Joi.object({
      accessToken: Joi.string(),
      refreshToken: Joi.string(),
    }),
github contentful / contentful-migration / lib / migration-payloads / validation / schema-validation.js View on Github external
valid: Joi.valid('Asset', 'Entry'),
    when: 'type',
    is: 'Link'
  }),
  validations: Joi.array().unique().items(fieldValidations)
});

const fieldSchema = Joi.object().keys({
  id: Joi.string().required(),
  newId: Joi.string()
    .invalid(Joi.ref('id'))
    .max(64)
    // the empty case will be caught by joi by default, we don't want duplicate errors
    .regex(/^$|^[a-zA-Z][a-zA-Z0-9_]*$/),
  name: Joi.string().required(),
  type: Joi.valid(
    'Symbol',
    'Text',
    'Integer',
    'Number',
    'Date',
    'Boolean',
    'Object',
    'Link',
    'Array',
    'Location'
  ).required(),
  linkType: enforceDependency({
    valid: Joi.valid(['Asset', 'Entry']),
    when: 'type',
    is: 'Link'
  }),
github brave / vault-updater / src / controllers / installer-events.js View on Github external
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

const Joi = require('joi')

let platforms = ['winia32-bc', 'winx64-bc']
let channels = ['dev', 'release', 'nightly', 'beta']

let validator = {
  query: {
    platform: Joi.valid(platforms).required(),
    channel: Joi.valid(channels).required(),
    version: Joi.string().required(),
    ref: Joi.string(),
    event: Joi.string().only(['startup', 'download-complete', 'installer-run']).required()
  }
}

exports.buildEventObject = (request) => {
  return {
    platform: request.query.platform || 'unknown',
    version: request.query.version || 'unknown',
    channel: request.query.channel || 'unknown',
    ref: request.query.ref || 'none',
    event: request.query.event || 'unknown'
  }
}
github koopjs / FeatureServer / test / schemas / index.js View on Github external
maxScale: Joi.number().integer().valid(0),
  defaultVisibility: Joi.boolean().valid(true),
  extent: Joi.object().keys({
    xmin: Joi.number().valid(-180),
    ymin: Joi.number().valid(-90),
    xmax: Joi.number().valid(180),
    ymax: Joi.number().valid(90),
    spatialReference: Joi.object().keys({
      wkid: Joi.number().valid(4326),
      latestWkid: Joi.number().valid(4326)
    })
  }),
  hasAttachments: Joi.boolean().valid(false),
  htmlPopupType: Joi.string().allow('esriServerHTMLPopupTypeNone'),
  displayField: Joi.string().allow('OBJECTID'),
  typeIdField: Joi.valid(null),
  relationships: Joi.array().min(0),
  canModifyLayer: Joi.boolean().valid(false),
  canScaleSymbols: Joi.boolean().valid(false),
  hasLabels: Joi.boolean().valid(false),
  capabilities: Joi.string().allow('Query'),
  maxRecordCount: Joi.number().integer().valid(2000),
  supportsStatistics: Joi.boolean().valid(true),
  supportsAdvancedQueries: Joi.boolean().valid(true),
  supportedQueryFormats: Joi.string().allow('JSON'),
  ownershipBasedAccessControlForFeatures: Joi.object().keys({
    allowOthersToQuery: Joi.boolean().valid(true)
  }),
  supportsCoordinatesQuantization: Joi.boolean().valid(false),
  useStandardizedQueries: Joi.boolean().valid(true),
  advancedQueryCapabilities: Joi.object().keys({
    useStandardizedQueries: Joi.boolean().valid(true),
github koopjs / FeatureServer / test / schemas / index.js View on Github external
type: Joi.string(),
  alias: Joi.string(),
  sqlType: Joi.string().valid('sqlTypeOther'),
  domain: Joi.valid(null),
  defaultValue: Joi.valid(null)
})

const layersTemplateSchema = Joi.object().keys({
  currentVersion: Joi.number().valid(10.51),
  fullVersion: Joi.string().valid('10.5.1'),
  id: Joi.number().integer().valid(0),
  name: Joi.string().allow(''),
  type: Joi.string().allow('Feature Layer'),
  description: Joi.string().allow(''),
  copyrightText: Joi.string().allow(''),
  parentLayer: Joi.valid(null),
  subLayers: Joi.valid(null),
  minScale: Joi.number().integer().valid(0),
  maxScale: Joi.number().integer().valid(0),
  defaultVisibility: Joi.boolean().valid(true),
  extent: Joi.object().keys({
    xmin: Joi.number().valid(-180),
    ymin: Joi.number().valid(-90),
    xmax: Joi.number().valid(180),
    ymax: Joi.number().valid(90),
    spatialReference: Joi.object().keys({
      wkid: Joi.number().valid(4326),
      latestWkid: Joi.number().valid(4326)
    })
  }),
  hasAttachments: Joi.boolean().valid(false),
  htmlPopupType: Joi.string().allow('esriServerHTMLPopupTypeNone'),
github koopjs / FeatureServer / test / schemas / index.js View on Github external
name: Joi.string(),
    type: Joi.string().allow('esriFieldTypeOID', 'esriFieldTypeInteger', 'esriFieldTypeDouble', 'esriFieldTypeString', 'esriFieldTypeDate'),
    alias: Joi.string(),
    length: Joi.optional().when('type', {
      is: Joi.string().allow('esriFieldTypeString', 'esriFieldTypeDate'),
      then: Joi.number().integer().min(0)
    }),
    defaultValue: Joi.any().valid(null),
    domain: Joi.any().valid(null),
    editable: Joi.boolean().valid(false),
    nullable: Joi.boolean().valid(false),
    sqlType: Joi.string().valid('sqlTypeOther', 'sqlTypeDouble', 'sqlTypeInteger')
  })).min(0),
  drawingInfo: Joi.object().keys({
    renderer: Joi.object().keys({}),
    labelingInfo: Joi.valid(null)
  })
})

const oidTemplateSchema = Joi.object().keys({
  name: Joi.string().valid('OBJECTID'),
  type: Joi.string().valid('esriFieldTypeOID'),
  alias: Joi.string().valid('OBJECTID'),
  sqlType: Joi.string().valid('sqlTypeInteger'),
  domain: Joi.valid(null),
  defaultValue: Joi.valid(null)
})

const serverTemplateSchema = Joi.object().keys({
  currentVersion: Joi.number().valid(10.51),
  fullVersion: Joi.string().valid('10.5.1'),
  serviceDescription: Joi.string().allow(''),
github laino / final-pm / lib / config / application-schema.js View on Github external
"ready-on": Joi.string().valid("listen", "message", "instant"),
    "stop-signal": Joi.string().valid("SIGINT", "SIGTERM", "disconnect", "message"),
    "kill-signal": Joi.string().valid("SIGTERM", "SIGKILL"),
    "instances": Joi.number().integer().positive().max(65536),
    "max-instances": Joi.number().integer().max(65536),
    "unique-instances": Joi.boolean(),
    "restart-crashing": Joi.boolean(),
    "restart-new-crashing": Joi.boolean(),
    "restart-crashing-delay": Joi.number().integer().positive(),
    "logger": Joi.string(),
    "logger-args": Joi.array().items(Joi.string()),
    "max-buffered-log-bytes": Joi.number().integer().positive().max(Number.MAX_SAFE_INTEGER),
    "max-log-line-length": Joi.number().integer().positive().max(Number.MAX_SAFE_INTEGER),
    "log-retention-timeout": Joi.number().integer(),
    "stop-timeout": Joi.alternatives().try(Joi.number().integer().positive(), Joi.valid(null)),
    "start-timeout": Joi.alternatives().try(Joi.number().integer().positive(), Joi.valid(null))
});
github MoonMail / MoonMail / webhooks-microservice / src / api-utils.js View on Github external
error: 'Not found',
        code: 404
    },
    tokenNotProvided: {
        error: 'Token not provided',
        code: 403
    },
    invalidList: {
        error: 'List not found',
        code: 404
    }
}

const requestParams = {
    [paramsTypes.CREATE]: Joi.object({
        item: Joi.valid(items).required(),
        itemId: Joi.string().min(1).max(50).when('item', { is: itemsWithID, then: Joi.required() }),
        event: Joi.valid(events).required(),
        url: Joi.string().min(3).max(100).required(),
        userId: Joi.string().min(1).max(50).required()
    }),
    [paramsTypes.UPDATE]: Joi.object({
        id: Joi.string().min(1).max(50).required(),
        item: Joi.valid(items),
        itemId: Joi.string().min(1).max(50).when('item', { is: itemsWithID, then: Joi.required() }),
        event: Joi.valid(events),
        url: Joi.string().min(3).max(100),
        wb: Joi.string().min(1).max(50)
    }),
    [paramsTypes.REMOVE]: Joi.object({
        id: Joi.string().min(1).max(50).required()
    }),
github plouc / nivo / api / src / mapping / sankey.js View on Github external
.items(
                            Joi.object()
                                .keys({
                                    source: Joi.alternatives().try(Joi.string(), Joi.number()),
                                    target: Joi.alternatives().try(Joi.string(), Joi.number()),
                                    value: Joi.number()
                                        .min(0)
                                        .required(),
                                })
                                .unknown()
                        )
                        .required(),
                })
                .required(),

            layout: Joi.valid('horizontal', 'vertical'),
            align: Joi.any().valid(sankeyAlignmentPropKeys),
            sort: Joi.valid('auto', 'input', 'ascending', 'descending'),

            nodeOpacity: Joi.number()
                .min(0)
                .max(1),
            nodeWidth: Joi.number().min(1),
            nodePaddingX: Joi.number().positive(),
            nodePaddingY: Joi.number().positive(),
            nodeBorderWidth: Joi.number().min(0),
            nodeBorderColor: inheritedColor,

            linkOpacity: Joi.number()
                .min(0)
                .max(1),
            linkContract: Joi.number(),
github bangumi-data / bangumi-data / script / schema / item.js View on Github external
type: Joi.string().valid(validType).required(),
    lang: Joi.string().valid(validLang).required(),
    officialSite: Joi.string().uri().required().allow(''),
    begin: ISOJoi.string().isoString().required().allow(''),
    end: ISOJoi.string().isoString().required().allow(''),
    comment: Joi.string().trim().allow(''),
    sites: Joi.array().items(Joi.object()
        .keys({
            site: Joi.string().valid(Object.keys(allSite)),
            id: Joi.string().trim().when('url', {
                is: Joi.forbidden(),
                then: Joi.required()
            }),
            url: Joi.string().uri()
        })
        .when(Joi.object().keys({ site: Joi.valid(Object.keys(onairSite)) }).unknown(), {
            then: Joi.object().keys({
                begin: ISOJoi.string().isoString().required().allow(''),
                comment: Joi.string().trim().allow('')
            })
        }))
});