api-check.min.js.map 107 KB

1
  1. {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///api-check.min.js","webpack:///webpack/bootstrap 494eb46361cc8c5a6356","webpack:///./index.js","webpack:///../~/json-stringify-safe/stringify.js","webpack:///./apiCheckUtil.js","webpack:///./apiCheck.js","webpack:///./checkers.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","getSerialize","fn","decycle","seen","keys","key","value","getPath","ret","indexOf","push","index","path","unshift","join","stringify","obj","spaces","JSON","copy","type","typeOf","daCopy","undefined","each","val","Array","isArray","RegExp","getCheckerDisplay","checker","options","display","short","shortType","getCheckerType","displayName","name","_ref","__apiCheckData","typeTypes","_defineProperty","arrayify","eachArry","apply","arguments","eachObj","iterator","context","hasOwn","Object","prototype","hasOwnProperty","length","i","isError","Error","list","arry","finalJoin","slice","last","pop","getError","location","checkerType","stringType","nAtL","t","tName","tLocation","thing","undef","setupChecker","properties","disabled","getNoop","isNoop","prop","notRequired","getRequiredVersion","notNullable","addNullable","notOptional","addOptional","requiredChecker","isOptional","copyProps","originalChecker","optionalCheck","optional","fixType","nullableCheck","isNullable","nullable","checkerCopy","src","dest","noop","defineProperty","enumerable","configurable","writable","checkerHelpers","getApiCheckInstance","apiCheck","api","args","output","config","globalConfig","apiTypes","argTypes","passed","message","failed","checkApiCheckApi","messages","checkEnoughArgs","checkApiWithArgs","returnObject","getTypes","getErrorMessage","checkApiArgs","isArrayOrArgs","prefix","errors","apiCheckApis","handleErrorMessage","getApiCheck","shouldThrow","result","console","warn","getPrefix","onlyPrefix","gOut","trim","getSuffix","suffix","onlySuffix","getUrl","url","docsBaseUrl","urlSuffix","passedAndShouldHavePassed","buildMessageFromApiAndArgs","replaceFunctionWithName","replacedItems","getObjectString","types","generateMessage","n","useS","newLine","passedArgs","_getTypes","map","specified","terse","verbose","addHelpers","arg","getArgDisplay","extraCheckers","apiCheckApiCheck","getApiCheckInstanceCheckers","additionalProperties","throw","utils","apiCheckUtil","wrapper","checkers","getCheckers","checkerIndex","argIndex","res","lastChecker","argName","argFailed","skipPreviousChecker","getCheckerErrorMessage","checkerTypeType","apiCheckDataChecker","shape","string","bool","asFunc","func","withProperties","asShape","wrongShape","oneOfType","checkerHelp","getCheckerHelp","help","requiredArgs","filter","a","gottenArgs","hasKeys","getDisplayIfNotGotten","getDisplay","cName","constructor","argDisplay","v","k","getApiCheckApis","os","checkerFnChecker","strict","objectOf","typeOrArrayOf","any","internalChecker","typeOfCheckGetter","lType","toLowerCase","funcCheckGetter","functionChecker","apiError","shapeChecker","notFunction","objectCheckGetter","nullType","objectNullOkChecker","objectChecker","nullOk","instanceCheckGetter","classToCheck","oneOfCheckGetter","enums","enum","enm","some","oneOfTypeCheckGetter","checkersDisplay","arrayOfCheckGetter","shortCheckerDisplay","array","every","item","objectOfCheckGetter","checkerDisplay","notObject","object","allTypesSuccess","typeOrArrayOfCheckGetter","arrayOf","getShapeCheckGetter","shapeCheckGetter","nonObject","modifyTypeDisplayToHelpOut","required","addHelper","property","objectMessage","stringMessage","error","toUpperCase","parentRequired","strictType","shapeTypes","isObject","shapePropError","shapeError","allowedProperties","extraProps","getRequiredIfNotChecker","all","otherProps","propChecker","props","ifProps","description","getTypeForShapeChild","propName","propExists","iteration","otherPropsExist","otherProp","ifNot","onlyIf","othersPresent","requiredIfNot","argumentsCheckerGetter","number","anyCheckGetter","nullCheckGetter","rangeCheckGetter","min","max","emptyObjectCheckGetter","emptyObject","instanceOf","oneOf","range","null","_require"],"mappings":";;CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,OAAAH,GACA,gBAAAC,SACAA,QAAA,SAAAD,IAEAD,EAAA,SAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAASL,EAAQD,EAASM,GAE/B,YExDDL,GAAOD,QAAUM,EAAQ,IF8DnB,SAASL,GG5Df,QAAAc,GAAAC,EAAAC,GACA,GAAAC,MAAAC,IAIA,OAHAF,MAAA,SAAAG,EAAAC,GACA,mBAAAC,EAAAD,EAAAH,EAAAC,GAAA,KAEA,SAAAC,EAAAC,GACA,GAAAE,GAAAF,CAUA,OATA,gBAAAA,QACA,KAAAH,EAAAM,QAAAH,GACAE,EAAAN,EAAAG,EAAAC,IAEAH,EAAAO,KAAAJ,GACAF,EAAAM,KAAAL,KAGAJ,IAAAO,EAAAP,EAAAI,EAAAG,IACAA,GAIA,QAAAD,GAAAD,EAAAH,EAAAC,GACA,GAAAO,GAAAR,EAAAM,QAAAH,GACAM,GAAAR,EAAAO,GACA,KAAAA,IAAeA,GAAA,EAAYA,IAC3BR,EAAAQ,GAAAC,EAAA,MAAAN,IACAA,EAAAH,EAAAQ,GACAC,EAAAC,QAAAT,EAAAO,IAGA,WAAAC,EAAAE,KAAA,KAGA,QAAAC,GAAAC,EAAAf,EAAAgB,EAAAf,GACA,MAAAgB,MAAAH,UAAAC,EAAAhB,EAAAC,EAAAC,GAAAe,GAnCA/B,EAAAD,QAAA8B,EAsCAA,EAAAf,gBHqEM,SAASd,EAAQD,EAASM,GAE/B,YIlGD,SAAS4B,GAAKH,GACZ,GAAII,GAAOC,EAAOL,GACdM,EAAMC,MACV,IAAa,UAATH,EACFE,SACK,IAAa,WAATF,EAGT,MAAOJ,EAFPM,MAOF,MAHAE,GAAKR,EAAK,SAACS,EAAKpB,GACdiB,EAAOjB,GAAOoB,IAETH,EAIT,QAASD,GAAOL,GACd,MAAIU,OAAMC,QAAQX,GACT,QACEA,YAAeY,QACjB,eAEOZ,GAIlB,QAASa,GAAkBC,EAASC,GAElC,GAAIC,GAAOT,OACPU,EAAQF,GAAWA,UAQvB,OANEC,GADEC,GAASH,EAAQI,UACTJ,EAAQI,WACRD,GAAiC,gBAAjBH,GAAQV,MAAsC,aAAjBU,EAAQV,KACrDe,EAAeL,EAASC,GAExBI,EAAeL,EAASC,IAAYD,EAAQM,aAAeN,EAAQO,KAKjF,QAASF,GAAcG,EAASP,GJiH7B,GIjHsBX,GAAIkB,EAAJlB,IACvB,IAAoB,kBAATA,GAAqB,CAC9B,GAAImB,GAAiBnB,EAAKmB,eACtBC,EAAYpB,EAAKW,EACrBX,GAAIqB,GACFF,kBACCA,EAAenB,KAAOoB,GAG3B,MAAOpB,GAGT,QAASsB,GAAS1B,GAChB,MAAKA,GAEMU,MAAMC,QAAQX,GAChBA,GAECA,MAKZ,QAASQ,GAAKR,GACZ,MAAIU,OAAMC,QAAQX,GACT2B,EAAQC,MAAArB,OAAIsB,WAEZC,EAAOF,MAAArB,OAAIsB,WAItB,QAASC,GAAQ9B,EAAK+B,EAAUC,GAC9B,GAAIxC,GACAyC,EAASC,OAAOC,UAAUC,cAC9B,KAAK,GAAI/C,KAAOW,GACd,GAAIiC,EAAOrD,KAAKoB,EAAKX,KACnBG,EAAMuC,EAASnD,KAAKoD,EAAShC,EAAIX,GAAMA,EAAKW,GACxCR,KAAQ,GACV,MAAOA,EAIb,QAAO,EAGT,QAASmC,GAAS3B,EAAK+B,EAAUC,GAG/B,IAAK,GAFDxC,GACA6C,EAASrC,EAAIqC,OACRC,EAAI,EAAOD,EAAJC,EAAYA,IAE1B,GADA9C,EAAMuC,EAASnD,KAAKoD,EAAShC,EAAIsC,GAAIA,EAAGtC,GACpCR,KAAQ,EACV,MAAOA,EAGX,QAAO,EAGT,QAAS+C,GAAQvC,GACf,MAAOA,aAAewC,OAGxB,QAASC,GAAKC,EAAM5C,EAAM6C,GACxBD,EAAOhB,EAASgB,EAChB,IAAIvC,GAAOuC,EAAKE,QACZC,EAAO1C,EAAK2C,KAIhB,OAHoB,KAAhB3C,EAAKkC,SACPvC,EAAO,KAEFK,EAAKL,KAAKA,IAAK,IAAMK,EAAKkC,OAASvC,EAAO6C,EAAY,IAAKE,GAIpE,QAASE,GAAS1B,EAAM2B,EAAUC,GACL,kBAAhBA,KACTA,EAAcA,GAAahC,SAAO,IAEpC,IAAMiC,GAAoC,gBAAhBD,GAA2BA,EAAclD,EAAUkD,EAC7E,OAAO,IAAIT,OAAK,GAAIW,EAAK9B,EAAM2B,GAAS,YAAYI,EAAEF,IAGxD,QAASC,GAAK9B,EAAM2B,GAClB,GAAMK,GAAQD,EAAE/B,GAAQ,SACpBiC,EAAaN,EAAgB,OAASI,EAAEJ,GAAhB,EAC5B,UAAUK,EAAQC,EAGpB,QAASF,GAAEG,GACT,MAAO,IAAMA,EAAQ,IAGvB,QAASC,GAAMD,GACb,MAAwB,mBAAVA,GAWhB,QAASE,GAAa3C,EAAS4C,EAAYC,GA+BzC,MA7BIA,KACF7C,EAAU8C,IACV9C,EAAQ+C,QAAS,GAGS,gBAAjB/C,GAAQV,OACjBU,EAAQI,UAAYJ,EAAQV,MAI9BI,EAAKkD,EAAY,SAACI,EAAMzC,GJ+GrB,MI/G8BP,GAAQO,GAAQyC,IAE5ChD,EAAQM,cACXN,EAAQM,YAAW,YAAegC,EAAEtC,EAAQI,WAAaJ,EAAQV,MAAQU,EAAQO,MAAK,iBAInFP,EAAQiD,cACXjD,EAAUkD,EAAmBlD,EAAS6C,IAGnC7C,EAAQmD,aACXC,EAAYpD,EAAS6C,GAGlB7C,EAAQqD,aACXC,EAAYtD,EAAS6C,GAGhB7C,EAGT,QAASkD,GAAmBlD,EAAS6C,GACnC,GAAIU,GAAkBV,EAAWC,IAAY,SAAyBnD,EAAKY,EAAM2B,EAAUhD,GACzF,GAAIwD,EAAM/C,KAASK,EAAQwD,WAAY,CACrC,GAAIhB,GAAYN,EAAQ,OAAUI,EAAEJ,GAAc,GAC5C5C,EAAOS,EAAkBC,GAAUG,SAAO,IAC1CiC,EAA6B,gBAAT9C,GAAoBA,EAAOL,EAAUK,EAC/D,OAAO,IAAIoC,OAAK,YAAaY,EAAE/B,GAAK,iBAAiBiC,EAAS,aAAaF,EAAEF,IAE7E,MAAOpC,GAAQL,EAAKY,EAAM2B,EAAUhD,GAKxC,OAFAuE,GAAUzD,EAASuD,GACnBA,EAAgBG,gBAAkB1D,EAC3BuD,EAGT,QAASD,GAAYtD,EAAS6C,GAC5B,GAAIc,GAAgBd,EAAWC,IAAY,SAAuBnD,EAAKY,EAAM2B,EAAUhD,GACrF,MAAKwD,GAAM/C,GAAX,OACSK,EAAQL,EAAKY,EAAM2B,EAAUhD,GAIxCuE,GAAUzD,EAAS2D,GAEnBA,EAAcH,YAAa,EAC3BG,EAAcrD,YAAcN,EAAQM,YAAc,cAClDqD,EAAcD,gBAAkB1D,EAIhCA,EAAQ4D,SAAWD,EAEnBE,EAAQ7D,EAASA,EAAQ4D,UAG3B,QAASR,GAAYpD,EAAS6C,GAC5B,GAAIiB,GAAgBjB,EAAWC,IAAY,SAAuBnD,EAAKY,EAAM2B,EAAUhD,GACrF,MAAY,QAARS,EACKK,EAAQL,EAAKY,EAAM2B,EAAUhD,GADtC,OAKFuE,GAAUzD,EAAS8D,GAEnBA,EAAcC,YAAa,EAC3BD,EAAcxD,YAAcN,EAAQM,YAAc,cAClDwD,EAAcJ,gBAAkB1D,EAGhCA,EAAQgE,SAAWF,EAEnBD,EAAQ7D,EAASA,EAAQgE,UACpBhE,EAAQqD,aACXC,EAAYtD,EAAQgE,SAAUnB,GAIlC,QAASgB,GAAQ7D,EAASiE,GAIxB,GAAgC,gBAArBA,GAAY3E,KACrB2E,EAAY3E,KAAOD,EAAK4E,EAAY3E,UAC/B,IAAgC,kBAArB2E,GAAY3E,KAM5B,YADA2E,EAAY3E,MAAQ,cAJpB2E,GAAY3E,KAAO,WACjB,MAAOU,GAAQV,KAAIwB,MAAZd,EAAgBe,YAM3BkD,EAAY3E,KAAKmB,eAAiBpB,EAAKW,EAAQV,KAAKmB,oBACpDwD,EAAY3E,KAAKmB,eAAemD,UAAW,EAM7C,QAASH,GAAUS,EAAKC,GACtBzE,EAAK0B,OAAO9C,KAAK4F,GAAM,SAAA3F,GJ8GpB,MI9G2B4F,GAAK5F,GAAO2F,EAAI3F,KAGhD,QAAS6F,MAGT,QAAStB,KAEP,MAAO,cJrKR,GAAInC,GAAkB,SAAUzB,EAAKX,EAAKC,GAAS,MAAO4C,QAAOiD,eAAenF,EAAKX,GAAOC,MAAOA,EAAO8F,YAAY,EAAMC,cAAc,EAAMC,UAAU,KI/GrJvF,EAAYxB,EAAQ,GACpBgH,GACJnB,cAAaJ,qBAAoBP,eAAcS,cAGjDhG,GAAOD,SACLuC,OAAML,OAAME,SAAQqB,WAAUb,oBAC9B0B,UAASE,OAAMM,WAAUI,OAAMC,IAAGI,QAAO+B,iBACzCL,SJ+XI,SAAShH,EAAQD,EAASM,GAE/B,YKpXD,SAASiH,KAyCP,QAASC,GAASC,EAAKC,EAAMC,GAE3B,GAAIH,EAASI,OAAOlC,UAAYzF,EAAOD,QAAQ6H,aAAanC,SAC1D,OACEoC,YAAcC,YACdC,QAAQ,EAAMC,QAAS,GACvBC,QAAQ,EAGZC,GAAiBvE,WACZnB,MAAMC,QAAQ+E,GAKjBC,EAAOjF,MAAMyB,UAAUS,MAAMhE,KAAK+G,IAJlCD,GAAOA,GACPC,GAAQA,GAKV,IAAIU,GAAWC,EAAgBZ,EAAKC,EAC/BU,GAAShE,SAEZgE,EAAWE,EAAiBb,EAAKC,GAGnC,IAAIa,GAAeC,EAASf,EAAKC,EAUjC,OATIU,GAAShE,QACXmE,EAAaN,QAAUT,EAASiB,gBAAgBhB,EAAKC,EAAMU,EAAUT,GACrEY,EAAaL,QAAS,EACtBK,EAAaP,QAAS,IAEtBO,EAAaN,QAAU,GACvBM,EAAaL,QAAS,EACtBK,EAAaP,QAAS,GAEjBO,EAOT,QAASJ,GAAiBO,GACxB,GAAMjB,GAAMiB,EAAa,GACnBhB,EAAOgB,EAAa,GACtBC,EAAgBlG,MAAMC,QAAQgF,IAAUA,GAAwB,gBAATA,IAA4C,gBAAhBA,GAAKtD,MAE5F,IAAI3B,MAAMC,QAAQ+E,KAASkB,EACzB,KAAM,IAAIpE,OAAMkE,EAAgBhB,GAAMC,IACnC,yFACAkB,OAAQ,aAIb,IAAMC,GAASP,EAAiBQ,EAAaX,iBAAkBO,EAC/D,IAAIG,EAAOzE,OAAQ,CACjB,GAAM6D,GAAUT,EAASiB,gBAAgBK,EAAaX,iBAAkBO,EAAcG,GACpFD,OAAQ,YAEVpB,GAASuB,mBAAmBd,GAAS,IAKzC,QAASe,GAAYC,GACnB,MAAO,UAAyBxB,EAAKC,EAAMC,GACzC,GAAIuB,GAAS1B,EAASC,EAAKC,EAAMC,EAEjC,OADAH,GAASuB,mBAAmBG,EAAOjB,QAASgB,GACrCC,GAIX,QAASH,GAAmBd,EAASgB,GACnC,GAAIA,GAAehB,EACjB,KAAM,IAAI1D,OAAM0D,EACPA,IACTkB,QAAQC,KAAKnB,GAIjB,QAASQ,GAAgBhB,EAAKC,GAS5B,QAAS2B,KACP,GAAIT,GAASjB,EAAO2B,UAIpB,OAHKV,KACHA,GAAS,IAAGW,EAAKX,QAAU,IAAE,KAAIjB,EAAOiB,QAAU,KAAKY,QAElDZ,EAGT,QAASa,KACP,GAAIC,GAAS/B,EAAOgC,UAIpB,OAHKD,KACHA,GAAS,IAAG/B,EAAO+B,QAAU,IAAE,KAAIH,EAAKG,QAAU,KAAKF,QAElDE,EAGT,QAASE,KACP,GAAIC,GAAMlC,EAAOkC,GAIjB,OAHKA,KACHA,EAAMN,EAAKO,aAAenC,EAAOoC,YAAa,GAAGR,EAAKO,YAAcnC,EAAOoC,WAAYP,QAElFK,EL0XR,GKxZiCzB,GAAQ9F,SAAAsB,UAAA,MAAKA,UAAA,GAAE+D,EAAMrF,SAAAsB,UAAA,MAAKA,UAAA,GACxD2F,EAAO/B,EAASI,OAAOD,WACvBiB,EAASS,IACTK,EAASD,IACTI,EAAMD,IACN3B,EAAO,oBAAuBG,EAASvG,KAAK,MAC5CmI,EAA4B,OAASC,EAA2BxC,EAAKC,EACzE,QAAO,GAAGkB,EAAM,IAAIX,EAAO,IAAIyB,EAAM,KAAIG,GAAO,IAAKG,GAA4BR,OA2BnF,QAASS,GAA2BxC,EAAKC,GAcvC,QAASwC,GAAwBnI,GAC/BQ,EAAKR,EAAK,SAACS,EAAKY,GAEqB,KAA/B+G,EAAc3I,QAAQgB,KACxB2H,EAAc1I,KAAKe,GACA,gBAARA,GACT0H,EAAwBnI,GACA,kBAARS,KAChBT,EAAIqB,GAAQZ,EAAIW,aAAeX,EAAIY,MAAQ,yBAMnD,QAASgH,GAAgBC,GACvB,MAAKA,IAAUA,EAAMjG,QAEViG,GAA0B,IAAjBA,EAAMjG,SACxBiG,EAAQA,EAAM,IAETvI,EAAUuI,EAAO,KAAM,IAJrB,UAOX,QAASC,KACP,GAAMC,GAAI,KACNC,GAAO,CACP9C,IAAwB,IAAhBA,EAAKtD,SAEboG,EADqB,gBAAZ9C,GAAK,KACLzD,OAAO9C,KAAKuG,EAAK,IAAItD,QAEvB,EAGX,IAAMiG,GAAK,QAAUG,EAAO,IAAM,IAC5BC,EAAUF,EAAIA,CACpB,OAAO,cAAcA,EAAIG,EAAaD,GAAO,YAC/BJ,EAAK,IAAIE,EAAIxC,EAAW0C,IAAS,qBACxBF,EAAIzC,GLwW5B,GAAI6C,GK1ZsBnC,EAASf,EAAKC,GAApCI,EAAQ6C,EAAR7C,SAAUC,EAAQ4C,EAAR5C,SACX7F,EAAOO,MAAMyB,UAAUS,MAAMhE,KAAK+G,OAClCyC,IACJD,GAAwBhI,EACxB,IAAMwI,GAAaN,EAAgBlI,EAInC,OAHA6F,GAAWqC,EAAgBrC,GAC3BD,EAAWsC,EAAgBtC,GAEpBwC,IA8CT,QAAS9B,GAASf,EAAKC,GACrBD,EAAMhE,EAASgE,GACfC,EAAOjE,EAASiE,EAChB,IAAII,GAAWL,EAAImD,IAAI,SAAC/H,EAASnB,GAC/B,GAAMmJ,GAAY5K,EAAOD,QAAQ6H,aAAa1D,eAAe,UAC7D,OAAOvB,GAAkBC,GACvBiI,MAAOD,GAAa5K,EAAOD,QAAQ6H,aAAakD,SAAWvD,EAASI,OAAOmD,QAC3EhJ,IAAK2F,EAAKhG,GACVsJ,YAAY,MAGZjD,EAAWL,EAAKkD,IAAI,SAACK,GL6ZtB,MK7Z8BC,GAAcD,OAC/C,QAAQlD,SAAUA,EAAUD,YLwL7B,GKpZ0BF,GAAMtF,SAAAsB,UAAA,MAAKA,UAAA,GAAEuH,EAAa7I,SAAAsB,UAAA,MAAKA,UAAA,EAEtDwH,IAAoBxH,UAAUQ,QAChCgH,EAAgB,SAAOtC,EAAauC,4BAA6BzH,WAC/DgF,OAAQ,iCAIZ,IAAI0C,IACFC,QAAOvC,GAAY,GACnBI,KAAMJ,GAAY,GAClBP,kBACAM,qBACAnB,QACED,OAAQC,EAAOD,SACbiB,OAAQ,GACRc,OAAQ,GACRI,YAAa,IAEfiB,QAASnD,EAAOmD,UAAW,EAC3BrF,SAAUkC,EAAOlC,WAAY,GAE/B8F,MAAOC,EAGTlJ,GAAK+I,EAAsB,SAACI,EAAStI,GLuZlC,MKvZ2CoE,GAASpE,GAAQsI,GAE/D,IAAMhG,GAAW8B,EAAS9B,UAAYzF,EAAOD,QAAQ6H,aAAanC,QAIlE,OAHAnD,GAAKoJ,EAASC,YAAYlG,GAAW,SAAC7C,EAASO,GLyZ5C,MKzZqDoE,GAASpE,GAAQP,IACzEN,EAAK4I,EAAe,SAACtI,EAASO,GL2Z3B,MK3ZoCoE,GAASpE,GAAQP,IAEjD2E,EA2MT,QAASc,GAAiBb,EAAKC,GAQ7B,IANA,GAAIU,MACAF,GAAS,EACT2D,EAAe,EACfC,EAAW,EACXb,EAAG3I,OAAEO,EAAOP,OAAEyJ,EAAGzJ,OAAE0J,EAAW1J,OAAE2J,EAAO3J,OAAE4J,EAAS5J,OAAE6J,EAAmB7J,QAEnEO,EAAU4E,EAAIoE,OAAqBC,EAAWpE,EAAKtD,QACzD6G,EAAMvD,EAAKoE,KACXG,EAAU,YAAcH,GAAYjJ,EAAQwD,WAAa,cAAgB,IACzE0F,EAAMlJ,EAAQoI,EAAK,QAASgB,GAC5BC,EAAY5H,EAAQyH,GACpBC,EAAcH,GAAgBpE,EAAIrD,OAClC+H,EAAsBN,EAAe,GAAKpE,EAAIoE,EAAe,GAAGxF,WAC3D6F,GAAaF,GAAiBE,IAAcF,IAAgBnJ,EAAQwD,aAAe8F,GACtFjE,GAAS,EACTE,EAAS3G,KAAK2K,EAAuBL,EAAKlJ,EAASoI,KAC1CiB,GAAarJ,EAAQwD,WAC9ByF,IAEA1D,EAAS3G,KAAI,GAAI0D,EAAE8G,GAAQ,UAG/B,OAAO/D,GAASE,KAKlB,QAASiE,GAAgBrH,EAAa5B,EAAM2B,GAC1C,GAAMuH,GAAsBX,EAASY,OACnCpK,KAAMwJ,EAASa,OACf/F,SAAUkF,EAASc,OAEfC,EAASf,EAASgB,KAAKC,gBAAgBtJ,eAAgBgJ,IACvDO,EAAUlB,EAASY,OAAOjJ,eAAgBgJ,IAC1CQ,EAAanB,EAASoB,WAC1BL,EAAQG,IACP7H,EAAa5B,EAAM2B,EACtB,OAAIT,GAAQwI,GACHA,EAEkB,kBAAhB9H,IAA+BA,EAAYb,eAAea,EAAY1B,eAAenB,MAAhG,OACS2C,EAAS1B,EAAM2B,EAAUsH,EAAgBlK,MAIpD,QAASiK,GAAuBL,EAAKlJ,EAASL,GAC5C,GAAIwK,GAAcC,EAAepK,EAASL,EAE1C,OADAwK,GAAcA,EAAc,MAAQA,EAAc,GAC3CjB,EAAI9D,QAAU+E,EAGvB,QAASC,GAAc5J,EAASb,GLga7B,GKhasB0K,GAAI7J,EAAJ6J,IACvB,OAAKA,IAGe,kBAATA,KACTA,EAAOA,EAAK1K,IAEP0K,GALE,GASX,QAAS7E,GAAgBZ,EAAKC,GAC5B,GAAIyF,GAAe1F,EAAI2F,OAAO,SAAAC,GLia3B,OKjaiCA,EAAEhH,YACtC,OAAIqB,GAAKtD,OAAS+I,EAAa/I,QAE3B,6CAA+C+I,EAAa/I,OAAS,kBAAoBsD,EAAKtD,OAAS,QAO7G,QAAS8G,GAAcD,EAAKqC,GA2B1B,QAASC,KACP,MAAOtC,IAAOhH,OAAO9C,KAAK8J,GAAK7G,OAGjC,QAASoJ,KACP,MAAgC,KAA5BF,EAAW9L,QAAQyJ,GACd,cAETqC,EAAW7L,KAAKwJ,GACTwC,EAAWxC,EAAKqC,IAlCzB,GAAMI,GAAQzC,GAAOA,EAAI0C,aAAe1C,EAAI0C,YAAYvK,KAClDjB,EAAOC,EAAO6I,EACpB,IAAa,aAAT9I,EAAqB,CACvB,GAAIoL,IAAW,CACb,GAAI9H,GAAa3D,EAAU0L,IAC3B,OAAOE,GAAQ,sBAAwBjI,EAAa,IAEtD,MAAOiI,GAGT,MAAY,QAARzC,EACK,OAGI,UAAT9I,GAA6B,WAATA,EACfA,EAGLoL,IACKC,IAGFE,EAgBT,QAASD,GAAW1L,EAAKuL,GACvB,GAAIM,KAEJ,OADArL,GAAKR,EAAK,SAAC8L,EAAGC,GLiaX,MKjaiBF,GAAWE,GAAK5C,EAAc2C,EAAGP,KAC9CM,EAGT,QAASG,KACP,GAAMC,GAAKrC,EAASa,OAAO/F,SAErBwH,EAAmBtC,EAASgB,KAAKC,gBACrCzK,KAAMwJ,EAASoB,WAAWpB,EAASa,OAAQH,IAAkB5F,SAC7DtD,YAAawI,EAASa,OAAO/F,SAC7BxD,UAAW0I,EAASa,OAAO/F,SAC3BP,YAAayF,EAASc,KAAKhG,SAC3BX,YAAa6F,EAASc,KAAKhG,WAGvB4E,GACJM,EAASY,OACP5E,OAAQgE,EAASY,OACf3D,OAAQ+C,EAASa,OAAO/F,SACxBiD,OAAQiC,EAASa,OAAO/F,SACxBqD,YAAa6B,EAASa,OAAO/F,WAC5ByH,OAAOzH,SACVsE,QAASY,EAASc,KAAKhG,SACvBf,SAAUiG,EAASc,KAAKhG,WACvByH,OAAOzH,SACVkF,EAASwC,SAASF,GAAkBxH,UAGhC0B,GACJwD,EAASyC,cAAcH,GACvBtC,EAAS0C,IAAI5H,SACbkF,EAASY,OACP3D,OAAQoF,EAAItE,OAAQsE,EAAIjE,UAAWiE,EACnC1E,WAAY0E,EAAIrE,WAAYqE,EAAInE,IAAKmE,IACpCE,OAAOzH,SAGZ,QACEwH,mBACA5C,8BACAlD,oBA5ZJ,GAAMrG,GAAYxB,EAAQ,GACpBmL,EAAenL,EAAQ,GACtBiC,EAAmEkJ,EAAnElJ,KAAM+B,EAA6DmH,EAA7DnH,QAASa,EAAoDsG,EAApDtG,EAAG1B,EAAiDgI,EAAjDhI,SAAUb,EAAuC6I,EAAvC7I,kBAAmBR,EAAoBqJ,EAApBrJ,OAAQ0C,EAAY2G,EAAZ3G,SACxD6G,EAAWrL,EAAQ,GACnBwI,EAAeiF,GAErB9N,GAAOD,QAAUuH,EACjBtH,EAAOD,QAAQwL,MAAQC,EACvBxL,EAAOD,QAAQ6H,cACbkD,SAAS,EACTrF,UAAU,EAGZ,IAAM0F,GAAmB7D,GACvBI,QAASiB,OAAQ,aAEnB3I,GAAOD,QAAQsO,gBAAkBlD,EAGjC7I,EAAKoJ,EAAU,SAAC9I,EAASO,GLkZtB,MKlZ+BnD,GAAOD,QAAQoD,GAAQP,IAwQzDwJ,EAAgBlK,KAAO,yELkiBjB,SAASlC,EAAQD,EAASM,GAE/B,YMpzBD,SAASsL,GAAYlG,GA6BnB,QAAS6I,GAAkBpM,GACzB,GAAMqM,GAAQrM,EAAKsM,aACnB,OAAOjJ,GAAa,SAAiChD,EAAKY,EAAM2B,GAC9D,MAAI3C,GAAOI,KAASgM,EACX1J,EAAS1B,EAAM2B,EAAU5C,GADlC,SAGEA,QAAOuD,GAGb,QAASgJ,KACP,GAAMvM,GAAO,WACTwM,EAAkBnJ,EAAa,SAAmChD,EAAKY,EAAM2B,GAC/E,MAAoB,aAAhB3C,EAAOI,GACFsC,EAAS1B,EAAM2B,EAAU5C,GADlC,SAGEA,QAAOuD,EAkBX,OAhBAiJ,GAAgB/B,eAAiB,SAAkCnH,GACjE,GAAMmJ,GAAWjD,EAASwC,SAASxC,EAASgB,MAAMlH,EAAY,aAAc,+BAC5E,IAAInB,EAAQsK,GACV,KAAMA,EAER,IAAIC,GAAelD,EAASY,MAAM9G,GAAY,EAG9C,OAFAoJ,GAAa1M,KAAKmB,eAAenB,KAAO,sBAEjCqD,EAAa,SAAuChD,EAAKY,EAAM2B,GACpE,GAAM+J,GAAcnD,EAASgB,KAAKnK,EAAKY,EAAM2B,EAC7C,OAAIT,GAAQwK,GACHA,EAEFD,EAAarM,EAAKY,EAAM2B,KAC7B5C,KAAM0M,EAAa1M,KAAMc,UAAW,uBAAwByC,IAE3DiJ,EAGT,QAASI,KACP,GAAM5M,GAAO,SACP6M,EAAW,mBACbC,EAAsBzJ,EAAa,SAAuChD,EAAKY,EAAM2B,GACvF,MAAoB,WAAhB3C,EAAOI,GACFsC,EAAS1B,EAAM2B,EAAUiK,GADlC,SAGE7M,KAAM6M,GAAWtJ,GAEjBwJ,EAAgB1J,EAAa,SAAiChD,EAAKY,EAAM2B,GAC3E,MAAY,QAARvC,GAAgB8B,EAAQ2K,EAAoBzM,EAAKY,EAAM2B,IAClDD,EAAS1B,EAAM2B,EAAUmK,EAAc/M,MADhD,SAGEA,OAAMgN,OAAQF,GAAsBvJ,EAExC,OAAOwJ,GAIT,QAASE,GAAoBC,GAC3B,MAAO7J,GAAa,SAAmChD,EAAKY,EAAM2B,GAChE,MAAMvC,aAAe6M,GAArB,OACSvK,EAAS1B,EAAM2B,EAAUsK,EAAajM,QAE7CjB,KAAMkN,EAAajM,MAAOsC,GAGhC,QAAS4J,GAAiBC,GACxB,GAAMpN,IACJmB,gBAAiBmD,UAAU,EAAOtE,KAAM,QACxCqN,OAAMD,GAEFtM,EAAS,SAAYsM,EAAM3E,IAAI,SAAA6E,GN20BlC,MM30ByC3N,GAAU2N,KAAM5N,KAAK,MAAK,GACtE,OAAO2D,GAAa,SAAgChD,EAAKY,EAAM2B,GAC7D,MAAKwK,GAAMG,KAAK,SAAAD,GN60Bb,MM70BoBA,KAAQjN,IAA/B,OACSsC,EAAS1B,EAAM2B,EAAU9B,KAEhCd,OAAMc,aAAYyC,GAGxB,QAASiK,GAAqBhE,GAG5B,QAASxJ,GAAKW,GACZ,MAAIA,IAAWA,WACNG,EAEF0I,EAASf,IAAI,SAAC/H,GNi1BlB,MMj1B8BD,GAAkBC,EAASC,KAN9D,GAAM8M,GAAkBjE,EAASf,IAAI,SAAC/H,GN+0BnC,MM/0B+CD,GAAkBC,GAAUG,SAAO,MAC/EC,EAAS,aAAgB2M,EAAgB/N,KAAK,MAAK,GAQzD,OADAM,GAAKmB,gBAAkBmD,UAAU,EAAOtE,KAAM,aACvCqD,EAAa,SAAoChD,EAAKY,EAAM2B,GACjE,MAAK4G,GAAS+D,KAAK,SAAA7M,GNm1BhB,OMn1B4ByB,EAAQzB,EAAQL,EAAKY,EAAM2B,MAA1D,OACSD,EAAS1B,EAAM2B,EAAU9B,KAEhCd,OAAMc,aAAYyC,GAGxB,QAASmK,GAAmBhN,GAI1B,QAASV,GAAKW,GACZ,MAAIA,IAAWA,WACNG,EAEFL,EAAkBC,EAASC,GAPpC,GAAMgN,GAAsBlN,EAAkBC,GAAUG,SAAO,IACzDC,EAAS,WAAc6M,EAAmB,GAUhD,OAFA3N,GAAKmB,gBAAkBmD,UAAU,EAAOtE,KAAM,WAEvCqD,EAAa,SAAkChD,EAAKY,EAAM2B,GAC/D,MAAIT,GAAQqH,EAASoE,MAAMvN,MAAUA,EAAIwN,MAAM,SAACC,GNq1B7C,OMr1BuD3L,EAAQzB,EAAQoN,MACjEnL,EAAS1B,EAAM2B,EAAU9B,GADlC,SAGEd,OAAMc,aAAYyC,GAGxB,QAASwK,GAAoBrN,GAI3B,QAASV,GAAKW,GACZ,MAAIA,IAAWA,WACNG,EAEFL,EAAkBC,EAASC,GAPpC,GAAMqN,GAAiBvN,EAAkBC,GAAUG,SAAO,IACpDC,EAAS,YAAekN,EAAc,GAU5C,OAFAhO,GAAKmB,gBAAkBmD,UAAU,EAAOtE,KAAM,YAEvCqD,EAAa,SAAmChD,EAAKY,EAAM2B,GAChE,GAAMqL,GAAYzE,EAAS0E,OAAO7N,EAAKY,EAAM2B,EAC7C,IAAIT,EAAQ8L,GACV,MAAOA,EAET,IAAME,GAAkB/N,EAAKC,EAAK,SAACyN,EAAM7O,GACvC,MAAIkD,GAAQzB,EAAQoN,EAAM7O,EAAKgC,KACtB,EADT,QAIF,OAAKkN,GAAL,OACSxL,EAAS1B,EAAM2B,EAAU9B,KAEhCd,OAAMc,aAAYyC,GAGxB,QAAS6K,GAAyB1N,GAIhC,QAASV,GAAKW,GACZ,MAAIA,IAAWA,WACNG,EAEFL,EAAkBC,EAASC,GAPpC,GAAMqN,GAAiBvN,EAAkBC,GAAUG,SAAO,IACpDC,EAAS,iBAAoBkN,EAAc,GAUjD,OADAhO,GAAKmB,gBAAkBmD,UAAU,EAAOtE,KAAM,iBACvCqD,EAAa,SAAiChD,EAAKY,EAAM2B,EAAUhD,GACxE,MAAIuC,GAAQqH,EAASoB,WAAWlK,EAAS8I,EAAS6E,QAAQ3N,KAAWL,EAAKY,EAAM2B,EAAUhD,IACjF+C,EAAS1B,EAAM2B,EAAU9B,GADlC,SAGEd,OAAMc,aAAYyC,GAGxB,QAAS+K,KACP,QAASC,GAAiBnE,EAAOoE,GAK/B,QAASxO,KAiBP,QAASyO,GAA2BrP,EAAKsE,EAAMgF,EAAWhI,EAASgO,GAcjE,QAASC,GAAUC,EAAUC,EAAeC,GACjB,gBAAd1P,GAAIsE,GACbtE,EAAIsE,IAASoL,EAEb1P,EAAIsE,GAAMvC,eAAeyN,GAAYC,EAjBzC,GAAKnG,IAAagG,GAAahO,EAAQwD,YAMhC,GAAIwE,EAAW,CACpB,GAAIqG,GAAQrO,EAAQd,EAAI8D,GAAOA,EAAM,KAAM9D,EACvCuC,GAAQ4M,IACVJ,EAAU,QAAO,wBAA0BI,EAAMjJ,QAAO,6BAAiCiJ,EAAMjJ,cAThD,CACjD,GAAIgI,GAAO,MACPpN,GAAQV,MAAQU,EAAQV,KAAKmB,iBAC/B2M,EAAOpN,EAAQV,KAAKmB,eAAenB,KAAKgP,eAE1CL,EAAU,UAAS,gBAAkBb,EAAQ,8BNg0BhD,GMv1BWnN,GAAOR,SAAAsB,UAAA,MAAKA,UAAA,GACpBrC,KACGuJ,EAA0BhI,EAA1BgI,MAAO/I,EAAmBe,EAAnBf,IAAKiJ,EAAclI,EAAdkI,WACboG,EAAiBtO,EAAQ+N,QAY/B,OAXAtO,GAAKgK,EAAO,SAAC1J,EAASgD,GAEpB,GAAMgF,GAAY9I,GAAOA,EAAIoC,eAAe0B,GACtCgL,EAAWtL,EAAM6L,IAAmBvO,EAAQwD,WAAa+K,CAC1DtG,KAAUD,GAAchI,EAAQwD,aACnC9E,EAAIsE,GAAQjD,EAAkBC,GAAUiI,QAAO/I,IAAKA,GAAOA,EAAI8D,GAAOgL,WAAU7F,gBAE9EA,GACF4F,EAA2BrP,EAAKsE,EAAMgF,EAAWhI,EAASgO,KAGvDtP,EA+CT,QAAS8P,KACP,MAAOlP,GAAIwB,MAAArB,OAAIsB,WAnEjB,GAAI0N,KACJ/O,GAAKgK,EAAO,SAAC1J,EAASgD,GACpByL,EAAWzL,GAAQjD,EAAkBC,KA2CvCV,EAAKmB,gBAAkB4K,QAAQ,EAAOzH,UAAU,EAAOtE,KAAM,QAC7D,IAAI0M,GAAerJ,EAAa,SAAgChD,EAAKY,EAAM2B,GAEzE,GAAIwM,IAAYZ,GAAahF,EAAS0E,OAAO7N,EAAKY,EAAM2B,EACxD,IAAIT,EAAQiN,GACV,MAAOA,EAET,IAAIC,GAAclP,MASlB,OARAyC,GAAWA,EAAWA,GAAY3B,EAAO,IAAM,IAAM,GACrDA,EAAOA,GAAQ,GACfb,EAAKgK,EAAO,SAAC1J,EAASgD,GACpB,MAAIrD,GAAI2B,eAAe0B,KAAUhD,EAAQwD,YACvCmL,EAAiB3O,EAAQL,EAAIqD,GAAOA,EAAI,GAAKd,EAAW3B,EAAQZ,IACxD8B,EAAQkN,IAFlB,SAKElN,EAAQkN,GACHA,EADT,SAGErP,OAAMc,UAAW,SAAUyC,EAuB/B,OAjBA2L,GAAW/N,eAAiBpB,EAAK2M,EAAa1M,KAAKmB,gBACnD+N,EAAW/N,eAAe4K,QAAS,EACnCW,EAAaX,OAAS1I,EAAa,SAAsChD,EAAKY,EAAM2B,GAClF,GAAM0M,GAAa5C,EAAarM,EAAKY,EAAM2B,EAC3C,IAAIT,EAAQmN,GACV,MAAOA,EAET,IAAMC,GAAoBzN,OAAO9C,KAAKoL,GAChCoF,EAAa1N,OAAO9C,KAAKqB,GAAK4K,OAAO,SAAAvH,GN41BxC,MM51BoF,KAApC6L,EAAkBlQ,QAAQqE,IAC7E,OAAI8L,GAAWvN,OACN,GAAIG,OACT,GAAGW,EAAK9B,EAAM2B,GAAS,kCAAkCI,EAAEwM,EAAW9P,KAAK,SAAQ,qBAC/DsD,EAAEuM,EAAkB7P,KAAK,UAHjD,SAMEM,KAAMkP,EAAYpO,UAAW,gBAAiByC,GAE3CmJ,EA4DT,QAAS+C,GAAwBC,EAAKC,EAAYC,GAChD,GAAMC,GAAQ7M,EAAE2M,EAAWjQ,KAAK,OAC1BoQ,EAAO,OAASJ,EAAM,SAAW,mBACjCK,EAAW,aAAgBD,EAAO,6BAA6BD,EAAK,6BACpE/O,EAAS,iBAAmB4O,EAAM,OAAS,IAAE,IAAIC,EAAWjQ,KAAK,MAAK,KACtEM,EAAOgQ,EAAqBJ,EAAaG,EAAajP,EAC5D,OAAOuC,GAAa,SAAsCK,EAAMuM,EAAUrN,EAAUhD,GAClF,GAAMsQ,GAAatQ,GAAOA,EAAIoC,eAAeiO,GACvCE,EAAYT,EAAM,QAAU,OAC5BU,EAAkBT,EAAWQ,GAAW,SAAUE,GACtD,MAAOzQ,IAAOA,EAAIoC,eAAeqO,IAEnC,OAAKD,IAAoBF,EAEdA,EACFN,EAAYlM,EAAMuM,EAAUrN,EAAUhD,GADxC,OADE+C,EAASsN,EAAUrN,EAAU5C,KAIpCA,OAAM2D,aAAa,GAAOJ,GAKhC,QAASyM,GAAqBJ,EAAaG,EAAajP,GACtD,QAASd,GAAKW,GACZ,MAAIA,IAAWA,WACNG,EAEFL,EAAkBmP,GAG3B,MADA5P,GAAKmB,gBAAkBmD,UAAU,EAAOtE,KAAM,QAAS+P,eAChD/P,EAVT,MA7EAuO,GAAiB+B,MAAQ,SAAeX,EAAYC,GAC7CtP,MAAMC,QAAQoP,KACjBA,GAAcA,GAEhB,IAAII,GAAW5P,MAEb4P,GADwB,IAAtBJ,EAAW1N,OACF,qBAAwB0N,EAAW,GAAE,oBAErC,2DAA8DtN,EAAKsN,EAAY,KAAM,QAAO,GAEzG,IAAM7O,GAAS,SAAY6O,EAAWjQ,KAAK,MAAK,IAC1CM,EAAOgQ,EAAqBJ,EAAaG,EAAajP,EAC5D,OAAOuC,GAAa,SAAsBK,EAAMuM,EAAUrN,EAAUhD,GAClE,GAAIsQ,GAAatQ,GAAOA,EAAIoC,eAAeiO,GACvCG,EAAkBT,EAAWpC,KAAK,SAAA8C,GN21BnC,MM31BgDzQ,IAAOA,EAAIoC,eAAeqO,IAC7E,OAAIH,KAAeE,EACVzN,EAASsN,EAAUrN,EAAU5C,GAC3BkQ,EACFN,EAAYlM,EAAMuM,EAAUrN,EAAUhD,GADxC,SAGL+D,aAAa,EAAM3D,OAAMc,aAAYyC,IAG3CgL,EAAiBgC,OAAS,SAAgBZ,EAAYC,GACpDD,EAAarO,EAASqO,EACtB,IAAII,GAAW5P,MAEb4P,GADwB,IAAtBJ,EAAW1N,OACF,qBAAwB0N,EAAW,GAAE,qBAErC,0DAA6DtN,EAAKsN,EAAY,KAAM,QAAO,GAExG,IAAM7O,GAAS,UAAa6O,EAAWjQ,KAAK,MAAK,IAC3CM,EAAOgQ,EAAqBJ,EAAaG,EAAajP,EAC5D,OAAOuC,GAAa,SAAiCK,EAAMuM,EAAUrN,EAAUhD,GAC7E,GAAM4Q,GAAgBb,EAAW9B,MAAM,SAAAnK,GN61BpC,MM71B4C9D,GAAIoC,eAAe0B,IAClE,OAAK8M,GAGIZ,EAAYlM,EAAMuM,EAAUrN,EAAUhD,GAFtC+C,EAASsN,EAAUrN,EAAU5C,KAIpCA,OAAMc,aAAYyC,IAGxBgL,EAAiBkC,cAAgB,SAA4Bd,EAAYC,GAIvE,MAHKtP,OAAMC,QAAQoP,KACjBA,GAAcA,IAETF,GAAwB,EAAOE,EAAYC,IAGpDrB,EAAiBkC,cAAcf,IAAM,SAA+BC,EAAYC,GAC9E,IAAKtP,MAAMC,QAAQoP,GACjB,KAAM,IAAIvN,OAAM,4CAElB,OAAOqN,IAAwB,EAAME,EAAYC,IAuB5CrB,EAcT,QAASmC,KACP,GAAM1Q,GAAO,oBACb,OAAOqD,GAAa,SAA+BhD,EAAKY,EAAM2B,GAC5D,MAAItC,OAAMC,QAAQF,IAAQ8B,EAAQqH,EAAS0E,OAAO7N,KAAS8B,EAAQqH,EAASmH,OAAOtQ,EAAI4B,SAC9EU,EAAS1B,EAAM2B,EAAU5C,GADlC,SAGEA,QAAOuD,GAGb,QAASqN,KACP,MAAOvN,GAAa,cAEhBrD,KAAM,OAAQuD,GAGpB,QAASsN,KACP,GAAM7Q,GAAO,MACb,OAAOqD,GAAa,SAAqBhD,EAAKY,EAAM2B,GAClD,MAAY,QAARvC,EACKsC,EAAS1B,EAAM2B,EAAU5C,GADlC,SAGEA,QAAOuD,GAGb,QAASuN,GAAiBC,EAAKC,GAC7B,GAAMhR,GAAI,UAAa+Q,EAAG,MAAMC,EAAG,GACnC,OAAO3N,GAAa,SAAsBhD,EAAKY,EAAM2B,GACnD,MAAmB,gBAARvC,IAA0B0Q,EAAN1Q,GAAaA,EAAM2Q,EACzCrO,EAAS1B,EAAM2B,EAAU5C,GADlC,SAGEA,QAAOuD,GAGb,QAAS0N,KACP,GAAMjR,GAAO,cACb,OAAOqD,GAAa,SAA4BhD,EAAKY,EAAM2B,GACzD,MAAoB,WAAhB3C,EAAOI,IAA6B,OAARA,GAAgByB,OAAO9C,KAAKqB,GAAK4B,OACxDU,EAAS1B,EAAM2B,EAAU5C,GADlC,SAGEA,QAAOuD,GAzZb,OACEqK,MAAOxB,EAAkB,SACzB9B,KAAM8B,EAAkB,WACxBuE,OAAQvE,EAAkB,UAC1B/B,OAAQ+B,EAAkB,UAC1B5B,KAAM+B,IACN2B,OAAQtB,IAERsE,YAAaD,IAEbE,WAAYlE,EACZmE,MAAOjE,EACPvC,UAAW4C,EAEXa,QAASX,EACT1B,SAAU+B,EACV9B,cAAemC,EAEfiD,MAAOP,EAEP1G,MAAOkE,IACP/I,KAAMmL,IAENxE,IAAK0E,IACLU,OAAMT,KApCV,GAAMlR,GAAYxB,EAAQ,GNm0BrBoT,EM9zBCpT,EAAQ,GAHZ8B,EAAMsR,EAANtR,OAAQG,EAAImR,EAAJnR,KAAML,EAAIwR,EAAJxR,KAAMU,EAAiB8Q,EAAjB9Q,kBAAmB0B,EAAOoP,EAAPpP,QACvCb,EAAQiQ,EAARjQ,SAAUe,EAAIkP,EAAJlP,KAAMM,EAAQ4O,EAAR5O,SAAUI,EAAIwO,EAAJxO,KAAMC,EAACuO,EAADvO,EAAGmC,EAAcoM,EAAdpM,eACnC/B,EAAKmO,EAALnO,MAEKC,EAAgB8B,EAAhB9B,aAEHmG,EAAW1L,EAAOD,QAAU4L,GAChC3L,GAAOD,QAAQ4L,YAAcA","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = __webpack_require__(3);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = stringify;\n\t\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\t\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\t\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\t\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar _defineProperty = function (obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); };\n\t\n\tvar stringify = __webpack_require__(1);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\t\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\t\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === \"array\") {\n\t daCopy = [];\n\t } else if (type === \"object\") {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\t\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return \"array\";\n\t } else if (obj instanceof RegExp) {\n\t return \"object\";\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\t\n\tfunction getCheckerDisplay(checker, options) {\n\t /* jshint maxcomplexity:7 */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === \"object\" || checker.type === \"function\") {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\t\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\t\n\t if (typeof type === \"function\") {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\t\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\t\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry.apply(undefined, arguments);\n\t } else {\n\t return eachObj.apply(undefined, arguments);\n\t }\n\t}\n\t\n\tfunction eachObj(obj, iterator, context) {\n\t var ret;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tfunction eachArry(obj, iterator, context) {\n\t var ret;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\t\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = \" \";\n\t }\n\t return copy.join(join) + (\"\" + (copy.length ? join + finalJoin : \"\") + \"\" + last);\n\t}\n\t\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === \"function\") {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== \"object\" ? checkerType : stringify(checkerType);\n\t return new Error(\"\" + nAtL(name, location) + \" must be \" + t(stringType));\n\t}\n\t\n\tfunction nAtL(name, location) {\n\t var tName = t(name || \"value\");\n\t var tLocation = !location ? \"\" : \" at \" + t(location);\n\t return \"\" + tName + \"\" + tLocation;\n\t}\n\t\n\tfunction t(thing) {\n\t return \"`\" + thing + \"`\";\n\t}\n\t\n\tfunction undef(thing) {\n\t return typeof thing === \"undefined\";\n\t}\n\t\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t * @param checker\n\t * @param properties properties to add to the checker\n\t * @param disabled - when set to true, this will set the checker to a no-op function\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* jshint maxcomplexity:9 */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\t\n\t if (typeof checker.type === \"string\") {\n\t checker.shortType = checker.type;\n\t }\n\t\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\t\n\t if (!checker.displayName) {\n\t checker.displayName = \"apiCheck \" + t(checker.shortType || checker.type || checker.name) + \" type checker\";\n\t }\n\t\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\t\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\t\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\t\n\t return checker;\n\t}\n\t\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? \" in \" + t(location) : \"\";\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== \"object\" ? type : stringify(type);\n\t return new Error(\"Required \" + t(name) + \" not specified\" + tLocation + \". Must be \" + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\t\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\t\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + \" (optional)\";\n\t optionalCheck.originalChecker = checker;\n\t\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\t\n\t fixType(checker, checker.optional);\n\t}\n\t\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\t\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + \" (nullable)\";\n\t nullableCheck.originalChecker = checker;\n\t\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\t\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\t\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === \"object\") {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === \"function\") {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += \" (optional)\";\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\t\n\t// UTILS\n\t\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\t\n\tfunction noop() {}\n\t\n\tfunction getNoop() {\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar stringify = __webpack_require__(1);\n\tvar apiCheckUtil = __webpack_require__(2);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\t\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\t\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\t\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: \"apiCheck\" }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\t\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\t\n\tfunction getApiCheckInstance() {\n\t var config = arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments[1] === undefined ? {} : arguments[1];\n\t\n\t /* jshint maxcomplexity:6 */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck[\"throw\"](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: \"creating an apiCheck instance\"\n\t });\n\t }\n\t\n\t var additionalProperties = {\n\t \"throw\": getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: \"\",\n\t suffix: \"\",\n\t docsBaseUrl: \"\"\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\t\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\t\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t\n\t return apiCheck;\n\t\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param api {Array}\n\t * @param args {arguments}\n\t * @param output {Object}\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* jshint maxcomplexity:8 */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: \"\",\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\t\n\t var returnObject = getTypes(api, args);\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = \"\";\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\t\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param checkApiArgs\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === \"object\" && typeof args.length === \"number\";\n\t\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], [\"If an array is provided for the api, an array must be provided for the args as well.\"], { prefix: \"apiCheck\" }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: \"apiCheck\"\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\t\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\t\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t console.warn(message);\n\t }\n\t }\n\t\n\t function getErrorMessage(api, args) {\n\t var messages = arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments[3] === undefined ? {} : arguments[3];\n\t\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = \"apiCheck failed! \" + messages.join(\", \");\n\t var passedAndShouldHavePassed = \"\\n\\n\" + buildMessageFromApiAndArgs(api, args);\n\t return (\"\" + prefix + \" \" + message + \" \" + suffix + \" \" + (url || \"\") + \"\" + passedAndShouldHavePassed).trim();\n\t\n\t function getPrefix() {\n\t var prefix = output.onlyPrefix;\n\t if (!prefix) {\n\t prefix = (\"\" + (gOut.prefix || \"\") + \" \" + (output.prefix || \"\")).trim();\n\t }\n\t return prefix;\n\t }\n\t\n\t function getSuffix() {\n\t var suffix = output.onlySuffix;\n\t if (!suffix) {\n\t suffix = (\"\" + (output.suffix || \"\") + \" \" + (gOut.suffix || \"\")).trim();\n\t }\n\t return suffix;\n\t }\n\t\n\t function getUrl() {\n\t var url = output.url;\n\t if (!url) {\n\t url = gOut.docsBaseUrl && output.urlSuffix && (\"\" + gOut.docsBaseUrl + \"\" + output.urlSuffix).trim();\n\t }\n\t return url;\n\t }\n\t }\n\t\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\t\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\t\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\t\n\t return generateMessage();\n\t\n\t // functions\n\t\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* jshint maxcomplexity:6 */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === \"object\") {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === \"function\") {\n\t obj[name] = val.displayName || val.name || \"anonymous function\";\n\t }\n\t }\n\t });\n\t }\n\t\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return \"nothing\";\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\t\n\t function generateMessage() {\n\t var n = \"\\n\";\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === \"object\") {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = \"type\" + (useS ? \"s\" : \"\");\n\t var newLine = n + n;\n\t return \"You passed:\" + n + \"\" + passedArgs + \"\" + newLine + (\"With the \" + types + \":\" + n + \"\" + argTypes + \"\" + newLine) + (\"The API calls for:\" + n + \"\" + apiTypes);\n\t }\n\t }\n\t\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty(\"verbose\");\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\t\n\t// STATELESS FUNCTIONS\n\t\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param api {Array} - checkers\n\t * @param args {Array} - and arguments object\n\t * @returns {Array}\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* jshint maxcomplexity:7 */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = \"Argument \" + argIndex + (checker.isOptional ? \" (optional)\" : \"\");\n\t res = checker(arg, \"value\", argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(\"\" + t(argName) + \" passed\");\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\t\n\tcheckerTypeType.type = \"function with __apiCheckData property and `${function.type}` property\";\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== \"function\" && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\t\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? \" - \" + checkerHelp : \"\";\n\t return res.message + checkerHelp;\n\t}\n\t\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\t\n\t if (!help) {\n\t return \"\";\n\t }\n\t if (typeof help === \"function\") {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\t\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return [\"Not enough arguments specified. Requires `\" + requiredArgs.length + \"`, you passed `\" + args.length + \"`\"];\n\t } else {\n\t return [];\n\t }\n\t}\n\t\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* jshint maxcomplexity:7 */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === \"function\") {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + \" (with properties: \" + properties + \")\";\n\t }\n\t return cName;\n\t }\n\t\n\t if (arg === null) {\n\t return \"null\";\n\t }\n\t\n\t if (type !== \"array\" && type !== \"object\") {\n\t return type;\n\t }\n\t\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\t\n\t return cName;\n\t\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\t\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return \"[Circular]\";\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\t\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\t\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\t\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\t\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\t\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\t\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar stringify = __webpack_require__(1);\n\t\n\tvar _require = __webpack_require__(2);\n\t\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\t\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\t\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter(\"Array\"),\n\t bool: typeOfCheckGetter(\"Boolean\"),\n\t number: typeOfCheckGetter(\"Number\"),\n\t string: typeOfCheckGetter(\"String\"),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\t\n\t emptyObject: emptyObjectCheckGetter(),\n\t\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\t\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\t\n\t range: rangeCheckGetter,\n\t\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\t\n\t any: anyCheckGetter(),\n\t \"null\": nullCheckGetter()\n\t\n\t };\n\t\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function funcCheckGetter() {\n\t var type = \"Function\";\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== \"function\") {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, \"properties\", \"apiCheck.func.withProperties\");\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = \"func.withProperties\";\n\t\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: \"func.withProperties\" }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\t\n\t function objectCheckGetter() {\n\t var type = \"Object\";\n\t var nullType = \"Object (null ok)\";\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== \"object\") {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\t\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\t\n\t return objectChecker;\n\t }\n\t\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\t\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: \"enum\" },\n\t \"enum\": enums\n\t };\n\t var shortType = \"oneOf[\" + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(\", \") + \"]\";\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function oneOfTypeCheckGetter(checkers) {\n\t var checkersDisplay = checkers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = \"oneOfType[\" + checkersDisplay.join(\", \") + \"]\";\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return checkers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: \"oneOfType\" };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!checkers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = \"arrayOf[\" + shortCheckerDisplay + \"]\";\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: \"arrayOf\" };\n\t\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = \"objectOf[\" + checkerDisplay + \"]\";\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: \"objectOf\" };\n\t\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = \"typeOrArrayOf[\" + checkerDisplay + \"]\";\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t\n\t type.__apiCheckData = { optional: false, type: \"typeOrArrayOf\" };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments[0] === undefined ? {} : arguments[0];\n\t\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\t\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* jshint maxcomplexity:6 */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\t\n\t function modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = \"ITEM\";\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper(\"missing\", \"MISSING THIS \" + item, \" <-- YOU ARE MISSING THIS\");\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper(\"error\", \"THIS IS THE PROBLEM: \" + error.message, \" <-- THIS IS THE PROBLEM: \" + error.message);\n\t }\n\t }\n\t\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof ret[prop] === \"string\") {\n\t ret[prop] += stringMessage;\n\t } else {\n\t ret[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\t\n\t type.__apiCheckData = { strict: false, optional: false, type: \"shape\" };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* jshint maxcomplexity:6 */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? \"/\" : \"\") : \"\";\n\t name = name || \"\";\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, \"\" + location + \"\" + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: \"shape\" }, disabled);\n\t\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\t\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(\"\" + nAtL(name, location) + \" cannot have extra properties: \" + t(extraProps.join(\"`, `\")) + \".\" + (\"It is limited to \" + t(allowedProperties.join(\"`, `\"))));\n\t }\n\t }, { type: strictType, shortType: \"strict shape\" }, disabled);\n\t\n\t return shapeChecker;\n\t }\n\t\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = \"specified only if \" + otherProps[0] + \" is not specified\";\n\t } else {\n\t description = \"specified only if none of the following are specified: [\" + list(otherProps, \", \", \"and \") + \"]\";\n\t }\n\t var shortType = \"ifNot[\" + otherProps.join(\", \") + \"]\";\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\t\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = \"specified only if \" + otherProps[0] + \" is also specified\";\n\t } else {\n\t description = \"specified only if all of the following are specified: [\" + list(otherProps, \", \", \"and \") + \"]\";\n\t }\n\t var shortType = \"onlyIf[\" + otherProps.join(\", \") + \"]\";\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (prop) {\n\t return obj.hasOwnProperty(prop);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\t\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\t\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error(\"requiredIfNot.all must be passed an array\");\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\t\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(\", \"));\n\t var ifProps = \"if \" + (all ? \"all of\" : \"at least one of\");\n\t var description = \"specified \" + ifProps + \" these are not specified: \" + props + \" (otherwise it's optional)\";\n\t var shortType = \"requiredIfNot\" + (all ? \".all\" : \"\") + \"[\" + otherProps.join(\", \") + \"}]\";\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? \"every\" : \"some\";\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\t\n\t return shapeCheckGetter;\n\t\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: \"ifNot\", description: description };\n\t return type;\n\t }\n\t }\n\t\n\t function argumentsCheckerGetter() {\n\t var type = \"function arguments\";\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {}, { type: \"any\" }, disabled);\n\t }\n\t\n\t function nullCheckGetter() {\n\t var type = \"null\";\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function rangeCheckGetter(min, max) {\n\t var type = \"Range (\" + min + \" - \" + max + \")\";\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== \"number\" || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function emptyObjectCheckGetter() {\n\t var type = \"empty object\";\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== \"object\" || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\t\n\t// don't do anything\n\n/***/ }\n/******/ ])\n});\n\n\n\n/** WEBPACK FOOTER **\n ** api-check.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 494eb46361cc8c5a6356\n **/","module.exports = require('./apiCheck');\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./index.js\n **/","module.exports = stringify;\n\nfunction getSerialize (fn, decycle) {\n var seen = [], keys = [];\n decycle = decycle || function(key, value) {\n return '[Circular ' + getPath(value, seen, keys) + ']'\n };\n return function(key, value) {\n var ret = value;\n if (typeof value === 'object' && value) {\n if (seen.indexOf(value) !== -1)\n ret = decycle(key, value);\n else {\n seen.push(value);\n keys.push(key);\n }\n }\n if (fn) ret = fn(key, ret);\n return ret;\n }\n}\n\nfunction getPath (value, seen, keys) {\n var index = seen.indexOf(value);\n var path = [ keys[index] ];\n for (index--; index >= 0; index--) {\n if (seen[index][ path[0] ] === value) {\n value = seen[index];\n path.unshift(keys[index]);\n }\n }\n return '~' + path.join('.');\n}\n\nfunction stringify(obj, fn, spaces, decycle) {\n return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n}\n\nstringify.getSerialize = getSerialize;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/json-stringify-safe/stringify.js\n ** module id = 1\n ** module chunks = 0\n **/","const stringify = require('json-stringify-safe');\nconst checkerHelpers = {\n addOptional, getRequiredVersion, setupChecker, addNullable\n};\n\nmodule.exports = {\n each, copy, typeOf, arrayify, getCheckerDisplay,\n isError, list, getError, nAtL, t, undef, checkerHelpers,\n noop\n};\n\nfunction copy(obj) {\n let type = typeOf(obj);\n let daCopy;\n if (type === 'array') {\n daCopy = [];\n } else if (type === 'object') {\n daCopy = {};\n } else {\n return obj;\n }\n each(obj, (val, key) => {\n daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n });\n return daCopy;\n}\n\n\nfunction typeOf(obj) {\n if (Array.isArray(obj)) {\n return 'array';\n } else if (obj instanceof RegExp) {\n return 'object';\n } else {\n return typeof obj;\n }\n}\n\nfunction getCheckerDisplay(checker, options) {\n /* jshint maxcomplexity:7 */\n let display;\n let short = options && options.short;\n if (short && checker.shortType) {\n display = checker.shortType;\n } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n display = getCheckerType(checker, options);\n } else {\n display = getCheckerType(checker, options) || checker.displayName || checker.name;\n }\n return display;\n}\n\nfunction getCheckerType({type}, options) {\n if (typeof type === 'function') {\n let __apiCheckData = type.__apiCheckData;\n let typeTypes = type(options);\n type = {\n __apiCheckData,\n [__apiCheckData.type]: typeTypes\n };\n }\n return type;\n}\n\nfunction arrayify(obj) {\n if (!obj) {\n return [];\n } else if (Array.isArray(obj)) {\n return obj;\n } else {\n return [obj];\n }\n}\n\n\nfunction each(obj, iterator, context) {\n if (Array.isArray(obj)) {\n return eachArry(...arguments);\n } else {\n return eachObj(...arguments);\n }\n}\n\nfunction eachObj(obj, iterator, context) {\n var ret;\n var hasOwn = Object.prototype.hasOwnProperty;\n for (var key in obj) {\n if (hasOwn.call(obj, key)) {\n ret = iterator.call(context, obj[key], key, obj);\n if (ret === false) {\n return ret;\n }\n }\n }\n return true;\n}\n\nfunction eachArry(obj, iterator, context) {\n var ret;\n var length = obj.length;\n for (var i = 0; i < length; i++) {\n ret = iterator.call(context, obj[i], i, obj);\n if (ret === false) {\n return ret;\n }\n }\n return true;\n}\n\nfunction isError(obj) {\n return obj instanceof Error;\n}\n\nfunction list(arry, join, finalJoin) {\n arry = arrayify(arry);\n let copy = arry.slice();\n let last = copy.pop();\n if (copy.length === 1) {\n join = ' ';\n }\n return copy.join(join) + `${copy.length ? join + finalJoin : ''}${last}`;\n}\n\n\nfunction getError(name, location, checkerType) {\n if (typeof checkerType === 'function') {\n checkerType = checkerType({short: true});\n }\n const stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n return new Error(`${nAtL(name, location)} must be ${t(stringType)}`);\n}\n\nfunction nAtL(name, location) {\n const tName = t(name || 'value');\n let tLocation = !location ? '' : ' at ' + t(location);\n return `${tName}${tLocation}`;\n}\n\nfunction t(thing) {\n return '`' + thing + '`';\n}\n\nfunction undef(thing) {\n return typeof thing === 'undefined';\n}\n\n\n/**\n * This will set up the checker with all of the defaults that most checkers want like required by default and an\n * optional version\n * @param checker\n * @param properties properties to add to the checker\n * @param disabled - when set to true, this will set the checker to a no-op function\n */\nfunction setupChecker(checker, properties, disabled) {\n /* jshint maxcomplexity:9 */\n if (disabled) { // swap out the checker for its own copy of noop\n checker = getNoop();\n checker.isNoop = true;\n }\n\n if (typeof checker.type === 'string') {\n checker.shortType = checker.type;\n }\n\n // assign all properties given\n each(properties, (prop, name) => checker[name] = prop);\n\n if (!checker.displayName) {\n checker.displayName = `apiCheck ${t(checker.shortType || checker.type || checker.name)} type checker`;\n }\n\n\n if (!checker.notRequired) {\n checker = getRequiredVersion(checker, disabled);\n }\n\n if (!checker.notNullable) {\n addNullable(checker, disabled);\n }\n\n if (!checker.notOptional) {\n addOptional(checker, disabled);\n }\n\n return checker;\n}\n\nfunction getRequiredVersion(checker, disabled) {\n var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n if (undef(val) && !checker.isOptional) {\n let tLocation = location ? ` in ${t(location)}` : '';\n const type = getCheckerDisplay(checker, {short: true});\n const stringType = typeof type !== 'object' ? type : stringify(type);\n return new Error(`Required ${t(name)} not specified${tLocation}. Must be ${t(stringType)}`);\n } else {\n return checker(val, name, location, obj);\n }\n };\n copyProps(checker, requiredChecker);\n requiredChecker.originalChecker = checker;\n return requiredChecker;\n}\n\nfunction addOptional(checker, disabled) {\n var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n if (!undef(val)) {\n return checker(val, name, location, obj);\n }\n };\n // inherit all properties on the original checker\n copyProps(checker, optionalCheck);\n\n optionalCheck.isOptional = true;\n optionalCheck.displayName = checker.displayName + ' (optional)';\n optionalCheck.originalChecker = checker;\n\n\n // the magic line that allows you to add .optional to the end of the checkers\n checker.optional = optionalCheck;\n\n fixType(checker, checker.optional);\n}\n\nfunction addNullable(checker, disabled) {\n var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n if (val !== null) {\n return checker(val, name, location, obj);\n }\n };\n // inherit all properties on the original checker\n copyProps(checker, nullableCheck);\n\n nullableCheck.isNullable = true;\n nullableCheck.displayName = checker.displayName + ' (nullable)';\n nullableCheck.originalChecker = checker;\n\n // the magic line that allows you to add .nullable to the end of the checkers\n checker.nullable = nullableCheck;\n\n fixType(checker, checker.nullable);\n if (!checker.notOptional) {\n addOptional(checker.nullable, disabled);\n }\n}\n\nfunction fixType(checker, checkerCopy) {\n // fix type, because it's not a straight copy...\n // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n // we also want to add \"(optional)\" to the types with a string\n if (typeof checkerCopy.type === 'object') {\n checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n } else if (typeof checkerCopy.type === 'function') {\n checkerCopy.type = function() {\n return checker.type(...arguments);\n };\n } else {\n checkerCopy.type += ' (optional)';\n return;\n }\n checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n checkerCopy.type.__apiCheckData.optional = true;\n}\n\n\n// UTILS\n\nfunction copyProps(src, dest) {\n each(Object.keys(src), key => dest[key] = src[key]);\n}\n\nfunction noop() {\n}\n\nfunction getNoop() {\n /* istanbul ignore next */\n return function noop() {\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./apiCheckUtil.js\n **/","const stringify = require('json-stringify-safe');\nconst apiCheckUtil = require('./apiCheckUtil');\nconst {each, isError, t, arrayify, getCheckerDisplay, typeOf, getError} = apiCheckUtil;\nconst checkers = require('./checkers');\nconst apiCheckApis = getApiCheckApis();\n\nmodule.exports = getApiCheckInstance;\nmodule.exports.utils = apiCheckUtil;\nmodule.exports.globalConfig = {\n verbose: false,\n disabled: false\n};\n\nconst apiCheckApiCheck = getApiCheckInstance({\n output: {prefix: 'apiCheck'}\n});\nmodule.exports.internalChecker = apiCheckApiCheck;\n\n\neach(checkers, (checker, name) => module.exports[name] = checker);\n\nfunction getApiCheckInstance(config = {}, extraCheckers = {}) {\n /* jshint maxcomplexity:6 */\n if (apiCheckApiCheck && arguments.length) {\n apiCheckApiCheck.throw(apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n prefix: 'creating an apiCheck instance'\n });\n }\n\n let additionalProperties = {\n throw: getApiCheck(true),\n warn: getApiCheck(false),\n getErrorMessage,\n handleErrorMessage,\n config: {\n output: config.output || {\n prefix: '',\n suffix: '',\n docsBaseUrl: ''\n },\n verbose: config.verbose || false,\n disabled: config.disabled || false\n },\n utils: apiCheckUtil\n };\n\n each(additionalProperties, (wrapper, name) => apiCheck[name] = wrapper);\n\n const disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n each(checkers.getCheckers(disabled), (checker, name) => apiCheck[name] = checker);\n each(extraCheckers, (checker, name) => apiCheck[name] = checker);\n\n return apiCheck;\n\n\n /**\n * This is the instance function. Other things are attached to this see additional properties above.\n * @param api {Array}\n * @param args {arguments}\n * @param output {Object}\n * @returns {Object} - if this has a failed = true property, then it failed\n */\n function apiCheck(api, args, output) {\n /* jshint maxcomplexity:8 */\n if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n return {\n apiTypes: {}, argTypes: {},\n passed: true, message: '',\n failed: false\n }; // empty version of what is normally returned\n }\n checkApiCheckApi(arguments);\n if (!Array.isArray(api)) {\n api = [api];\n args = [args];\n } else {\n // turn arguments into an array\n args = Array.prototype.slice.call(args);\n }\n let messages = checkEnoughArgs(api, args);\n if (!messages.length) {\n // this is where we actually go perform the checks.\n messages = checkApiWithArgs(api, args);\n }\n\n let returnObject = getTypes(api, args);\n if (messages.length) {\n returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n returnObject.failed = true;\n returnObject.passed = false;\n } else {\n returnObject.message = '';\n returnObject.failed = false;\n returnObject.passed = true;\n }\n return returnObject;\n }\n\n /**\n * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n * @param checkApiArgs\n */\n function checkApiCheckApi(checkApiArgs) {\n const api = checkApiArgs[0];\n const args = checkApiArgs[1];\n var isArrayOrArgs = Array.isArray(args) || (args && typeof args === 'object' && typeof args.length === 'number');\n\n if (Array.isArray(api) && !isArrayOrArgs) {\n throw new Error(getErrorMessage(api, [args],\n ['If an array is provided for the api, an array must be provided for the args as well.'],\n {prefix: 'apiCheck'}\n ));\n }\n // dog fooding here\n const errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n if (errors.length) {\n const message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n prefix: 'apiCheck'\n });\n apiCheck.handleErrorMessage(message, true);\n }\n }\n\n\n function getApiCheck(shouldThrow) {\n return function apiCheckWrapper(api, args, output) {\n let result = apiCheck(api, args, output);\n apiCheck.handleErrorMessage(result.message, shouldThrow);\n return result; // wont get here if an error is thrown\n };\n }\n\n function handleErrorMessage(message, shouldThrow) {\n if (shouldThrow && message) {\n throw new Error(message);\n } else if (message) {\n console.warn(message);\n }\n }\n\n function getErrorMessage(api, args, messages = [], output = {}) {\n let gOut = apiCheck.config.output || {};\n let prefix = getPrefix();\n let suffix = getSuffix();\n let url = getUrl();\n let message = `apiCheck failed! ${messages.join(', ')}`;\n var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n return `${prefix} ${message} ${suffix} ${url || ''}${passedAndShouldHavePassed}`.trim();\n\n function getPrefix() {\n let prefix = output.onlyPrefix;\n if (!prefix) {\n prefix = `${gOut.prefix || ''} ${output.prefix || ''}`.trim();\n }\n return prefix;\n }\n\n function getSuffix() {\n let suffix = output.onlySuffix;\n if (!suffix) {\n suffix = `${output.suffix || ''} ${gOut.suffix || ''}`.trim();\n }\n return suffix;\n }\n\n function getUrl() {\n let url = output.url;\n if (!url) {\n url = gOut.docsBaseUrl && output.urlSuffix && `${gOut.docsBaseUrl}${output.urlSuffix}`.trim();\n }\n return url;\n }\n }\n\n function buildMessageFromApiAndArgs(api, args) {\n let {apiTypes, argTypes} = getTypes(api, args);\n let copy = Array.prototype.slice.call(args || []);\n let replacedItems = [];\n replaceFunctionWithName(copy);\n const passedArgs = getObjectString(copy);\n argTypes = getObjectString(argTypes);\n apiTypes = getObjectString(apiTypes);\n\n return generateMessage();\n\n\n // functions\n\n function replaceFunctionWithName(obj) {\n each(obj, (val, name) => {\n /* jshint maxcomplexity:6 */\n if (replacedItems.indexOf(val) === -1) { // avoid recursive problems\n replacedItems.push(val);\n if (typeof val === 'object') {\n replaceFunctionWithName(obj);\n } else if (typeof val === 'function') {\n obj[name] = val.displayName || val.name || 'anonymous function';\n }\n }\n });\n }\n\n function getObjectString(types) {\n if (!types || !types.length) {\n return 'nothing';\n } else if (types && types.length === 1) {\n types = types[0];\n }\n return stringify(types, null, 2);\n }\n\n function generateMessage() {\n const n = '\\n';\n let useS = true;\n if (args && args.length === 1) {\n if (typeof args[0] === 'object') {\n useS = !!Object.keys(args[0]).length;\n } else {\n useS = false;\n }\n }\n const types = `type${useS ? 's' : ''}`;\n const newLine = n + n;\n return `You passed:${n}${passedArgs}${newLine}` +\n `With the ${types}:${n}${argTypes}${newLine}` +\n `The API calls for:${n}${apiTypes}`;\n }\n }\n\n function getTypes(api, args) {\n api = arrayify(api);\n args = arrayify(args);\n let apiTypes = api.map((checker, index) => {\n const specified = module.exports.globalConfig.hasOwnProperty('verbose');\n return getCheckerDisplay(checker, {\n terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n obj: args[index],\n addHelpers: true\n });\n });\n let argTypes = args.map((arg) => getArgDisplay(arg, []));\n return {argTypes: argTypes, apiTypes};\n }\n\n}\n\n\n// STATELESS FUNCTIONS\n\n/**\n * This is where the magic happens for actually checking the arguments with the api.\n * @param api {Array} - checkers\n * @param args {Array} - and arguments object\n * @returns {Array}\n */\nfunction checkApiWithArgs(api, args) {\n /* jshint maxcomplexity:7 */\n let messages = [];\n let failed = false;\n let checkerIndex = 0;\n let argIndex = 0;\n let arg, checker, res, lastChecker, argName, argFailed, skipPreviousChecker;\n /* jshint -W084 */\n while ((checker = api[checkerIndex++]) && (argIndex < args.length)) {\n arg = args[argIndex++];\n argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n res = checker(arg, 'value', argName);\n argFailed = isError(res);\n lastChecker = checkerIndex >= api.length;\n skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n if ((argFailed && lastChecker) || (argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker)) {\n failed = true;\n messages.push(getCheckerErrorMessage(res, checker, arg));\n } else if (argFailed && checker.isOptional) {\n argIndex--;\n } else {\n messages.push(`${t(argName)} passed`);\n }\n }\n return failed ? messages : [];\n}\n\n\ncheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\nfunction checkerTypeType(checkerType, name, location) {\n const apiCheckDataChecker = checkers.shape({\n type: checkers.string,\n optional: checkers.bool\n });\n const asFunc = checkers.func.withProperties({__apiCheckData: apiCheckDataChecker});\n const asShape = checkers.shape({__apiCheckData: apiCheckDataChecker});\n const wrongShape = checkers.oneOfType([\n asFunc, asShape\n ])(checkerType, name, location);\n if (isError(wrongShape)) {\n return wrongShape;\n }\n if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n return getError(name, location, checkerTypeType.type);\n }\n}\n\nfunction getCheckerErrorMessage(res, checker, val) {\n let checkerHelp = getCheckerHelp(checker, val);\n checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n return res.message + checkerHelp;\n}\n\nfunction getCheckerHelp({help}, val) {\n if (!help) {\n return '';\n }\n if (typeof help === 'function') {\n help = help(val);\n }\n return help;\n}\n\n\nfunction checkEnoughArgs(api, args) {\n let requiredArgs = api.filter(a => !a.isOptional);\n if (args.length < requiredArgs.length) {\n return [\n 'Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'\n ];\n } else {\n return [];\n }\n}\n\nfunction getArgDisplay(arg, gottenArgs) {\n /* jshint maxcomplexity:7 */\n const cName = arg && arg.constructor && arg.constructor.name;\n const type = typeOf(arg);\n if (type === 'function') {\n if (hasKeys()) {\n let properties = stringify(getDisplayIfNotGotten());\n return cName + ' (with properties: ' + properties + ')';\n }\n return cName;\n }\n\n if (arg === null) {\n return 'null';\n }\n\n if (type !== 'array' && type !== 'object') {\n return type;\n }\n\n if (hasKeys()) {\n return getDisplayIfNotGotten();\n }\n\n return cName;\n\n // utility functions\n function hasKeys() {\n return arg && Object.keys(arg).length;\n }\n\n function getDisplayIfNotGotten() {\n if (gottenArgs.indexOf(arg) !== -1) {\n return '[Circular]';\n }\n gottenArgs.push(arg);\n return getDisplay(arg, gottenArgs);\n }\n}\n\nfunction getDisplay(obj, gottenArgs) {\n var argDisplay = {};\n each(obj, (v, k) => argDisplay[k] = getArgDisplay(v, gottenArgs));\n return argDisplay;\n}\n\nfunction getApiCheckApis() {\n const os = checkers.string.optional;\n\n const checkerFnChecker = checkers.func.withProperties({\n type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n displayName: checkers.string.optional,\n shortType: checkers.string.optional,\n notOptional: checkers.bool.optional,\n notRequired: checkers.bool.optional\n });\n\n const getApiCheckInstanceCheckers = [\n checkers.shape({\n output: checkers.shape({\n prefix: checkers.string.optional,\n suffix: checkers.string.optional,\n docsBaseUrl: checkers.string.optional\n }).strict.optional,\n verbose: checkers.bool.optional,\n disabled: checkers.bool.optional\n }).strict.optional,\n checkers.objectOf(checkerFnChecker).optional\n ];\n\n const checkApiCheckApi = [\n checkers.typeOrArrayOf(checkerFnChecker),\n checkers.any.optional,\n checkers.shape({\n prefix: os, suffix: os, urlSuffix: os, // appended case\n onlyPrefix: os, onlySuffix: os, url: os // override case\n }).strict.optional\n ];\n\n return {\n checkerFnChecker,\n getApiCheckInstanceCheckers,\n checkApiCheckApi\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./apiCheck.js\n **/","const stringify = require('json-stringify-safe');\nconst {\n typeOf, each, copy, getCheckerDisplay, isError,\n arrayify, list, getError, nAtL, t, checkerHelpers,\n undef\n } = require('./apiCheckUtil');\nconst {setupChecker} = checkerHelpers;\n\nlet checkers = module.exports = getCheckers();\nmodule.exports.getCheckers = getCheckers;\n\nfunction getCheckers(disabled) {\n return {\n array: typeOfCheckGetter('Array'),\n bool: typeOfCheckGetter('Boolean'),\n number: typeOfCheckGetter('Number'),\n string: typeOfCheckGetter('String'),\n func: funcCheckGetter(),\n object: objectCheckGetter(),\n\n emptyObject: emptyObjectCheckGetter(),\n\n instanceOf: instanceCheckGetter,\n oneOf: oneOfCheckGetter,\n oneOfType: oneOfTypeCheckGetter,\n\n arrayOf: arrayOfCheckGetter,\n objectOf: objectOfCheckGetter,\n typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n range: rangeCheckGetter,\n\n shape: getShapeCheckGetter(),\n args: argumentsCheckerGetter(),\n\n any: anyCheckGetter(),\n null: nullCheckGetter()\n\n };\n\n function typeOfCheckGetter(type) {\n const lType = type.toLowerCase();\n return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n if (typeOf(val) !== lType) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function funcCheckGetter() {\n const type = 'Function';\n let functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n if (typeOf(val) !== 'function') {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n\n functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n const apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n if (isError(apiError)) {\n throw apiError;\n }\n let shapeChecker = checkers.shape(properties, true);\n shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n const notFunction = checkers.func(val, name, location);\n if (isError(notFunction)) {\n return notFunction;\n }\n return shapeChecker(val, name, location);\n }, {type: shapeChecker.type, shortType: 'func.withProperties'}, disabled);\n };\n return functionChecker;\n }\n\n function objectCheckGetter() {\n const type = 'Object';\n const nullType = 'Object (null ok)';\n let objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n if (typeOf(val) !== 'object') {\n return getError(name, location, nullType);\n }\n }, {type: nullType}, disabled);\n\n let objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n if (val === null || isError(objectNullOkChecker(val, name, location))) {\n return getError(name, location, objectChecker.type);\n }\n }, {type, nullOk: objectNullOkChecker}, disabled);\n\n return objectChecker;\n }\n\n\n function instanceCheckGetter(classToCheck) {\n return setupChecker(function instanceCheckerDefinition(val, name, location) {\n if (!(val instanceof classToCheck)) {\n return getError(name, location, classToCheck.name);\n }\n }, {type: classToCheck.name}, disabled);\n }\n\n function oneOfCheckGetter(enums) {\n const type = {\n __apiCheckData: {optional: false, type: 'enum'},\n enum: enums\n };\n const shortType = `oneOf[${enums.map(enm => stringify(enm)).join(', ')}]`;\n return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n if (!enums.some(enm => enm === val)) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function oneOfTypeCheckGetter(checkers) {\n const checkersDisplay = checkers.map((checker) => getCheckerDisplay(checker, {short: true}));\n const shortType = `oneOfType[${checkersDisplay.join(', ')}]`;\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return checkers.map((checker) => getCheckerDisplay(checker, options));\n }\n type.__apiCheckData = {optional: false, type: 'oneOfType'};\n return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n if (!checkers.some(checker => !isError(checker(val, name, location)))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function arrayOfCheckGetter(checker) {\n const shortCheckerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `arrayOf[${shortCheckerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n type.__apiCheckData = {optional: false, type: 'arrayOf'};\n\n return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n if (isError(checkers.array(val)) || !val.every((item) => !isError(checker(item)))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function objectOfCheckGetter(checker) {\n const checkerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `objectOf[${checkerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n type.__apiCheckData = {optional: false, type: 'objectOf'};\n\n return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n const notObject = checkers.object(val, name, location);\n if (isError(notObject)) {\n return notObject;\n }\n const allTypesSuccess = each(val, (item, key) => {\n if (isError(checker(item, key, name))) {\n return false;\n }\n });\n if (!allTypesSuccess) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function typeOrArrayOfCheckGetter(checker) {\n const checkerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `typeOrArrayOf[${checkerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n\n type.__apiCheckData = {optional: false, type: 'typeOrArrayOf'};\n return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function getShapeCheckGetter() {\n function shapeCheckGetter(shape, nonObject) {\n let shapeTypes = {};\n each(shape, (checker, prop) => {\n shapeTypes[prop] = getCheckerDisplay(checker);\n });\n function type(options = {}) {\n let ret = {};\n const {terse, obj, addHelpers} = options;\n const parentRequired = options.required;\n each(shape, (checker, prop) => {\n /* jshint maxcomplexity:6 */\n const specified = obj && obj.hasOwnProperty(prop);\n const required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n if (!terse || (specified || !checker.isOptional)) {\n ret[prop] = getCheckerDisplay(checker, {terse, obj: obj && obj[prop], required, addHelpers});\n }\n if (addHelpers) {\n modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n }\n });\n return ret;\n\n function modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required) {\n if (!specified && required && !checker.isOptional) {\n let item = 'ITEM';\n if (checker.type && checker.type.__apiCheckData) {\n item = checker.type.__apiCheckData.type.toUpperCase();\n }\n addHelper('missing', `MISSING THIS ${item}`, ' <-- YOU ARE MISSING THIS');\n } else if (specified) {\n let error = checker(obj[prop], prop, null, obj);\n if (isError(error)) {\n addHelper('error', `THIS IS THE PROBLEM: ${error.message}`, ` <-- THIS IS THE PROBLEM: ${error.message}`);\n }\n }\n\n function addHelper(property, objectMessage, stringMessage) {\n if (typeof ret[prop] === 'string') {\n ret[prop] += stringMessage;\n } else {\n ret[prop].__apiCheckData[property] = objectMessage;\n }\n }\n }\n }\n\n type.__apiCheckData = {strict: false, optional: false, type: 'shape'};\n let shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n /* jshint maxcomplexity:6 */\n let isObject = !nonObject && checkers.object(val, name, location);\n if (isError(isObject)) {\n return isObject;\n }\n let shapePropError;\n location = location ? location + (name ? '/' : '') : '';\n name = name || '';\n each(shape, (checker, prop) => {\n if (val.hasOwnProperty(prop) || !checker.isOptional) {\n shapePropError = checker(val[prop], prop, `${location}${name}`, val);\n return !isError(shapePropError);\n }\n });\n if (isError(shapePropError)) {\n return shapePropError;\n }\n }, {type, shortType: 'shape'}, disabled);\n\n function strictType() {\n return type(...arguments);\n }\n\n strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n strictType.__apiCheckData.strict = true;\n shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n const shapeError = shapeChecker(val, name, location);\n if (isError(shapeError)) {\n return shapeError;\n }\n const allowedProperties = Object.keys(shape);\n const extraProps = Object.keys(val).filter(prop => allowedProperties.indexOf(prop) === -1);\n if (extraProps.length) {\n return new Error(\n `${nAtL(name, location)} cannot have extra properties: ${t(extraProps.join('`, `'))}.` +\n `It is limited to ${t(allowedProperties.join('`, `'))}`\n );\n }\n }, {type: strictType, shortType: 'strict shape'}, disabled);\n\n return shapeChecker;\n }\n\n shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n otherProps = [otherProps];\n }\n let description;\n if (otherProps.length === 1) {\n description = `specified only if ${otherProps[0]} is not specified`;\n } else {\n description = `specified only if none of the following are specified: [${list(otherProps, ', ', 'and ')}]`;\n }\n const shortType = `ifNot[${otherProps.join(', ')}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n let propExists = obj && obj.hasOwnProperty(propName);\n let otherPropsExist = otherProps.some(otherProp => obj && obj.hasOwnProperty(otherProp));\n if (propExists === otherPropsExist) {\n return getError(propName, location, type);\n } else if (propExists) {\n return propChecker(prop, propName, location, obj);\n }\n }, {notRequired: true, type, shortType}, disabled);\n };\n\n shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n otherProps = arrayify(otherProps);\n let description;\n if (otherProps.length === 1) {\n description = `specified only if ${otherProps[0]} is also specified`;\n } else {\n description = `specified only if all of the following are specified: [${list(otherProps, ', ', 'and ')}]`;\n }\n const shortType = `onlyIf[${otherProps.join(', ')}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n const othersPresent = otherProps.every(prop => obj.hasOwnProperty(prop));\n if (!othersPresent) {\n return getError(propName, location, type);\n } else {\n return propChecker(prop, propName, location, obj);\n }\n }, {type, shortType}, disabled);\n };\n\n shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n otherProps = [otherProps];\n }\n return getRequiredIfNotChecker(false, otherProps, propChecker);\n };\n\n shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n throw new Error('requiredIfNot.all must be passed an array');\n }\n return getRequiredIfNotChecker(true, otherProps, propChecker);\n };\n\n function getRequiredIfNotChecker(all, otherProps, propChecker) {\n const props = t(otherProps.join(', '));\n const ifProps = `if ${all ? 'all of' : 'at least one of'}`;\n const description = `specified ${ifProps} these are not specified: ${props} (otherwise it's optional)`;\n const shortType = `requiredIfNot${all ? '.all' : ''}[${otherProps.join(', ')}}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n const propExists = obj && obj.hasOwnProperty(propName);\n const iteration = all ? 'every' : 'some';\n const otherPropsExist = otherProps[iteration](function (otherProp) {\n return obj && obj.hasOwnProperty(otherProp);\n });\n if (!otherPropsExist && !propExists) {\n return getError(propName, location, type);\n } else if (propExists) {\n return propChecker(prop, propName, location, obj);\n }\n }, {type, notRequired: true}, disabled);\n }\n\n return shapeCheckGetter;\n\n function getTypeForShapeChild(propChecker, description, shortType) {\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(propChecker);\n }\n type.__apiCheckData = {optional: false, type: 'ifNot', description};\n return type;\n }\n }\n\n function argumentsCheckerGetter() {\n const type = 'function arguments';\n return setupChecker(function argsCheckerDefinition(val, name, location) {\n if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function anyCheckGetter() {\n return setupChecker(function anyCheckerDefinition() {\n // don't do anything\n }, {type: 'any'}, disabled);\n }\n\n function nullCheckGetter() {\n const type = 'null';\n return setupChecker(function nullChecker(val, name, location) {\n if (val !== null) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function rangeCheckGetter(min, max) {\n const type = `Range (${min} - ${max})`;\n return setupChecker(function rangeChecker(val, name, location) {\n if (typeof val !== 'number' || val < min || val > max) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function emptyObjectCheckGetter() {\n const type = 'empty object';\n return setupChecker(function emptyObjectChecker(val, name, location) {\n if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./checkers.js\n **/"],"sourceRoot":"","file":"api-check.min.js"}