UNPKG

@conform-to/yup

Version:

Conform helpers for integrating with yup

68 lines (61 loc) 1.92 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var dom = require('@conform-to/dom'); var yup = require('yup'); var constraint = require('./constraint.js'); function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var yup__namespace = /*#__PURE__*/_interopNamespace(yup); function parseWithYup(payload, config) { return dom.parse(payload, { resolve(payload, intent) { var schema = typeof config.schema === 'function' ? config.schema(intent) : config.schema; var resolveData = value => ({ value }); var resolveError = error => { if (error instanceof yup__namespace.ValidationError) { return { error: error.inner.reduce((result, e) => { var _e$path, _result$name; var name = (_e$path = e.path) !== null && _e$path !== void 0 ? _e$path : ''; result[name] = [...((_result$name = result[name]) !== null && _result$name !== void 0 ? _result$name : []), e.message]; return result; }, {}) }; } throw error; }; if (!config.async) { try { var data = schema.validateSync(payload, { abortEarly: false }); return resolveData(data); } catch (error) { return resolveError(error); } } return schema.validate(payload, { abortEarly: false }).then(resolveData).catch(resolveError); } }); } exports.getYupConstraint = constraint.getYupConstraint; exports.parseWithYup = parseWithYup;