{"version":3,"sources":["../src/shape.js"],"names":["shapeValidator","shapeTypes","TypeError","shape","props","propName","componentName","location","propValue","rest","key","checker","error","isRequired","shapeRequired"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEe,SAASA,cAAT,CAAwBC,UAAxB,EAAoC;AACjD,MAAI,CAAC,+BAAcA,UAAd,CAAL,EAAgC;AAC9B,UAAM,IAAIC,SAAJ,CAAc,+BAAd,CAAN;AACD;;AAED,WAASC,KAAT,CAAeC,KAAf,EAAsBC,QAAtB,EAAgCC,aAAhC,EAA+CC,QAA/C,EAAkE;AAAA,QAC5CC,SAD4C,GAC9BJ,KAD8B,CACvDC,QADuD;;AAEhE,QAAIG,SAAS,IAAI,IAAjB,EAAuB;AACrB,aAAO,IAAP;AACD,KAJ+D,CAKhE;AACA;;;AANgE,sCAANC,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAOhE,SAAK,IAAMC,GAAX,IAAkBT,UAAlB,EAA8B;AAC5B,UAAMU,OAAO,GAAGV,UAAU,CAACS,GAAD,CAA1B;;AACA,UAAIC,OAAJ,EAAa;AACX,YAAMC,KAAK,GAAGD,OAAO,MAAP,UACZH,SADY,EAEZE,GAFY,EAGZJ,aAHY,EAIZC,QAJY,SAKTE,IALS,EAAd;;AAOA,YAAIG,KAAJ,EAAW;AACT,iBAAOA,KAAP;AACD;AACF;AACF;;AACD,WAAO,IAAP;AACD;;AAEDT,EAAAA,KAAK,CAACU,UAAN,GAAmB,SAASC,aAAT,CAAuBV,KAAvB,EAA8BC,QAA9B,EAAwCC,aAAxC,EAAgE;AAAA,QAC7DE,SAD6D,GAC/CJ,KAD+C,CACxEC,QADwE;;AAEjF,QAAIG,SAAS,IAAI,IAAjB,EAAuB;AACrB,aAAO,IAAIN,SAAJ,WAAiBI,aAAjB,eAAmCD,QAAnC,mBAAP;AACD;;AAJgF,uCAANI,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAKjF,WAAON,KAAK,MAAL,UAAMC,KAAN,EAAaC,QAAb,EAAuBC,aAAvB,SAAyCG,IAAzC,EAAP;AACD,GAND;;AAQA,SAAO,+BAAcN,KAAd,EAAqB,OAArB,EAA8BF,UAA9B,CAAP;AACD","sourcesContent":["import isPlainObject from './helpers/isPlainObject';\nimport wrapValidator from './helpers/wrapValidator';\n\nexport default function shapeValidator(shapeTypes) {\n if (!isPlainObject(shapeTypes)) {\n throw new TypeError('shape must be a normal object');\n }\n\n function shape(props, propName, componentName, location, ...rest) {\n const { [propName]: propValue } = props;\n if (propValue == null) {\n return null;\n }\n // code adapted from PropTypes.shape: https://github.com/facebook/react/blob/14156e56b9cf18ac86963185c5af4abddf3ff811/src/isomorphic/classic/types/ReactPropTypes.js#L381\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (const key in shapeTypes) {\n const checker = shapeTypes[key];\n if (checker) {\n const error = checker(\n propValue,\n key,\n componentName,\n location,\n ...rest,\n );\n if (error) {\n return error;\n }\n }\n }\n return null;\n }\n\n shape.isRequired = function shapeRequired(props, propName, componentName, ...rest) {\n const { [propName]: propValue } = props;\n if (propValue == null) {\n return new TypeError(`${componentName}: ${propName} is required.`);\n }\n return shape(props, propName, componentName, ...rest);\n };\n\n return wrapValidator(shape, 'shape', shapeTypes);\n}\n"],"file":"shape.js"}