cast.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. };