cast.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. 'use strict';
  2. const Hoek = require('@hapi/hoek');
  3. const Ref = require('./ref');
  4. const internals = {};
  5. exports.schema = function (Joi, config) {
  6. if (config !== undefined && config !== null && typeof config === 'object') {
  7. if (config.isJoi) {
  8. return config;
  9. }
  10. if (Array.isArray(config)) {
  11. return Joi.alternatives().try(config);
  12. }
  13. if (config instanceof RegExp) {
  14. return Joi.string().regex(config);
  15. }
  16. if (config instanceof Date) {
  17. return Joi.date().valid(config);
  18. }
  19. return Joi.object().keys(config);
  20. }
  21. if (typeof config === 'string') {
  22. return Joi.string().valid(config);
  23. }
  24. if (typeof config === 'number') {
  25. return Joi.number().valid(config);
  26. }
  27. if (typeof config === 'boolean') {
  28. return Joi.boolean().valid(config);
  29. }
  30. if (Ref.isRef(config)) {
  31. return Joi.valid(config);
  32. }
  33. Hoek.assert(config === null, 'Invalid schema content:', config);
  34. return Joi.valid(null);
  35. };
  36. exports.ref = function (id) {
  37. return Ref.isRef(id) ? id : Ref.create(id);
  38. };