From 4edc0c91a5350f180c801806dfee610da9c33c56 Mon Sep 17 00:00:00 2001 From: Shubham Naik Date: Thu, 28 Sep 2017 17:19:45 -0700 Subject: [PATCH 1/3] feature(*) extensions, refactoring, data --- .../2017F/src/server/src/handlers/hacker.js | 2 + .../2017F/src/server/src/validators/hacker.js | 2 - Tomoe/.babelrc | 8 - Tomoe/.codeclimate.yml | 24 - Tomoe/.gitignore | 6 - Tomoe/Core/src/extensions/template/README.md | 1 + .../Core/src/extensions/template/config.json | 7 + .../src/extensions/template/importable.js | 1 + .../Core/src/extensions/template/package.json | 11 + Tomoe/assets/images/logos/logo_blue.png | Bin 21719 -> 0 bytes Tomoe/build/core/config.js | 61 - Tomoe/build/core/generator.js | 290 - Tomoe/build/core/index.js | 10 - Tomoe/build/imports/build.js | 28 - Tomoe/build/imports/index.js | 11 - Tomoe/build/templates/email.template.html | 14 - Tomoe/build/templates/env.template.js | 11 - Tomoe/build/templates/index.js | 2 - Tomoe/build/templates/tomoe.template.js | 69 - Tomoe/build/tests/index.js | 14 - Tomoe/build/tests/test-starter.js | 117 - Tomoe/build/util/create-collections.js | 25 - Tomoe/build/util/index.js | 2 - Tomoe/build/util/move-templates.js | 15 - Tomoe/package.json | 138 - Tomoe/readme.md | 330 - Tomoe/src/app/src/index.js | 58 - Tomoe/src/server/index.js | 22 - Tomoe/src/server/src/collections/Admin.js | 42 - Tomoe/src/server/src/collections/Email.js | 28 - Tomoe/src/server/src/collections/Hacker.js | 44 - Tomoe/src/server/src/collections/User.js | 352 - Tomoe/src/server/src/collections/Volunteer.js | 45 - Tomoe/src/server/src/collections/index.js | 4 - Tomoe/src/server/src/database.js | 7 - Tomoe/src/server/src/handlers/admin.js | 103 - Tomoe/src/server/src/handlers/hacker.js | 105 - Tomoe/src/server/src/handlers/index.js | 3 - Tomoe/src/server/src/handlers/volunteer.js | 89 - Tomoe/src/server/src/routes/admin.js | 87 - Tomoe/src/server/src/routes/hacker.js | 108 - Tomoe/src/server/src/routes/index.js | 11 - Tomoe/src/server/src/routes/volunteer.js | 98 - Tomoe/src/server/src/server.js | 52 - Tomoe/src/server/src/templates/.gitkeep | 0 Tomoe/src/server/src/util/index.js | 4 - Tomoe/src/server/src/util/operator-search.js | 11 - Tomoe/src/server/src/util/respond.js | 7 - Tomoe/src/server/src/util/set-search-param.js | 13 - Tomoe/src/server/src/util/transform-data.js | 12 - Tomoe/src/server/src/validators/admin.js | 23 - Tomoe/src/server/src/validators/hacker.js | 36 - Tomoe/src/server/src/validators/index.js | 3 - Tomoe/src/server/src/validators/volunteer.js | 36 - Tomoe/src/server/tests/after.spec.js | 7 - .../server/tests/collections/Admin.spec.js | 39 - .../server/tests/collections/Hacker.spec.js | 79 - .../tests/collections/Volunteer.spec.js | 79 - .../src/server/tests/collections/user.spec.js | 317 - Tomoe/src/server/tests/constants.js | 114 - Tomoe/src/server/tests/routes/admin.spec.js | 351 - Tomoe/src/server/tests/routes/hacker.spec.js | 341 - .../src/server/tests/routes/volunteer.spec.js | 247 - .../src/server/tests/util/clear-documents.js | 14 - Tomoe/src/server/tests/util/index.js | 1 - Tomoe/yarn.lock | 7300 ----------------- 66 files changed, 22 insertions(+), 11469 deletions(-) delete mode 100644 Tomoe/.babelrc delete mode 100644 Tomoe/.codeclimate.yml delete mode 100644 Tomoe/.gitignore create mode 100644 Tomoe/Core/src/extensions/template/README.md create mode 100644 Tomoe/Core/src/extensions/template/config.json create mode 100644 Tomoe/Core/src/extensions/template/importable.js create mode 100644 Tomoe/Core/src/extensions/template/package.json delete mode 100644 Tomoe/assets/images/logos/logo_blue.png delete mode 100644 Tomoe/build/core/config.js delete mode 100644 Tomoe/build/core/generator.js delete mode 100644 Tomoe/build/core/index.js delete mode 100644 Tomoe/build/imports/build.js delete mode 100644 Tomoe/build/imports/index.js delete mode 100644 Tomoe/build/templates/email.template.html delete mode 100644 Tomoe/build/templates/env.template.js delete mode 100644 Tomoe/build/templates/index.js delete mode 100644 Tomoe/build/templates/tomoe.template.js delete mode 100644 Tomoe/build/tests/index.js delete mode 100644 Tomoe/build/tests/test-starter.js delete mode 100644 Tomoe/build/util/create-collections.js delete mode 100644 Tomoe/build/util/index.js delete mode 100644 Tomoe/build/util/move-templates.js delete mode 100755 Tomoe/package.json delete mode 100755 Tomoe/readme.md delete mode 100644 Tomoe/src/app/src/index.js delete mode 100644 Tomoe/src/server/index.js delete mode 100644 Tomoe/src/server/src/collections/Admin.js delete mode 100644 Tomoe/src/server/src/collections/Email.js delete mode 100644 Tomoe/src/server/src/collections/Hacker.js delete mode 100644 Tomoe/src/server/src/collections/User.js delete mode 100644 Tomoe/src/server/src/collections/Volunteer.js delete mode 100644 Tomoe/src/server/src/collections/index.js delete mode 100644 Tomoe/src/server/src/database.js delete mode 100644 Tomoe/src/server/src/handlers/admin.js delete mode 100644 Tomoe/src/server/src/handlers/hacker.js delete mode 100644 Tomoe/src/server/src/handlers/index.js delete mode 100644 Tomoe/src/server/src/handlers/volunteer.js delete mode 100644 Tomoe/src/server/src/routes/admin.js delete mode 100644 Tomoe/src/server/src/routes/hacker.js delete mode 100644 Tomoe/src/server/src/routes/index.js delete mode 100644 Tomoe/src/server/src/routes/volunteer.js delete mode 100644 Tomoe/src/server/src/server.js delete mode 100644 Tomoe/src/server/src/templates/.gitkeep delete mode 100644 Tomoe/src/server/src/util/index.js delete mode 100644 Tomoe/src/server/src/util/operator-search.js delete mode 100644 Tomoe/src/server/src/util/respond.js delete mode 100644 Tomoe/src/server/src/util/set-search-param.js delete mode 100644 Tomoe/src/server/src/util/transform-data.js delete mode 100644 Tomoe/src/server/src/validators/admin.js delete mode 100644 Tomoe/src/server/src/validators/hacker.js delete mode 100644 Tomoe/src/server/src/validators/index.js delete mode 100644 Tomoe/src/server/src/validators/volunteer.js delete mode 100644 Tomoe/src/server/tests/after.spec.js delete mode 100644 Tomoe/src/server/tests/collections/Admin.spec.js delete mode 100644 Tomoe/src/server/tests/collections/Hacker.spec.js delete mode 100644 Tomoe/src/server/tests/collections/Volunteer.spec.js delete mode 100644 Tomoe/src/server/tests/collections/user.spec.js delete mode 100644 Tomoe/src/server/tests/constants.js delete mode 100644 Tomoe/src/server/tests/routes/admin.spec.js delete mode 100644 Tomoe/src/server/tests/routes/hacker.spec.js delete mode 100644 Tomoe/src/server/tests/routes/volunteer.spec.js delete mode 100644 Tomoe/src/server/tests/util/clear-documents.js delete mode 100644 Tomoe/src/server/tests/util/index.js delete mode 100755 Tomoe/yarn.lock diff --git a/HackMerced/2017F/src/server/src/handlers/hacker.js b/HackMerced/2017F/src/server/src/handlers/hacker.js index 947e7d7..0ce5776 100644 --- a/HackMerced/2017F/src/server/src/handlers/hacker.js +++ b/HackMerced/2017F/src/server/src/handlers/hacker.js @@ -71,6 +71,8 @@ export const hackerHandlers = { }); }, postLogin: (req, reply) => { + + const email = req.payload.email ? req.payload.email.toLowerCase() : 'bad' axios diff --git a/HackMerced/2017F/src/server/src/validators/hacker.js b/HackMerced/2017F/src/server/src/validators/hacker.js index 6ab0029..763b629 100644 --- a/HackMerced/2017F/src/server/src/validators/hacker.js +++ b/HackMerced/2017F/src/server/src/validators/hacker.js @@ -6,10 +6,8 @@ import { notMercedOptions } from '../../../app/src/constants' export const hackerValidators = { postLogin: { - // tomoe handles this }, postSignup: { - // tomoe handles this }, getMe:{ payload:{ diff --git a/Tomoe/.babelrc b/Tomoe/.babelrc deleted file mode 100644 index 9cc1366..0000000 --- a/Tomoe/.babelrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "presets": [ "es2015" ], - "env": { - "test": { - "plugins": ["istanbul"] - } - } -} diff --git a/Tomoe/.codeclimate.yml b/Tomoe/.codeclimate.yml deleted file mode 100644 index 1d4486c..0000000 --- a/Tomoe/.codeclimate.yml +++ /dev/null @@ -1,24 +0,0 @@ -engines: - eslint: - enabled: false - config: - config: tests/linters/.eslintrc - exclude_fingerprints: - - 1f55a8932e903647c9912f66ad2ce34f. - csslint: - enabled: true - duplication: - enabled: true - exclude_fingerprints: - - 09e2899562aa713dce4899fff9ecb2ff - config: - languages: - - javascript -ratings: - paths: - - api/**/* - - assets/js/**/* - - "**.js" -exclude_paths: -- server/test/**/* -- "assets/js/shared/*" diff --git a/Tomoe/.gitignore b/Tomoe/.gitignore deleted file mode 100644 index fd07126..0000000 --- a/Tomoe/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# configuration files -tomoe.config.js -tomoe-test.config.js - -# template files -src/**/templates/*.template* diff --git a/Tomoe/Core/src/extensions/template/README.md b/Tomoe/Core/src/extensions/template/README.md new file mode 100644 index 0000000..792d600 --- /dev/null +++ b/Tomoe/Core/src/extensions/template/README.md @@ -0,0 +1 @@ +# diff --git a/Tomoe/Core/src/extensions/template/config.json b/Tomoe/Core/src/extensions/template/config.json new file mode 100644 index 0000000..8710700 --- /dev/null +++ b/Tomoe/Core/src/extensions/template/config.json @@ -0,0 +1,7 @@ +{ + "name": "template", + "displayName": "template", + "injectables": { + }, + "interface":"sidebar", +} diff --git a/Tomoe/Core/src/extensions/template/importable.js b/Tomoe/Core/src/extensions/template/importable.js new file mode 100644 index 0000000..5418a65 --- /dev/null +++ b/Tomoe/Core/src/extensions/template/importable.js @@ -0,0 +1 @@ +export * from '../' diff --git a/Tomoe/Core/src/extensions/template/package.json b/Tomoe/Core/src/extensions/template/package.json new file mode 100644 index 0000000..0291c99 --- /dev/null +++ b/Tomoe/Core/src/extensions/template/package.json @@ -0,0 +1,11 @@ +{ + "name": "template", + "version": "1.0.0", + "description": "A template for Tomoe Extensions", + "main": " ", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "HackMerced", + "license": "MIT" +} diff --git a/Tomoe/assets/images/logos/logo_blue.png b/Tomoe/assets/images/logos/logo_blue.png deleted file mode 100644 index 57d31aae75250f18297f81eb6895f5781835b24c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21719 zcmY&=1ymJX*YKs|N=QnhfOLt3Gzij-bY7(!LApdl5Tv9V=|+(5R9ad(q+7cGxdT4m z`@5FQb zY&7t{2(DQoZ-GS;CrK?QH9J!$7h^{gh}dg8mGtXglIaNh*#~aN7|~n1TTdzM9tanE>G_Ox4pg7y0V^9Cg%)x!m+Q8eG9e3PQ;p z$UIFVN>%!F=9I?=2lIU(%_53*erEqgXsZA>tE@71dQv zL5HV%&TEin96%H0{H!!qh{f-4LgFWU5mFYRcW zAaH5X{<_a6g@FXVNd3Z2qaa$@c*1-h_b-Y+MFFZ#ZgW@&~3{IPhrsjXaW8S{Xgh~m)_&6`ARozaEA z+k~q+4g^*QfVs}kI9MDGkE2C+G=OLUc#xef)L_nn%&o1qi8-8JMT;C;aHe8^0m29% zipNDXPj=<$s!CqWd-|2f1|C+BNSZRpT;gl?-2z;=GgwKYz*jQ?>rk$*w)HIT+4_rE zR)QuArwu}3I65$9pR(qH^QUpkpCiB@yRpUBC57v0m~exd9vp#aFf9@F#S>j)J@Q%G z)2=RA&~v0m6Gttx2&8pHsIY_EcFC^y;SQTN0)N9-J-$qI2oRrk%C-qP@m6@5C@pH| zhbs293#ko&dB=lq(Ev94xv|>zX>rf{QxoitJHa57$ci>R=@Z>+HxMC%3`=-^Y38qe z9v^Sc)LBLz_$oCJKD0Stq@Bh1*cASOFG9X;^;v#b#iae3iZc-0#xiAF*$P_L9eira z5}qPcsjq5$*xp(Z@mbTV$_MKa;u!F&puax~3IwB>gN z$7P~VyXnF^J+2@0P=ibLqAW*A2VzeW1J1$TlOPoSB0!BcC?efYq~S{tvRfr2 ztF!qX?qYh6fY!+XAC+*u@>2u^jw-Aby8l>~0KRC%g$H#SNc!a=Y~z+~egp9U->MK+gU!um{LZ29)dundwA zvilLpe_?{dHNOReO>{F_j(XcdhCE)W`GSMNPQSj+D{=7TsWpK6V+7+9&qRoIcPl9W7dHq@SOoT=U>K? z-nBgaHGUWO6JhO$MXF19(k)sTU>t8r!Tc)YUylL;dg{Q_^sOLNK`1(3JAvF2ga_t} zi8(NY`Klc;GEFoFtOEf3x@Ua3rEb=VXv6t)Lx!o)2Mjg{VYt@(yrlsmW3_5GD9dOm z0Up}R13YQ5i3+#0Oz^dQpz;Lr^l!*9A)7LTQ0hNIP_VOalPsxE2M}S~j256M8*ydL zVqfH_6)dm0@#(-~s>~XMf^DMbsc3agf!_go6?}qLRK{zHifVFlFG0s*8#PO8Jmjq+!>z^8-xRtm%w4Mb}~@`mbWxhJm^S%Do$6& zg3a?L+l+Ql{0+J?Q5#Y~M{x|!ATDJi6**C_MZtg?=~0$^}GX2jDtW%c?)1L>sV;>^S+V*%>p6+ z(2iJ_K)&Z<$mk6x?b{ZvWn^{b`5;Er-6PGAipRzvAFO8J1LiBw31;jiB=3MAFe)H? zlIQPf)`UpaU?t zZGYV7OZE%y@J))r{LF5%H=V?N;M6TVLr{q=h9-ewYXpe$s8KlI6dS-z^rZ3mn|D6uJPBkN4&8?=eonLh14vsIUhUYn;?UDLCUNWU6;bVo z#u%APL|&_k?ztgzdYmL0>j# zOfmT%FCTr|#jBi6+E$KSZas7fEXspo%OCohT>fm%!Z$cNV76Hk<|3-y?7oAuz=Ki% z@%OcmjEtw`w;`wxYP=ZnjX1y=O~#TN2!(-NoL>U?>PLSP=nPkXZIn9t<9v`=Y9M$h zZZlHXXD^$(c1S`3mabb{iSf4!-l$K4qAorx8@vx>Zx!->f#dJ=mZ0ZRv+>yN_yUv? z7vD^#mv}YBDJhLm!r?{rdbQR*^c3pK1T@dyD(ilvmU)f0@D^bp4#nk$rX`pXsfF>N z+v6Q*hk!R7zPOF(b}3kT2iV`tI`0+eqJrHNwJHGkcG&|IWbiQ_lod!!#%(KA04{jS zQpLL6kIBH&18y^i!1)oqB`%y9Y6IZir)tv?lcyug;efGWr zI>bY9)>|Y!ApytnPN#K=MIbQlv!DPXU>mVldE*wSBnG?HvLk@hadcsqGDfUcEdT^` zh|)3-@)jm14jjf#ZI!sgHn7si3iOfm9md+8p9S180Y5mDP`ITu5EAefU5=W<<@93e zwsuh8$Ah8)@cWJp0+4`07`4dpd0w5xAIz}f4}t>P9uTK4q4&Sa zU;?Ea`U?yM7z0p&{Za|v<^7gCPlMhZGfS{LrDio{d1|)^OeKInYfM3KC}6*vB<09| zr)6m%49kljJqs(nH>BzeN}LH8_aTrfn6T|=o+Ss7g6=LI)h>>7Yc(2vx;rnVm4&5~ z#CEJcjeJvf4-Za5w3U{~5>QRU7LZy#F@Fa|4rdDrI1l|a;2^R3ii8#p=KEfTWh6JL zXiqpp?YtUZ`B=cWYiWr#xP!Jldo|!cA<{rDRRG?L$1gNe?iy_&epegZ9#j(wb0vrn?|GG>+9OL(dD}f0GW~R*Tmm?e6tHJ(OV#|0F#HOi)vr)-V^}G z8WXCwz1IG-&xZtUaE@>5ja__MX(EU20^j1nKhpFvEY^8RMfN0T7P6oXAbYey0o$SF z)n?4^O~QB7Z>yhDgw}+(2-R_LTUbPD_T7$7P!47+u!P*Na;surGXNK8)W5?Ox9$L8 zkJOr&eu=osr*>O$>m^{uNPurKVDIAby}Wayy+=U-eIfXKT?6nfU_PiN*P!-R=I-B^ zs~AZe5;kB;*&_`K7!SpNru6SMz@Ld}pX#>U8Pr+=wqSz43I-3vCqm2h1+a4tZnJol zBcQefw;04)9Jb)LB+-BH7TBfd+Jb9556kx6x0^EGbb&6d#7M2v z7qD`|y8vv~pe1VLRb11%b3gcRaDKs({2Q}Hz6j*BG!$%YUK>VY-li1%XUpL3Wd)RN z;sXiP2cw+uGd{oJoh+r?K>=F>zcFKjk}KQ6D1_)nX}N|^S_c?q-}VI)8h<@lXsfHl z_Z&D=4a~1W?yP}4_|%M9>&{1#X_K|2o$LZc?<|s>Dg5eT$8St{`c2LT(|I#nqyh`A zpssPo?^|9AzL>FO^65S-y)&5ryx)%$SO-Gmi5z-%0C5%AdusT#gG7XGv;Yve@&(UmKa|z+Gs6l&&qdq``rm$OD-bS6iPW@4Ic`oupEr>eR(dh6Ha4d?A3ZeZ_tI`M-F1nmq-RMKdb}V zPTquPAOkOhygFO?_Rkx}ZnsRisue*f<%EslxAB#x$~mA_t=_<63vN-_K*^79d5VT5mvLx(j}ZfHndbhBjtK6|`5JeI+34VVWn8FJKGoq_s}9zAh&pS2 zI}lgF)_m`RlcdG*ps+kq{7xRQXSP0Fq=`;4@JQSOP#Y z+0auRtQ3$Dx?m6=LEuUL!Ke5~AXFNgh=e2MvBv4A(8M!Y5vt-Zh)#)gJHRtvp7qO+ z0LRLA?XCWxCcz{J$(6e&_b@bgpe+9qmJN1;kX*HUaGhMkZgV-ra&#R|2ne-2OV83c zB{Nyj%YFHs0bOblUax<>qivh4zydU@)Lgm?W&ilG)lUJq_A)GMy7l_+o3CN%;B2gB z<6;=-we^`mRYNw$MoFNt`8&*aIezeCKOLZZAT7@p)Ry$#4yhmtYl|Upd-1B>D&c9m zT2KI33TQ@;qm|$tDJQ6i!S}^|S`P?QUyU9U-nH0+am92*EdGZL|9E3emVxt|%a@e@ ztps%Ij$2i$)joY?oLSp=SIr=#qd{;D0F%a=jq`qaaPkTn%q#}nEia$G?;mfLUU1QX zW~L$kydT)E{ImSiJSZ2@i~MyNF3DT`!?odnmnkSEFy1O9VQk}0!)2D|v%myLp~+votZGODt}pf{LX!!TTa2PW59D~9dcDGJRnSgIq_^kB=LXjjbxKRX-4-m{wFxd zRTJ@`F=Fn&|H))tBn`KXqyyhe3if|`!Y*QkD{}GWog$mlDFn-azOG?$Pw{2_kGm~F zg*cfhAZ1&@KPh>_fkybB(Xp@-w1D|U=YJ3R4nqPWm|UZ;Zny2`q5gD4)|2)Bc`z&X zGr$>6d7s<~RndWib~!`S(G(H?$cPH?xKPzxLvV&0*sgd%C3)c(3b(3sub3$dFq(RG z*NCOP#Qsh&B>l_o^<9{mM|Hw;m}}(k3OBWXo{>ln>ui-Sv$OsW=s7JB8{x%^t&&^U z*?gLy1+)(3z1e+<|I{*>y-or(WwzdVap##lp+GuPNMt8C`%lbD3&&1zX(n>!zoCGq zt8v|K$jp-;<3njW8vYYD6c|4p!W+#b=AF=g2D2F%0aTPR8+@1M&9i{fln{+%Lk%zy zRl|hr#exxNw%ml>y|i>gbQlawJe&T$*{@-~c}8y6cx85C_3^s)jfR0{e`C$8wE+G_ zKff9{E>==q zf>L>E%!C{5OqYFdygalIH?tD*;4{QgiKX+ZjM<5tjC~veB&VGh{A}1%cmmr#=&gCx zR7L&+c2pxtm6ruR?oavjWBdvm5oXA6ak@7ZPwQ>gG)vIB77{q$Y@1&RZ8!*6IOffD zZNE#*&+Qg`#Ovg)oqhN#|5jFAD^I%h^=QFKam$8fBHdBv3-ud)>^-8|```Hdu}-Lf5`*xH{y z*CgPSs|sNwKx|dRUlqqc?cC~@j2mlhh*8?5)qc&B!J@3>q-dK=tDo;lsAN+`9w)e|K`~^;|HPJtlP)>sjc#Rh5UG?reKyUy@J!EjLa0lz#9Nr@ zJietI%NM`N8-~TAOP#0v5inoH+1xJRGzT>WHDwf2E=~TPw7@8pMno!X^8}HZmx!GH ziFu6CL{aEr_l1TuL+0O=@5o3neohLD+1=Vo8B}cK6Dgx4PG4zK+c=<=wm~2iNAUeIi`VIZJ0F6 zQ^OU1mShslk~7WYy}=3p{E{hY_9*334cAh)b>T;VYXq%-%vS2EM}8f zsC#}J$HuZQQTErVBB0sh7nG=lc+mEV%5l4f_dGiamB%P0#vJZN3_8QWF;N2ZCdVu~ z7l9zbg^nwY*PrXl)hp(T`xpV(hZb;G=cEug+EgJrF%Z)a?TC!0IDM`law0A;nQ)IA zVngO>U}{k$Hp9JuwSACL%wi)JJf4jsyCkzv;S{U>r6lMe^owB+A8fTM{q?-|TmzJ%1Zt zX-6EsXB^?p9vWWU9Cl|9Fnlt6wK=r@N8B}nwNNGLcXJ&^BovP1=~PbFxs#)~K6_m~ zmBwfgN)Pq6DNvnqpDF9xS)aXG@zd`fQ(G?)WXUiY&lNLe56E_UQeza;DkjYaSGtN% zs&~@U@tooElm`3J4t5`P6R98a!@qyRgt=cK`11RYs+eluZ#;f=yq7%{pOJ<#p34z_ zK4Vm?k}Sja1xKY%l`kn=FOC5fu6)b&;U)Q@q;Kqjt~pjgtxP~SQ{k8Fsfr94A;{Iy zcpv+oSo~Ta+k75(JokvqU4$vr-`vY_;n#C@96jt!ea*Q{g5ihRU$ea2g$|^LlDfp} z%ePcBO1s;E9n9NTz?8rlxxg%*oBwxjAV(=@Xv&8Ym9JaI&y;aOa5lYa6g{RUyJX@I z_i(=pd2jtC9fa$rB3H@qwJGI(J?=?wt>b`Dey*Aps)Y+s&_z31HW)nOR5xdPvs;@x zpSmYh3%eOj3yZ{_gjQBW96cX7$U|P8uwTb$y57 z0s_9;y!M2hNxj{Zo4Rm#8HA$t$mI<%7>o@@@C|-9s=eYzF^XI|Hk7?#rT%~*!0Jm@ z*yMT-($aI*)P3{EJp=g}N3%Lz`tpHspNq~9-5;ks_^5xepIce&R521-Y)PSaf_tT9qB{udj-IgAU`O9D0#L$hqScgI{wGB-}IYPLRA_(EL^WB z%|uZ0hr0iW69xrD)Xv0{Kp|TKkYo&vJQde!PA*)Nz|CRm1K+}ePKEkV1GWL<$8s*o zx=o-6n!66lSz~m>pO3c~g!}^5(*CnNoi)Hm|AAdLFl^F~k7 zJ6J^MB(0{NC!nR`cdx^l$4mb)$Bpag3r(k;Pf7z`VgMz@)EIT@2I0##N{Ywz5wv-O zNnQRG&NV&^o3NQQ@j)LoRC-=pTnK8K@^isOR^G-2o&fD${PApt0Cx)Y!58Aq^B4%(JZ#R z?N2($JyGK>zuY4?jPdL}(S6?WZ1e5!Vs94?_Oq9nZbr>A`c#FwQ-P!hi&GP>V0_Pq8rPRiYIZaX#1l) z@HXu2mLL*u8^immz*g%IH;hsDA|)Z)_^4@=y@M-$Yto#w+#j)VLSl>Mex8-C59Kd& zFU)m*`uU7I1)gx^7$`AKjy^@E(X}?1cz!gj-(2ZK{BZi7_PJK#rm)Av<&q_5DjOlR zSqy2+UPxFIuVR|rxTfQgZ5(6pS^#G=T1R*xhY>}C;~c3KjSO^qNrw~8q2z38n;cP0 znEUMNB0dkYVbxcYv)?0Wf*%}(9k!<@!WOdjvoCgm4*9zrJto$oda~rM+I~DisAC4h z{OBeu7-`)Ho!`nv&Deg2^+D~U`Z)WTb2$v-JQ)SQA6Hj3-nIv_239mMet^if$up#v?FL;G=4en>6FJGlxK5%uSb%dDv<#2FyP?cw7S1cl~-(?Maz{ zi*NVD$!csjNQ~o4(NlkZwc1Pzk!h#$aU)AvAX?_O-5}oi2KT=qd^{Nu;#3p!G#(Gs zTxUq_>;z8jgCFj3$POMit|bAEMj~9fs}T{8;5qSAg_0qiXA_h;;j;Yn5SXh-YW@Bb z&Q2L9@qE9AX|De!Z1KSAIQ)>hhmCiJxB#L;f5ZyXaEEaDMnt_Kh%-k-hq zrbnwb-DbbsGzJ}!rZoJ06BEB!|EaWcweTa3ptPSWFb7{#QEmAi+0}~lGsQ$5Y_0U= zyXpG8<@ZL~kS-h&OV*dIKd8j_Hn4~=o}4XN`+Jq;e>F z_3)tRTANLC?>+i5i$hy@&{f&H2LyoqxsoIW7T#7DFzQB|5L5+vTX+|0Y0aJAv-B}7-(KlM8do#G zeU~HBtq5&iY3a{GSc_`0(Xw2!ljL}6IShGQ~Pyf(R(319|2?ITJ=M)_0oBDLTAab(m?IH~)l9$oA-4mG$EDI3^8G)L=xT zuNRwIGM>vhPpTqP6{9wqG5WI<;1RYT5qUvL;gg zbnc^Dcb#Jx8)PVQ@w*|YTFDH(pe10`e{cIdb$RMih9Pzpdd2_!k9d(YOPT15H;Wm2 z5+kPXE}{lm=M~|^wb}hG{q|DIH*t!FETeYxbyTCXxm z4!n;1`#f)riXS*RVyX|pqa-loJrkFG_T%36Qx+@Oi|2J+_zRRztQ_T440_nR!%XaW za&t1gGYqh0K%=e?P~gQd*7dvUtpZm#JRarf_Aot3+$rN2oX%CQMi{VOL8rC0h9rz7 zqy!bOo)w)q7w^gtwD!I)Rau$qKB}Qt7;wbG$@?^5vX5bNBoaJOlApy5JoYicA#43m zWm1yht-@H*^-ceSL+@Po@wxVBJ>L#IOyQ}ZxH_a-myz2Sf;R9>t3^lYoC-1vXo91jWD4zM^|NU$FrGa>Bu z_8>V!3gm&7Yd*H|rdDm-e*kNFGa9W}e;d4uLF?Vup7`rt*RSGnSI^FyWHQ+`y_JL~ z)9eS32S?VP|LS}kj3E7E0`gRU*0HC*2hARLRv5?5aS!R2ip_>bdrY) z6)DN~zmBU|+Nc{mn~%f3*&M{i#fsyBLOC3*K1lWY;4$>0XzeA8}_$yu+IX7w>NQ3mK87DzREn3XdI$Apnh5J(i?W$59$1^51*@q%{J5A0| z9MRTD?`q+<0jqdq@Pu`3Cn4R|je=Pk5$PTI8Gwlw&msK_vxolC3x{cv>;j#xJdoAK{L zA5%PKu|h5)cy9?P3uZHX^UY~rqZn_kt4lJK;^i3<9g%s|QFebMRMZL2yPQ?fmCOP` z30tBqkux?Zl_lfa>Y(3JP?16YQC+9fw~D#f2A|l<;QI$+C3#{8pGIQ4 zU4p4BWz*<>9X|Ig|KEmw*)nX9GFfM8)AQ{fge_XRH+{z^rmPa|f*jWa6L^?P_e9a+ z|Fjlw({#UY<+b_qxWM?g-{+uxw|DT0EXX;-H{@P3V(7BbrKx@CLDx|5H?V={)q;Ha zB7~OMH}}hUIl&z4yyR~>W(o4Oc0!_;LH;>I0PmkMoRE@NBEO}6qL3Zi&I-4ZcADiC z{xWzxb{+3Z{uKAlM~RMC4Tx5)0|t)8e)qgYJX!8GaCc<|;vh*b-n`*9-{Q^YoQLb&aiWP*QgVEg@ume zi1TmvzOu|*5y5mY;H@;zR-5ZNfsfKQ8AQ=lCb8RoxZF*uRiVM@lY}Vh&9%6GbHj5d3v|w_)_fDc0_2p&w z*IFM0^*{O!QI3Ad{8>ph(UYp|nnCQ&WiDqX>kSJ$s@utb8JS~+R0#m5dtRULw=lr4 zJkX1vp7Tu53qFB^XBF(JR5b0R^03FX$$zKC=}w*kms2B8ItY=tsgn)1nJWTI;~AmYELI2k4jHQyG4dpCxM%sBEDeF7oPxSwR|b?)?&A@&f+oYR zt@>apNA(kS-{31f(^!PsC+G@6yi@rk9~HkTriU_%EcVRl;QctnyBrpplOr`KP~F zcxP+NNDJ*mqe(TVrUV=CzRO>HS2kJUzbYJ`57$_uiTcW2fS7SwaP{M{(x}8 zy2baSxx^n!H7$)Iz_n;LXyUUl0;Iv#H16J9_ryU)pNjYbKQ9zoB91|+3;4_tO!x^? zoN_}~?wVZ}{S2OLWqTTR>CC+57p#zX8ZFi#-Mp`bH+hYygOB|@q5w)cbHIRX?wfz& zj{&=qpD1&5MEMiH#xqnj|Vlaslt_FLu!{@{_c_*yXm$sanz?&FS_& z1Q?}IE|h7FFMjDENbEtf>zwMrR5mzly_SYE>xev=mUQM~9WEj1xAjEMYU5J02tR%x z*q6AM!0#VfaTvn>^sxKIr3n|&$Dh%UAjrQ$G1XSE#5Z|m*7W9L)J7i?nX>LhW&u4v zSOod6+;F&Ny06@oaxN~HbMT<6lTZr67zyBPuGufEf~W)`*O6z>-w7?loC?NYhT2_o z#Hrt29%j2;G8mU@NbuXNY5A+2cld8ir#SKgw(|kCWncN>cL+_wP$1zw@5Knn2{959l(PHYtwagW_ zPBv$YefAml6X_k?n+BdzLc}&-2q(H*;p*UDuow+0$?g#TQ^Dwlp02pyNk;Mk0x;{f zEJTO+EBjfq;7u#5$jh>Ljkoa|(45iU#RGTHW!7*OC0$CvkA4hMxrg@)N+S*eU=UTz zBrNf-CyeQDC~|EdIToP9MR*SUEsR_~Bqct$W)K+IIO74FNZ{e4V;u;GFFdBjagUyFo)d5xsjN9QrjfmN#pUHJFO&4BROH8D1|5IT;PSXLQ#e2&8Q>PyF z`W*kk#|*D(v>;&9`n^G0zfm+8Be!Tf$mKnjdj{FNl+DQ(t8ZWVL1$Bd%Qd`Kho zZvA(up6AeP>4fvXYbLBB~D0lLa-h@xTliiNHKcxUQyc`vpVNd z_V6{lc$d+RlvMQ?0*wtp2q6NsJvaKx<76)783|Y(x~tzZOS{t|CJ=4KlnozyoU)<6 zKES`Mz-%oHfObGevXW*KhaUT&rla0R^)Ic-dISMLfjYQ^nm{trqbi-bsCpm5ExS(X zZWYz!uS5DCvAUQB(DwQTtTywa+(YUBrqsUE;C4{PBi`QcGP6M5Os$SvaCyW$;g9Ab zSfFP`aYD%%5U1Fbue?MKha(){)x|oSUXGl@X-*o z>`-@H0q)JX!`wYkra@mCNl|gO?m}+SQ6SPbRh_A(y_o1XmWd&Eor^6R9<($$IVJWw ze7-NrDS*XoqTMZn0rGZbyYlTwOAUmWnl$y(fNqEHZB#wC%}B-3ti>UmV#MZrV)nfx{|u9y?454z#yi&~O67-B@9 zN+8DU+J*~(KZ0OeCTsC&5YYY^ag-Jfa1Vx9E_q{RHn&M~QhZ!zf*s%Ans%w&$&uF}{kTH^|1F?|56JBbLJ<_rwK& z@0Z*mD8;FeVi_2J%9tARUwBdscrGBRY) zogO$67nQF{Ps#XTN={N3QM%+UT=DsFDf{^S!7hk>6T%^-0*C`&AZ#dJoDB-oKp-POr&=Ho2|8M$enO-mE-UcHhS76V7GEzSNLnAjE5IFE z#iw?}>KX)rjn(JlIQFTiz|zNc>SuV+`4!Y^;3oXXbqM^vl&{wd@bH-j_-f&IY+ecd z?FEo|-~*_=`P&0~r>HB{G;QE_a|ntNvCA!ba^Nb1J`;*La1maR;}yaLoqdA}rm_Hz z2Vif%IBatg_$9o_-ZtPa5#TjXZr_Ge^2GwaNkj6uy+mYvci9Ot5qEcUs+1G>=*=h$ z#a9zJs#anI`J6|Sgcy=DBN|Bou018u&wWokHou+_UW<6p?i_u1e;)XVX_Een2EYyE z_)QLaGc^I6ba31b&tJzw7)#N^+wU^kjq=dbNPxjdbGCd93cxM`8gLcw7$b`ixM5Zf zgZL)*;qhxCSbHSVI~DWhlfjb&d@Qh}6zN|fF3qAPg$wc306u6rX0AB=NJx`fKsc8Wa6c4Vt8`Fj>a0DQ?cAA);~!jtf$gDtbwmAJxa@1 zQ1MXH0hFTh;|XzW0kjKwJI~3;O)N~75z?@$@{-I&s1n{<;gW6w%7AZA_$i08B5CEV z!?1O_Ri*cgveA9nkh@upzH<00dqE*56!6(C&q@aEsh57*J;9&{mV*2G7Tj zuDFt46L7pbl0%$Zs%0z}*GR&`4Dp$tP= zb4w9E^hQ@Dyc)>5#~gBNdMKr6UnX?&Q%Cr2BTrGj%AX+e{i-`&V5K63yBb_y`AxBG%PPx>ul>5=btp0ocTYBleF zwCl7Ut5zcE2R-MPEo^I1vn51O_8UMIe<0}Ojf)A8ZFiywTkjU4*!fPA8{3X(ej_S{ zWQt%N*?-6gvA?+wB(6h7uV>{0h-k-jW$@ck!SCK%-1s(+isl}5FJpeje>QXRSAh#m zad7Uu&d!dV(ls3zq{6Pxnh4Q?beIrD=WC+@<(-bFLhNzyfMKPTgO6+$yBv!>2T<{D zq#UU2ktY;j6iiQ6ll;Rt9Lu}gWio_GdSnJmU)yr&Sh!)r!=p(@Mb~q| z&z?@nbM#lfLWi6@f;&pg@mKZpzYdROejt#09qiu7MNk_7!koS6zcJgr_M(v)=JzFL zMf>>rF(P8-QIX>0JrDe9^BqNk52wTVcQ zus=2|wMj;gu*SeZZu#4|RCO|GFm*7oL-q2=TUa$Ou%XW6yvTjSE5GSTBU$q>n!BWP za{8Wciejo?nXQSE=I@?~lW5{i9{Yz<9sS+16ut)BgKQz^%S%eabBa_{c@H5RRO{=9 zPL^vemTpxmiu|1)m_nWLSkhFG?QPv;4{B{<>n02z?P@|qm2z^1hu7C*)^jr)s2I7% z)^$pigRgl%1jv$;AU4-@phQBEkB}fMv_i=##Z^aKMds6n7#P|)Evz?NhFDO->cTB; zkLH9gQiaJiqA-%~fEGnb!`~pYAZpg~7^TG8+4v_K4uw57E$;+6a{ZRb?LTXOu6Obt zXLE^Y%7ls>a6#Pp0RoCjRo277A8w*`O!ZNtiOEPMAgggXQ&m0s@7Y?)X0QMafJpO} z=>?P>3)__51$>(x2%zxdxK0wNTsT<(M4aiFmXQwZBS&9#r;F~2< z$A?Z_Bf7`YUUOyoje^T4KJ3ir-Cg27kV7YsbK3yR3)VH7qu%@(QkKl9W)`m`5=!^A zp-&I}oOA8hFQwL7EnW}Q<+`M!!G#D+DGvCqH?)j~ja3dh9bZy9Ix zs>neG&bc`Z9TNH-np4T^xxN&wg8(`B0+(JR#!_`5oo`>7wp)PLv@cRq8B0EC}iBC-?s;G$%$=eIRtMHUFgs^#pZ64y$DsMvfJnBJ_*1Q=d5|2H3-;Bk#u`?6b`t*}z z+i3I)4Djr`JUBd}Mfhx(X3|OMy*fQjUPHDrYswL(5X#OjEJN&+^BMBbixgSy-rJ|w zttMVhe6=Y55Xd{v2*2(#Hb0BZ)8-dhZ+=w_)jZ`bM4YWt;F-Bs8;%5uucWD~ zWH#FBap1ysFWUZM8Ny|ACV1&JX;87S`_#4BXB>rEKWeV1)b4>VQQi@3>!qb{Qkc)= zgO%A06F{QOO9rI>lp*s{AyrVS{QNKocj4uk;Z=+Y4Y`!)A85(zbhkOBPJcZ8QD#} zrz$v<<2;m0jYbjm6CM<5Kqhmi7c>s^bdCbdmxAuow`ERgw-`PKwo!u8Gn81HC!fYY`gd4 zW~Msg&o9NUoe#+Tu-E7bnif3@8@6GI9ra1v19BzIbK`*)-onm5kkY`EeduKKrExs- zKEdp=^Ftce_T$jYwyPTAg7|;tNXAdwi+?>#P;BXe(P|-L+EXXxLS%a z`_Hcm^`#_h34*aHWFJoCgy&-DDwFM$dnjzq0zS|2Q0Vnrdfx`5lIANVO^sLRm?A7_ z_nO$g3qK)uNqPRa4*z(V$I82oKV5S*vIYOQfX|S(d`hQUD0T8>Ot`xrK9JP_bO}LH6_`F7`4Lx{KBL3 zLv}h7e>#WaY)xCNtp}Sr|MZKDI5pXGeGKy~0_8SZa&k6RSyzDpKbudu9y5ULnR3!7 z(UUJ-Br$6(54l|Hka0`b zNhJNT?HIxRZP)gw6Pk!HIGhgH##!OIalQHnud0vDiHKICfJorIlHms{(Nx0~%k$2Y zu~HV%gRiSgUwX_==nOT{qd{{No2{FTYq*fpdO|lP-FTL(UMy+21#N%wB$l?2jBuZDwK!4x6Ta~Bx8qDQw`LQS(t(*KVu2(1 z9~(-B)2q4(9o4dB6SikFSDoSC`Z0?4Kcb|Ggl?)N$Q}H38*pftDklqF|5?w-8oF+c zqVQ)&9O;?0`=w_u-QSPm|1wiC&Wlj8yjY7I>x0Pws+wyvlb%;z5&a0m3YW{WzI*ja z%qxj+I)q}r!yYQ7M14atAki4(ZaFd`A#4uq1U_{?$k49#XE=HoYjU{~x-NOv^!3B? zo2sW@b`;%{%A}|f{<*Zirfp{bku~8^!bVdP(u$8DW9q>hv4f8XE&8j0iL00kzi6yk z&*rKO-+nN8T{ziD#p+ARQ+%*|Fh>$9<@Q$hRksdB&eCZ!2jm|{p}bX^UEPT|VqRg3 z_?B<<11lRO&aoe22>Gq2dQu=Ue6fndU1T(3Xv?wXp@3%B)(3}=3RAk)mj7X?QfD%=)#1a7DshW3vFS@?K&AA%$pphEY1fbY|IB*z*22)3nY`=MmR> z>g|(G8cYOHczY1(evIzQfXd8P?XX1hT2Nou7$<8*G$3@-;#C&W_FJuUAs|x%a53(b zJgq2NHl@m#wj=1ot_cy!2)We`$vl+o(gMp}{99zGAnAg_lmO^p;X^G36kf~sP{ID# z_0wlh?ujmkZqj;rn$Vj6Mp+yDM|{XVr9=XcO}VIr6bfREV;7pkneTEtY!(cLDgy}p zQi{2c1Z@iS(qR7F#M3{JWy6&bngwMq{(Q=g03p(I+FnKEP8lJg#L^GCd`R&?CxqyI z9O{P-rk_wE_@-bBQH*bBSBplYk}*|Zsy<+6UE~o*fe>d@Lx3QqSX-}EA2_gI=rvdV z)Pf4NjTCN_p7QyP_2uWbS~{XHR7Hp0kbJuqgmvfNDKc9?d`V(mJ^y*AD>ZAI_pRh8 z?FuBU3D@ftt=2w@dCFI_4~T#>udSaN2^nVERNa4|>L&)pWV?yG?6SDXno-&QQ^~3h zaXl2|w-q!9ALU~tPBYj*0|QO4Fk5PUiJ3+$6-!6e`dQya&kJ$G#8**d&8jQEWX?|u z_rGz(ta4Cju9$k>3lIHY_ub_#E$ z&{9-brT>19EbK*w87eDVb-m+4$UQ=^%FQv61k?9>Z~9W_fnboE*=Hb$Q@Hbw zsSfA3iExWQcQ+dJd)LEwm6|DXtuT2##kQGrsrO?*@EqNU=1!!tU-LueB%LeoPpESvd>0l4` zpS{u8ak|LR3sH_elWnDWert@1{9^X*r9$tR%I7q#!GEOemI)wZ&Yro!N<>pkNu#1 z;P2O}znJkR$!dY4)P?EJOQET&a0M7mC>v z{o?W`c?$PXd_Sq^EY}172Z^31BD@WxXei#+KA&JmcZ7Y2yB2WPE5+l#)`?Ki3kKZDY5JL3HOZF1q|SEk?g63wtl3t?+H z<=>ie60z}#Y+kC{AJ9ENSQbA!py^sJV(V#fSB_MMY}ja-tqhFy{gN{IEX+*~f$z2c z-`u}`t&MuM%hPn8eer<@uJ8U@xckgreOzX1k?7^H)}zzPkNi%*I#sptbJOG(v1|Qi z|KV2ZI#<1bd&*J<Z3RhZ+25`4Nn75;!VqOpZnyv9ifc9DXZ|eOe4SSf9NCWP*|q;> zKVKKcAIT%Q>X&ZVh7Eg~ZpUftcz*Vk@V-4<4;RU7*}R8Skm1FJJC-ps%(qwHS~E}I zY{t_?m+xkSgPT2e_1D?^YoFO)-`15`XZ-z7jKON#5D}d<`#x;*-kAFNfa34NTmHT~ z^c+}T*>C@&otBz?iqYD56~mVuk#p~JZr{6M>))qI>Q9Srar}ma{i~JVD{J-dW$f*f zUKg&of4UhvE3h*ED_6~akcr{K(za5=CG-Dp-kEB)K7HxL95Ja=+4W@$If33`ez*4L z?yTC6^Vcu>w)u4Hto@&5E^zS4`2vSAL7;^bvXiL60B8;f2&h4}QZgK3fozd>n2`V; zeP-Ygh79O3BsKxZeStv1XVj3FMg{ Jvd$@?2>>gmsz(3- diff --git a/Tomoe/build/core/config.js b/Tomoe/build/core/config.js deleted file mode 100644 index 4c83953..0000000 --- a/Tomoe/build/core/config.js +++ /dev/null @@ -1,61 +0,0 @@ -import crypto from 'crypto'; -import fs from 'fs'; - - -import { Definitions } from '../templates'; - -const TOMOE_CONFIG_PATH = `./${Definitions.configName}` - -export class Config{ - constructor(params = {}){ - this.hackathon = params.hackathon || ''; - this.beta = params.beta || false; - this.errorTrack = params.errorTrack || false; - this.secretKey = params.secretKey || process.env.JWT_SECRET_KEY || crypto.randomBytes(64).toString('hex') - this.databaseName = params.databaseName || Definitions.server; - this.databaseUri = params.databaseName || process.env.DB_URI || Definitions.databaseUri; - this.server = params.server || this.database; - this.apiVersion = params.apiVersion || Definitions.apiVersion; - this.userTypes = params.userTypes || Definitions.userTypes; - this.hackerStatuses = params.hackerStatuses || Definitions.defaultHackerStatuses; - this.volunteerStatuses = params.hackerStatuses || Definitions.defaultVolunteerStatuses; - this.build = params.build || ((fs.existsSync('../.hackmerced')) ? Definitions.build.default : Definitions.build.import) - this.adminPermissions = params.adminPermissions || Definitions.defaultAdminPermissions; - } - - get(){ - return { - hackathon: this.hackathon, - beta: this.beta, - errorTrack: this.errorTrack, - secretKey: this.secretKey, - databaseName: this.databaseName, - databaseUri: this.databaseUri, - server: this.server, - apiVersion: this.apiVersion, - userTypes: this.userTypes, - hackerStatuses: this.hackerStatuses, - volunteerStatuses: this.volunteerStatuses, - adminPermissions: this.adminPermissions - } - } - - save(){ - return new Promise((resolve, reject) => { - const configJS = `exports.Tomoe = ${JSON.stringify(this.get(), null, 4).replace(/"((?:\\.|[^"\\])*)":/g, '$1:')}`; - - fs.writeFile(TOMOE_CONFIG_PATH, configJS, function(err){ - if (err){ - reject(err); - return; - } - - resolve() - }); - }) - } - - delete(){ - fs.unlink(TOMOE_CONFIG_PATH); - } -} diff --git a/Tomoe/build/core/generator.js b/Tomoe/build/core/generator.js deleted file mode 100644 index 58b7537..0000000 --- a/Tomoe/build/core/generator.js +++ /dev/null @@ -1,290 +0,0 @@ -/* - _______ - |__ __| - | | ___ _ __ ___ ___ ___ - | |/ _ \| '_ ` _ \ / _ \ / _ \ - | | (_) | | | | | | (_) | __/ - |_|\___/|_| |_| |_|\___/ \___| - - Version 2.0 -*/ - -import figlet from 'figlet'; -import packageDetail from '../../package.json'; -import colors from 'colors'; -import readline from 'readline-sync'; -import {Database, aql} from 'arangojs'; -import Joi from 'joi'; -import fs from 'fs'; - -import { Admin } from '../../src/server/src/collections'; -import { createCollections, moveFile } from '../util' -import { env, Definitions } from '../templates'; -import { Config } from './config' - - -const term = console.log; // easier to type -function divider() { term('\n==') }; -function createValidationError(validate){ - return validate.details[0].message.replace('"value"', 'This field') -} - -const YESNO_CONTEXT = "\n Type 'Yes' or 'No' to continue: ".grey; -const TOMOE_CONFIG_PATH = `./${Definitions.configName}` - -const databaseName = Definitions.server; - - -let storedAnswers = new Config(); - -let adminDetails; - -const stage = { - currentStage: 0, - start:function(){ - stage.steps[0](); - }, - next:function(){ - stage.currentStage++; - stage.steps[stage.currentStage](); - }, - prev:function(){ - stage.currentStage--; - stage.steps[stage.currentStage](); - }, - same:function(){ - stage.steps[stage.currentStage](); - }, - steps:[ - function introduction(){ - term('\n===================================='); - term(figlet.textSync('Tomoe')); - term('====================================\n'); - term(`You are running the installer for Tomoe v${packageDetail.version}\n`.green); - stage.next(); - }, - function checkEnv(){ - term('Checking for environmental variables...'); - - let missingList = []; - - for(let req in env){ - const reqData = env[req]; - - - - if(!process.env[req] || - (process.env[req] && reqData.filter && Joi.validate(process.env[req], reqData.filter).error)){ - missingList.push({ id: req, value: reqData }); - } - } - - - if(missingList.length){ - term('\nThe following environmental variables are either missing or incorrectly setup:'.red); - - missingList.forEach((missing) => { - term(` ${missing.id}`, `# ${missing.value.description}`.grey); - }); - - term('\nLearn how to create local ENV files at: https://github.com/HackMerced/HackMerced/tree/master/Tomoe#local-environmnet-variables-in-development'.red); - term('\n'); - process.exit(); - } - - stage.next(); - }, - function installDBAssets(){ - term('Checking for ArangoDB instance...'); - - global.db = new Database({ - url: process.env.DB_URI, - }); - - db.listDatabases((err, databaseList) => { - if(databaseList){ - if(databaseList.includes(databaseName) && fs.existsSync(TOMOE_CONFIG_PATH)){ - term('\nYou cannot re-run installation if you have already established your database, please destroy your database before re-running.'.red); - return; - } else if(databaseList.includes(databaseName)){ - // just in case someone fails installing - term('Cleaning up old failed installations...\n'); - - db.dropDatabase(databaseName).then( - info => { - stage.next(); - } - ).catch(err => { - term(err.stack.red) - }) - return; - } - - // no conflicts (fresh new database) - stage.next(); - - return; - } - - term('\nTomoe Installer cannot access your ArangoDB database...make sure your server is on and connection URI is properly setup!\n'.red); - }); - }, - function createDatabase(){ - db.createDatabase(databaseName).then( - info => { - db.useDatabase(databaseName); - - createCollections().then(() => { - db.listCollections().then(() => { - stage.next(); - }).catch(err => { - term(err.red); - }) - }).catch(err => { - term(err.red); - }) - - }, - err => { - term(err.stack.red) - } - ); - }, - function askHackathonName(){ - divider(); - term('We will ask you a few questions to better configure this service for you.\n'); - - storedAnswers.hackathon = readline.question("What is your Hackathon's name?: ".magenta); - - stage.next(); - }, - function askBetaFeatures(){ - let answer = readline.question("\nWould you like to use beta features?".magenta + YESNO_CONTEXT); - answer = answer.toLowerCase(); - - if(['no', 'n'].includes(answer)){ - storedAnswers.beta = false; - } else if(['yes', 'y'].includes(answer)){ - storedAnswers.beta = true; - } else { - stage.same(); - return; - } - - stage.next(); - }, - function askErrorTrack(){ - let answer = readline.question("\nCan Tomoe occasionally send error information to our servers?".magenta + YESNO_CONTEXT); - answer = answer.toLowerCase(); - - if(['no', 'n'].includes(answer)){ - storedAnswers.errorTrack = false; - } else if(['yes', 'y'].includes(answer)){ - storedAnswers.errorTrack = true; - } else { - stage.same(); - return; - } - - stage.next(); - }, - function startUserInfo(){ - divider(); - term('Now we will create a user for our GUI:'); - - // set adminDetails - adminDetails = new Admin(); - stage.next(); - }, - function askUserEmail(){ - - - const email = readline.question("\nWhat is your name?: ".magenta); - const validate = Joi.validate(email, Joi.string().required()).error; - - if(validate){ - term(createValidationError(validate).red); - stage.same(); - return; - } - - adminDetails.setName(email); - stage.next(); - }, - function askUserEmail(){ - - - const email = readline.question("\nWhat is your email?: ".magenta); - const validate = Joi.validate(email, Joi.string().email().required()).error; - - if(validate){ - term(createValidationError(validate).red); - stage.same(); - return; - } - - adminDetails.setEmail(email); - stage.next(); - }, - function askUserPassword(){ - - const password = readline.question("\Please set a password (min 6 characters): ".magenta, { hideEchoBack: true }); - const validate = Joi.validate(password, Joi.string().min(6).strip().required()).error; - - if(validate){ - term(createValidationError(validate).red); - stage.same(); - return; - } - - adminDetails.setPassword(password); - stage.next(); - }, - function askUserConfirmPassword(){ - const confirmedPassword = readline.question("\Please confirm your password: ".magenta, { hideEchoBack: true }); - - if(adminDetails.confirmPassword(confirmedPassword)){ - stage.next(); - return; - } - - term('Your passwords do not match!'.red); - stage.prev(); - }, - function(){ - term('\nAdding you as a user...\n'); - adminDetails.save().then((user) => { - stage.next(); - }, - (err) => { - term('There was an error:\n'.red, err); - }); - }, - function(){ - term('Saving templates...') - moveFile('email.template.html').then(() => { - stage.next(); - }).catch((err) => { - term(err); - }) - }, - function(){ - term('Saving config...') - storedAnswers.save().then(() => { - stage.next(); - }).catch((err) => { - term(err); - }) - }, - function(){ - term('Setup Complete!'.green); - term('\nYou should run the following commands to see Tomoe in action:') - term(' npm start'.grey) - term(' npm run api'.grey) - term('\n') // padding lol - } - ] -} - - -stage.start(); diff --git a/Tomoe/build/core/index.js b/Tomoe/build/core/index.js deleted file mode 100644 index 16173e5..0000000 --- a/Tomoe/build/core/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const fs = require('fs'), - ENV_PATH = '.env'; - -// support for local .env files -if(fs.existsSync(ENV_PATH)){ - require('dotenv').config({path: ENV_PATH}) -} - -require('babel-core/register'); -require('./generator.js') diff --git a/Tomoe/build/imports/build.js b/Tomoe/build/imports/build.js deleted file mode 100644 index b4f58fe..0000000 --- a/Tomoe/build/imports/build.js +++ /dev/null @@ -1,28 +0,0 @@ -import fs from 'fs-extra'; -import { Definitions } from '../templates' -const build = require('../../' + Definitions.configName).build; - -// files in the non-development version of Tomoe are pre-imported :) -if(build){ - for(i in build){ - const config = build[i]; - - const dist = config.dist_folder + '/'; - const imports = config.imports; - - if(!fs.existsSync(dist)){ - fs.mkdirSync(dist); - } - - for(i in imports){ - const origin = imports[i][0]; - - if(fs.existsSync(origin)){ - const saveURL = dist + imports[i][1]; - fs.copySync(origin, saveURL); - } else { - throw `The following import, ${i}, does not exist at '${origin}'`; - } - } - } -} diff --git a/Tomoe/build/imports/index.js b/Tomoe/build/imports/index.js deleted file mode 100644 index f923994..0000000 --- a/Tomoe/build/imports/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const fs = require('fs'), - ENV_PATH = '.env'; - -// support for local .env files - -if(fs.existsSync(ENV_PATH)){ - require('dotenv').config({path: ENV_PATH}) -} - -require('babel-core/register'); -require('./build.js') diff --git a/Tomoe/build/templates/email.template.html b/Tomoe/build/templates/email.template.html deleted file mode 100644 index f24e9bc..0000000 --- a/Tomoe/build/templates/email.template.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - {{email_title}} - - - {{body_content}} - - diff --git a/Tomoe/build/templates/env.template.js b/Tomoe/build/templates/env.template.js deleted file mode 100644 index ce13286..0000000 --- a/Tomoe/build/templates/env.template.js +++ /dev/null @@ -1,11 +0,0 @@ -import Joi from 'joi'; - -export const env = { - 'DB_URI': { - description: 'URI of your ArangoDB instance' - }, - 'NODE_ENV':{ - description: 'Set to either production or development', - filter: Joi.string().valid('production', 'development').required() - } -} diff --git a/Tomoe/build/templates/index.js b/Tomoe/build/templates/index.js deleted file mode 100644 index c07b049..0000000 --- a/Tomoe/build/templates/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './tomoe.template.js' -export * from './env.template.js' diff --git a/Tomoe/build/templates/tomoe.template.js b/Tomoe/build/templates/tomoe.template.js deleted file mode 100644 index 10d42c6..0000000 --- a/Tomoe/build/templates/tomoe.template.js +++ /dev/null @@ -1,69 +0,0 @@ -const configNames = { - development: 'tomoe', - production: 'tomoe', - test: 'tomoe-test' -} - -const serverNames = { - development: 'Tomoe_dev', - test: 'Tomoe_test', - production: 'Tomoe' -}; - -const standardDBCollections = [ - 'admin', // admin users - 'hacker', // hacker users - 'volunteer', // volunteer users - 'oauth', // oauth keys information - 'meta' // meta Tomoe information -] - -const dbCollections = { - development: standardDBCollections, - production: standardDBCollections, - test: [ - ...standardDBCollections, - 'user-test' - ] -} - -export const Definitions = { - configName: configNames[process.env.NODE_ENV] + '.config.js', - server: serverNames[process.env.NODE_ENV], - userTypes:['admin', 'hacker', 'volunteer'], - apiVersion: '2.0', - defaultHackerStatuses:[ - 'registered', - 'applied', - 'accepted', - 'waitlisted', - 'confirmed', - 'attending', - 'inactive' - ], - defaultVolunteerStatuses: [ - "applied", - "denied", - "approved", - ], - defaultAdminPermissions: [ - 'read', - 'read+write', // read + write - 'admin' // super admin (controls group settings) - ], - collections: dbCollections[process.env.NODE_ENV], - databaseUri: 'http://root:@127.0.0.1:8529', - build:{ - default: [ - { - app:{ - dist_folder:"./src/app/src/dist", - imports:{ - "resources":["../UI/HackMerced-2017-Style/Resources", "scss/resources"] - }, - } - } - ], - import: false - } -} diff --git a/Tomoe/build/tests/index.js b/Tomoe/build/tests/index.js deleted file mode 100644 index ad78a7e..0000000 --- a/Tomoe/build/tests/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const fs = require('fs'), - ENV_PATH = '.env'; - -// support for local .env files - -if(fs.existsSync(ENV_PATH)){ - require('dotenv').config({path: ENV_PATH}) -} - -// this environment is always test -process.env.NODE_ENV = 'test'; - -require('babel-core/register'); -require('./test-starter.js') diff --git a/Tomoe/build/tests/test-starter.js b/Tomoe/build/tests/test-starter.js deleted file mode 100644 index 379a3f6..0000000 --- a/Tomoe/build/tests/test-starter.js +++ /dev/null @@ -1,117 +0,0 @@ -import colors from 'colors'; -import Mocha from 'mocha'; -import fs from 'fs'; -import path from 'path'; -import { Database } from 'arangojs'; - -import { Definitions } from '../templates'; -import { Config } from '../core/config'; -import { createCollections } from '../util' - -const databaseName = Definitions.server; -const SERVER_TESTS_DIR = './src/server/tests' - -// Part two testing things -const mocha = new Mocha() - -global.db = new Database({ - url: process.env.DB_URI -}); - -console.log('Pre-generating database at "Tomoe_test" to test server code!'.green); - -db.listDatabases((err, databaseList) => { - if(databaseList.includes(databaseName)){ - console.log('\nDropping existing test Database') - - db.dropDatabase(databaseName, () => { - createDatabase(); - }, err => { - console.log(('\n' + err.stack).red) - }); - return; - } - - createDatabase(); -}); - -function createDatabase(){ - db.createDatabase(databaseName).then( - info => { - console.log('\nDatabase has been generated, begining tests!'.green); - db.useDatabase(databaseName); - - createCollections([ 'user-test'] ).then(() => { - readTestConfig(); - }).catch((err) => { - console.log('\n'); - console.log(err.stack.red) - }) - - }, - err => { - console.log('\n'); - console.log(err.stack.red) - } - ); -} - -let newTestConfig; - - -function readTestConfig(){ - // generating test config - console.log('Generating tomoe.test.config.js...!'); - - const configParams = { hackathon: 'testHackathon'}; - newTestConfig = new Config(configParams); - newTestConfig.save().then(() => { - setTomoeData(); - }).catch(err => { - console.log(err); - }); - -} - -function setTomoeData(){ - const Tomoe = require('../../tomoe-test.config.js').Tomoe; - global.TOMOE_CONFIG = Tomoe; - - startMochaTests(); -} - - -// make sure your tests are loaded before running the tests - -function startMochaTests() { - function processMochaDirectories(rootDirectory){ - fs.readdirSync(rootDirectory).forEach((child) => { - const childLocation = rootDirectory + '/' + child; - if(fs.lstatSync(childLocation).isDirectory()){ - processMochaDirectories(childLocation); - } else if(child.substr(-8) === '.spec.js') { - mocha.addFile( - path.join(rootDirectory, child) - ) - } - }) - } - - processMochaDirectories(SERVER_TESTS_DIR); - - // Now, you can run the tests. - mocha.run(function(failures){ - process.on('exit', function () { - startFrontEndTests(failures); - }) - }) -} - -function startFrontEndTests (failures){ - doneEverything(failures); -}; - -function doneEverything (failures){ - newTestConfig.delete(); - process.exit(failures); -}; diff --git a/Tomoe/build/util/create-collections.js b/Tomoe/build/util/create-collections.js deleted file mode 100644 index 005a1c4..0000000 --- a/Tomoe/build/util/create-collections.js +++ /dev/null @@ -1,25 +0,0 @@ -import { Definitions } from '../templates'; - -export function createCollections(additionalCollections = []){ - return new Promise((resolve, reject) => { - const collections = Definitions.collections.concat(additionalCollections); - let error = ''; - collections.forEach((collectionName) => { - db.collection(collectionName).create().then( - () => { }, - (err) => { - - error = err; - return; - } - ) - }); - - if(error){ - reject(error); - return; - } - - resolve(); - }); -} diff --git a/Tomoe/build/util/index.js b/Tomoe/build/util/index.js deleted file mode 100644 index 40a91cb..0000000 --- a/Tomoe/build/util/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './create-collections' -export * from './move-templates' diff --git a/Tomoe/build/util/move-templates.js b/Tomoe/build/util/move-templates.js deleted file mode 100644 index c49132d..0000000 --- a/Tomoe/build/util/move-templates.js +++ /dev/null @@ -1,15 +0,0 @@ -// DEPRECATION WARNING: This will be removed in later versions of tomoe -import fs from 'fs-extra'; - -const SERVER_DIR = './src/server/src/templates/' -const BUILD_DIR = './build/templates/' - -export function moveFile(fileName){ - return new Promise((resolve, reject) => { - if(!fs.existsSync(SERVER_DIR + fileName)){ - fs.createReadStream(BUILD_DIR + fileName).pipe(fs.createWriteStream(SERVER_DIR + fileName)); - } - - resolve(); - }) -} diff --git a/Tomoe/package.json b/Tomoe/package.json deleted file mode 100755 index 960974f..0000000 --- a/Tomoe/package.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "name": "Tomoe", - "version": "2.0.0", - "description": "Centralized API user platform for Hackathons", - "main": "production.js", - "scripts": { - "clean": "rimraf dist", - "compile": "node ./src/app/build/scripts/compile", - "setup": "npm run generate", - "generate": "node ./build/core", - "build": "npm run clean && cross-env NODE_ENV=production npm run compile", - "start": "node ./build/imports && cross-env NODE_ENV=development node ./src/app/build/scripts/start", - "api": "nodemon -e js -w ./src/server ./src/server/index.js", - "test_server": "cross-env NODE_ENV=test nyc node ./build/tests", - "test_app": "cross-env NODE_ENV=test karma start ./src/app/build/karma.config", - "test": "npm run test_server", - "test:watch": "npm test -- --watch", - "lint": "eslint .", - "lint:fix": "npm run lint -- --fix" - }, - "repository": { - "type": "git", - "url": "https://github.com/HackMerced/Tomoe.git" - }, - "author": "Shubham Naik ", - "license": "MIT", - "nyc": { - "require": [ - "babel-register" - ], - "exclude": [ - "build", - "**/tests" - ], - "sourceMap": false, - "instrument": false - }, - "devDependencies": { - "babel-cli": "^6.24.1", - "babel-core": "^6.25.0", - "babel-eslint": "^7.2.3", - "babel-istanbul": "^0.12.2", - "babel-loader": "^7.0.0", - "babel-plugin-istanbul": "^4.1.4", - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.23.0", - "babel-plugin-transform-runtime": "^6.15.0", - "babel-preset-env": "^1.4.0", - "babel-preset-es2015": "^6.24.1", - "babel-preset-react": "^6.24.1", - "babel-register": "7.0.0-alpha.15", - "babel-runtime": "^6.20.0", - "chai": "^3.5.0", - "chai-as-promised": "^6.0.0", - "chai-enzyme": "^0.6.1", - "chai-http": "^3.0.0", - "chai-nightwatch": "^0.1.1", - "chai-things": "^0.2.0", - "chalk": "^1.1.3", - "codecov": "^2.2.0", - "colors": "^1.1.2", - "connect-history-api-fallback": "^1.3.0", - "cross-env": "^5.0.0", - "css-loader": "^0.28.1", - "dirty-chai": "^1.2.2", - "enzyme": "^2.8.2", - "eslint": "^3.19.0", - "eslint-config-standard": "^10.2.1", - "eslint-config-standard-react": "^5.0.0", - "eslint-plugin-babel": "^4.1.1", - "eslint-plugin-import": "^2.2.0", - "eslint-plugin-node": "^4.2.2", - "eslint-plugin-promise": "^3.5.0", - "eslint-plugin-react": "^7.0.1", - "eslint-plugin-standard": "^3.0.1", - "extract-text-webpack-plugin": "^2.1.0", - "figures": "^2.0.0", - "file-loader": "^0.11.1", - "fs-extra": "^3.0.1", - "html-dnd": "^1.1.0", - "html-webpack-plugin": "^2.24.1", - "karma": "^1.7.0", - "karma-coverage": "^1.1.1", - "karma-mocha": "^1.3.0", - "karma-mocha-reporter": "^2.2.1", - "karma-phantomjs-launcher": "^1.0.4", - "karma-webpack-with-fast-source-maps": "^1.10.0", - "mocha": "^3.2.0", - "node-sass": "^4.5.3", - "nodemon": "^1.12.1", - "nyc": "^11.0.3", - "phantomjs-prebuilt": "^2.1.14", - "react-addons-test-utils": "^15.5.1", - "react-test-renderer": "^15.5.4", - "redux-mock-store": "^1.2.3", - "rimraf": "^2.6.1", - "sass-loader": "^6.0.5", - "should": "^9.0.2", - "sinon": "^2.2.0", - "sinon-chai": "^2.10.0", - "style-loader": "^0.17.0", - "url-loader": "^0.5.8", - "webpack": "^2.5.1", - "webpack-dev-middleware": "^1.8.4", - "webpack-hot-middleware": "^2.13.2", - "yargs": "^8.0.1" - }, - "dependencies": { - "arangojs": "^5.4.2", - "body-parser": "^1.15.2", - "boom": "^5.1.0", - "compression": "^1.6.2", - "dotenv": "^4.0.0", - "figlet": "^1.2.0", - "hapi": "^16.4.3", - "hapi-auth-jwt": "^4.0.0", - "isparta": "^4.0.0", - "joi": "^10.6.0", - "nodemailer": "^4.0.1", - "object-assign": "^4.1.1", - "promise": "^7.1.1", - "prop-types": "^15.5.10", - "react": "^15.5.4", - "react-dom": "^15.5.4", - "react-redux": "^5.0.4", - "react-router": "^3.0.0", - "readline-sync": "^1.4.7", - "redbox-react": "^1.3.6", - "redux": "^3.6.0", - "redux-thunk": "^2.2.0", - "relish": "^0.2.4", - "request": "^2.79.0", - "sha256": "^0.2.0", - "uuid": "^3.1.0", - "whatwg-fetch": "^2.0.3" - } -} diff --git a/Tomoe/readme.md b/Tomoe/readme.md deleted file mode 100755 index b274595..0000000 --- a/Tomoe/readme.md +++ /dev/null @@ -1,330 +0,0 @@ -Tomoe - -# Hackathon Application Management API - -[![Code Climate](https://codeclimate.com/github/HackMerced/Tomoe/badges/gpa.svg)](https://codeclimate.com/github/HackMerced/Tomoe) -[![Codeship Status for HackMerced/Tomoe](https://codeship.com/projects/37a7fc80-886a-0134-ba24-069b35d31ada/status?branch=master)](https://codeship.com/projects/183931) -[![Test Coverage](https://codeclimate.com/github/HackMerced/Tomoe/badges/coverage.svg)](https://codeclimate.com/github/HackMerced/Tomoe/coverage) - -Tomoe is a scalable, open source API that allows Hackathon organizers to manage and monitor their applicants and staff. Tomoe was built for HackMerced's application management but has been extended and open-sourced for everyone. Tomoe is still in development and will be available for use this December. - -[Website](http://tomoe.hackmerced.com) | -[Docs](http://tomoe.hackmerced.com/docs) | -[Installation](http://tomoe.hackmerced.com/install) | -[HackMerced](http://hackmerced.com) | -[Sponsor Us!](http://hackmerced.com/sponsor) | -[Blog](https://blog.hackmerced.com/) - -# Table of Contents - -- [**Features**](#features) -- [**Installation**](#installation) -- [**Documentation**](#documentation) -- [**Resources and Tools**](#resources-and-tools) -- [**Roadmap**](#roadmap) -- [**Contributing**](#contributing) -- [**Support**](#support) -- [**License**](#license) - -# Features - -- **API**: Tomoe is primarily an API that allows you to build your own UI and interfaces around our platform. -- **Application Manager**: Manage students who apply to your hackathon by approving, denying, generating QR codes for hackers. -- **Email Utility**: Tomoe works with SendGrid to send application statuses, important updates, and other information to hackers. - -
- -[⬆ back to top](#table-of-contents) - -# Installation -Tomoe's runs on top of node.js and requires you to install `node.js`, `arangodb`, and `npm` - -Once you've installed the prerequistes you will need to run the following command to install your Tomoe instance. It will ask you a few questions to set up a server. - -```terminal -npm install -npm run setup -``` - -Access the server and gui locally at: -```terminal -http://localhost:4925 -``` - -### Local environmnet variables in development -If you do not want to setup environmental variables globally, Tomoe allows you to locally set environmental variables by creating file called `.env` in the root directory of Tomoe - -```terminal -cd /path/to/tomoe/ -touch .env -``` - -Now open up the `.env` file - you should add the following: -```text -DB_URI={Connection URI of your ArangoDB instance} -NODE_ENV={Either DEVELOPMENT or PRODUCTIOn} -``` -
- -[⬆ back to top](#table-of-contents) - -# Documentation -## Shortcuts -[**Hacker Object**](#the-hacker-object)
-[**GET /hackers**](#get-hackers)
-[**GET /hackers/{user-email}**](#get-hackersuser-email)
-[**GET /hackers/{user-id}**](#get-hackersuser-id)
-[**POST /hackers**](#post-hackers)
-[**POST /hackers/{user-email}**](#post-hackersuser-email)
-[**POST /hackers/{user-id}**](#post-hackersuser-id)
-[**DELETE /hackers/{user-email}**](#delete-hackersuser-email)
-[**DELETE /hackers/{user-id}**](#delete-hackersuser-id)
-
- -[⬆ back to top](#table-of-contents) - -## The Hacker Object -The Hacker Object is the core to Tomoe's hackathon management system. Hackers are the people who apply to your hackathon. -```javascript -{ - "_id":"user-id", - "name":"user-name", - "email":"hackathon@email.com", - "password":"userpasswordhash", // not returned normally - "status":"applied", // applied, denied, approved, waitlisted - "survey":{ - ... // array of attributes that can be customized and sent to the user - } -} -``` -
- -[⬆ back to top](#table-of-contents) -- [back to documentation](#documentation) -### GET /hackers
-Lists all hackers stored in your database - -#### Parameters -* survey.data.{option}={any-data}
**optional** : will filter the hackers returned based on a particular survey data -

-* survey.lte.{option}={numeric-data}
**optional** : will filter for a range of options that are less than the entered value -

-* survey.gte.{option}={numeric-data}
**optional** : will filter for a range of options that are greater than the entered value -

-* survey.rangemin.{option}={numeric-data}
**optional** : will filter for a range of options, sets the min value -

-* survey.rangemax.{option}={numeric-data}
**optional** : will filter for a range of options, sets the max value - -#### Example 1 -``` -GET https://{your-tomoe-server}/v1.0/hackers -``` - -##### Response -```js -Array [ - { - "_id":"349mei8234", - "name":"John Mallon", - "email":"john@ucmerced.edu", - "survey":{ - "age":22, - "college_origin":"University of California-Merced" - } - }, - ... - { - "_id":"934554", - "name":"Bob Brown", - "email":"bbrown@ucmerced.edu", - "survey":{ - "age":18, - "college_origin":"University of California-Los Angeles" - } - }, -] -``` - -#### Example 2 -``` -GET https://{your-tomoe-server}/v1.0/hackers?survey.rangemin.age=22&survey.rangemax.age=25&survey.data.college_origin=University of California-Merced -``` -##### Response -```js -Array [ - { - "_id":"349mei8234", - "name":"John Mallon", - "email":"john@ucmerced.edu", - "survey":{ - "age":22, - "college_origin":"University of California-Merced" - } - }, - ... - { - "_id":"934554", - "name":"Karl Korn", - "email":"kkorn@ucmerced.edu", - "survey":{ - "age":25, - "college_origin":"University of California-Merced" - } - }, -] -``` -
- -[⬆ back to top](#table-of-contents) -- [back to documentation](#documentation) - -### GET /hackers/{user-email} -### GET /hackers/{user-id} -Returns a particular hackathon hacker, requires one of the previous parameters - -#### Example -``` -GET https://{your-tomoe-server}/v1.0/hackers/john@ucmerced.edu -``` - -##### Response -```js -{ - "_id":"349mei8234", - "name":"John Mallon", - "email":"john@ucmerced.edu", - "survey":{ - "age":22, - "college_origin":"University of California-Merced" - } -} -``` -
- -[⬆ back to top](#table-of-contents) -- [back to documentation](#documentation) - -### POST /hackers -Creates a hacker user -#### Example -``` -POST https://{your-tomoe-server}/v1.0/hackers -``` -``` -CONTENT-TYPE: application/json -BODY: { - "name":"Shubham Naik", - "email":"snaik3@ucmerced.edu", - "survey":{ - "age":19, - "college_origin":"University of California-Merced" - } -} -``` - -##### Response -```js -{ - "_id":"5340424", - "name":"Shubham Naik", - "email":"snaik3@ucmerced.edu", - "survey":{ - "age":19, - "college_origin":"University of California-Merced" - } -} -``` -
-[⬆ back to top](#table-of-contents) -- [back to documentation](#documentation) - -### POST /hackers/{user-email} -### POST /hackers/{user-id} -Updates a particular hackathon hacker, requires one of the previous parameters - -#### Example -``` -GET https://{your-tomoe-server}/v1.0/hackers/snaik3@ucmerced.edu -``` -``` -CONTENT-TYPE: application/json -BODY: { - "name":"Shubham D Naik", - "survey":{ - "age":20, - } -} -``` - -##### Response -```js -{ - "_id":"349mei8234", - "name":"Shubham D Naik", - "email":"snaik3@ucmerced.edu", - "survey":{ - "age":20, - "college_origin":"University of California-Merced" - } -} -``` -
- -[⬆ back to top](#table-of-contents) -- [back to documentation](#documentation) - -### DELETE /hackers/{user-email} -### DELETE /hackers/{user-id} -Deletes a particular hackathon hacker, requires one of the previous parameters - -#### Example -``` -DELETE https://{your-tomoe-server}/v1.0/hackers/john@ucmerced.edu -``` - -##### Response -```js -{ deleted: true } -``` -
- -[⬆ back to top](#table-of-contents) -- [back to documentation](#documentation) - - -# Contributing -Want to contribute to Tomoe? We would love if you were to contribute to the continued growth of our project. Just submit a branch request - if you're a UC Merced student, please [contact us](shub@hackmerced.com)! We're still looking to add developers to our mentorship program too! - -
- -[⬆ back to top](#table-of-contents) - - - - -# Support -The HackMerced Team is happy to help Hackathon organizers with setting up and configuring your application. Email us at [help@hackmerced.com](help@hackmerced.com). - -
- -[⬆ back to top](#table-of-contents) - -# License -``` -Copyright 2016 HackMerced - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -``` -
- -[⬆ back to top](#table-of-contents) diff --git a/Tomoe/src/app/src/index.js b/Tomoe/src/app/src/index.js deleted file mode 100644 index 239fe51..0000000 --- a/Tomoe/src/app/src/index.js +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import createStore from './store/createStore' -import './styles/main.scss' - -// Store Initialization -// ------------------------------------ -const store = createStore(window.__INITIAL_STATE__) - -// Render Setup -// ------------------------------------ -const MOUNT_NODE = document.getElementById('root') - -let render = () => { - const App = require('./components/App').default - const routes = require('./routes/index').default(store) - - ReactDOM.render( - , - MOUNT_NODE - ) -} - -// Development Tools -// ------------------------------------ -if (__DEV__) { - if (module.hot) { - const renderApp = render - const renderError = (error) => { - const RedBox = require('redbox-react').default - - ReactDOM.render(, MOUNT_NODE) - } - - render = () => { - try { - renderApp() - } catch (e) { - console.error(e) - renderError(e) - } - } - - // Setup hot module replacement - module.hot.accept([ - './components/', - ], () => - setImmediate(() => { - ReactDOM.unmountComponentAtNode(MOUNT_NODE) - render() - }) - ) - } -} - -// Let's Go! -// ------------------------------------ -if (!__TEST__) render() diff --git a/Tomoe/src/server/index.js b/Tomoe/src/server/index.js deleted file mode 100644 index 96cd5f0..0000000 --- a/Tomoe/src/server/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const fs = require('fs'), - ENV_PATH = './.env'; -const colors = require('colors'); - -// support for local .env files -if(!fs.existsSync(ENV_PATH)){ - require('dotenv').config({path: ENV_PATH}); -} - -// check if tomoe config is installed -if(fs.existsSync('./tomoe.config.js')){ - global.TOMOE_CONFIG = require('../../tomoe.config.js').Tomoe; - - require( 'babel-core/register' ); - require('./src/database.js') - require('./src/server.js'); - -} else { - console.log(colors.red('\n\nWe cannot find your tomoe.config.js file!')); - console.log(colors.grey('Please install Tomoe before turning on the server by entering the following command:')); - console.log('\n npm run setup\n'); -} diff --git a/Tomoe/src/server/src/collections/Admin.js b/Tomoe/src/server/src/collections/Admin.js deleted file mode 100644 index 12d3fc9..0000000 --- a/Tomoe/src/server/src/collections/Admin.js +++ /dev/null @@ -1,42 +0,0 @@ -import { User } from './'; - -export class Admin extends User{ - constructor(data = {}){ - super(data); - this.permissions = data.permissions; - - } - - static getCollection(){ - return db.collection('admin'); - } - - _get(){ - return { - id: this.id, - name: this.name, - email:this.email, - password:this.password, - permissions: this.permissions - } - } - - - static _get(user, protectSenstiveData = true){ - let data = { - id: user.id, - name: user.name, - email:user.email, - permissions: user.permissions - } - - if(!protectSenstiveData){ - data.password = user.password; - data._key = user._key; - data._id = user._id; - } - - return data; - } - -} diff --git a/Tomoe/src/server/src/collections/Email.js b/Tomoe/src/server/src/collections/Email.js deleted file mode 100644 index 1e856b3..0000000 --- a/Tomoe/src/server/src/collections/Email.js +++ /dev/null @@ -1,28 +0,0 @@ -import nodemailer from 'nodemailer'; - - -const transporter = nodemailer.createTransport({ - host: TOMOE_CONFIG.email.hostName, - port: 465, - secure: true, // secure:true for port 465, secure:false for port 587 - auth: { - user: TOMOE_CONFIG.email.username, - pass: TOMOE_CONFIG.email.password - } -}); - -export class Email { - constructor(data = {}){ - super(data); - - } - - static getCollection(){ - return db.collection('meta'); - } - - static init(){ - this.getCollection() - } - -} diff --git a/Tomoe/src/server/src/collections/Hacker.js b/Tomoe/src/server/src/collections/Hacker.js deleted file mode 100644 index 39ecfba..0000000 --- a/Tomoe/src/server/src/collections/Hacker.js +++ /dev/null @@ -1,44 +0,0 @@ -import { User } from './'; - -export class Hacker extends User{ - constructor(data = {}){ - super(data); - - this.details = data.details || {}; - this.status = data.status || TOMOE_CONFIG.hackerStatuses[0]; // will pick the first status provided - } - - static getCollection(){ - return db.collection('hacker'); - } - - _get(){ - return { - id: this.id, - name: this.name, - email:this.email, - password:this.password, - status: this.status, - details: this.details - } - } - - static _get(user, protectSenstiveData = true){ - let data = { - id: user.id, - name: user.name, - email:user.email, - status: user.status, - details: user.details - } - - if(!protectSenstiveData){ - data.password = user.password; - data._key = user._key; - data._id = user._id; - } - - return data; - } - -} diff --git a/Tomoe/src/server/src/collections/User.js b/Tomoe/src/server/src/collections/User.js deleted file mode 100644 index 9ccd071..0000000 --- a/Tomoe/src/server/src/collections/User.js +++ /dev/null @@ -1,352 +0,0 @@ -import { aql } from 'arangojs'; -import uuidv4 from 'uuid/v4' -import sha256 from 'sha256'; -import Boom from 'boom'; - -export class User{ - constructor(data = {}){ - // user information - this.id = data.id || uuidv4(); - this.name = data.name || null; - this.email = (data.email) ? data.email.toLowerCase() : null; - this.password = null; - this.tempPassword = data.tempPassword || null; - } - - static getCollection(){ - return db.collection('user-test'); - } - - _get(){ - return { - id: this.id, - name: this.name, - email:this.email, - password:this.password - } - } - - static _get(user, protectSenstiveData = true){ - let data = { - id: user.id, - name: user.name, - email:user.email - } - - if(!protectSenstiveData){ - data.password = user.password; - data._key = user._key; - data._id = user._id; - } - - return data; - } - - static _validatePasswords(plainPass, hashedPass){ - - const salt = hashedPass.substr(0, 10); - const validHash = salt + sha256(plainPass + salt); - return hashedPass === validHash; - } - - _saltAndHashPassword(password){ - function generateSalt(){ - let set = '0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ'; - let salt = ''; - for (let i = 0; i < 10; i++) { - let p = Math.floor(Math.random() * set.length); - salt += set[p]; - } - return salt; - } - - let salt = generateSalt(); - let newPassword = (salt + sha256(password + salt)); - return newPassword; - } - - _securePassword(){ - this.password = this._saltAndHashPassword(this.tempPassword);; - this.tempPassword = null; // sets any temp password to none - } - - _setUserData(user){ - for(let i in this){ - if((this[i] && typeof this[i] !== '[object Function]') && user[i]){ - this[i] = user[i]; - } - } - } - - setEmail(email){ - this.email = (email) ? email.toLowerCase() : null; - } - - setName(name){ - this.name = name; - } - - setPassword(tempPassword){ - this.tempPassword = tempPassword; - } - - confirmPassword(confirmedPassword){ - return confirmedPassword === this.tempPassword; - } - - static query(params, protectSenstiveData = true){ - return new Promise((resolve, reject) => { - - const collection = this.getCollection(); - let query = `FOR user IN @@collection `; - let binds = { '@collection': collection.name } - if(params){ - params.forEach((param) => { - const searchBy = param.root + ((param.option) ? ('.' + param.option) : ''); - const searchByBinder = searchBy.replace(/\./g, '_'); - const operator = param.operator || '=='; - query += `FILTER user.${searchBy} ${operator} @${searchByBinder} `; - binds[searchByBinder] = param.data; - }) - } - - query += 'RETURN user'; - - db.query(query, binds ).then((cursor) => { - if(!cursor){ - reject(Boom.serverUnavailable('ERROR 1: Cursor could not be passed through.')); - return; - } - - cursor.all().then((users) => { - resolve(users.map(user => { - return this._get(user, protectSenstiveData); - })); - }).catch((err) => { - reject(Boom.badImplementation('ERROR 2: ' + err.stack)); - }); - }).catch((err) => { - reject(Boom.badImplementation('ERROR 3: ' + err.stack)); - }); - }); - } - - static find(userData, doNotFind = false, protectSenstiveData = true){ - return new Promise((resolve, reject) => { - const collection = this.getCollection(); - - if(!userData || (userData && !userData.email && !userData.id)){ - reject(Boom.badRequest('id or email is required')); - return; - } - - userData.email = (userData.email) ? userData.email.toLowerCase() : null; - - const searchBy = (userData.id) ? 'id' : 'email'; - let query = `FOR user IN @@collection ` + - `FILTER user.${searchBy} == @searchBy ` + - 'RETURN user'; - - - db.query(query, { '@collection': collection.name, searchBy: userData[searchBy] } ).then((cursor) => { - if(!cursor){ - reject(Boom.serverUnavailable('ERROR 4: Cursor could not be passed through.')) - return; - } - cursor.all().then((users) => { - if(users && users[0] && users[0].email){ - if(doNotFind) { - const errMessage = `user exists with the provided ${searchBy}` - const err = Boom.badRequest(errMessage); - err.output.payload.validation = { - errors: [{ - key: searchBy, - constraint: searchBy, - message: errMessage, - type: 'any' - }] - } - - reject(err); - return; - // TODO: add validator extension somewhere - } - - resolve(this._get(users[0], protectSenstiveData)); - return; - } - - if(doNotFind) { - resolve(); - return; - } - - const errMessage = `no user exists with provided ${searchBy}` - const err = Boom.notFound(errMessage); - err.output.payload.validation = { - errors: [{ - key: searchBy, - constraint: searchBy, - message: errMessage, - type: 'any' - }] - } - - reject(err); - }).catch((err) => { - reject(Boom.badImplementation('ERROR 5: ' + err.stack)); - }); - }).catch((err) => { - reject(Boom.badImplementation('ERROR 6: ' + err.stack)); - }); - }); - } - - validate(){ - return new Promise((resolve, reject) => { - this.constructor.validate({ email: this.email}, this.tempPassword).then((user) => { - this._setUserData(user); - resolve(user); - }).catch(err => { - reject(err); - }) - }); - } - - static validate(searchParam, tempPassword){ - return new Promise((resolve, reject) => { - this.find(searchParam, false, false).then((user) => { - if(this._validatePasswords(tempPassword, user.password)){ - resolve(user); - return; - } - - const errMessage = `password is incorrect`; - const err = Boom.unauthorized(errMessage); - err.output.payload.validation = { - errors: [{ - key: 'password', - constraint: 'password', - message: errMessage, - type: 'any' - }] - } - - reject(err); - }).catch((err) => { - reject(err); - }); - }); - } - - - static _modifyUserObject(newData, original = this, root = true){ - for(let i in newData){ - if(newData[i] && (newData[i].constructor === Object || newData[i].constructor === Array)){ - original[i] = this._modifyUserObject(newData[i], original[i], false) - } else if(newData[i] === '$delete'){ - delete original[i]; - } else { - original[i] = newData[i]; - } - } - - if(!root){ - return original; - } - } - - update(){ - return new Promise((resolve, reject) => { - this.constructor.update({ id: this.id}, this).then((user) => { - this._setUserData(user); - resolve(user); - }).catch(err => { - reject(err); - }) - }); - } - - static update(param, newData){ - return new Promise((resolve, reject) => { - const collection = this.getCollection(); - - this.find(param, false, false).then((user) => { - const userKey = user._key; - let updatedUser = this._modifyUserObject(newData, user, false); - - collection.update(userKey, updatedUser).then((user) => { - if(user){ - this.find(param).then((user) => { - resolve(user); - return; - }).catch((err) => { - reject(err); - return; - }); - - return; - } - - reject(Boom.badImplementation('Error 7: There was an issue creating your user!')); - }).catch((err) => { - reject(Boom.badImplementation('Error 8: ' + err.stack)); - }); - - return; - - }).catch((err) => { - reject(err); - }); - }); - } - - save(){ - return new Promise((resolve, reject) => { - this.constructor.find({ email: this.email }, true).then(() => { - this._securePassword(); - let userDetails = this._get(); - this.constructor.getCollection().save(userDetails).then((user) =>{ - this.constructor.find({ email: this.email }).then((user) => { - this._setUserData(user); - resolve(user); - return; - }).catch((err) => { - reject(Boom.badImplementation('Error 9: ' + err.stack)); - return; - }); - }).catch((err) => { - reject(Boom.badImplementation('Error 10: ' + err.stack)); - }); - }).catch((err) => { - reject(err); - }); - }); - } - - remove(){ - return new Promise((resolve, reject) => { - this.constructor.remove({ email: this.email}).then(() => { - resolve(); - }).catch(err => { - reject(err); - }) - }); - } - - static remove(param){ - return new Promise((resolve, reject) => { - this.find(param, false, false).then((user) => { - this.getCollection().removeByKeys([user._key]).then(() => { - resolve(); - return; - }).catch((err) => { - reject(Boom.badImplementation('Error 11: ' + err.stack)); - return; - }); - }).catch((err) => { - reject(err); - }); - }); - } -} diff --git a/Tomoe/src/server/src/collections/Volunteer.js b/Tomoe/src/server/src/collections/Volunteer.js deleted file mode 100644 index 772d38c..0000000 --- a/Tomoe/src/server/src/collections/Volunteer.js +++ /dev/null @@ -1,45 +0,0 @@ -import { User } from './'; - -export class Volunteer extends User{ - constructor(data = {}){ - super(data); - - this.details = data.details || {}; - this.status = data.status || TOMOE_CONFIG.volunteerStatuses[0]; // will pick the first status provided - } - - static getCollection(){ - return db.collection('volunteer'); - } - - _get(){ - return { - id: this.id, - name: this.name, - email:this.email, - age:this.age, - status: this.status, - availability: this.availability, - details: this.details - } - } - - static _get(user, protectSenstiveData = true){ - let data = { - id: user.id, - name: user.name, - email:user.email, - status: user.status, - availability: user.availability, - details: user.details - } - - if(!protectSenstiveData){ - data._key = user._key; - data._id = user._id; - } - - return data; - } - -} diff --git a/Tomoe/src/server/src/collections/index.js b/Tomoe/src/server/src/collections/index.js deleted file mode 100644 index e2b84a2..0000000 --- a/Tomoe/src/server/src/collections/index.js +++ /dev/null @@ -1,4 +0,0 @@ -export * from './User'; -export * from './Admin'; -export * from './Hacker'; -export * from './Volunteer'; diff --git a/Tomoe/src/server/src/database.js b/Tomoe/src/server/src/database.js deleted file mode 100644 index 6fae685..0000000 --- a/Tomoe/src/server/src/database.js +++ /dev/null @@ -1,7 +0,0 @@ -import { Database } from 'arangojs'; - -// connect to database -global.db = new Database({ - url: TOMOE_CONFIG.databaseUri, - databaseName: TOMOE_CONFIG.databaseName -}); diff --git a/Tomoe/src/server/src/handlers/admin.js b/Tomoe/src/server/src/handlers/admin.js deleted file mode 100644 index da3df63..0000000 --- a/Tomoe/src/server/src/handlers/admin.js +++ /dev/null @@ -1,103 +0,0 @@ -import { Admin } from '../collections' -import { operatorSearch, respond, transformData, setSearchParam } from '../util'; -import Joi from 'joi'; -import Boom from 'boom'; - -export const adminHandlers = { - getAdmins: ( request, reply ) => { - let params = []; - - for(let searchTerm in request.query){ - const searchString = searchTerm.split('.'); - - params.push({ - root: searchString[0], - data: transformData(searchString[1], request.query[searchTerm]), - option: (searchString.length > 2) ? searchString.splice(2,searchString.length).join('.') : null, - operator: operatorSearch(searchString[1]) - }); - } - - Admin.query(params).then((users) => { - return reply(respond(users)) - }).catch((err) => { - return reply(err); - }) - }, - getAdmin: ( request, reply ) => { - const { user } = request.params; - const param = setSearchParam(user); - - Admin.find(param).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, - postAdmin: ( request, reply ) => { - const { name, email, password, confirmPassword, details } = request.payload; - - // if passwords do not match... - if(password !== confirmPassword){ - return reply(Boom.badRequest('Your passwords do not match!')) - } - - const saveAdmin = new Admin({ - tempPassword: password, - name: name, - email: email - }); - - saveAdmin.save().then((user) => { - return reply(respond(user, { created: true }, 201)).code(201); - }).catch((err) => { - return reply(err); - }) - }, - updateAdmin: ( request, reply ) => { - const { user } = request.params; - const { payload } = request; - const param = setSearchParam(user); - - Admin.update(param, payload).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, - deleteAdmin: ( request, reply ) => { - const param = setSearchParam(user); - - Admin.remove(param).then((user) => { - return reply(respond({}, { deleted: true }, 204)).code(204); - }).catch((err) => { - return reply(err); - }) - - }, - validateAdmin: ( request, reply ) => { - const { user } = request.params; - const { password } = request.payload; - const param = setSearchParam(user); - - Admin.validate(param, password).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - }, - updateAdminPermissions: ( request, reply ) => { - const { user } = request.params; - const { permissions } = request.payload; - const param = setSearchParam(user); - - Admin.update(param, { permissions: permissions }).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, -} diff --git a/Tomoe/src/server/src/handlers/hacker.js b/Tomoe/src/server/src/handlers/hacker.js deleted file mode 100644 index b50b190..0000000 --- a/Tomoe/src/server/src/handlers/hacker.js +++ /dev/null @@ -1,105 +0,0 @@ -import { Hacker } from '../collections' -import { operatorSearch, respond, transformData, setSearchParam } from '../util'; -import Joi from 'joi'; -import Boom from 'boom'; - -export const hackerHandlers = { - getHackers: ( request, reply ) => { - let params = []; - - for(let searchTerm in request.query){ - const searchString = searchTerm.split('.'); - - params.push({ - root: searchString[0], - data: transformData(searchString[1], request.query[searchTerm]), - option: (searchString.length > 2) ? searchString.splice(2,searchString.length).join('.') : null, - operator: operatorSearch(searchString[1]) - }); - } - - Hacker.query(params).then((users) => { - return reply(respond(users)) - }).catch((err) => { - return reply(err); - }) - }, - getHacker: ( request, reply ) => { - const { user } = request.params; - const param = setSearchParam(user); - - Hacker.find(param).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, - postHacker: ( request, reply ) => { - const { name, email, password, confirmPassword, details, status } = request.payload; - - // if passwords do not match... - if(password !== confirmPassword){ - return reply(Boom.badRequest('Your passwords do not match!')) - } - - const saveHacker = new Hacker({ - tempPassword: password, - name: name, - email: email, - details: details, - status: status - }); - - saveHacker.save().then((user) => { - return reply(respond(user, { created: true }, 201)).code(201); - }).catch((err) => { - return reply(err); - }) - }, - updateHacker: ( request, reply ) => { - const { user } = request.params; - const { payload } = request; - const param = setSearchParam(user); - - Hacker.update(param, payload).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, - deleteHacker: ( request, reply ) => { - const param = setSearchParam(user); - - Hacker.remove(param).then((user) => { - return reply(respond({}, { deleted: true }, 204)).code(204); - }).catch((err) => { - return reply(err); - }) - - }, - validateHacker: ( request, reply ) => { - const { user } = request.params; - const { password } = request.payload; - const param = setSearchParam(user); - - Hacker.validate(param, password).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - }, - updateHackerStatus: ( request, reply ) => { - const { user } = request.params; - const { status } = request.payload; - const param = setSearchParam(user); - - Hacker.update(param, { status: status }).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, -} diff --git a/Tomoe/src/server/src/handlers/index.js b/Tomoe/src/server/src/handlers/index.js deleted file mode 100644 index 691e0d2..0000000 --- a/Tomoe/src/server/src/handlers/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './hacker' -export * from './admin' -export * from './volunteer' diff --git a/Tomoe/src/server/src/handlers/volunteer.js b/Tomoe/src/server/src/handlers/volunteer.js deleted file mode 100644 index 8c76fa0..0000000 --- a/Tomoe/src/server/src/handlers/volunteer.js +++ /dev/null @@ -1,89 +0,0 @@ -import { Volunteer } from '../collections' -import { operatorSearch, respond, transformData, setSearchParam } from '../util'; -import Joi from 'joi'; -import Boom from 'boom'; - -export const volunteerHandlers = { - getVolunteers: ( request, reply ) => { - let params = []; - - for(let searchTerm in request.query){ - const searchString = searchTerm.split('.'); - - params.push({ - root: searchString[0], - data: transformData(searchString[1], request.query[searchTerm]), - option: (searchString.length > 2) ? searchString.splice(2,searchString.length).join('.') : null, - operator: operatorSearch(searchString[1]) - }); - } - - Volunteer.query(params).then((users) => { - return reply(respond(users)) - }).catch((err) => { - return reply(err); - }) - }, - getVolunteer: ( request, reply ) => { - const { user } = request.params; - const param = setSearchParam(user); - - Volunteer.find(param).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, - postVolunteer: ( request, reply ) => { - const { name, email, availability, details, status } = request.payload; - - const saveVolunteer = new Volunteer({ - availability: availability, - name: name, - email: email, - details: details, - status: status - }); - - saveVolunteer.save().then((user) => { - return reply(respond(user, { created: true }, 201)).code(201); - }).catch((err) => { - return reply(err); - }) - }, - updateVolunteer: ( request, reply ) => { - const { user } = request.params; - const { payload } = request; - const param = setSearchParam(user); - - Volunteer.update(param, payload).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, - deleteVolunteer: ( request, reply ) => { - const param = setSearchParam(user); - - Volunteer.remove(param).then((user) => { - return reply(respond({}, { deleted: true }, 204)).code(204); - }).catch((err) => { - return reply(err); - }) - - }, - updateVolunteerStatus: ( request, reply ) => { - const { user } = request.params; - const { status } = request.payload; - const param = setSearchParam(user); - - Volunteer.update(param, { status: status }).then((user) => { - return reply(respond(user)) - }).catch((err) => { - return reply(err); - }) - - }, -} diff --git a/Tomoe/src/server/src/routes/admin.js b/Tomoe/src/server/src/routes/admin.js deleted file mode 100644 index 401e2dc..0000000 --- a/Tomoe/src/server/src/routes/admin.js +++ /dev/null @@ -1,87 +0,0 @@ -import Joi from 'joi'; -import Boom from 'boom'; -import { adminHandlers } from '../handlers' -import { adminValidators } from '../validators' - -// [GET] /admins -export const getAdmins = { - path: '/admins', - method: 'GET', - config: { - handler: adminHandlers.getAdmins, - } -}; - -// [GET] /admins/{user-email} -// [GET] /admins/{user-id} -export const getAdmin = { - path: '/admins/{user}', - method: 'GET', - config: { - handler: adminHandlers.getAdmin, - } -}; - -// [POST] /admins -export const postAdmin = { - path: '/admins', - method: 'POST', - config: { - handler: adminHandlers.postAdmin, - validate: adminValidators.postAdmin - } -}; - -// [POST] /admins/{user-email} -// [POST] /admins/{user-id} -export const updateAdmin = { - path: '/admins/{user}', - method: 'POST', - config: { - handler: adminHandlers.updateAdmin, - } -}; - -// [DELETE] /admins/{user-email} -// [DELETE] /admins/{user-id} -export const deleteAdmin = { - path: '/admins/{user}', - method: 'DELETE', - config: { - handler: adminHandlers.deleteAdmin, - } -}; - -// [POST] /admins/{user-email}/validate -// [POST] /admins/{user-id}/validate -export const validateAdmin = { - path: '/admins/{user}/validate', - method: 'POST', - config: { - handler: adminHandlers.validateAdmin, - validate: adminValidators.validateAdmin - } -}; - -// [POST] /admins/{user-email}/permissions -// [POST] /admins/{user-id}/permissions -export const updateAdminPermissions = { - path: '/admins/{user}/permissions', - method: 'POST', - config: { - handler: adminHandlers.updateAdminPermissions, - validate: adminValidators.updateAdminPermissions - } -}; - -const adminRoutes = [ - getAdmins, - getAdmin, - postAdmin, - updateAdmin, - deleteAdmin, - validateAdmin, - updateAdminPermissions -] - -export default adminRoutes; diff --git a/Tomoe/src/server/src/routes/hacker.js b/Tomoe/src/server/src/routes/hacker.js deleted file mode 100644 index ba0e199..0000000 --- a/Tomoe/src/server/src/routes/hacker.js +++ /dev/null @@ -1,108 +0,0 @@ -/* - The Hacker Object - - The Hacker Object is the core to Tomoe's hackathon management system. Hackers are the people who apply to your hackathon. - - { - "_id":"user-id", - "name":"user-name", - "email":"hackathon@email.com", - "password":"userpasswordhash", // not returned normally - "status":"applied", // applied, denied, approved, waitlisted - "survey":{ - ... // array of attributes that can be customized and sent to the user - } - } - -*/ - - -import Joi from 'joi'; -import Boom from 'boom'; -import { hackerHandlers } from '../handlers' -import { hackerValidators } from '../validators' - - -// [GET] /hackers -export const getHackers = { - path: '/hackers', - method: 'GET', - config: { - handler: hackerHandlers.getHackers, - } -}; - -// [GET] /hackers/{user-email} -// [GET] /hackers/{user-id} -export const getHacker = { - path: '/hackers/{user}', - method: 'GET', - config: { - handler: hackerHandlers.getHacker, - } -}; - -// [POST] /hackers -export const postHacker = { - path: '/hackers', - method: 'POST', - config: { - handler: hackerHandlers.postHacker, - validate: hackerValidators.postHacker - } -}; - -// [POST] /hackers/{user-email} -// [POST] /hackers/{user-id} -export const updateHacker = { - path: '/hackers/{user}', - method: 'POST', - config: { - handler: hackerHandlers.updateHacker, - } -}; - -// [DELETE] /hackers/{user-email} -// [DELETE] /hackers/{user-id} -export const deleteHacker = { - path: '/hackers/{user}', - method: 'DELETE', - config: { - handler: hackerHandlers.deleteHacker, - } -}; - -// [POST] /hackers/{user-email}/validate -// [POST] /hackers/{user-id}/validate -export const validateHacker = { - path: '/hackers/{user}/validate', - method: 'POST', - config: { - handler: hackerHandlers.validateHacker, - validate: hackerValidators.validateHacker - } -}; - -// [POST] /hackers/{user-email}/status -// [POST] /hackers/{user-id}/status -export const updateHackerStatus = { - path: '/hackers/{user}/status', - method: 'POST', - config: { - handler: hackerHandlers.updateHackerStatus, - validate: hackerValidators.updateHackerStatus - } -}; - - -const hackerRoutes = [ - getHackers, - getHacker, - postHacker, - updateHacker, - deleteHacker, - validateHacker, - updateHackerStatus -] - -export default hackerRoutes; diff --git a/Tomoe/src/server/src/routes/index.js b/Tomoe/src/server/src/routes/index.js deleted file mode 100644 index 3f3c642..0000000 --- a/Tomoe/src/server/src/routes/index.js +++ /dev/null @@ -1,11 +0,0 @@ -import hackerRoutes from './hacker'; -import adminRoutes from './admin'; -import volunteerRoutes from './volunteer'; - -const routes = [ - ...hackerRoutes, - ...adminRoutes, - ...volunteerRoutes, -]; - -export default routes; diff --git a/Tomoe/src/server/src/routes/volunteer.js b/Tomoe/src/server/src/routes/volunteer.js deleted file mode 100644 index 93de1f4..0000000 --- a/Tomoe/src/server/src/routes/volunteer.js +++ /dev/null @@ -1,98 +0,0 @@ -/* - The Volunteer Object - - The Volunteer Object is the core to Tomoe's hackathon management system. Volunteers are the people who apply to your hackathon. - - { - "_id":"user-id", - "name":"user-name", - "email":"hackathon@email.com", - "status":"status", - "availability":"hours", - "details": { - "age":"age", - "dietary_restrictions":"", - "shirt_size":"", - } - } - -*/ - - -import Joi from 'joi'; -import Boom from 'boom'; -import { volunteerHandlers } from '../handlers' -import { volunteerValidators } from '../validators' - - -// [GET] /volunteers -export const getVolunteers = { - path: '/volunteers', - method: 'GET', - config: { - handler: volunteerHandlers.getVolunteers, - } -}; - -// [GET] /volunteers/{user-email} -// [GET] /volunteers/{user-id} -export const getVolunteer = { - path: '/volunteers/{user}', - method: 'GET', - config: { - handler: volunteerHandlers.getVolunteer, - } -}; - -// [POST] /volunteers -export const postVolunteer = { - path: '/volunteers', - method: 'POST', - config: { - handler: volunteerHandlers.postVolunteer, - validate: volunteerValidators.postVolunteer - } -}; - -// [POST] /volunteers/{user-email} -// [POST] /volunteers/{user-id} -export const updateVolunteer = { - path: '/volunteers/{user}', - method: 'POST', - config: { - handler: volunteerHandlers.updateVolunteer, - } -}; - -// [DELETE] /volunteers/{user-email} -// [DELETE] /volunteers/{user-id} -export const deleteVolunteer = { - path: '/volunteers/{user}', - method: 'DELETE', - config: { - handler: volunteerHandlers.deleteVolunteer, - } -}; - -// [POST] /volunteers/{user-email}/status -// [POST] /volunteers/{user-id}/status -export const updateVolunteerStatus = { - path: '/volunteers/{user}/status', - method: 'POST', - config: { - handler: volunteerHandlers.updateVolunteerStatus, - validate: volunteerValidators.updateVolunteerStatus - } -}; - - -const volunteerRoutes = [ - getVolunteers, - getVolunteer, - postVolunteer, - updateVolunteer, - deleteVolunteer, - updateVolunteerStatus -] - -export default volunteerRoutes; diff --git a/Tomoe/src/server/src/server.js b/Tomoe/src/server/src/server.js deleted file mode 100644 index e655897..0000000 --- a/Tomoe/src/server/src/server.js +++ /dev/null @@ -1,52 +0,0 @@ -import Hapi from 'hapi'; -import routes from './routes'; - -// start server -const server = new Hapi.Server(); -const Relish = require('relish')({ - stripQuotes: true, - messages: { - 'permissions': 'Please only enter the following permissions: ' + TOMOE_CONFIG.adminPermissions.join(', ') - } -}) - -server.connection( { - port: process.env.PORT || '1738', - routes: { - validate: { - failAction: Relish.failAction, - options: { - abortEarly: false - } - } - } -}); - -server.register( require( 'hapi-auth-jwt' ), ( err ) => { - - if( !err ) { - console.log( 'Loaded JWT' ); - } - - server.auth.strategy( 'token', 'jwt', { - key: TOMOE_CONFIG.secretKey, - verifyOptions: { - algorithms: [ 'HS256' ] - } - }); - - routes.forEach( ( route ) => { - server.route( route ); - } ); -} ); - - -server.start( err => { - if(err) { - throw err; - } - - console.log( `Server started at ${ server.info.uri }` ); -} ); - -export { server }; diff --git a/Tomoe/src/server/src/templates/.gitkeep b/Tomoe/src/server/src/templates/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Tomoe/src/server/src/util/index.js b/Tomoe/src/server/src/util/index.js deleted file mode 100644 index e5b50a8..0000000 --- a/Tomoe/src/server/src/util/index.js +++ /dev/null @@ -1,4 +0,0 @@ -export * from './operator-search'; -export * from './respond'; -export * from './transform-data' -export * from './set-search-param' diff --git a/Tomoe/src/server/src/util/operator-search.js b/Tomoe/src/server/src/util/operator-search.js deleted file mode 100644 index a2e2d26..0000000 --- a/Tomoe/src/server/src/util/operator-search.js +++ /dev/null @@ -1,11 +0,0 @@ -const operatorMap = { - data: '==', - gt: '>', - lt: '<', - gte: '>=', - lte: '<=' -} - -export function operatorSearch(operator){ - return (operatorMap[operator]) ? operatorMap[operator] : '=='; -} diff --git a/Tomoe/src/server/src/util/respond.js b/Tomoe/src/server/src/util/respond.js deleted file mode 100644 index e53f83f..0000000 --- a/Tomoe/src/server/src/util/respond.js +++ /dev/null @@ -1,7 +0,0 @@ -export function respond(data, meta = {}, statusCode = 200){ - return { - statusCode: statusCode, - meta: meta, - results: data - } -} diff --git a/Tomoe/src/server/src/util/set-search-param.js b/Tomoe/src/server/src/util/set-search-param.js deleted file mode 100644 index da6e0e3..0000000 --- a/Tomoe/src/server/src/util/set-search-param.js +++ /dev/null @@ -1,13 +0,0 @@ -import Joi from 'joi' - -export function setSearchParam(user){ - - let param = {} - if(Joi.validate(user, Joi.string().email().required()).error){ - param.id = user; - } else { - param.email = user; - } - - return param; -} diff --git a/Tomoe/src/server/src/util/transform-data.js b/Tomoe/src/server/src/util/transform-data.js deleted file mode 100644 index 161dcd3..0000000 --- a/Tomoe/src/server/src/util/transform-data.js +++ /dev/null @@ -1,12 +0,0 @@ -const transformMap = { - data: function(value){ - return value - }, - number: function(value){ - return parseFloat(value) - }, -} - -export function transformData(operator, value){ - return (transformMap[operator]) ? transformMap[operator](value) : transformMap['data'](value); -} diff --git a/Tomoe/src/server/src/validators/admin.js b/Tomoe/src/server/src/validators/admin.js deleted file mode 100644 index a8c755f..0000000 --- a/Tomoe/src/server/src/validators/admin.js +++ /dev/null @@ -1,23 +0,0 @@ -import Joi from 'joi'; - -export const adminValidators = { - postAdmin: { - payload: { - email: Joi.string().required().email(), - password: Joi.string().min(6).required(), - confirmPassword: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'and password must match' } } }), - name: Joi.string().required(), - permissions: Joi.any().valid(TOMOE_CONFIG.adminPermissions) - } - }, - validateAdmin: { - payload: { - password: Joi.string().required() - } - }, - updateAdminPermissions: { - payload: { - permissions: Joi.any().valid(TOMOE_CONFIG.adminPermissions).required() - } - }, -} diff --git a/Tomoe/src/server/src/validators/hacker.js b/Tomoe/src/server/src/validators/hacker.js deleted file mode 100644 index a026416..0000000 --- a/Tomoe/src/server/src/validators/hacker.js +++ /dev/null @@ -1,36 +0,0 @@ -import Joi from 'joi'; - -export const hackerValidators = { - postHacker: { - failAction: require('relish')({ - stripQuotes: true, - messages: { - 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.hackerStatuses.join(', '), - } - }).failAction, - payload: { - email: Joi.string().required().email(), - password: Joi.string().min(6).required(), - confirmPassword: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'and password must match' } } }), - name: Joi.string(), - details: Joi.object(), - status: Joi.any().valid(TOMOE_CONFIG.hackerStatuses) - } - }, - validateHacker: { - payload: { - password: Joi.string().required() - } - }, - updateHackerStatus: { - failAction: require('relish')({ - stripQuotes: true, - messages: { - 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.hackerStatuses.join(', '), - } - }).failAction, - payload: { - status: Joi.any().valid(TOMOE_CONFIG.hackerStatuses).required() - } - }, -} diff --git a/Tomoe/src/server/src/validators/index.js b/Tomoe/src/server/src/validators/index.js deleted file mode 100644 index 691e0d2..0000000 --- a/Tomoe/src/server/src/validators/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './hacker' -export * from './admin' -export * from './volunteer' diff --git a/Tomoe/src/server/src/validators/volunteer.js b/Tomoe/src/server/src/validators/volunteer.js deleted file mode 100644 index 1a19876..0000000 --- a/Tomoe/src/server/src/validators/volunteer.js +++ /dev/null @@ -1,36 +0,0 @@ -import Joi from 'joi'; - - -export const volunteerValidators = { - postVolunteer: { - failAction: require('relish')({ - stripQuotes: true, - messages: { - 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.volunteerStatuses.join(', '), - } - }).failAction, - payload: { - email: Joi.string().required().email(), - name: Joi.string(), - details: Joi.object(), - availability: Joi.string(), - status: Joi.any().valid(TOMOE_CONFIG.volunteerStatuses) - } - }, - validateVolunteer: { - payload: { - password: Joi.string().required() - } - }, - updateVolunteerStatus: { - failAction: require('relish')({ - stripQuotes: true, - messages: { - 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.volunteerStatuses.join(', '), - } - }).failAction, - payload: { - status: Joi.any().valid(TOMOE_CONFIG.volunteerStatuses).required() - } - }, -} diff --git a/Tomoe/src/server/tests/after.spec.js b/Tomoe/src/server/tests/after.spec.js deleted file mode 100644 index 94ad678..0000000 --- a/Tomoe/src/server/tests/after.spec.js +++ /dev/null @@ -1,7 +0,0 @@ -// this file is only for clean-up mocha tests - -import { server } from '../src/server'; - -after(() => { - server.stop(); -}) diff --git a/Tomoe/src/server/tests/collections/Admin.spec.js b/Tomoe/src/server/tests/collections/Admin.spec.js deleted file mode 100644 index b29353d..0000000 --- a/Tomoe/src/server/tests/collections/Admin.spec.js +++ /dev/null @@ -1,39 +0,0 @@ -import { assert } from 'chai'; -import { Admin } from '../../src/collections'; -import { sampleAdmin } from '../constants' -import { clearDocuments } from '../util' - -describe('Admin', () => { - let sampleAdminData; - let testAdmin; - - beforeEach((done) => { - // create a user - sampleAdminData = new sampleAdmin(); - testAdmin = new Admin(sampleAdminData); - - testAdmin.save().then((user) => { - done(); - }).catch((err) => { - done(err); - }); - }); - - - - describe('#constructor', () => { - it('accesss the Admin class', () => { - assert.equal(testAdmin.permissions, sampleAdminData.permissions); - }); - }); - - afterEach((done) => { - // delete any created admins!! - clearDocuments(db.collection('admin')).then(() => { - done(); - }).catch((err) => { - done(err); - }); - }); - -}); diff --git a/Tomoe/src/server/tests/collections/Hacker.spec.js b/Tomoe/src/server/tests/collections/Hacker.spec.js deleted file mode 100644 index 0fbabed..0000000 --- a/Tomoe/src/server/tests/collections/Hacker.spec.js +++ /dev/null @@ -1,79 +0,0 @@ -import { assert } from 'chai'; -import { Hacker } from '../../src/collections'; -import { sampleHacker } from '../constants' -import { clearDocuments } from '../util' - -describe('Hacker', () => { - let sampleHackerData; - let testHacker; - - beforeEach((done) => { - // create a user - sampleHackerData = new sampleHacker(); - testHacker = new Hacker(sampleHackerData); - - testHacker.save().then((user) => { - done(); - }).catch((err) => { - done(err); - }); - }); - - describe('#constructor', () => { - it('accesss the Hacker class', () => { - testHacker.setPassword(sampleHackerData.tempPassword); - - assert.include(testHacker.email, sampleHackerData.email); - }); - }); - - describe('#query', () => { - it('can query hackers with data inside of objects inside documents', (done) => { - const params = [ - { - root: 'details', - option: 'age', - data: sampleHackerData.details.age - } - ] - - Hacker.query(params).then((users) => { - assert.equal(users[0].details.age, params[0].data); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can query hackers with data inside of objects inside documents and normal values', (done) => { - const params = [ - { - root: 'details', - option: 'age', - data: sampleHackerData.details.age - }, - { - root: 'name', - data: sampleHackerData.name - } - ] - - Hacker.query(params).then((users) => { - assert.equal(users[0].details.age, params[0].data); - done(); - }).catch((err) => { - done(err); - }); - }); - }); - - afterEach((done) => { - // delete any created users!! - clearDocuments(db.collection('hacker')).then(() => { - done(); - }).catch((err) => { - done(err); - }); - }); - -}); diff --git a/Tomoe/src/server/tests/collections/Volunteer.spec.js b/Tomoe/src/server/tests/collections/Volunteer.spec.js deleted file mode 100644 index eb1c32b..0000000 --- a/Tomoe/src/server/tests/collections/Volunteer.spec.js +++ /dev/null @@ -1,79 +0,0 @@ -import { assert } from 'chai'; -import { Volunteer } from '../../src/collections'; -import { sampleVolunteer } from '../constants' -import { clearDocuments } from '../util' - -describe('Volunteer', () => { - let sampleVolunteerData; - let testVolunteer; - - beforeEach((done) => { - // create a user - sampleVolunteerData = new sampleVolunteer(); - testVolunteer = new Volunteer(sampleVolunteerData); - - testVolunteer.save().then((user) => { - done(); - }).catch((err) => { - done(err); - }); - }); - - describe('#constructor', () => { - it('accesss the Volunteer class', () => { - testVolunteer.setPassword(sampleVolunteerData.tempPassword); - - assert.include(testVolunteer.email, sampleVolunteerData.email); - }); - }); - - describe('#query', () => { - it('can query volunteers with data inside of objects inside documents', (done) => { - const params = [ - { - root: 'details', - option: 'age', - data: sampleVolunteerData.details.age - } - ] - - Volunteer.query(params).then((users) => { - assert.equal(users[0].details.age, params[0].data); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can query volunteers with data inside of objects inside documents and normal values', (done) => { - const params = [ - { - root: 'details', - option: 'age', - data: sampleVolunteerData.details.age - }, - { - root: 'name', - data: sampleVolunteerData.name - } - ] - - Volunteer.query(params).then((users) => { - assert.equal(users[0].details.age, params[0].data); - done(); - }).catch((err) => { - done(err); - }); - }); - }); - - afterEach((done) => { - // delete any created users!! - clearDocuments(db.collection('volunteer')).then(() => { - done(); - }).catch((err) => { - done(err); - }); - }); - -}); diff --git a/Tomoe/src/server/tests/collections/user.spec.js b/Tomoe/src/server/tests/collections/user.spec.js deleted file mode 100644 index 4323d5d..0000000 --- a/Tomoe/src/server/tests/collections/user.spec.js +++ /dev/null @@ -1,317 +0,0 @@ -import { assert } from 'chai'; -import { User } from '../../src/collections'; -import { sampleUser, sampleUser2 } from '../constants' -import { clearDocuments } from '../util' - -describe('User', () => { - let sampleUserData; - let sampleUserData2; - let testUser; - let testUser2; - let userId; - - beforeEach((done) => { - // create a user - sampleUserData = new sampleUser(); - sampleUserData2 = new sampleUser2(); - testUser = new User(sampleUserData); - testUser2 = new User(sampleUserData2); - - testUser.save().then((user) => { - userId = user.id; - done(); - }).catch((err) => { - done(err); - }); - }); - - describe('#constructor', () => { - const sampleUserData = new sampleUser(); - - it('access the User class', () => { - const testUser = new User({ name: sampleUserData.name}); - assert.equal(testUser.name, sampleUserData.name); - }); - }); - - describe('#setEmail', () => { - const sampleUserData = new sampleUser(); - const testUser = new User({ name: sampleUserData.name} ); - - it('sets a user email', () => { - testUser.setEmail(sampleUserData.email); - - assert.equal(testUser.email, sampleUserData.email); - }); - }); - - describe('#setPassword', () => { - const sampleUserData = new sampleUser(); - const testUser = new User({ name: sampleUserData.name} ); - - it('sets a temporary password', () => { - testUser.setEmail(sampleUserData.email); - testUser.setPassword(sampleUserData.tempPassword); - - assert.equal(testUser.tempPassword, sampleUserData.tempPassword); - }); - }); - - describe('#confirmPassword', () => { - const sampleUserData = new sampleUser(); - const testUser = new User(sampleUserData); - - it('can confirm a password ', () => { - const confirmStatus = testUser.confirmPassword(sampleUserData.tempPassword); - - assert.equal(confirmStatus, true); - }); - }); - - describe('#save', () => { - it('can save a user to a database ', (done) => { - testUser2.save().then((user) => { - assert.equal(testUser2.name, sampleUserData2.name); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can prevent overwriting an existing user ', (done) => { - testUser.save().then((user) => { - done('A user was created somehow!'); - }).catch((err) => { - assert.equal('user exists with the provided email', err.message); - done(); - }); - }); - }); - - describe('#find', () => { - it('can find an existing user with email', (done) => { - User.find({email: sampleUserData.email}).then((user) => { - assert.equal(user.name, sampleUserData.name); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can find an existing user with id ', (done) => { - User.find({id: userId}).then((user) => { - assert.equal(user.name, sampleUserData.name); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can report an error if no user email or id is provided', (done) => { - User.find().then((user) => { - done('This should not happen'); - }).catch((err) => { - assert.equal('id or email is required', err.message); - done(); - }); - }); - - it('can tell you it cannot find a user via an email search', (done) => { - User.find({email: 'blah'}).then((user) => { - done('This should not happen'); - }).catch((err) => { - assert.equal('no user exists with provided email', err.message); - done(); - }); - }); - - it('can tell you it cannot find a user via an id search', (done) => { - User.find({id: 'blah'}).then((user) => { - done('This should not happen'); - }).catch((err) => { - assert.equal('no user exists with provided id', err.message); - done(); - }); - }); - }); - - describe('#_modifyUserObject', () => { - const originalData = { - data: "b", - data2: { - next: { - internal: true, - souwu: true - }, - next2: 'test2', - next3: ['one', 'two'] - }, - data3: 'test3', - } - - const modify = { - data: "b", - data2: { - next: { - internal: false, - }, - next2: 'test2', - next3: ['one', 'two', 'three'] - }, - data3: '$delete', - } - - const modifiedData = { - data: "b", - data2: { - next: { - internal: false, - souwu: true, - }, - next2: 'test2', - next3: ['one', 'two', 'three'] - } - } - - it('update a user object', () => { - const finalData = User._modifyUserObject(modify, originalData, false); - assert.equal(JSON.stringify(modifiedData), JSON.stringify(finalData)); - }); - }); - - - - describe('#update', () => { - it('can not update a user if that user does not exists', (done) => { - testUser.id = 'blah'; - testUser.update().then(() => { - done('This should not happen'); - }).catch((err) => { - assert.equal('no user exists with provided id', err.message); - done(); - }); - }); - - it('can update your user account', (done) => { - testUser.id = userId; - sampleUserData.name = sampleUserData.newName; - testUser.setName(sampleUserData.name); - testUser.update().then((user) => { - assert.equal(user.name, sampleUserData.name); - done(); - }).catch((err) => { - done(err); - }); - }); - }); - - describe('#query', () => { - it('can return a list of users', (done) => { - User.query().then((users) => { - assert.equal(users.length, 1); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can return a list of users based on a query', (done) => { - const params = [ - { - root: 'email', - data: sampleUserData.email - } - ] - - User.query(params).then((users) => { - assert.equal(users[0].email, params[0].data); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can return a list of users based on multiple queries', (done) => { - const params = [ - { - root: 'email', - data: sampleUserData.email - }, - { - root: 'name', - data: sampleUserData.name - } - ] - - User.query(params).then((users) => { - assert.equal(users[0].email, params[0].data); - done(); - }).catch((err) => { - done(err); - }); - }); - - it('can return an empty list of users', (done) => { - const params = [ - { - root: 'email', - data: 'blah' - } - ] - - User.query(params).then((users) => { - assert.equal(users.length, 0); - done() - }).catch((err) => { - - done(err); - }); - }); - }); - - describe('#validate', () => { - it('can notify if you are not validated', (done) => { - testUser.setPassword('blah'); - testUser.validate().then(() => { - done('This should not happen'); - }).catch((err) => { - assert.equal('password is incorrect', err.message); - done(); - }); - }); - - it('can validate your user account (login operation)', (done) => { - testUser.setPassword(sampleUserData.tempPassword); - testUser.validate().then((user) => { - assert.equal(user.name, sampleUserData.name); - done(); - }).catch((err) => { - done(err); - }); - }); - }); - - describe('#remove', () => { - it('can remove a user', (done) => { - testUser.remove().then(() => { - User.find({ email: testUser.email }).then((user) => { - done('Should not be found'); - }).catch((err) => { - assert.equal('no user exists with provided email', err.message); - done(); - }); - }).catch((err) => { - done(err); - }); - }); - }); - - afterEach((done) => { - // delete any created users!! - clearDocuments(db.collection('user-test')).then(() => { - done(); - }).catch((err) => { - done(err); - }); - }); -}); diff --git a/Tomoe/src/server/tests/constants.js b/Tomoe/src/server/tests/constants.js deleted file mode 100644 index a134f31..0000000 --- a/Tomoe/src/server/tests/constants.js +++ /dev/null @@ -1,114 +0,0 @@ -export class sampleUser{ - constructor(){ - return { - name: 'Shubham Naik', - email: 'shub@hackmerced.com', - tempPassword: 'testing2', - newName: 'Shubham D Naik', - permissions: 'rw', - details: { - age: 20 - } - } - } -} - -export class sampleUser2{ - constructor(){ - return { - name: 'Jan Tanja', - email: 'jan@hackmerced.com', - tempPassword: 'testing3', - permissions: 'rw', - details: { - age: 20 - } - } - } -} - -export class sampleHacker{ - constructor(){ - return { - name: 'Steven Dinh', - email: 'steven@hackmerced.com', - password: 'testing3', - confirmPassword: 'testing3', - status: 'applied', - details: { - age: 20 - } - } - } -} - - -export class sampleHacker2{ - constructor(){ - return { - name: 'Deo Halili', - email: 'deo@hackmerced.com', - password: 'testing3', - confirmPassword: 'testing3', - status: 'applied', - details: { - age: 20 - } - } - } -} - -export class sampleAdmin{ - constructor(){ - return { - name: 'Kevin Ta', - email: 'kevin@hackmerced.com', - password: 'testing3', - confirmPassword: 'testing3', - permissions: 'read' - } - } -} - - -export class sampleAdmin2{ - constructor(){ - return { - name: 'Sophie Vo', - email: 'sophie@hackmerced.com', - password: 'testing4', - confirmPassword: 'testing4', - permissions: 'read' - } - } -} - - -export class sampleVolunteer{ - constructor(){ - return { - name: 'Mark Santiago', - email: 'mark@hackmerced.com', - availability: 'all', - status: 'denied', - details: { - age: 21, - } - } - } -} - - -export class sampleVolunteer2{ - constructor(){ - return { - name: 'Mimi Pomephimkham', - email: 'mimi@hackmerced.com', - availability: 'all', - status: 'applied', - details: { - age: 21, - } - } - } -} diff --git a/Tomoe/src/server/tests/routes/admin.spec.js b/Tomoe/src/server/tests/routes/admin.spec.js deleted file mode 100644 index 9f2dd4f..0000000 --- a/Tomoe/src/server/tests/routes/admin.spec.js +++ /dev/null @@ -1,351 +0,0 @@ -import Chai from 'chai'; -import ChaiHttp from 'chai-http'; -import { assert } from 'chai'; - -import { aql } from 'arangojs'; - -import { server } from '../../src/server'; -import { Admin } from '../../src/collections'; -import { sampleAdmin, sampleAdmin2 } from '../constants' -import { clearDocuments } from '../util' - -Chai.use(ChaiHttp); -const mockServer = Chai.request(server.listener) -const should = Chai.should(); - -describe('route: admin', () => { - let sampleAdminData; - let sampleAdminData2; - let testAdmin; - let testAdmin2; - let adminId; - - beforeEach((done) => { - // create a user - sampleAdminData = new sampleAdmin(); - sampleAdminData2 = new sampleAdmin2(); - - testAdmin = new Admin(sampleAdminData); - testAdmin2 = new Admin(sampleAdminData2); - - testAdmin.setPassword(sampleAdminData.password); - testAdmin.save().then((user) => { - adminId = user.id; - done(); - }).catch((err) => { - done(err); - }); - }); - - describe('GET /admins', () => { - it('it should GET all admins', (done) => { - mockServer - .get('/admins') - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('array'); - res.body.results.length.should.be.eql(1); - - done(); - }); - }); - - it('it should GET an empty list of admins', (done) => { - mockServer - .get('/admins?details.number.age=99') - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('array'); - res.body.results.length.should.be.eql(0); - - done(); - }); - }); - - it('it should GET a list of admins from a query', (done) => { - mockServer - .get('/admins?permissions=read') - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('array'); - res.body.results.length.should.be.eql(1); - - done(); - }); - }); - }); - - describe('GET /admins/{user}', () => { - it('it should GET a admin from an email', (done) => { - mockServer - .get('/admins/' + sampleAdminData.email) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleAdminData.name, res.body.results.name); - - done(); - }); - }); - - it('it should GET a admin an id', (done) => { - mockServer - .get('/admins/' + adminId) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleAdminData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 404 if admin is not found', (done) => { - mockServer - .get('/admins/' + 'blah@gmail.com') - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - }); - - describe('POST /admins', () => { - it('it should not make a admin when an email is not provided', (done) => { - delete sampleAdminData.email; - - mockServer - .post('/admins') - .send(sampleAdminData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('email is required', res.body.message); - done(); - }); - }); - - it('it should not make a admin when a password is not provided', (done) => { - delete sampleAdminData.password; - - mockServer - .post('/admins') - .send(sampleAdminData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('password is required, confirmPassword and password must match', res.body.message); - done(); - }); - }); - - it('it should not make a admin when a confirmed password is not provided', (done) => { - delete sampleAdminData.confirmPassword; - - mockServer - .post('/admins') - .send(sampleAdminData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('confirmPassword is required', res.body.message); - done(); - }); - }); - - it('it should not make a admin with matching passwords', (done) => { - sampleAdminData.confirmPassword = 'blah'; - - mockServer - .post('/admins') - .send(sampleAdminData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('confirmPassword and password must match', res.body.message); - done(); - }); - }); - - it('it should create a admin', (done) => { - mockServer - .post('/admins') - .send(sampleAdminData2) - .end((err, res) => { - res.should.have.status(201); - res.body.results.should.be.a('object'); - assert.equal(res.body.results.name, sampleAdminData2.name); - - db.query( aql` - FOR user IN admin - RETURN user - `).then((cursor) => { - cursor.all().then((users) => { - done(); - }).catch((err) => { - done(err); - }); - }).catch(err => { - done(err); - }) - }); - }); - }); - - describe('POST /admins/{user}', () => { - it('it should update a admin from an email', (done) => { - mockServer - .post('/admins/' + sampleAdminData.email) - .send({name: 'blah'}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal('blah', res.body.results.name); - - done(); - }); - }); - - it('it should update a admin from an id', (done) => { - mockServer - .post('/admins/' + adminId) - .send({ name: sampleAdminData.name }) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleAdminData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 404 if user is not found', (done) => { - mockServer - .post('/admins/' + 'blah@gmail.com') - .send() - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - }); - - describe('POST /admins/{user}/validate', () => { - it('it should validate a admin from an email', (done) => { - mockServer - .post('/admins/' + sampleAdminData.email + '/validate') - .send({ password: sampleAdminData.password }) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleAdminData.name, res.body.results.name); - - done(); - }); - }); - - it('it should validate a admin from an id', (done) => { - mockServer - .post('/admins/' + adminId + '/validate') - .send({ password: sampleAdminData.password }) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleAdminData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 403 if user is not validated', (done) => { - mockServer - .post('/admins/' + sampleAdminData.email + '/validate') - .send({ password: 'blah' }) - .end((err, res) => { - res.should.have.status(401); - assert.equal('password is incorrect', res.body.message); - done(); - }); - }); - - it('it return GET a 400 if user has not send a password', (done) => { - mockServer - .post('/admins/' + sampleAdminData.email + '/validate') - .send({}) - .end((err, res) => { - res.should.have.status(400); - assert.equal('password is required', res.body.message); - done(); - }); - }); - }); - - describe('/POST admins/{user}/permissions', () => { - it('it should update a admin permission from an email', (done) => { - sampleAdminData.permissions = TOMOE_CONFIG.adminPermissions[0]; - - mockServer - .post('/admins/' + sampleAdminData.email + '/permissions') - .send({permissions: sampleAdminData.permissions}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleAdminData.permissions, res.body.results.permissions); - - done(); - }); - }); - - it('it should update a admin permission from an id', (done) => { - sampleAdminData.permissions = TOMOE_CONFIG.adminPermissions[1]; - - mockServer - .post('/admins/' + adminId + '/permissions') - .send({permissions: sampleAdminData.permissions}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleAdminData.permissions, res.body.results.permissions); - - done(); - }); - }); - - - it('it return GET a 404 if user is not found', (done) => { - mockServer - .post('/admins/' + 'blah@gmail.com' + '/permissions') - .send({permissions: sampleAdminData.permissions}) - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - - it('it return an error if an invalid permission is entered', (done) => { - sampleAdminData.permissions = 'blah'; - - mockServer - .post('/admins/' + sampleAdminData.email + '/permissions') - .send({permissions: sampleAdminData.permissions}) - .end((err, res) => { - res.should.have.status(400); - assert.equal('Please only enter the following permissions: ' + TOMOE_CONFIG.adminPermissions.join(', '), res.body.message); - done(); - }); - }); - }); - - afterEach((done) => { - // delete any created users!! - clearDocuments(db.collection('admin')).then(() => { - done(); - }).catch((err) => { - done(err); - }); - }); - -}); diff --git a/Tomoe/src/server/tests/routes/hacker.spec.js b/Tomoe/src/server/tests/routes/hacker.spec.js deleted file mode 100644 index 7edf078..0000000 --- a/Tomoe/src/server/tests/routes/hacker.spec.js +++ /dev/null @@ -1,341 +0,0 @@ -import Chai from 'chai'; -import ChaiHttp from 'chai-http'; -import { assert } from 'chai'; - -import { aql } from 'arangojs'; - -import { server } from '../../src/server'; -import { Hacker } from '../../src/collections'; -import { sampleHacker, sampleHacker2 } from '../constants' -import { clearDocuments } from '../util' - -Chai.use(ChaiHttp); -const mockServer = Chai.request(server.listener) -const should = Chai.should(); - -describe('route: hacker', () => { - let sampleHackerData; - let sampleHackerData2; - let testHacker; - let testHacker2; - let hackerId; - - beforeEach((done) => { - // create a user - sampleHackerData = new sampleHacker(); - sampleHackerData2 = new sampleHacker2(); - - testHacker = new Hacker(sampleHackerData); - testHacker2 = new Hacker(sampleHackerData2); - - testHacker.setPassword(sampleHackerData.password); - testHacker.save().then((user) => { - hackerId = user.id; - done(); - }).catch((err) => { - done(err); - }); - }); - - describe('GET /hackers', () => { - it('it should GET all hackers', (done) => { - mockServer - .get('/hackers') - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('array'); - res.body.results.length.should.be.eql(1); - - done(); - }); - }); - - it('it should GET an empty list of hackers', (done) => { - mockServer - .get('/hackers?details.number.age=99') - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('array'); - res.body.results.length.should.be.eql(0); - - done(); - }); - }); - - }); - - describe('GET /hackers/{user}', () => { - it('it should GET a hacker from an email', (done) => { - mockServer - .get('/hackers/' + sampleHackerData.email) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleHackerData.name, res.body.results.name); - - done(); - }); - }); - - it('it should GET a hacker an id', (done) => { - mockServer - .get('/hackers/' + hackerId) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleHackerData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 404 if user is not found', (done) => { - mockServer - .get('/hackers/' + 'blah@gmail.com') - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - }); - - describe('POST /hackers', () => { - it('it should not make a hacker when an email is not provided', (done) => { - delete sampleHackerData.email; - - mockServer - .post('/hackers') - .send(sampleHackerData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('email is required', res.body.message); - done(); - }); - }); - - it('it should not make a hacker when a password is not provided', (done) => { - delete sampleHackerData.password; - - mockServer - .post('/hackers') - .send(sampleHackerData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('password is required, confirmPassword and password must match', res.body.message); - done(); - }); - }); - - it('it should not make a hacker when a confirmed password is not provided', (done) => { - delete sampleHackerData.confirmPassword; - - mockServer - .post('/hackers') - .send(sampleHackerData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('confirmPassword is required', res.body.message); - done(); - }); - }); - - it('it should not make a hacker with matching passwords', (done) => { - sampleHackerData.confirmPassword = 'blah'; - - mockServer - .post('/hackers') - .send(sampleHackerData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('confirmPassword and password must match', res.body.message); - done(); - }); - }); - - it('it should create a hacker', (done) => { - mockServer - .post('/hackers') - .send(sampleHackerData2) - .end((err, res) => { - res.should.have.status(201); - res.body.results.should.be.a('object'); - assert.equal(res.body.results.name, sampleHackerData2.name); - - db.query( aql` - FOR user IN hacker - RETURN user - `).then((cursor) => { - cursor.all().then((users) => { - done(); - }).catch((err) => { - done(err); - }); - }).catch(err => { - done(err); - }) - }); - }); - }); - - describe('POST /hackers/{user}', () => { - it('it should update a hacker from an email', (done) => { - mockServer - .post('/hackers/' + sampleHackerData.email) - .send({name: 'blah'}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal('blah', res.body.results.name); - - done(); - }); - }); - - it('it should update a hacker from an id', (done) => { - mockServer - .post('/hackers/' + hackerId) - .send({ name: sampleHackerData.name }) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleHackerData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 404 if user is not found', (done) => { - mockServer - .post('/hackers/' + 'blah@gmail.com') - .send() - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - }); - - describe('POST /hackers/{user}/validate', () => { - it('it should validate a hacker from an email', (done) => { - mockServer - .post('/hackers/' + sampleHackerData.email + '/validate') - .send({ password: sampleHackerData.password }) - .end((err, res) => { - - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleHackerData.name, res.body.results.name); - - done(); - }); - }); - - it('it should validate a hacker from an id', (done) => { - mockServer - .post('/hackers/' + hackerId + '/validate') - .send({ password: sampleHackerData.password }) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleHackerData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 403 if user is not validated', (done) => { - mockServer - .post('/hackers/' + sampleHackerData.email + '/validate') - .send({ password: 'blah' }) - .end((err, res) => { - res.should.have.status(401); - assert.equal('password is incorrect', res.body.message); - done(); - }); - }); - - it('it return GET a 400 if user has not send a password', (done) => { - mockServer - .post('/hackers/' + sampleHackerData.email + '/validate') - .send({}) - .end((err, res) => { - res.should.have.status(400); - assert.equal('password is required', res.body.message); - done(); - }); - }); - }); - - describe('POST /hackers/{user}/status', () => { - it('it should update a hacker status from an email', (done) => { - sampleHackerData.status = TOMOE_CONFIG.hackerStatuses[1]; - - mockServer - .post('/hackers/' + sampleHackerData.email + '/status') - .send({status: sampleHackerData.status}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleHackerData.status, res.body.results.status); - - done(); - }); - }); - - it('it should update a hacker status from an id', (done) => { - sampleHackerData.status = TOMOE_CONFIG.hackerStatuses[2]; - - mockServer - .post('/hackers/' + hackerId + '/status') - .send({status: sampleHackerData.status}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleHackerData.status, res.body.results.status); - - done(); - }); - }); - - it('it return GET a 404 if user is not found', (done) => { - sampleHackerData.status = TOMOE_CONFIG.hackerStatuses[2]; - - mockServer - .post('/hackers/' + 'blah@gmail.com' + '/status') - .send({status: sampleHackerData.status}) - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - - it('it return an error if an invalid status is entered', (done) => { - sampleHackerData.status = 'blah'; - - mockServer - .post('/hackers/' + sampleHackerData.email + '/status') - .send({status: sampleHackerData.status}) - .end((err, res) => { - res.should.have.status(400); - assert.equal('Please only enter the following statuses: ' + TOMOE_CONFIG.hackerStatuses.join(', '), res.body.message); - done(); - }); - }); - }); - - afterEach((done) => { - // delete any created users!! - clearDocuments(db.collection('hacker')).then(() => { - done(); - }).catch((err) => { - done(err); - }); - }); -}); diff --git a/Tomoe/src/server/tests/routes/volunteer.spec.js b/Tomoe/src/server/tests/routes/volunteer.spec.js deleted file mode 100644 index 84e4aaa..0000000 --- a/Tomoe/src/server/tests/routes/volunteer.spec.js +++ /dev/null @@ -1,247 +0,0 @@ -import Chai from 'chai'; -import ChaiHttp from 'chai-http'; -import { assert } from 'chai'; - -import { aql } from 'arangojs'; - -import { server } from '../../src/server'; -import { Volunteer } from '../../src/collections'; -import { sampleVolunteer, sampleVolunteer2 } from '../constants' -import { clearDocuments } from '../util' - -Chai.use(ChaiHttp); -const mockServer = Chai.request(server.listener) -const should = Chai.should(); - -describe('route: volunteer', () => { - let sampleVolunteerData; - let sampleVolunteerData2; - let testVolunteer; - let testVolunteer2; - let volunteerId; - - beforeEach((done) => { - // create a user - sampleVolunteerData = new sampleVolunteer(); - sampleVolunteerData2 = new sampleVolunteer2(); - - testVolunteer = new Volunteer(sampleVolunteerData); - testVolunteer2 = new Volunteer(sampleVolunteerData2); - - testVolunteer.setPassword(sampleVolunteerData.password); - testVolunteer.save().then((user) => { - volunteerId = user.id; - done(); - }).catch((err) => { - done(err); - }); - }); - - describe('GET /volunteers', () => { - it('it should GET all volunteers', (done) => { - mockServer - .get('/volunteers') - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('array'); - res.body.results.length.should.be.eql(1); - - done(); - }); - }); - - it('it should GET an empty list of volunteers', (done) => { - mockServer - .get('/volunteers?details.number.age=99') - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('array'); - res.body.results.length.should.be.eql(0); - - done(); - }); - }); - - }); - - describe('GET /volunteers/{user}', () => { - it('it should GET a volunteer from an email', (done) => { - mockServer - .get('/volunteers/' + sampleVolunteerData.email) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleVolunteerData.name, res.body.results.name); - - done(); - }); - }); - - it('it should GET a volunteer an id', (done) => { - mockServer - .get('/volunteers/' + volunteerId) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleVolunteerData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 404 if user is not found', (done) => { - mockServer - .get('/volunteers/' + 'blah@gmail.com') - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - }); - - describe('POST /volunteers', () => { - it('it should not make a volunteer when an email is not provided', (done) => { - delete sampleVolunteerData.email; - - mockServer - .post('/volunteers') - .send(sampleVolunteerData) - .end((err, res) => { - res.should.have.status(400); - res.body.should.be.a('object'); - assert.equal('email is required', res.body.message); - done(); - }); - }); - - it('it should create a volunteer', (done) => { - mockServer - .post('/volunteers') - .send(sampleVolunteerData2) - .end((err, res) => { - res.should.have.status(201); - res.body.results.should.be.a('object'); - assert.equal(res.body.results.name, sampleVolunteerData2.name); - - db.query( aql` - FOR user IN volunteer - RETURN user - `).then((cursor) => { - cursor.all().then((users) => { - done(); - }).catch((err) => { - done(err); - }); - }).catch(err => { - done(err); - }) - }); - }); - }); - - describe('POST /volunteers/{user}', () => { - it('it should update a volunteer from an email', (done) => { - mockServer - .post('/volunteers/' + sampleVolunteerData.email) - .send({name: 'blah'}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal('blah', res.body.results.name); - - done(); - }); - }); - - it('it should update a volunteer from an id', (done) => { - mockServer - .post('/volunteers/' + volunteerId) - .send({ name: sampleVolunteerData.name }) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleVolunteerData.name, res.body.results.name); - - done(); - }); - }); - - - it('it return GET a 404 if user is not found', (done) => { - mockServer - .post('/volunteers/' + 'blah@gmail.com') - .send() - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - }); - - describe('POST /volunteers/{user}/status', () => { - it('it should update a volunteer status from an email', (done) => { - sampleVolunteerData.status = TOMOE_CONFIG.volunteerStatuses[1]; - - mockServer - .post('/volunteers/' + sampleVolunteerData.email + '/status') - .send({status: sampleVolunteerData.status}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleVolunteerData.status, res.body.results.status); - - done(); - }); - }); - - it('it should update a volunteer status from an id', (done) => { - sampleVolunteerData.status = TOMOE_CONFIG.volunteerStatuses[2]; - - mockServer - .post('/volunteers/' + volunteerId + '/status') - .send({status: sampleVolunteerData.status}) - .end((err, res) => { - res.should.have.status(200); - res.body.results.should.be.a('object'); - assert.equal(sampleVolunteerData.status, res.body.results.status); - - done(); - }); - }); - - it('it return GET a 404 if user is not found', (done) => { - sampleVolunteerData.status = TOMOE_CONFIG.volunteerStatuses[2]; - - mockServer - .post('/volunteers/' + 'blah@gmail.com' + '/status') - .send({status: sampleVolunteerData.status}) - .end((err, res) => { - res.should.have.status(404); - done(); - }); - }); - - it('it return an error if an invalid status is entered', (done) => { - sampleVolunteerData.status = 'blah'; - - mockServer - .post('/volunteers/' + sampleVolunteerData.email + '/status') - .send({status: sampleVolunteerData.status}) - .end((err, res) => { - res.should.have.status(400); - assert.equal('Please only enter the following statuses: ' + TOMOE_CONFIG.volunteerStatuses.join(', '), res.body.message); - done(); - }); - }); - }); - - afterEach((done) => { - // delete any created users!! - clearDocuments(db.collection('volunteer')).then(() => { - done(); - }).catch((err) => { - done(err); - }); - }); -}); diff --git a/Tomoe/src/server/tests/util/clear-documents.js b/Tomoe/src/server/tests/util/clear-documents.js deleted file mode 100644 index 62830fc..0000000 --- a/Tomoe/src/server/tests/util/clear-documents.js +++ /dev/null @@ -1,14 +0,0 @@ -import { aql } from 'arangojs'; - -export function clearDocuments(collection){ - return new Promise((resolve, reject) => { - const removeQuery = aql`FOR u in ${collection} - REMOVE u IN ${collection}` - - db.query(removeQuery).then((meta) => { - resolve() - }).catch((err) => { - reject(err); - }) - }) -} diff --git a/Tomoe/src/server/tests/util/index.js b/Tomoe/src/server/tests/util/index.js deleted file mode 100644 index 59e3df5..0000000 --- a/Tomoe/src/server/tests/util/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from './clear-documents'; diff --git a/Tomoe/yarn.lock b/Tomoe/yarn.lock deleted file mode 100755 index 9859630..0000000 --- a/Tomoe/yarn.lock +++ /dev/null @@ -1,7300 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -abbrev@1, abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -accept@2.x.x: - version "2.1.4" - resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.4.tgz#887af54ceee5c7f4430461971ec400c61d09acbb" - dependencies: - boom "5.x.x" - hoek "4.x.x" - -accepts@1.3.3, accepts@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" - dependencies: - mime-types "~2.1.11" - negotiator "0.6.1" - -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - dependencies: - acorn "^4.0.3" - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^4.0.3: - version "4.0.11" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" - -acorn@^5.0.0, acorn@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - -ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ammo@2.x.x: - version "2.0.4" - resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.4.tgz#bf80aab211698ea78f63ef5e7f113dd5d9e8917f" - dependencies: - boom "5.x.x" - hoek "4.x.x" - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - dependencies: - string-width "^2.0.0" - -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - -aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" - -arangojs@^5.4.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/arangojs/-/arangojs-5.6.1.tgz#c51ca877f9d24e0796877528ca82cbecdb279c42" - dependencies: - es6-error "^4.0.1" - http-errors "^1.6.1" - linkedlist "^1.0.1" - multi-part "^2.0.0" - retry "^0.10.0" - utf8-length "^0.0.1" - xhr "^2.3.1" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - -argv@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -arraybuffer.slice@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" - -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" - -asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -assertion-error@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" - -assertion-error@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - -async@1.x, async@^1.4.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.1.2, async@^2.1.5: - version "2.4.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" - dependencies: - lodash "^4.14.0" - -async@~0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -b64@3.x.x: - version "3.0.2" - resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.2.tgz#7a9d60466adf7b8de114cbdf651a5fdfcc90894d" - -babel-cli@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" - dependencies: - babel-core "^6.24.1" - babel-polyfill "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" - optionalDependencies: - chokidar "^1.6.1" - -babel-code-frame@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-7.0.0-alpha.15.tgz#381d3e06e17b73201129c4a019e8b62d84e2dde3" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-core@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-alpha.15.tgz#4c5e608b3de921dbfea68f7ca196d297931acb23" - dependencies: - babel-code-frame "7.0.0-alpha.15" - babel-generator "7.0.0-alpha.15" - babel-helpers "7.0.0-alpha.15" - babel-messages "7.0.0-alpha.15" - babel-template "7.0.0-alpha.15" - babel-traverse "7.0.0-alpha.15" - babel-types "7.0.0-alpha.15" - babylon "7.0.0-beta.15" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - micromatch "^2.3.11" - resolve "^1.3.2" - source-map "^0.5.0" - -babel-core@^6.1.4, babel-core@^6.24.1, babel-core@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.25.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.25.0" - babel-traverse "^6.25.0" - babel-types "^6.25.0" - babylon "^6.17.2" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-eslint@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" - dependencies: - babel-code-frame "^6.22.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.17.0" - -babel-generator@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-7.0.0-alpha.15.tgz#27884018a9cc8300e20497cad17c4bc1f416a9fc" - dependencies: - babel-messages "7.0.0-alpha.15" - babel-types "7.0.0-alpha.15" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-generator@^6.18.0, babel-generator@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - esutils "^2.0.0" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-7.0.0-alpha.15.tgz#087bb6bb6677acde36b3c19f6bc1afedb3d12e30" - dependencies: - babel-helper-get-function-arity "7.0.0-alpha.15" - babel-template "7.0.0-alpha.15" - babel-traverse "7.0.0-alpha.15" - babel-types "7.0.0-alpha.15" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-alpha.15.tgz#17e93206d0b625c3122f4c674478cbed53281f24" - dependencies: - babel-types "7.0.0-alpha.15" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-7.0.0-alpha.15.tgz#60e08a396d7ce79104dd2da4651a61e625468ebe" - dependencies: - babel-template "7.0.0-alpha.15" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-istanbul@^0.12.2: - version "0.12.2" - resolved "https://registry.yarnpkg.com/babel-istanbul/-/babel-istanbul-0.12.2.tgz#e723f07c9a2432d88055520bc22e75f5c239161c" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - multi-glob "^1.0.1" - nopt "3.x" - object-assign "^4.0.1" - once "1.x" - resolve "^1.1.0" - source-map "0.4.x" - supports-color "3.1.x" - which "1.2.x" - wordwrap "1.0.x" - -babel-loader@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.0.0.tgz#2e43a66bee1fff4470533d0402c8a4532fafbaf7" - dependencies: - find-cache-dir "^0.1.1" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - -babel-messages@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-7.0.0-alpha.15.tgz#97991d32d86a2130aff08fa75a16cfc5acad9e42" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-istanbul@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" - dependencies: - find-up "^2.1.0" - istanbul-lib-instrument "^1.7.2" - test-exclude "^4.1.1" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-display-name@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-self@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" - dependencies: - regenerator-transform "0.9.11" - -babel-plugin-transform-runtime@^6.15.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-polyfill@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" - dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-preset-env@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.4.0.tgz#c8e02a3bcc7792f23cded68e0355b9d4c28f0f7a" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^1.4.0" - invariant "^2.2.2" - -babel-preset-es2015@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-preset-flow@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - -babel-preset-react@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" - dependencies: - babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-react-display-name "^6.23.0" - babel-plugin-transform-react-jsx "^6.24.1" - babel-plugin-transform-react-jsx-self "^6.22.0" - babel-plugin-transform-react-jsx-source "^6.22.0" - babel-preset-flow "^6.23.0" - -babel-register@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-7.0.0-alpha.15.tgz#2f5cc86c29eab9fbb003aa88426d5e279e053f38" - dependencies: - babel-core "7.0.0-alpha.15" - core-js "^2.4.0" - find-cache-dir "^0.1.1" - home-or-tmp "^3.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - pirates "^3.0.1" - source-map-support "^0.4.2" - -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" - dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-template@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-alpha.15.tgz#08b56562987c9893bbd6646bce4819074ba1cf90" - dependencies: - babel-traverse "7.0.0-alpha.15" - babel-types "7.0.0-alpha.15" - babylon "7.0.0-beta.13" - lodash "^4.2.0" - -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.25.0" - babel-types "^6.25.0" - babylon "^6.17.2" - lodash "^4.2.0" - -babel-traverse@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-7.0.0-alpha.15.tgz#d7af52cb8ee6e0867b778da17166e6f01498b11a" - dependencies: - babel-code-frame "7.0.0-alpha.15" - babel-helper-function-name "7.0.0-alpha.15" - babel-messages "7.0.0-alpha.15" - babel-types "7.0.0-alpha.15" - babylon "7.0.0-beta.15" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - babylon "^6.17.2" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@7.0.0-alpha.15: - version "7.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-alpha.15.tgz#e4021e6a432e906678dfc6cc89805ba3234f9f48" - dependencies: - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@7.0.0-beta.13: - version "7.0.0-beta.13" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.13.tgz#12425c1bfd9498be419021ed36b43fe4f0289c0a" - -babylon@7.0.0-beta.15: - version "7.0.0-beta.15" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.15.tgz#410348bcd21af470a55abea9698c9c651d87f1c6" - -babylon@^6.17.0, babylon@^6.17.2, babylon@^6.17.4: - version "6.17.4" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - -balanced-match@^0.4.1, balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - -base64-js@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - -base64url@2.0.0, base64url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - dependencies: - callsite "1.0.0" - -big.js@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" - -binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@^3.3.0, bluebird@^3.4.7: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - -body-parser@^1.15.2, body-parser@^1.16.1: - version "1.17.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" - dependencies: - bytes "2.4.0" - content-type "~1.0.2" - debug "2.6.1" - depd "~1.1.0" - http-errors "~1.6.1" - iconv-lite "0.4.15" - on-finished "~2.3.0" - qs "6.4.0" - raw-body "~2.2.0" - type-is "~1.6.14" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boom@3.x.x: - version "3.2.2" - resolved "https://registry.yarnpkg.com/boom/-/boom-3.2.2.tgz#0f0cc5d04adc5003b8c7d71f42cca7271fef0e78" - dependencies: - hoek "4.x.x" - -boom@5.x.x, boom@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.1.0.tgz#0308fa8e924cd6d42d9c3bf4883bdc98f0e71df8" - dependencies: - hoek "4.x.x" - -boxen@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^1.0.0" - -brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - dependencies: - expand-range "^0.1.0" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" - dependencies: - buffer-xor "^1.0.2" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - inherits "^2.0.1" - -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserslist@^1.3.6, browserslist@^1.4.0, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - -buffer-xor@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.0.0, builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -bytes@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" - -bytes@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" - -caching-transform@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" - dependencies: - md5-hex "^1.2.0" - mkdirp "^0.5.1" - write-file-atomic "^1.1.4" - -call@4.x.x: - version "4.0.2" - resolved "https://registry.yarnpkg.com/call/-/call-4.0.2.tgz#df76f5f51ee8dd48b856ac8400f7e69e6d7399c4" - dependencies: - boom "5.x.x" - hoek "4.x.x" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000670" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000670.tgz#90d33b79e3090e25829c311113c56d6b1788bf43" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -catbox-memory@2.x.x: - version "2.0.4" - resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5" - dependencies: - hoek "4.x.x" - -catbox@7.x.x: - version "7.1.4" - resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.4.tgz#8a950ed18b64ba8088c1ae132e85c58479d2b6cc" - dependencies: - boom "5.x.x" - hoek "4.x.x" - joi "10.x.x" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chai-as-promised@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6" - dependencies: - check-error "^1.0.2" - -chai-enzyme@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/chai-enzyme/-/chai-enzyme-0.6.1.tgz#585c963c6ea1331446efd12ee8391e807d758620" - dependencies: - html "^1.0.0" - react-element-to-jsx-string "^5.0.0" - -chai-http@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chai-http/-/chai-http-3.0.0.tgz#5460d8036e1f1a12b0b5b5cbd529e6dc1d31eb4b" - dependencies: - cookiejar "2.0.x" - is-ip "1.0.0" - methods "^1.1.2" - qs "^6.2.0" - superagent "^2.0.0" - -chai-nightwatch@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz#1ca56de768d3c0868fe7fc2f4d32c2fe894e6be9" - dependencies: - assertion-error "1.0.0" - deep-eql "0.1.3" - -chai-things@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/chai-things/-/chai-things-0.2.0.tgz#c55128378f9bb399e994f00052151984ed6ebe70" - -chai@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" - dependencies: - assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" - -chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - -cheerio@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" - -chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.1, chokidar@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" - dependencies: - inherits "^2.0.1" - -circular-json@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" - -clap@^1.0.9: - version "1.1.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.3.tgz#b3bd36e93dd4cbfb395a3c26896352445265c05b" - dependencies: - chalk "^1.1.3" - -clean-css@4.1.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.2.tgz#6029aea30b1d9520a968a3caee0dabb1184e353a" - dependencies: - source-map "0.5.x" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - dependencies: - restore-cursor "^1.0.1" - -cli-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - -clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -coa@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" - dependencies: - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -codecov@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-2.2.0.tgz#2d06817ceb8891eca6368836d4fb6bf6cc04ffd1" - dependencies: - argv "0.0.2" - request "2.79.0" - urlgrey "0.4.4" - -collapse-white-space@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.2.tgz#9c463fb9c6d190d2dcae21a356a01bcae9eeef6d" - -color-convert@^1.3.0, color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - dependencies: - color-name "^1.1.1" - -color-name@^1.0.0, color-name@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" - -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@^1.1.0, colors@^1.1.2, colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - dependencies: - lodash "^4.5.0" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@2.9.0, commander@2.9.x, commander@^2.8.1, commander@^2.9.0, commander@~2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - -component-emitter@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" - -component-emitter@1.2.1, component-emitter@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - -compressible@~2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" - dependencies: - mime-db ">= 1.27.0 < 2" - -compression@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" - dependencies: - accepts "~1.3.3" - bytes "2.3.0" - compressible "~2.0.8" - debug "~2.2.0" - on-headers "~1.0.1" - vary "~1.1.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - -concat-stream@^1.4.7, concat-stream@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -connect-history-api-fallback@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" - -connect@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.1.tgz#b7760693a74f0454face1d9378edb3f885b43227" - dependencies: - debug "2.6.3" - finalhandler "1.0.1" - parseurl "~1.3.1" - utils-merge "1.0.0" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - -content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - -content@3.x.x: - version "3.0.4" - resolved "https://registry.yarnpkg.com/content/-/content-3.0.4.tgz#ca3dde04480f12519b71526ec44bd488ddfb3fef" - dependencies: - boom "5.x.x" - -convert-hex@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/convert-hex/-/convert-hex-0.1.0.tgz#08c04568922c27776b8a2e81a95d393362ea0b65" - -convert-source-map@^1.1.0, convert-source-map@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -convert-string@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/convert-string/-/convert-string-0.1.0.tgz#79ce41a9bb0d03bcf72cdc6a8f3c56fbbc64410a" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -cookiejar@2.0.x, cookiejar@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.0.6.tgz#0abf356ad00d1c5a219d88d44518046dd026acfe" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - -core-js@^2.2.0, core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -create-ecdh@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-react-class@^15.5.1: - version "15.5.3" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.5.3.tgz#fb0f7cae79339e9a179e194ef466efa3923820fe" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - -cross-env@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.0.0.tgz#565ccae4d09676441a5087f406fe7661a29c931b" - dependencies: - cross-spawn "^5.1.0" - is-windows "^1.0.0" - -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^4, cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - -crypto-browserify@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - -css-loader@^0.28.1: - version "0.28.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.1.tgz#220325599f8f00452d9ceb4c3ca6c8a66798642d" - dependencies: - babel-code-frame "^6.11.0" - css-selector-tokenizer "^0.7.0" - cssnano ">=2.6.1 <4" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.0.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.0.0" - postcss-modules-local-by-default "^1.0.1" - postcss-modules-scope "^1.0.0" - postcss-modules-values "^1.1.0" - postcss-value-parser "^3.3.0" - source-list-map "^0.1.7" - -css-select@^1.1.0, css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-selector-tokenizer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - -"cssnano@>=2.6.1 <4": - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - -dateformat@^1.0.6: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - -debug-log@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" - -debug@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - -debug@2.2.0, debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -debug@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" - -debug@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" - -debug@2.6.1, debug@^2.1.1, debug@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" - dependencies: - ms "0.7.2" - -debug@2.6.3, debug@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" - dependencies: - ms "0.7.2" - -debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-eql@0.1.3, deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" - dependencies: - type-detect "0.1.1" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@1.1.0, depd@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -diff@3.2.0, diff@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dirty-chai@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/dirty-chai/-/dirty-chai-1.2.2.tgz#78495e619635f7fe44219aa4c837849bf183142e" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -dom-converter@~0.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" - dependencies: - utila "~0.3" - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -dom-serializer@0, dom-serializer@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - -domain-browser@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - -domelementtype@1, domelementtype@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - -domhandler@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - dependencies: - domelementtype "1" - -domhandler@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" - dependencies: - domelementtype "1" - -domutils@1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - dependencies: - domelementtype "1" - -domutils@1.5.1, domutils@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - dependencies: - is-obj "^1.0.0" - -dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - -duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -ecdsa-sig-formatter@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1" - dependencies: - base64url "^2.0.0" - safe-buffer "^5.0.1" - -editions@^1.1.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.3.tgz#0907101bdda20fac3cbe334c27cbd0688dc99a5b" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -electron-to-chromium@^1.2.7: - version "1.3.10" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.10.tgz#63d62b785471f0d8dda85199d64579de8a449f08" - -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - -engine.io-client@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "2.3.3" - engine.io-parser "1.3.2" - has-cors "1.1.0" - indexof "0.0.1" - parsejson "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - ws "1.1.2" - xmlhttprequest-ssl "1.5.3" - yeast "0.1.2" - -engine.io-parser@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" - dependencies: - after "0.8.2" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary "0.1.7" - wtf-8 "1.0.0" - -engine.io@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" - dependencies: - accepts "1.3.3" - base64id "1.0.0" - cookie "0.3.1" - debug "2.3.3" - engine.io-parser "1.3.2" - ws "1.1.2" - -enhanced-resolve@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.5" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -entities@^1.1.1, entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - -enzyme@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.8.2.tgz#6c8bcb05012abc4aa4bc3213fb23780b9b5b1714" - dependencies: - cheerio "^0.22.0" - function.prototype.name "^1.0.0" - is-subset "^0.1.1" - lodash "^4.17.2" - object-is "^1.0.1" - object.assign "^4.0.4" - object.entries "^1.0.3" - object.values "^1.0.3" - prop-types "^15.5.4" - uuid "^2.0.3" - -errno@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - dependencies: - prr "~0.0.0" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292" - dependencies: - stackframe "^0.3.1" - -es-abstract@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - is-callable "^1.1.3" - is-regex "^1.0.3" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.18" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.18.tgz#dc239d3dce4c22b9c939aa180878837a3c0b5c92" - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-error@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" - -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-promise@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - -es6-promise@~4.0.3: - version "4.0.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@1.8.x, escodegen@^1.6.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-config-standard-jsx@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642" - -eslint-config-standard-react@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard-react/-/eslint-config-standard-react-5.0.0.tgz#64c7b8140172852be810a53d48ee87649ff178e3" - dependencies: - eslint-config-standard-jsx "^4.0.0" - -eslint-config-standard@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" - -eslint-import-resolver-node@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c" - dependencies: - debug "^2.2.0" - object-assign "^4.0.1" - resolve "^1.1.6" - -eslint-module-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz#a6f8c21d901358759cdc35dbac1982ae1ee58bce" - dependencies: - debug "2.2.0" - pkg-dir "^1.0.0" - -eslint-plugin-babel@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.1.tgz#ef285c87039b67beb3bbd227f5b0eed4fb376b87" - -eslint-plugin-import@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e" - dependencies: - builtin-modules "^1.1.1" - contains-path "^0.1.0" - debug "^2.2.0" - doctrine "1.5.0" - eslint-import-resolver-node "^0.2.0" - eslint-module-utils "^2.0.0" - has "^1.0.1" - lodash.cond "^4.3.0" - minimatch "^3.0.3" - pkg-up "^1.0.0" - -eslint-plugin-node@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-4.2.2.tgz#82959ca9aed79fcbd28bb1b188d05cac04fb3363" - dependencies: - ignore "^3.0.11" - minimatch "^3.0.2" - object-assign "^4.0.1" - resolve "^1.1.7" - semver "5.3.0" - -eslint-plugin-promise@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" - -eslint-plugin-react@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.0.1.tgz#e78107e1e559c6e2b17786bb67c2e2a010ad0d2f" - dependencies: - doctrine "^2.0.0" - has "^1.0.1" - jsx-ast-utils "^1.3.4" - -eslint-plugin-standard@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" - -eslint@^3.19.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" - -espree@^3.4.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" - dependencies: - acorn "^5.0.1" - acorn-jsx "^3.0.0" - -esprima@2.7.x, esprima@^2.1.0, esprima@^2.6.0, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esquery@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" - dependencies: - estraverse "^4.0.0" - -esrecurse@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" - dependencies: - estraverse "~4.1.0" - object-assign "^4.0.1" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -estraverse@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" - -esutils@^2.0.0, esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -event-stream@~3.3.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -evp_bytestokey@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" - dependencies: - create-hash "^1.1.1" - -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -extend@^3.0.0, extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extract-text-webpack-plugin@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159" - dependencies: - ajv "^4.11.2" - async "^2.1.2" - loader-utils "^1.0.2" - webpack-sources "^0.1.0" - -extract-zip@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" - dependencies: - concat-stream "1.5.0" - debug "0.7.4" - mkdirp "0.5.0" - yauzl "2.4.1" - -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - -fbjs@^0.8.4, fbjs@^0.8.9: - version "0.8.12" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.9" - -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - dependencies: - pend "~1.2.0" - -figlet@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410" - -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-loader@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.1.tgz#6b328ee1234a729e4e47d36375dd6d35c0e1db84" - dependencies: - loader-utils "^1.0.2" - -file-type@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -finalhandler@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" - dependencies: - debug "2.6.3" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.1" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - -for-each@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" - dependencies: - is-function "~1.0.0" - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.3, for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -foreground-child@^1.5.3, foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - dependencies: - cross-spawn "^4" - signal-exit "^3.0.0" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@1.0.0-rc4: - version "1.0.0-rc4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.0-rc4.tgz#05ac6bc22227b43e4461f488161554699d4f8b5e" - dependencies: - async "^1.5.2" - combined-stream "^1.0.5" - mime-types "^2.1.10" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -formatio@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" - dependencies: - samsam "1.x" - -formidable@^1.0.17: - version "1.1.1" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" - -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - -fs-extra@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - -fs-extra@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.0.2, function-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" - -function.prototype.name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.0.tgz#5f523ca64e491a5f95aba80cc1e391080a14482e" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - is-callable "^1.1.2" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gaze@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" - dependencies: - globule "^1.0.0" - -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob@5.x, glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^9.0.0, globals@^9.14.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globule@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" - dependencies: - glob "~7.1.1" - lodash "~4.16.4" - minimatch "~3.0.2" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -handlebars@^4.0.1, handlebars@^4.0.3: - version "4.0.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.8.tgz#22b875cd3f0e6cbea30314f144e82bc7a72ff420" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -hapi-auth-jwt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/hapi-auth-jwt/-/hapi-auth-jwt-4.0.0.tgz#ca1a0dda86aec97ea83b184dfdff57c13236b9ae" - dependencies: - boom "3.x.x" - hoek "3.x.x" - jsonwebtoken "5.x.x" - -hapi@^16.4.3: - version "16.4.3" - resolved "https://registry.yarnpkg.com/hapi/-/hapi-16.4.3.tgz#be4daaf2dcdbee97957ce503061b09765078aa05" - dependencies: - accept "2.x.x" - ammo "2.x.x" - boom "5.x.x" - call "4.x.x" - catbox "7.x.x" - catbox-memory "2.x.x" - cryptiles "3.x.x" - heavy "4.x.x" - hoek "4.x.x" - iron "4.x.x" - items "2.x.x" - joi "10.x.x" - mimos "3.x.x" - podium "1.x.x" - shot "3.x.x" - statehood "5.x.x" - subtext "4.x.x" - topo "2.x.x" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-binary@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" - dependencies: - isarray "0.0.1" - -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - dependencies: - inherits "^2.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" - dependencies: - inherits "^2.0.1" - -hasha@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" - dependencies: - is-stream "^1.0.1" - pinkie-promise "^2.0.0" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -heavy@4.x.x: - version "4.0.4" - resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.4.tgz#36c91336c00ccfe852caa4d153086335cd2f00e9" - dependencies: - boom "5.x.x" - hoek "4.x.x" - joi "10.x.x" - -history@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c" - dependencies: - invariant "^2.2.1" - loose-envify "^1.2.0" - query-string "^4.2.2" - warning "^3.0.0" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoek@3.x.x: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-3.0.4.tgz#268adff66bb6695c69b4789a88b1e0847c3f3123" - -hoek@4.x.x: - version "4.1.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.1.1.tgz#9cc573ffba2b7b408fb5e9c2a13796be94cddce9" - -hoek@~4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.0.2.tgz#7b969f4c8a1af8a38ca2c666c66bfa6c42fe2cdd" - -hoist-non-react-statics@^1.0.3, hoist-non-react-statics@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -home-or-tmp@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" - -hosted-git-info@^2.1.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" - -html-comment-regex@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" - -html-dnd@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/html-dnd/-/html-dnd-1.2.0.tgz#00b4407c13b9eb27c8c39f5761cd3ab5b6477e3d" - dependencies: - multiline "^1.0.2" - -html-entities@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - -html-minifier@^3.2.3: - version "3.5.0" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.0.tgz#98be1b18f87443592722f654e67a1541f22018cb" - dependencies: - camel-case "3.0.x" - clean-css "4.1.x" - commander "2.9.x" - he "1.1.x" - ncname "1.0.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.0.x" - -html-webpack-plugin@^2.24.1: - version "2.28.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" - dependencies: - bluebird "^3.4.7" - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - toposort "^1.0.0" - -html@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/html/-/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" - dependencies: - concat-stream "^1.4.7" - -htmlparser2@^3.9.1: - version "3.9.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" - dependencies: - domelementtype "^1.3.0" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^2.0.2" - -htmlparser2@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - dependencies: - domelementtype "1" - domhandler "2.1" - domutils "1.1" - readable-stream "1.0" - -http-errors@^1.6.1, http-errors@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" - dependencies: - depd "1.1.0" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-proxy@^1.13.0: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" - dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - -iconv-lite@0.4.15, iconv-lite@~0.4.13: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - -icss-replace-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" - -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - -ignore@^3.0.11, ignore@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.0.tgz#3812d22cbe9125f2c2b4915755a1b8abd745a001" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - -interpret@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" - -invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -ip-regex@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" - -iron@4.x.x: - version "4.0.5" - resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.5.tgz#4f042cceb8b9738f346b59aa734c83a89bc31428" - dependencies: - boom "5.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.0.2, is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.1.1, is-callable@^1.1.2, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-function@^1.0.1, is-function@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-ip@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-1.0.0.tgz#2bb6959f797ccd6f9fdc812758bcbc87c4c59074" - dependencies: - ip-regex "^1.0.0" - -is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - -is-number@^2.0.2, is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" - dependencies: - path-is-inside "^1.0.1" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - -is-plain-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.1.tgz#4d7ca539bc9db9b737b8acb612f2318ef92f294f" - dependencies: - isobject "^1.0.0" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-regex@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - -is-resolvable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" - dependencies: - tryit "^1.0.1" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-windows@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isbinaryfile@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" - -isemail@2.x.x: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -isparta@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isparta/-/isparta-4.0.0.tgz#1de91996f480b22dcb1aca8510255bae1574446e" - dependencies: - babel-core "^6.1.4" - escodegen "^1.6.1" - esprima "^2.1.0" - istanbul "^0.4.0" - mkdirp "^0.5.0" - nomnomnomnom "^2.0.0" - object-assign "^4.0.1" - source-map "^0.5.0" - which "^1.0.9" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" - -istanbul-lib-hook@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.7.3: - version "1.7.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz#e9fd920e4767f3d19edc765e2d6b3f5ccbd0eea8" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.17.4" - istanbul-lib-coverage "^1.1.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" - dependencies: - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" - dependencies: - debug "^2.6.3" - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" - dependencies: - handlebars "^4.0.3" - -istanbul@^0.4.0: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -items@2.x.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - -joi@10.x.x, joi@^10.6.0: - version "10.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-10.6.0.tgz#52587f02d52b8b75cdb0c74f0b164a191a0e1fc2" - dependencies: - hoek "4.x.x" - isemail "2.x.x" - items "2.x.x" - topo "2.x.x" - -js-base64@^2.1.8, js-base64@^2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" - -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - -js-yaml@3.x, js-yaml@^3.5.1: - version "3.8.4" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" - dependencies: - argparse "^1.0.7" - esprima "^3.1.1" - -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-loader@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsonwebtoken@5.x.x: - version "5.7.0" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-5.7.0.tgz#1c90f9a86ce5b748f5f979c12b70402b4afcddb4" - dependencies: - jws "^3.0.0" - ms "^0.7.1" - xtend "^4.0.1" - -jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" - dependencies: - assert-plus "1.0.0" - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" - -jsx-ast-utils@^1.3.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" - -jwa@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5" - dependencies: - base64url "2.0.0" - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.9" - safe-buffer "^5.0.1" - -jws@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2" - dependencies: - base64url "^2.0.0" - jwa "^1.1.4" - safe-buffer "^5.0.1" - -karma-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6" - dependencies: - dateformat "^1.0.6" - istanbul "^0.4.0" - lodash "^3.8.0" - minimatch "^3.0.0" - source-map "^0.5.1" - -karma-mocha-reporter@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20" - dependencies: - chalk "1.1.3" - -karma-mocha@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" - dependencies: - minimist "1.2.0" - -karma-phantomjs-launcher@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" - dependencies: - lodash "^4.0.1" - phantomjs-prebuilt "^2.1.7" - -karma-webpack-with-fast-source-maps@^1.10.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/karma-webpack-with-fast-source-maps/-/karma-webpack-with-fast-source-maps-1.10.1.tgz#1676e7e028561016e29691e701b5372fe8cac1e0" - dependencies: - async "~0.9.0" - loader-utils "^0.2.5" - lodash "^3.8.0" - source-map "^0.1.41" - webpack-dev-middleware "^1.0.11" - -karma@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^1.4.1" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^3.8.0" - log4js "^0.6.31" - mime "^1.3.4" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "1.7.3" - source-map "^0.5.3" - tmp "0.0.31" - useragent "^2.1.12" - -kew@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" - -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - dependencies: - is-buffer "^1.0.2" - -kind-of@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" - dependencies: - is-buffer "^1.1.5" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - dependencies: - package-json "^4.0.0" - -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -linkedlist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/linkedlist/-/linkedlist-1.0.1.tgz#7b74189bfad6e76367fb5a10f3c36913128b782b" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - -loader-utils@^0.2.16, loader-utils@^0.2.5: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.1, loader-utils@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash-es@^4.2.0, lodash-es@^4.2.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - -lodash._bindcallback@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - -lodash._createassigner@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" - dependencies: - lodash._bindcallback "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.restparam "^3.0.0" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash.assign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" - dependencies: - lodash._baseassign "^3.0.0" - lodash._createassigner "^3.0.0" - lodash.keys "^3.0.0" - -lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - -lodash.assignin@^4.0.9: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - -lodash.clonedeep@^4.3.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - -lodash.cond@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.defaults@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" - dependencies: - lodash.assign "^3.0.0" - lodash.restparam "^3.0.0" - -lodash.defaults@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.merge@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - -lodash.mergewith@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" - -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - -lodash.reduce@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" - -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - -lodash.some@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - -lodash@3.x, lodash@^3.8.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -lodash@~4.16.4: - version "4.16.6" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" - -log4js@^0.6.31: - version "0.6.38" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" - dependencies: - readable-stream "~1.0.2" - semver "~4.3.3" - -lolex@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - -lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - -macaddress@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" - -make-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" - dependencies: - pify "^2.3.0" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - -md5-hex@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" - dependencies: - md5-o-matic "^0.1.1" - -md5-o-matic@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.3.0, meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-source-map@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" - dependencies: - source-map "^0.5.6" - -methods@^1.1.1, methods@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.1.5, micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -miller-rabin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.x.x, "mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" - -mime-kind@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-2.0.2.tgz#5a43d5bebdeb082182224d9d263206329e57cdf8" - dependencies: - file-type "^4.3.0" - mime-types "^2.1.15" - -mime-types@^2.1.10, mime-types@^2.1.12, mime-types@^2.1.15, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" - dependencies: - mime-db "~1.27.0" - -mime@1.3.x, mime@^1.3.4: - version "1.3.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -mimos@3.x.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f" - dependencies: - hoek "4.x.x" - mime-db "1.x.x" - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" - -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" - dependencies: - minimist "0.0.8" - -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mocha@^3.2.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.1.tgz#a3802b4aa381934cacb38de70cf771621da8f9af" - dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.0" - diff "3.2.0" - escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2, ms@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multi-glob@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multi-glob/-/multi-glob-1.0.1.tgz#e67d2ab4429d27606e6eb4db35094afc91788750" - dependencies: - async "1.x" - glob "5.x" - lodash "3.x" - -multi-part@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/multi-part/-/multi-part-2.0.0.tgz#674f53b432f850cf8cc02d30d21f2064e309563c" - dependencies: - mime-kind "^2.0.1" - -multiline@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/multiline/-/multiline-1.0.2.tgz#69b1f25ff074d2828904f244ddd06b7d96ef6c93" - dependencies: - strip-indent "^1.0.0" - -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - -nan@^2.3.0, nan@^2.3.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" - -native-promise-only@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -ncname@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" - dependencies: - xml-char-classes "^1.0.0" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -nigel@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1" - dependencies: - hoek "4.x.x" - vise "2.x.x" - -no-case@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" - dependencies: - lower-case "^1.1.1" - -node-fetch@^1.0.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-gyp@^3.3.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.1.tgz#19561067ff185464aded478212681f47fd578cbc" - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - minimatch "^3.0.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "2" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - -node-libs-browser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.1.4" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" - path-browserify "0.0.0" - process "^0.11.0" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.0.5" - stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-sass@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.3.2" - node-gyp "^3.3.1" - npmlog "^4.0.0" - request "^2.79.0" - sass-graph "^2.1.1" - stdout-stream "^1.4.0" - -nodemailer@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.0.1.tgz#b95864b07facee8287e8232effd6f1d56ec75ab2" - -nodemon@^1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d" - dependencies: - chokidar "^1.7.0" - debug "^2.6.8" - es6-promise "^3.3.1" - ignore-by-default "^1.0.1" - lodash.defaults "^3.1.2" - minimatch "^3.0.4" - ps-tree "^1.1.0" - touch "^3.1.0" - undefsafe "0.0.3" - update-notifier "^2.2.0" - -nomnomnomnom@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz#b2239f031c8d04da67e32836e1e3199e12f7a8e2" - dependencies: - chalk "~0.4.0" - underscore "~1.6.0" - -"nopt@2 || 3", nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -nyc@^11.0.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.0.3.tgz#0c28bc669a851621709bf7a08503034bee3812b6" - dependencies: - archy "^1.0.0" - arrify "^1.0.1" - caching-transform "^1.0.0" - convert-source-map "^1.3.0" - debug-log "^1.0.1" - default-require-extensions "^1.0.0" - find-cache-dir "^0.1.1" - find-up "^2.1.0" - foreground-child "^1.5.3" - glob "^7.0.6" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.0.7" - istanbul-lib-instrument "^1.7.3" - istanbul-lib-report "^1.1.1" - istanbul-lib-source-maps "^1.2.1" - istanbul-reports "^1.1.1" - md5-hex "^1.2.0" - merge-source-map "^1.0.2" - micromatch "^2.3.11" - mkdirp "^0.5.0" - resolve-from "^2.0.0" - rimraf "^2.5.4" - signal-exit "^3.0.1" - spawn-wrap "^1.3.7" - test-exclude "^4.1.1" - yargs "^8.0.1" - yargs-parser "^5.0.0" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - -object-keys@^1.0.10, object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object.assign@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - object-keys "^1.0.10" - -object.entries@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.values@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - -once@1.x, once@^1.3.0, once@^1.3.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - -os-browserify@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" - -os-homedir@^1.0.0, os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" - dependencies: - execa "^0.5.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -output-file-sync@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-headers@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" - dependencies: - for-each "^0.3.2" - trim "0.0.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parsejson@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" - dependencies: - better-assert "~1.0.0" - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - dependencies: - isarray "0.0.1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - dependencies: - through "~2.3" - -pbkdf2@^3.0.3: - version "3.0.12" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -pez@2.x.x: - version "2.1.5" - resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.5.tgz#5ec2cc62500cc3eb4236d4a414cf5a17b5eb5007" - dependencies: - b64 "3.x.x" - boom "5.x.x" - content "3.x.x" - hoek "4.x.x" - nigel "2.x.x" - -phantomjs-prebuilt@^2.1.14, phantomjs-prebuilt@^2.1.7: - version "2.1.14" - resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" - dependencies: - es6-promise "~4.0.3" - extract-zip "~1.5.0" - fs-extra "~1.0.0" - hasha "~2.2.0" - kew "~0.7.0" - progress "~1.1.8" - request "~2.79.0" - request-progress "~2.0.1" - which "~1.2.10" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pirates@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-3.0.1.tgz#8a87bf9ab7f58d6c3deee6a1a1c892ffe823811f" - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -pkg-up@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" - dependencies: - find-up "^1.0.0" - -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - -podium@1.x.x: - version "1.2.5" - resolved "https://registry.yarnpkg.com/podium/-/podium-1.2.5.tgz#87c566c2f0365bcf0a1ec7602c4d01948cdd2ad5" - dependencies: - hoek "4.x.x" - items "2.x.x" - joi "10.x.x" - -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" - dependencies: - postcss "^5.0.4" - uniqid "^4.0.0" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -postcss-modules-extract-imports@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" - dependencies: - postcss "^5.0.4" - -postcss-modules-local-by-default@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" - dependencies: - css-selector-tokenizer "^0.6.0" - postcss "^5.0.4" - -postcss-modules-scope@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" - dependencies: - css-selector-tokenizer "^0.6.0" - postcss "^5.0.4" - -postcss-modules-values@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" - dependencies: - icss-replace-symbols "^1.0.2" - postcss "^5.0.14" - -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - dependencies: - postcss "^5.0.4" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: - version "5.2.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.0, prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-error@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.0.tgz#87f4e9d706a24c87d6cbee9fabec001fcf8c75d8" - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -private@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process@^0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - -progress@^1.1.8, progress@~1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - -promise@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" - dependencies: - asap "~2.0.3" - -prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@~15.5.7: - version "15.5.10" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - -ps-tree@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - dependencies: - event-stream "~3.3.0" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -q@^1.1.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" - -qjobs@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" - -qs@6.4.0, qs@^6.1.0, qs@^6.2.0, qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -qs@~6.3.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" - -query-string@^4.1.0, query-string@^4.2.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0, querystring@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" - dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" - -randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" - -range-parser@^1.0.3, range-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" - dependencies: - bytes "2.4.0" - iconv-lite "0.4.15" - unpipe "1.0.0" - -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-addons-test-utils@^15.5.1: - version "15.5.1" - resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-dom@^15.5.4: - version "15.5.4" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "~15.5.7" - -react-element-to-jsx-string@^5.0.0: - version "5.0.7" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-5.0.7.tgz#c663a4800a9c712115c0d8519cb0215a46a1f0f2" - dependencies: - collapse-white-space "^1.0.0" - is-plain-object "^2.0.1" - lodash "^4.17.4" - sortobject "^1.0.0" - stringify-object "2.4.0" - traverse "^0.6.6" - -react-redux@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.4.tgz#1563babadcfb2672f57f9ceaa439fb16bf85d55b" - dependencies: - create-react-class "^15.5.1" - hoist-non-react-statics "^1.0.3" - invariant "^2.0.0" - lodash "^4.2.0" - lodash-es "^4.2.0" - loose-envify "^1.1.0" - prop-types "^15.0.0" - -react-router@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.0.5.tgz#c3b7873758045a8bbc9562aef4ff4bc8cce7c136" - dependencies: - create-react-class "^15.5.1" - history "^3.0.0" - hoist-non-react-statics "^1.2.0" - invariant "^2.2.1" - loose-envify "^1.2.0" - prop-types "^15.5.6" - warning "^3.0.0" - -react-test-renderer@^15.5.4: - version "15.5.4" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.5.4.tgz#d4ebb23f613d685ea8f5390109c2d20fbf7c83bc" - dependencies: - fbjs "^0.8.9" - object-assign "^4.1.0" - -react@^15.5.4: - version "15.5.4" - resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.7" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@1.0, readable-stream@~1.0.2: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" - dependencies: - buffer-shims "~1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~1.0.0" - util-deprecate "~1.0.1" - -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -readline-sync@^1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.7.tgz#001bfdd4c06110c3c084c63bf7c6a56022213f30" - -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -redbox-react@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.3.6.tgz#70314c57c066257eb70b0a24dc794b5cef4f1c4e" - dependencies: - error-stack-parser "^1.3.6" - object-assign "^4.0.1" - prop-types "^15.5.4" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - dependencies: - balanced-match "^0.4.2" - -redux-mock-store@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/redux-mock-store/-/redux-mock-store-1.2.3.tgz#1b3ad299da91cb41ba30d68e3b6f024475fb9e1b" - -redux-thunk@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.2.0.tgz#e615a16e16b47a19a515766133d1e3e99b7852e5" - -redux@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.6.0.tgz#887c2b3d0b9bd86eca2be70571c27654c19e188d" - dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.2" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - -regenerator-transform@0.9.11: - version "0.9.11" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - -relish@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/relish/-/relish-0.2.4.tgz#a2111ba53af480f92a01f72e893cf22961c8512b" - dependencies: - hoek "~4.0.2" - -remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" - -renderkid@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" - dependencies: - css-select "^1.1.0" - dom-converter "~0.1" - htmlparser2 "~3.3.0" - strip-ansi "^3.0.0" - utila "~0.3" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request-progress@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" - dependencies: - throttleit "^1.0.0" - -request@2, request@2.79.0, request@^2.79.0, request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - -request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requires-port@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" - -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.1.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" - dependencies: - path-parse "^1.0.5" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" - dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" - -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - dependencies: - once "^1.3.0" - -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - -samsam@1.x, samsam@^1.1.3: - version "1.2.1" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" - -sass-graph@^2.1.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.3.tgz#2ba9f170f6cafed5b51665abe13cf319c9269c31" - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^6.6.0" - -sass-loader@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.5.tgz#a847910f36442aa56c5985879d54eb519e24a328" - dependencies: - async "^2.1.5" - clone-deep "^0.2.4" - loader-utils "^1.0.1" - lodash.tail "^4.1.1" - pify "^2.3.0" - -sax@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" - -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -semver@~4.3.3: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" - dependencies: - inherits "^2.0.1" - -sha256@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/sha256/-/sha256-0.2.0.tgz#73a0b418daab7035bff86e8491e363412fc2ab05" - dependencies: - convert-hex "~0.1.0" - convert-string "~0.1.0" - -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shelljs@^0.7.5: - version "0.7.7" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shot@3.x.x: - version "3.4.2" - resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.2.tgz#1e5c3f6f2b26649adc42f7eb350214a5a0291d67" - dependencies: - hoek "4.x.x" - joi "10.x.x" - -should-equal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-1.0.1.tgz#0b6e9516f2601a9fb0bb2dcc369afa1c7e200af7" - dependencies: - should-type "^1.0.0" - -should-format@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/should-format/-/should-format-1.0.0.tgz#0a30cdab4a3bd1427bbccb8b738567bda7290d78" - dependencies: - should-type "^1.0.0" - -should-type@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" - -should@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/should/-/should-9.0.2.tgz#b550f691e71c66788e0e96e9f721d58be6920e5a" - dependencies: - should-equal "^1.0.0" - should-format "^1.0.0" - should-type "^1.0.0" - -signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -sinon-chai@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-2.10.0.tgz#6ab3008bb8cae9929e744d766574b4cf35f34b5b" - -sinon@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.2.0.tgz#3b1b42ff5defcbf51a52a62aca6d61171b9fd262" - dependencies: - diff "^3.1.0" - formatio "1.2.0" - lolex "^1.6.0" - native-promise-only "^0.8.1" - path-to-regexp "^1.7.0" - samsam "^1.1.3" - text-encoding "0.6.4" - type-detect "^4.0.0" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -socket.io-adapter@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" - dependencies: - debug "2.3.3" - socket.io-parser "2.3.1" - -socket.io-client@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "2.3.3" - engine.io-client "1.8.3" - has-binary "0.1.7" - indexof "0.0.1" - object-component "0.0.3" - parseuri "0.0.5" - socket.io-parser "2.3.1" - to-array "0.1.4" - -socket.io-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" - dependencies: - component-emitter "1.1.2" - debug "2.2.0" - isarray "0.0.1" - json3 "3.3.2" - -socket.io@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" - dependencies: - debug "2.3.3" - engine.io "1.8.3" - has-binary "0.1.7" - object-assign "4.1.0" - socket.io-adapter "0.5.0" - socket.io-client "1.7.3" - socket.io-parser "2.3.1" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - -sortobject@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sortobject/-/sortobject-1.1.1.tgz#4f695d4d44ed0a4c06482c34c2582a2dcdc2ab34" - dependencies: - editions "^1.1.1" - -source-list-map@^0.1.7, source-list-map@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" - -source-list-map@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" - -source-map-support@^0.4.2: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" - dependencies: - source-map "^0.5.6" - -source-map@0.4.x, source-map@^0.4.2, source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.1.41: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -spawn-wrap@^1.3.7: - version "1.3.8" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" - dependencies: - foreground-child "^1.5.6" - mkdirp "^0.5.0" - os-homedir "^1.0.1" - rimraf "^2.3.3" - signal-exit "^3.0.2" - which "^1.2.4" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stackframe@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4" - -statehood@5.x.x: - version "5.0.2" - resolved "https://registry.yarnpkg.com/statehood/-/statehood-5.0.2.tgz#c6b3baa16ed8b121d3f09a3ffa85e22195a7f2a9" - dependencies: - boom "5.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - iron "4.x.x" - items "2.x.x" - joi "10.x.x" - -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -stdout-stream@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" - dependencies: - readable-stream "^2.0.1" - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - dependencies: - duplexer "~0.1.1" - -stream-http@^2.3.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" - -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" - dependencies: - buffer-shims "~1.0.0" - -stringify-object@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-2.4.0.tgz#c62d11023eb21fe2d9b087be039a26df3b22a09d" - dependencies: - is-plain-obj "^1.0.0" - is-regexp "^1.0.0" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.0, strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -style-loader@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.17.0.tgz#e8254bccdb7af74bd58274e36107b4d5ab4df310" - dependencies: - loader-utils "^1.0.2" - -subtext@4.x.x: - version "4.4.1" - resolved "https://registry.yarnpkg.com/subtext/-/subtext-4.4.1.tgz#2fcec945de429283c3d18b151ff0fa1f1b87aec9" - dependencies: - boom "5.x.x" - content "3.x.x" - hoek "4.x.x" - pez "2.x.x" - wreck "12.x.x" - -superagent@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-2.3.0.tgz#703529a0714e57e123959ddefbce193b2e50d115" - dependencies: - component-emitter "^1.2.0" - cookiejar "^2.0.6" - debug "^2.2.0" - extend "^3.0.0" - form-data "1.0.0-rc4" - formidable "^1.0.17" - methods "^1.1.1" - mime "^1.3.4" - qs "^6.1.0" - readable-stream "^2.0.5" - -supports-color@3.1.2, supports-color@3.1.x, supports-color@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - dependencies: - has-flag "^1.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.2, supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^4.0.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - dependencies: - has-flag "^2.0.0" - -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -symbol-observable@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" - -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -tapable@^0.2.5, tapable@~0.2.5: - version "0.2.6" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.0.0, tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - dependencies: - execa "^0.7.0" - -test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -text-encoding@0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" - -text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - -through@2, through@^2.3.6, through@~2.3, through@~2.3.1: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - -timers-browserify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" - dependencies: - setimmediate "^1.0.4" - -tmp@0.0.31, tmp@0.0.x: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - dependencies: - os-tmpdir "~1.0.1" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-fast-properties@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -topo@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" - dependencies: - hoek "4.x.x" - -toposort@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - dependencies: - nopt "~1.0.10" - -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -trim@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" - -type-detect@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" - -type-is@~1.6.14: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typedarray@^0.0.6, typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -ua-parser-js@^0.7.9: - version "0.7.12" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" - -uglify-js@3.0.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.6.tgz#17a673f64a78d8807fbda1b4c9ffce114c6febfd" - dependencies: - commander "~2.9.0" - source-map "~0.5.1" - -uglify-js@^2.6, uglify-js@^2.8.5: - version "2.8.26" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.26.tgz#3a1db8ae0a0aba7f92e1ddadadbd0293d549f90e" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - -undefsafe@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" - -underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - -uniqid@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" - dependencies: - macaddress "^0.2.8" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - dependencies: - crypto-random-string "^1.0.0" - -universalify@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - -update-notifier@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" - dependencies: - boxen "^1.0.0" - chalk "^1.0.0" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -url-loader@^0.5.8: - version "0.5.8" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5" - dependencies: - loader-utils "^1.0.2" - mime "1.3.x" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -urlgrey@0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" - -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - dependencies: - os-homedir "^1.0.0" - -useragent@^2.1.12: - version "2.1.13" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.13.tgz#bba43e8aa24d5ceb83c2937473e102e21df74c10" - dependencies: - lru-cache "2.2.x" - tmp "0.0.x" - -utf8-length@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/utf8-length/-/utf8-length-0.0.1.tgz#d315c4bed529c977f18dd35c73d72628327d9ada" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util@0.10.3, util@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -utila@~0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - -uuid@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - -uuid@^3.0.0, uuid@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - -v8flags@^2.0.10: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -vary@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -vendors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - dependencies: - extsprintf "1.0.2" - -vise@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39" - dependencies: - hoek "4.x.x" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - dependencies: - loose-envify "^1.0.0" - -watchpack@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" - dependencies: - async "^2.1.2" - chokidar "^1.4.3" - graceful-fs "^4.1.2" - -webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.8.4: - version "1.10.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz#2e252ce1dfb020dbda1ccb37df26f30ab014dbd1" - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - -webpack-hot-middleware@^2.13.2: - version "2.18.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.18.0.tgz#a16bb535b83a6ac94a78ac5ebce4f3059e8274d3" - dependencies: - ansi-html "0.0.7" - html-entities "^1.2.0" - querystring "^0.2.0" - strip-ansi "^3.0.0" - -webpack-sources@^0.1.0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" - dependencies: - source-list-map "~0.1.7" - source-map "~0.5.3" - -webpack-sources@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" - dependencies: - source-list-map "^1.1.1" - source-map "~0.5.3" - -webpack@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.5.1.tgz#61742f0cf8af555b87460a9cd8bba2f1e3ee2fce" - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^4.7.0" - ajv-keywords "^1.1.1" - async "^2.1.2" - enhanced-resolve "^3.0.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^0.2.16" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^3.1.0" - tapable "~0.2.5" - uglify-js "^2.8.5" - watchpack "^1.3.1" - webpack-sources "^0.2.3" - yargs "^6.0.0" - -whatwg-fetch@>=0.10.0, whatwg-fetch@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" - -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@1, which@1.2.x, which@^1.0.9, which@^1.1.1, which@^1.2.4, which@^1.2.9, which@~1.2.10: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" - -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - dependencies: - string-width "^1.0.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@1.0.x, wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -wreck@12.x.x: - version "12.2.2" - resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.2.2.tgz#e21823d34c36d672004eefa347ae8c4f6050e3db" - dependencies: - boom "5.x.x" - hoek "4.x.x" - -write-file-atomic@^1.1.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-file-atomic@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - -ws@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -wtf-8@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - -xhr@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993" - dependencies: - global "~4.3.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-char-classes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" - -xmlhttprequest-ssl@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" - -xtend@^4.0.0, xtend@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@^6.0.0, yargs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.1.tgz#420ef75e840c1457a80adcca9bc6fa3849de51aa" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - dependencies: - fd-slicer "~1.0.1" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 0715e20ef2b8ac2dbd058fe9457e5ffe6e7fa27a Mon Sep 17 00:00:00 2001 From: Shubham Naik Date: Thu, 28 Sep 2017 17:21:18 -0700 Subject: [PATCH 2/3] feature(*) restructure tomoe --- Tomoe/Cloud/README.md | 1 + Tomoe/Core/.babelrc | 8 + Tomoe/Core/.codeclimate.yml | 24 + Tomoe/Core/.gitignore | 6 + Tomoe/Core/README.md | 330 + Tomoe/Core/assets/images/logos/logo_blue.png | Bin 0 -> 21719 bytes Tomoe/Core/build/core/config.js | 61 + Tomoe/Core/build/core/generator.js | 290 + Tomoe/Core/build/core/index.js | 10 + Tomoe/Core/build/imports/build.js | 28 + Tomoe/Core/build/imports/index.js | 11 + .../Core/build/templates/email.template.html | 14 + Tomoe/Core/build/templates/env.template.js | 11 + Tomoe/Core/build/templates/index.js | 2 + Tomoe/Core/build/templates/tomoe.template.js | 69 + Tomoe/Core/build/tests/index.js | 14 + Tomoe/Core/build/tests/test-starter.js | 117 + Tomoe/Core/build/util/create-collections.js | 25 + Tomoe/Core/build/util/index.js | 2 + Tomoe/Core/build/util/move-templates.js | 15 + Tomoe/Core/package.json | 138 + Tomoe/Core/src/app/src/index.js | 58 + .../src/extensions/administration/config.json | 6 + .../extensions/administration/importable.js | 1 + .../extensions/administration/package.json | 11 + .../src/extensions/admissions/config.json | 7 + .../src/extensions/admissions/importable.js | 1 + .../src/extensions/admissions/package.json | 11 + .../src/server/collections/Hacker.js | 44 + .../src/server/collections/index.js | 1 + .../admissions/src/server/handlers/hacker.js | 105 + .../admissions/src/server/handlers/index.js | 1 + .../admissions/src/server/routes/hacker.js | 108 + .../admissions/src/server/routes/index.js | 7 + .../src/server/validators/hacker.js | 36 + .../admissions/src/server/validators/index.js | 1 + Tomoe/Core/src/extensions/index.js | 1 + Tomoe/Core/src/server/exportable.js | 4 + Tomoe/Core/src/server/index.js | 22 + .../Core/src/server/src/collections/Admin.js | 42 + .../Core/src/server/src/collections/Email.js | 28 + Tomoe/Core/src/server/src/collections/User.js | 352 + .../src/server/src/collections/Volunteer.js | 45 + .../Core/src/server/src/collections/index.js | 3 + Tomoe/Core/src/server/src/database.js | 7 + Tomoe/Core/src/server/src/handlers/admin.js | 103 + Tomoe/Core/src/server/src/handlers/index.js | 2 + .../Core/src/server/src/handlers/volunteer.js | 89 + Tomoe/Core/src/server/src/routes/admin.js | 87 + Tomoe/Core/src/server/src/routes/index.js | 12 + Tomoe/Core/src/server/src/routes/volunteer.js | 98 + Tomoe/Core/src/server/src/server.js | 52 + Tomoe/Core/src/server/src/templates/.gitkeep | 0 .../src/server/src/util/extension-handler.js | 9 + Tomoe/Core/src/server/src/util/index.js | 5 + .../src/server/src/util/operator-search.js | 11 + Tomoe/Core/src/server/src/util/respond.js | 7 + .../src/server/src/util/set-search-param.js | 13 + .../src/server/src/util/transform-data.js | 12 + Tomoe/Core/src/server/src/validators/admin.js | 23 + Tomoe/Core/src/server/src/validators/index.js | 2 + .../src/server/src/validators/volunteer.js | 36 + Tomoe/Core/src/server/tests/after.spec.js | 7 + .../server/tests/collections/Admin.spec.js | 39 + .../server/tests/collections/Hacker.spec.js | 79 + .../tests/collections/Volunteer.spec.js | 79 + .../src/server/tests/collections/user.spec.js | 317 + Tomoe/Core/src/server/tests/constants.js | 114 + .../src/server/tests/routes/admin.spec.js | 351 + .../src/server/tests/routes/hacker.spec.js | 341 + .../src/server/tests/routes/volunteer.spec.js | 247 + .../src/server/tests/util/clear-documents.js | 14 + Tomoe/Core/src/server/tests/util/index.js | 1 + Tomoe/Core/yarn.lock | 7300 +++++++++++++++++ 74 files changed, 11528 insertions(+) create mode 100644 Tomoe/Cloud/README.md create mode 100644 Tomoe/Core/.babelrc create mode 100644 Tomoe/Core/.codeclimate.yml create mode 100644 Tomoe/Core/.gitignore create mode 100755 Tomoe/Core/README.md create mode 100644 Tomoe/Core/assets/images/logos/logo_blue.png create mode 100644 Tomoe/Core/build/core/config.js create mode 100644 Tomoe/Core/build/core/generator.js create mode 100644 Tomoe/Core/build/core/index.js create mode 100644 Tomoe/Core/build/imports/build.js create mode 100644 Tomoe/Core/build/imports/index.js create mode 100644 Tomoe/Core/build/templates/email.template.html create mode 100644 Tomoe/Core/build/templates/env.template.js create mode 100644 Tomoe/Core/build/templates/index.js create mode 100644 Tomoe/Core/build/templates/tomoe.template.js create mode 100644 Tomoe/Core/build/tests/index.js create mode 100644 Tomoe/Core/build/tests/test-starter.js create mode 100644 Tomoe/Core/build/util/create-collections.js create mode 100644 Tomoe/Core/build/util/index.js create mode 100644 Tomoe/Core/build/util/move-templates.js create mode 100755 Tomoe/Core/package.json create mode 100644 Tomoe/Core/src/app/src/index.js create mode 100644 Tomoe/Core/src/extensions/administration/config.json create mode 100644 Tomoe/Core/src/extensions/administration/importable.js create mode 100644 Tomoe/Core/src/extensions/administration/package.json create mode 100644 Tomoe/Core/src/extensions/admissions/config.json create mode 100644 Tomoe/Core/src/extensions/admissions/importable.js create mode 100644 Tomoe/Core/src/extensions/admissions/package.json create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/collections/Hacker.js create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/collections/index.js create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/handlers/index.js create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/routes/hacker.js create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/routes/index.js create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/validators/hacker.js create mode 100644 Tomoe/Core/src/extensions/admissions/src/server/validators/index.js create mode 100644 Tomoe/Core/src/extensions/index.js create mode 100644 Tomoe/Core/src/server/exportable.js create mode 100644 Tomoe/Core/src/server/index.js create mode 100644 Tomoe/Core/src/server/src/collections/Admin.js create mode 100644 Tomoe/Core/src/server/src/collections/Email.js create mode 100644 Tomoe/Core/src/server/src/collections/User.js create mode 100644 Tomoe/Core/src/server/src/collections/Volunteer.js create mode 100644 Tomoe/Core/src/server/src/collections/index.js create mode 100644 Tomoe/Core/src/server/src/database.js create mode 100644 Tomoe/Core/src/server/src/handlers/admin.js create mode 100644 Tomoe/Core/src/server/src/handlers/index.js create mode 100644 Tomoe/Core/src/server/src/handlers/volunteer.js create mode 100644 Tomoe/Core/src/server/src/routes/admin.js create mode 100644 Tomoe/Core/src/server/src/routes/index.js create mode 100644 Tomoe/Core/src/server/src/routes/volunteer.js create mode 100644 Tomoe/Core/src/server/src/server.js create mode 100644 Tomoe/Core/src/server/src/templates/.gitkeep create mode 100644 Tomoe/Core/src/server/src/util/extension-handler.js create mode 100644 Tomoe/Core/src/server/src/util/index.js create mode 100644 Tomoe/Core/src/server/src/util/operator-search.js create mode 100644 Tomoe/Core/src/server/src/util/respond.js create mode 100644 Tomoe/Core/src/server/src/util/set-search-param.js create mode 100644 Tomoe/Core/src/server/src/util/transform-data.js create mode 100644 Tomoe/Core/src/server/src/validators/admin.js create mode 100644 Tomoe/Core/src/server/src/validators/index.js create mode 100644 Tomoe/Core/src/server/src/validators/volunteer.js create mode 100644 Tomoe/Core/src/server/tests/after.spec.js create mode 100644 Tomoe/Core/src/server/tests/collections/Admin.spec.js create mode 100644 Tomoe/Core/src/server/tests/collections/Hacker.spec.js create mode 100644 Tomoe/Core/src/server/tests/collections/Volunteer.spec.js create mode 100644 Tomoe/Core/src/server/tests/collections/user.spec.js create mode 100644 Tomoe/Core/src/server/tests/constants.js create mode 100644 Tomoe/Core/src/server/tests/routes/admin.spec.js create mode 100644 Tomoe/Core/src/server/tests/routes/hacker.spec.js create mode 100644 Tomoe/Core/src/server/tests/routes/volunteer.spec.js create mode 100644 Tomoe/Core/src/server/tests/util/clear-documents.js create mode 100644 Tomoe/Core/src/server/tests/util/index.js create mode 100755 Tomoe/Core/yarn.lock diff --git a/Tomoe/Cloud/README.md b/Tomoe/Cloud/README.md new file mode 100644 index 0000000..e14df1b --- /dev/null +++ b/Tomoe/Cloud/README.md @@ -0,0 +1 @@ +# Tomoe cloud handler/website and directives diff --git a/Tomoe/Core/.babelrc b/Tomoe/Core/.babelrc new file mode 100644 index 0000000..9cc1366 --- /dev/null +++ b/Tomoe/Core/.babelrc @@ -0,0 +1,8 @@ +{ + "presets": [ "es2015" ], + "env": { + "test": { + "plugins": ["istanbul"] + } + } +} diff --git a/Tomoe/Core/.codeclimate.yml b/Tomoe/Core/.codeclimate.yml new file mode 100644 index 0000000..1d4486c --- /dev/null +++ b/Tomoe/Core/.codeclimate.yml @@ -0,0 +1,24 @@ +engines: + eslint: + enabled: false + config: + config: tests/linters/.eslintrc + exclude_fingerprints: + - 1f55a8932e903647c9912f66ad2ce34f. + csslint: + enabled: true + duplication: + enabled: true + exclude_fingerprints: + - 09e2899562aa713dce4899fff9ecb2ff + config: + languages: + - javascript +ratings: + paths: + - api/**/* + - assets/js/**/* + - "**.js" +exclude_paths: +- server/test/**/* +- "assets/js/shared/*" diff --git a/Tomoe/Core/.gitignore b/Tomoe/Core/.gitignore new file mode 100644 index 0000000..fd07126 --- /dev/null +++ b/Tomoe/Core/.gitignore @@ -0,0 +1,6 @@ +# configuration files +tomoe.config.js +tomoe-test.config.js + +# template files +src/**/templates/*.template* diff --git a/Tomoe/Core/README.md b/Tomoe/Core/README.md new file mode 100755 index 0000000..b274595 --- /dev/null +++ b/Tomoe/Core/README.md @@ -0,0 +1,330 @@ +Tomoe + +# Hackathon Application Management API + +[![Code Climate](https://codeclimate.com/github/HackMerced/Tomoe/badges/gpa.svg)](https://codeclimate.com/github/HackMerced/Tomoe) +[![Codeship Status for HackMerced/Tomoe](https://codeship.com/projects/37a7fc80-886a-0134-ba24-069b35d31ada/status?branch=master)](https://codeship.com/projects/183931) +[![Test Coverage](https://codeclimate.com/github/HackMerced/Tomoe/badges/coverage.svg)](https://codeclimate.com/github/HackMerced/Tomoe/coverage) + +Tomoe is a scalable, open source API that allows Hackathon organizers to manage and monitor their applicants and staff. Tomoe was built for HackMerced's application management but has been extended and open-sourced for everyone. Tomoe is still in development and will be available for use this December. + +[Website](http://tomoe.hackmerced.com) | +[Docs](http://tomoe.hackmerced.com/docs) | +[Installation](http://tomoe.hackmerced.com/install) | +[HackMerced](http://hackmerced.com) | +[Sponsor Us!](http://hackmerced.com/sponsor) | +[Blog](https://blog.hackmerced.com/) + +# Table of Contents + +- [**Features**](#features) +- [**Installation**](#installation) +- [**Documentation**](#documentation) +- [**Resources and Tools**](#resources-and-tools) +- [**Roadmap**](#roadmap) +- [**Contributing**](#contributing) +- [**Support**](#support) +- [**License**](#license) + +# Features + +- **API**: Tomoe is primarily an API that allows you to build your own UI and interfaces around our platform. +- **Application Manager**: Manage students who apply to your hackathon by approving, denying, generating QR codes for hackers. +- **Email Utility**: Tomoe works with SendGrid to send application statuses, important updates, and other information to hackers. + +
+ +[⬆ back to top](#table-of-contents) + +# Installation +Tomoe's runs on top of node.js and requires you to install `node.js`, `arangodb`, and `npm` + +Once you've installed the prerequistes you will need to run the following command to install your Tomoe instance. It will ask you a few questions to set up a server. + +```terminal +npm install +npm run setup +``` + +Access the server and gui locally at: +```terminal +http://localhost:4925 +``` + +### Local environmnet variables in development +If you do not want to setup environmental variables globally, Tomoe allows you to locally set environmental variables by creating file called `.env` in the root directory of Tomoe + +```terminal +cd /path/to/tomoe/ +touch .env +``` + +Now open up the `.env` file - you should add the following: +```text +DB_URI={Connection URI of your ArangoDB instance} +NODE_ENV={Either DEVELOPMENT or PRODUCTIOn} +``` +
+ +[⬆ back to top](#table-of-contents) + +# Documentation +## Shortcuts +[**Hacker Object**](#the-hacker-object)
+[**GET /hackers**](#get-hackers)
+[**GET /hackers/{user-email}**](#get-hackersuser-email)
+[**GET /hackers/{user-id}**](#get-hackersuser-id)
+[**POST /hackers**](#post-hackers)
+[**POST /hackers/{user-email}**](#post-hackersuser-email)
+[**POST /hackers/{user-id}**](#post-hackersuser-id)
+[**DELETE /hackers/{user-email}**](#delete-hackersuser-email)
+[**DELETE /hackers/{user-id}**](#delete-hackersuser-id)
+
+ +[⬆ back to top](#table-of-contents) + +## The Hacker Object +The Hacker Object is the core to Tomoe's hackathon management system. Hackers are the people who apply to your hackathon. +```javascript +{ + "_id":"user-id", + "name":"user-name", + "email":"hackathon@email.com", + "password":"userpasswordhash", // not returned normally + "status":"applied", // applied, denied, approved, waitlisted + "survey":{ + ... // array of attributes that can be customized and sent to the user + } +} +``` +
+ +[⬆ back to top](#table-of-contents) +- [back to documentation](#documentation) +### GET /hackers
+Lists all hackers stored in your database + +#### Parameters +* survey.data.{option}={any-data}
**optional** : will filter the hackers returned based on a particular survey data +

+* survey.lte.{option}={numeric-data}
**optional** : will filter for a range of options that are less than the entered value +

+* survey.gte.{option}={numeric-data}
**optional** : will filter for a range of options that are greater than the entered value +

+* survey.rangemin.{option}={numeric-data}
**optional** : will filter for a range of options, sets the min value +

+* survey.rangemax.{option}={numeric-data}
**optional** : will filter for a range of options, sets the max value + +#### Example 1 +``` +GET https://{your-tomoe-server}/v1.0/hackers +``` + +##### Response +```js +Array [ + { + "_id":"349mei8234", + "name":"John Mallon", + "email":"john@ucmerced.edu", + "survey":{ + "age":22, + "college_origin":"University of California-Merced" + } + }, + ... + { + "_id":"934554", + "name":"Bob Brown", + "email":"bbrown@ucmerced.edu", + "survey":{ + "age":18, + "college_origin":"University of California-Los Angeles" + } + }, +] +``` + +#### Example 2 +``` +GET https://{your-tomoe-server}/v1.0/hackers?survey.rangemin.age=22&survey.rangemax.age=25&survey.data.college_origin=University of California-Merced +``` +##### Response +```js +Array [ + { + "_id":"349mei8234", + "name":"John Mallon", + "email":"john@ucmerced.edu", + "survey":{ + "age":22, + "college_origin":"University of California-Merced" + } + }, + ... + { + "_id":"934554", + "name":"Karl Korn", + "email":"kkorn@ucmerced.edu", + "survey":{ + "age":25, + "college_origin":"University of California-Merced" + } + }, +] +``` +
+ +[⬆ back to top](#table-of-contents) +- [back to documentation](#documentation) + +### GET /hackers/{user-email} +### GET /hackers/{user-id} +Returns a particular hackathon hacker, requires one of the previous parameters + +#### Example +``` +GET https://{your-tomoe-server}/v1.0/hackers/john@ucmerced.edu +``` + +##### Response +```js +{ + "_id":"349mei8234", + "name":"John Mallon", + "email":"john@ucmerced.edu", + "survey":{ + "age":22, + "college_origin":"University of California-Merced" + } +} +``` +
+ +[⬆ back to top](#table-of-contents) +- [back to documentation](#documentation) + +### POST /hackers +Creates a hacker user +#### Example +``` +POST https://{your-tomoe-server}/v1.0/hackers +``` +``` +CONTENT-TYPE: application/json +BODY: { + "name":"Shubham Naik", + "email":"snaik3@ucmerced.edu", + "survey":{ + "age":19, + "college_origin":"University of California-Merced" + } +} +``` + +##### Response +```js +{ + "_id":"5340424", + "name":"Shubham Naik", + "email":"snaik3@ucmerced.edu", + "survey":{ + "age":19, + "college_origin":"University of California-Merced" + } +} +``` +
+[⬆ back to top](#table-of-contents) +- [back to documentation](#documentation) + +### POST /hackers/{user-email} +### POST /hackers/{user-id} +Updates a particular hackathon hacker, requires one of the previous parameters + +#### Example +``` +GET https://{your-tomoe-server}/v1.0/hackers/snaik3@ucmerced.edu +``` +``` +CONTENT-TYPE: application/json +BODY: { + "name":"Shubham D Naik", + "survey":{ + "age":20, + } +} +``` + +##### Response +```js +{ + "_id":"349mei8234", + "name":"Shubham D Naik", + "email":"snaik3@ucmerced.edu", + "survey":{ + "age":20, + "college_origin":"University of California-Merced" + } +} +``` +
+ +[⬆ back to top](#table-of-contents) +- [back to documentation](#documentation) + +### DELETE /hackers/{user-email} +### DELETE /hackers/{user-id} +Deletes a particular hackathon hacker, requires one of the previous parameters + +#### Example +``` +DELETE https://{your-tomoe-server}/v1.0/hackers/john@ucmerced.edu +``` + +##### Response +```js +{ deleted: true } +``` +
+ +[⬆ back to top](#table-of-contents) +- [back to documentation](#documentation) + + +# Contributing +Want to contribute to Tomoe? We would love if you were to contribute to the continued growth of our project. Just submit a branch request - if you're a UC Merced student, please [contact us](shub@hackmerced.com)! We're still looking to add developers to our mentorship program too! + +
+ +[⬆ back to top](#table-of-contents) + + + + +# Support +The HackMerced Team is happy to help Hackathon organizers with setting up and configuring your application. Email us at [help@hackmerced.com](help@hackmerced.com). + +
+ +[⬆ back to top](#table-of-contents) + +# License +``` +Copyright 2016 HackMerced + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` +
+ +[⬆ back to top](#table-of-contents) diff --git a/Tomoe/Core/assets/images/logos/logo_blue.png b/Tomoe/Core/assets/images/logos/logo_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..57d31aae75250f18297f81eb6895f5781835b24c GIT binary patch literal 21719 zcmY&=1ymJX*YKs|N=QnhfOLt3Gzij-bY7(!LApdl5Tv9V=|+(5R9ad(q+7cGxdT4m z`@5FQb zY&7t{2(DQoZ-GS;CrK?QH9J!$7h^{gh}dg8mGtXglIaNh*#~aN7|~n1TTdzM9tanE>G_Ox4pg7y0V^9Cg%)x!m+Q8eG9e3PQ;p z$UIFVN>%!F=9I?=2lIU(%_53*erEqgXsZA>tE@71dQv zL5HV%&TEin96%H0{H!!qh{f-4LgFWU5mFYRcW zAaH5X{<_a6g@FXVNd3Z2qaa$@c*1-h_b-Y+MFFZ#ZgW@&~3{IPhrsjXaW8S{Xgh~m)_&6`ARozaEA z+k~q+4g^*QfVs}kI9MDGkE2C+G=OLUc#xef)L_nn%&o1qi8-8JMT;C;aHe8^0m29% zipNDXPj=<$s!CqWd-|2f1|C+BNSZRpT;gl?-2z;=GgwKYz*jQ?>rk$*w)HIT+4_rE zR)QuArwu}3I65$9pR(qH^QUpkpCiB@yRpUBC57v0m~exd9vp#aFf9@F#S>j)J@Q%G z)2=RA&~v0m6Gttx2&8pHsIY_EcFC^y;SQTN0)N9-J-$qI2oRrk%C-qP@m6@5C@pH| zhbs293#ko&dB=lq(Ev94xv|>zX>rf{QxoitJHa57$ci>R=@Z>+HxMC%3`=-^Y38qe z9v^Sc)LBLz_$oCJKD0Stq@Bh1*cASOFG9X;^;v#b#iae3iZc-0#xiAF*$P_L9eira z5}qPcsjq5$*xp(Z@mbTV$_MKa;u!F&puax~3IwB>gN z$7P~VyXnF^J+2@0P=ibLqAW*A2VzeW1J1$TlOPoSB0!BcC?efYq~S{tvRfr2 ztF!qX?qYh6fY!+XAC+*u@>2u^jw-Aby8l>~0KRC%g$H#SNc!a=Y~z+~egp9U->MK+gU!um{LZ29)dundwA zvilLpe_?{dHNOReO>{F_j(XcdhCE)W`GSMNPQSj+D{=7TsWpK6V+7+9&qRoIcPl9W7dHq@SOoT=U>K? z-nBgaHGUWO6JhO$MXF19(k)sTU>t8r!Tc)YUylL;dg{Q_^sOLNK`1(3JAvF2ga_t} zi8(NY`Klc;GEFoFtOEf3x@Ua3rEb=VXv6t)Lx!o)2Mjg{VYt@(yrlsmW3_5GD9dOm z0Up}R13YQ5i3+#0Oz^dQpz;Lr^l!*9A)7LTQ0hNIP_VOalPsxE2M}S~j256M8*ydL zVqfH_6)dm0@#(-~s>~XMf^DMbsc3agf!_go6?}qLRK{zHifVFlFG0s*8#PO8Jmjq+!>z^8-xRtm%w4Mb}~@`mbWxhJm^S%Do$6& zg3a?L+l+Ql{0+J?Q5#Y~M{x|!ATDJi6**C_MZtg?=~0$^}GX2jDtW%c?)1L>sV;>^S+V*%>p6+ z(2iJ_K)&Z<$mk6x?b{ZvWn^{b`5;Er-6PGAipRzvAFO8J1LiBw31;jiB=3MAFe)H? zlIQPf)`UpaU?t zZGYV7OZE%y@J))r{LF5%H=V?N;M6TVLr{q=h9-ewYXpe$s8KlI6dS-z^rZ3mn|D6uJPBkN4&8?=eonLh14vsIUhUYn;?UDLCUNWU6;bVo z#u%APL|&_k?ztgzdYmL0>j# zOfmT%FCTr|#jBi6+E$KSZas7fEXspo%OCohT>fm%!Z$cNV76Hk<|3-y?7oAuz=Ki% z@%OcmjEtw`w;`wxYP=ZnjX1y=O~#TN2!(-NoL>U?>PLSP=nPkXZIn9t<9v`=Y9M$h zZZlHXXD^$(c1S`3mabb{iSf4!-l$K4qAorx8@vx>Zx!->f#dJ=mZ0ZRv+>yN_yUv? z7vD^#mv}YBDJhLm!r?{rdbQR*^c3pK1T@dyD(ilvmU)f0@D^bp4#nk$rX`pXsfF>N z+v6Q*hk!R7zPOF(b}3kT2iV`tI`0+eqJrHNwJHGkcG&|IWbiQ_lod!!#%(KA04{jS zQpLL6kIBH&18y^i!1)oqB`%y9Y6IZir)tv?lcyug;efGWr zI>bY9)>|Y!ApytnPN#K=MIbQlv!DPXU>mVldE*wSBnG?HvLk@hadcsqGDfUcEdT^` zh|)3-@)jm14jjf#ZI!sgHn7si3iOfm9md+8p9S180Y5mDP`ITu5EAefU5=W<<@93e zwsuh8$Ah8)@cWJp0+4`07`4dpd0w5xAIz}f4}t>P9uTK4q4&Sa zU;?Ea`U?yM7z0p&{Za|v<^7gCPlMhZGfS{LrDio{d1|)^OeKInYfM3KC}6*vB<09| zr)6m%49kljJqs(nH>BzeN}LH8_aTrfn6T|=o+Ss7g6=LI)h>>7Yc(2vx;rnVm4&5~ z#CEJcjeJvf4-Za5w3U{~5>QRU7LZy#F@Fa|4rdDrI1l|a;2^R3ii8#p=KEfTWh6JL zXiqpp?YtUZ`B=cWYiWr#xP!Jldo|!cA<{rDRRG?L$1gNe?iy_&epegZ9#j(wb0vrn?|GG>+9OL(dD}f0GW~R*Tmm?e6tHJ(OV#|0F#HOi)vr)-V^}G z8WXCwz1IG-&xZtUaE@>5ja__MX(EU20^j1nKhpFvEY^8RMfN0T7P6oXAbYey0o$SF z)n?4^O~QB7Z>yhDgw}+(2-R_LTUbPD_T7$7P!47+u!P*Na;surGXNK8)W5?Ox9$L8 zkJOr&eu=osr*>O$>m^{uNPurKVDIAby}Wayy+=U-eIfXKT?6nfU_PiN*P!-R=I-B^ zs~AZe5;kB;*&_`K7!SpNru6SMz@Ld}pX#>U8Pr+=wqSz43I-3vCqm2h1+a4tZnJol zBcQefw;04)9Jb)LB+-BH7TBfd+Jb9556kx6x0^EGbb&6d#7M2v z7qD`|y8vv~pe1VLRb11%b3gcRaDKs({2Q}Hz6j*BG!$%YUK>VY-li1%XUpL3Wd)RN z;sXiP2cw+uGd{oJoh+r?K>=F>zcFKjk}KQ6D1_)nX}N|^S_c?q-}VI)8h<@lXsfHl z_Z&D=4a~1W?yP}4_|%M9>&{1#X_K|2o$LZc?<|s>Dg5eT$8St{`c2LT(|I#nqyh`A zpssPo?^|9AzL>FO^65S-y)&5ryx)%$SO-Gmi5z-%0C5%AdusT#gG7XGv;Yve@&(UmKa|z+Gs6l&&qdq``rm$OD-bS6iPW@4Ic`oupEr>eR(dh6Ha4d?A3ZeZ_tI`M-F1nmq-RMKdb}V zPTquPAOkOhygFO?_Rkx}ZnsRisue*f<%EslxAB#x$~mA_t=_<63vN-_K*^79d5VT5mvLx(j}ZfHndbhBjtK6|`5JeI+34VVWn8FJKGoq_s}9zAh&pS2 zI}lgF)_m`RlcdG*ps+kq{7xRQXSP0Fq=`;4@JQSOP#Y z+0auRtQ3$Dx?m6=LEuUL!Ke5~AXFNgh=e2MvBv4A(8M!Y5vt-Zh)#)gJHRtvp7qO+ z0LRLA?XCWxCcz{J$(6e&_b@bgpe+9qmJN1;kX*HUaGhMkZgV-ra&#R|2ne-2OV83c zB{Nyj%YFHs0bOblUax<>qivh4zydU@)Lgm?W&ilG)lUJq_A)GMy7l_+o3CN%;B2gB z<6;=-we^`mRYNw$MoFNt`8&*aIezeCKOLZZAT7@p)Ry$#4yhmtYl|Upd-1B>D&c9m zT2KI33TQ@;qm|$tDJQ6i!S}^|S`P?QUyU9U-nH0+am92*EdGZL|9E3emVxt|%a@e@ ztps%Ij$2i$)joY?oLSp=SIr=#qd{;D0F%a=jq`qaaPkTn%q#}nEia$G?;mfLUU1QX zW~L$kydT)E{ImSiJSZ2@i~MyNF3DT`!?odnmnkSEFy1O9VQk}0!)2D|v%myLp~+votZGODt}pf{LX!!TTa2PW59D~9dcDGJRnSgIq_^kB=LXjjbxKRX-4-m{wFxd zRTJ@`F=Fn&|H))tBn`KXqyyhe3if|`!Y*QkD{}GWog$mlDFn-azOG?$Pw{2_kGm~F zg*cfhAZ1&@KPh>_fkybB(Xp@-w1D|U=YJ3R4nqPWm|UZ;Zny2`q5gD4)|2)Bc`z&X zGr$>6d7s<~RndWib~!`S(G(H?$cPH?xKPzxLvV&0*sgd%C3)c(3b(3sub3$dFq(RG z*NCOP#Qsh&B>l_o^<9{mM|Hw;m}}(k3OBWXo{>ln>ui-Sv$OsW=s7JB8{x%^t&&^U z*?gLy1+)(3z1e+<|I{*>y-or(WwzdVap##lp+GuPNMt8C`%lbD3&&1zX(n>!zoCGq zt8v|K$jp-;<3njW8vYYD6c|4p!W+#b=AF=g2D2F%0aTPR8+@1M&9i{fln{+%Lk%zy zRl|hr#exxNw%ml>y|i>gbQlawJe&T$*{@-~c}8y6cx85C_3^s)jfR0{e`C$8wE+G_ zKff9{E>==q zf>L>E%!C{5OqYFdygalIH?tD*;4{QgiKX+ZjM<5tjC~veB&VGh{A}1%cmmr#=&gCx zR7L&+c2pxtm6ruR?oavjWBdvm5oXA6ak@7ZPwQ>gG)vIB77{q$Y@1&RZ8!*6IOffD zZNE#*&+Qg`#Ovg)oqhN#|5jFAD^I%h^=QFKam$8fBHdBv3-ud)>^-8|```Hdu}-Lf5`*xH{y z*CgPSs|sNwKx|dRUlqqc?cC~@j2mlhh*8?5)qc&B!J@3>q-dK=tDo;lsAN+`9w)e|K`~^;|HPJtlP)>sjc#Rh5UG?reKyUy@J!EjLa0lz#9Nr@ zJietI%NM`N8-~TAOP#0v5inoH+1xJRGzT>WHDwf2E=~TPw7@8pMno!X^8}HZmx!GH ziFu6CL{aEr_l1TuL+0O=@5o3neohLD+1=Vo8B}cK6Dgx4PG4zK+c=<=wm~2iNAUeIi`VIZJ0F6 zQ^OU1mShslk~7WYy}=3p{E{hY_9*334cAh)b>T;VYXq%-%vS2EM}8f zsC#}J$HuZQQTErVBB0sh7nG=lc+mEV%5l4f_dGiamB%P0#vJZN3_8QWF;N2ZCdVu~ z7l9zbg^nwY*PrXl)hp(T`xpV(hZb;G=cEug+EgJrF%Z)a?TC!0IDM`law0A;nQ)IA zVngO>U}{k$Hp9JuwSACL%wi)JJf4jsyCkzv;S{U>r6lMe^owB+A8fTM{q?-|TmzJ%1Zt zX-6EsXB^?p9vWWU9Cl|9Fnlt6wK=r@N8B}nwNNGLcXJ&^BovP1=~PbFxs#)~K6_m~ zmBwfgN)Pq6DNvnqpDF9xS)aXG@zd`fQ(G?)WXUiY&lNLe56E_UQeza;DkjYaSGtN% zs&~@U@tooElm`3J4t5`P6R98a!@qyRgt=cK`11RYs+eluZ#;f=yq7%{pOJ<#p34z_ zK4Vm?k}Sja1xKY%l`kn=FOC5fu6)b&;U)Q@q;Kqjt~pjgtxP~SQ{k8Fsfr94A;{Iy zcpv+oSo~Ta+k75(JokvqU4$vr-`vY_;n#C@96jt!ea*Q{g5ihRU$ea2g$|^LlDfp} z%ePcBO1s;E9n9NTz?8rlxxg%*oBwxjAV(=@Xv&8Ym9JaI&y;aOa5lYa6g{RUyJX@I z_i(=pd2jtC9fa$rB3H@qwJGI(J?=?wt>b`Dey*Aps)Y+s&_z31HW)nOR5xdPvs;@x zpSmYh3%eOj3yZ{_gjQBW96cX7$U|P8uwTb$y57 z0s_9;y!M2hNxj{Zo4Rm#8HA$t$mI<%7>o@@@C|-9s=eYzF^XI|Hk7?#rT%~*!0Jm@ z*yMT-($aI*)P3{EJp=g}N3%Lz`tpHspNq~9-5;ks_^5xepIce&R521-Y)PSaf_tT9qB{udj-IgAU`O9D0#L$hqScgI{wGB-}IYPLRA_(EL^WB z%|uZ0hr0iW69xrD)Xv0{Kp|TKkYo&vJQde!PA*)Nz|CRm1K+}ePKEkV1GWL<$8s*o zx=o-6n!66lSz~m>pO3c~g!}^5(*CnNoi)Hm|AAdLFl^F~k7 zJ6J^MB(0{NC!nR`cdx^l$4mb)$Bpag3r(k;Pf7z`VgMz@)EIT@2I0##N{Ywz5wv-O zNnQRG&NV&^o3NQQ@j)LoRC-=pTnK8K@^isOR^G-2o&fD${PApt0Cx)Y!58Aq^B4%(JZ#R z?N2($JyGK>zuY4?jPdL}(S6?WZ1e5!Vs94?_Oq9nZbr>A`c#FwQ-P!hi&GP>V0_Pq8rPRiYIZaX#1l) z@HXu2mLL*u8^immz*g%IH;hsDA|)Z)_^4@=y@M-$Yto#w+#j)VLSl>Mex8-C59Kd& zFU)m*`uU7I1)gx^7$`AKjy^@E(X}?1cz!gj-(2ZK{BZi7_PJK#rm)Av<&q_5DjOlR zSqy2+UPxFIuVR|rxTfQgZ5(6pS^#G=T1R*xhY>}C;~c3KjSO^qNrw~8q2z38n;cP0 znEUMNB0dkYVbxcYv)?0Wf*%}(9k!<@!WOdjvoCgm4*9zrJto$oda~rM+I~DisAC4h z{OBeu7-`)Ho!`nv&Deg2^+D~U`Z)WTb2$v-JQ)SQA6Hj3-nIv_239mMet^if$up#v?FL;G=4en>6FJGlxK5%uSb%dDv<#2FyP?cw7S1cl~-(?Maz{ zi*NVD$!csjNQ~o4(NlkZwc1Pzk!h#$aU)AvAX?_O-5}oi2KT=qd^{Nu;#3p!G#(Gs zTxUq_>;z8jgCFj3$POMit|bAEMj~9fs}T{8;5qSAg_0qiXA_h;;j;Yn5SXh-YW@Bb z&Q2L9@qE9AX|De!Z1KSAIQ)>hhmCiJxB#L;f5ZyXaEEaDMnt_Kh%-k-hq zrbnwb-DbbsGzJ}!rZoJ06BEB!|EaWcweTa3ptPSWFb7{#QEmAi+0}~lGsQ$5Y_0U= zyXpG8<@ZL~kS-h&OV*dIKd8j_Hn4~=o}4XN`+Jq;e>F z_3)tRTANLC?>+i5i$hy@&{f&H2LyoqxsoIW7T#7DFzQB|5L5+vTX+|0Y0aJAv-B}7-(KlM8do#G zeU~HBtq5&iY3a{GSc_`0(Xw2!ljL}6IShGQ~Pyf(R(319|2?ITJ=M)_0oBDLTAab(m?IH~)l9$oA-4mG$EDI3^8G)L=xT zuNRwIGM>vhPpTqP6{9wqG5WI<;1RYT5qUvL;gg zbnc^Dcb#Jx8)PVQ@w*|YTFDH(pe10`e{cIdb$RMih9Pzpdd2_!k9d(YOPT15H;Wm2 z5+kPXE}{lm=M~|^wb}hG{q|DIH*t!FETeYxbyTCXxm z4!n;1`#f)riXS*RVyX|pqa-loJrkFG_T%36Qx+@Oi|2J+_zRRztQ_T440_nR!%XaW za&t1gGYqh0K%=e?P~gQd*7dvUtpZm#JRarf_Aot3+$rN2oX%CQMi{VOL8rC0h9rz7 zqy!bOo)w)q7w^gtwD!I)Rau$qKB}Qt7;wbG$@?^5vX5bNBoaJOlApy5JoYicA#43m zWm1yht-@H*^-ceSL+@Po@wxVBJ>L#IOyQ}ZxH_a-myz2Sf;R9>t3^lYoC-1vXo91jWD4zM^|NU$FrGa>Bu z_8>V!3gm&7Yd*H|rdDm-e*kNFGa9W}e;d4uLF?Vup7`rt*RSGnSI^FyWHQ+`y_JL~ z)9eS32S?VP|LS}kj3E7E0`gRU*0HC*2hARLRv5?5aS!R2ip_>bdrY) z6)DN~zmBU|+Nc{mn~%f3*&M{i#fsyBLOC3*K1lWY;4$>0XzeA8}_$yu+IX7w>NQ3mK87DzREn3XdI$Apnh5J(i?W$59$1^51*@q%{J5A0| z9MRTD?`q+<0jqdq@Pu`3Cn4R|je=Pk5$PTI8Gwlw&msK_vxolC3x{cv>;j#xJdoAK{L zA5%PKu|h5)cy9?P3uZHX^UY~rqZn_kt4lJK;^i3<9g%s|QFebMRMZL2yPQ?fmCOP` z30tBqkux?Zl_lfa>Y(3JP?16YQC+9fw~D#f2A|l<;QI$+C3#{8pGIQ4 zU4p4BWz*<>9X|Ig|KEmw*)nX9GFfM8)AQ{fge_XRH+{z^rmPa|f*jWa6L^?P_e9a+ z|Fjlw({#UY<+b_qxWM?g-{+uxw|DT0EXX;-H{@P3V(7BbrKx@CLDx|5H?V={)q;Ha zB7~OMH}}hUIl&z4yyR~>W(o4Oc0!_;LH;>I0PmkMoRE@NBEO}6qL3Zi&I-4ZcADiC z{xWzxb{+3Z{uKAlM~RMC4Tx5)0|t)8e)qgYJX!8GaCc<|;vh*b-n`*9-{Q^YoQLb&aiWP*QgVEg@ume zi1TmvzOu|*5y5mY;H@;zR-5ZNfsfKQ8AQ=lCb8RoxZF*uRiVM@lY}Vh&9%6GbHj5d3v|w_)_fDc0_2p&w z*IFM0^*{O!QI3Ad{8>ph(UYp|nnCQ&WiDqX>kSJ$s@utb8JS~+R0#m5dtRULw=lr4 zJkX1vp7Tu53qFB^XBF(JR5b0R^03FX$$zKC=}w*kms2B8ItY=tsgn)1nJWTI;~AmYELI2k4jHQyG4dpCxM%sBEDeF7oPxSwR|b?)?&A@&f+oYR zt@>apNA(kS-{31f(^!PsC+G@6yi@rk9~HkTriU_%EcVRl;QctnyBrpplOr`KP~F zcxP+NNDJ*mqe(TVrUV=CzRO>HS2kJUzbYJ`57$_uiTcW2fS7SwaP{M{(x}8 zy2baSxx^n!H7$)Iz_n;LXyUUl0;Iv#H16J9_ryU)pNjYbKQ9zoB91|+3;4_tO!x^? zoN_}~?wVZ}{S2OLWqTTR>CC+57p#zX8ZFi#-Mp`bH+hYygOB|@q5w)cbHIRX?wfz& zj{&=qpD1&5MEMiH#xqnj|Vlaslt_FLu!{@{_c_*yXm$sanz?&FS_& z1Q?}IE|h7FFMjDENbEtf>zwMrR5mzly_SYE>xev=mUQM~9WEj1xAjEMYU5J02tR%x z*q6AM!0#VfaTvn>^sxKIr3n|&$Dh%UAjrQ$G1XSE#5Z|m*7W9L)J7i?nX>LhW&u4v zSOod6+;F&Ny06@oaxN~HbMT<6lTZr67zyBPuGufEf~W)`*O6z>-w7?loC?NYhT2_o z#Hrt29%j2;G8mU@NbuXNY5A+2cld8ir#SKgw(|kCWncN>cL+_wP$1zw@5Knn2{959l(PHYtwagW_ zPBv$YefAml6X_k?n+BdzLc}&-2q(H*;p*UDuow+0$?g#TQ^Dwlp02pyNk;Mk0x;{f zEJTO+EBjfq;7u#5$jh>Ljkoa|(45iU#RGTHW!7*OC0$CvkA4hMxrg@)N+S*eU=UTz zBrNf-CyeQDC~|EdIToP9MR*SUEsR_~Bqct$W)K+IIO74FNZ{e4V;u;GFFdBjagUyFo)d5xsjN9QrjfmN#pUHJFO&4BROH8D1|5IT;PSXLQ#e2&8Q>PyF z`W*kk#|*D(v>;&9`n^G0zfm+8Be!Tf$mKnjdj{FNl+DQ(t8ZWVL1$Bd%Qd`Kho zZvA(up6AeP>4fvXYbLBB~D0lLa-h@xTliiNHKcxUQyc`vpVNd z_V6{lc$d+RlvMQ?0*wtp2q6NsJvaKx<76)783|Y(x~tzZOS{t|CJ=4KlnozyoU)<6 zKES`Mz-%oHfObGevXW*KhaUT&rla0R^)Ic-dISMLfjYQ^nm{trqbi-bsCpm5ExS(X zZWYz!uS5DCvAUQB(DwQTtTywa+(YUBrqsUE;C4{PBi`QcGP6M5Os$SvaCyW$;g9Ab zSfFP`aYD%%5U1Fbue?MKha(){)x|oSUXGl@X-*o z>`-@H0q)JX!`wYkra@mCNl|gO?m}+SQ6SPbRh_A(y_o1XmWd&Eor^6R9<($$IVJWw ze7-NrDS*XoqTMZn0rGZbyYlTwOAUmWnl$y(fNqEHZB#wC%}B-3ti>UmV#MZrV)nfx{|u9y?454z#yi&~O67-B@9 zN+8DU+J*~(KZ0OeCTsC&5YYY^ag-Jfa1Vx9E_q{RHn&M~QhZ!zf*s%Ans%w&$&uF}{kTH^|1F?|56JBbLJ<_rwK& z@0Z*mD8;FeVi_2J%9tARUwBdscrGBRY) zogO$67nQF{Ps#XTN={N3QM%+UT=DsFDf{^S!7hk>6T%^-0*C`&AZ#dJoDB-oKp-POr&=Ho2|8M$enO-mE-UcHhS76V7GEzSNLnAjE5IFE z#iw?}>KX)rjn(JlIQFTiz|zNc>SuV+`4!Y^;3oXXbqM^vl&{wd@bH-j_-f&IY+ecd z?FEo|-~*_=`P&0~r>HB{G;QE_a|ntNvCA!ba^Nb1J`;*La1maR;}yaLoqdA}rm_Hz z2Vif%IBatg_$9o_-ZtPa5#TjXZr_Ge^2GwaNkj6uy+mYvci9Ot5qEcUs+1G>=*=h$ z#a9zJs#anI`J6|Sgcy=DBN|Bou018u&wWokHou+_UW<6p?i_u1e;)XVX_Een2EYyE z_)QLaGc^I6ba31b&tJzw7)#N^+wU^kjq=dbNPxjdbGCd93cxM`8gLcw7$b`ixM5Zf zgZL)*;qhxCSbHSVI~DWhlfjb&d@Qh}6zN|fF3qAPg$wc306u6rX0AB=NJx`fKsc8Wa6c4Vt8`Fj>a0DQ?cAA);~!jtf$gDtbwmAJxa@1 zQ1MXH0hFTh;|XzW0kjKwJI~3;O)N~75z?@$@{-I&s1n{<;gW6w%7AZA_$i08B5CEV z!?1O_Ri*cgveA9nkh@upzH<00dqE*56!6(C&q@aEsh57*J;9&{mV*2G7Tj zuDFt46L7pbl0%$Zs%0z}*GR&`4Dp$tP= zb4w9E^hQ@Dyc)>5#~gBNdMKr6UnX?&Q%Cr2BTrGj%AX+e{i-`&V5K63yBb_y`AxBG%PPx>ul>5=btp0ocTYBleF zwCl7Ut5zcE2R-MPEo^I1vn51O_8UMIe<0}Ojf)A8ZFiywTkjU4*!fPA8{3X(ej_S{ zWQt%N*?-6gvA?+wB(6h7uV>{0h-k-jW$@ck!SCK%-1s(+isl}5FJpeje>QXRSAh#m zad7Uu&d!dV(ls3zq{6Pxnh4Q?beIrD=WC+@<(-bFLhNzyfMKPTgO6+$yBv!>2T<{D zq#UU2ktY;j6iiQ6ll;Rt9Lu}gWio_GdSnJmU)yr&Sh!)r!=p(@Mb~q| z&z?@nbM#lfLWi6@f;&pg@mKZpzYdROejt#09qiu7MNk_7!koS6zcJgr_M(v)=JzFL zMf>>rF(P8-QIX>0JrDe9^BqNk52wTVcQ zus=2|wMj;gu*SeZZu#4|RCO|GFm*7oL-q2=TUa$Ou%XW6yvTjSE5GSTBU$q>n!BWP za{8Wciejo?nXQSE=I@?~lW5{i9{Yz<9sS+16ut)BgKQz^%S%eabBa_{c@H5RRO{=9 zPL^vemTpxmiu|1)m_nWLSkhFG?QPv;4{B{<>n02z?P@|qm2z^1hu7C*)^jr)s2I7% z)^$pigRgl%1jv$;AU4-@phQBEkB}fMv_i=##Z^aKMds6n7#P|)Evz?NhFDO->cTB; zkLH9gQiaJiqA-%~fEGnb!`~pYAZpg~7^TG8+4v_K4uw57E$;+6a{ZRb?LTXOu6Obt zXLE^Y%7ls>a6#Pp0RoCjRo277A8w*`O!ZNtiOEPMAgggXQ&m0s@7Y?)X0QMafJpO} z=>?P>3)__51$>(x2%zxdxK0wNTsT<(M4aiFmXQwZBS&9#r;F~2< z$A?Z_Bf7`YUUOyoje^T4KJ3ir-Cg27kV7YsbK3yR3)VH7qu%@(QkKl9W)`m`5=!^A zp-&I}oOA8hFQwL7EnW}Q<+`M!!G#D+DGvCqH?)j~ja3dh9bZy9Ix zs>neG&bc`Z9TNH-np4T^xxN&wg8(`B0+(JR#!_`5oo`>7wp)PLv@cRq8B0EC}iBC-?s;G$%$=eIRtMHUFgs^#pZ64y$DsMvfJnBJ_*1Q=d5|2H3-;Bk#u`?6b`t*}z z+i3I)4Djr`JUBd}Mfhx(X3|OMy*fQjUPHDrYswL(5X#OjEJN&+^BMBbixgSy-rJ|w zttMVhe6=Y55Xd{v2*2(#Hb0BZ)8-dhZ+=w_)jZ`bM4YWt;F-Bs8;%5uucWD~ zWH#FBap1ysFWUZM8Ny|ACV1&JX;87S`_#4BXB>rEKWeV1)b4>VQQi@3>!qb{Qkc)= zgO%A06F{QOO9rI>lp*s{AyrVS{QNKocj4uk;Z=+Y4Y`!)A85(zbhkOBPJcZ8QD#} zrz$v<<2;m0jYbjm6CM<5Kqhmi7c>s^bdCbdmxAuow`ERgw-`PKwo!u8Gn81HC!fYY`gd4 zW~Msg&o9NUoe#+Tu-E7bnif3@8@6GI9ra1v19BzIbK`*)-onm5kkY`EeduKKrExs- zKEdp=^Ftce_T$jYwyPTAg7|;tNXAdwi+?>#P;BXe(P|-L+EXXxLS%a z`_Hcm^`#_h34*aHWFJoCgy&-DDwFM$dnjzq0zS|2Q0Vnrdfx`5lIANVO^sLRm?A7_ z_nO$g3qK)uNqPRa4*z(V$I82oKV5S*vIYOQfX|S(d`hQUD0T8>Ot`xrK9JP_bO}LH6_`F7`4Lx{KBL3 zLv}h7e>#WaY)xCNtp}Sr|MZKDI5pXGeGKy~0_8SZa&k6RSyzDpKbudu9y5ULnR3!7 z(UUJ-Br$6(54l|Hka0`b zNhJNT?HIxRZP)gw6Pk!HIGhgH##!OIalQHnud0vDiHKICfJorIlHms{(Nx0~%k$2Y zu~HV%gRiSgUwX_==nOT{qd{{No2{FTYq*fpdO|lP-FTL(UMy+21#N%wB$l?2jBuZDwK!4x6Ta~Bx8qDQw`LQS(t(*KVu2(1 z9~(-B)2q4(9o4dB6SikFSDoSC`Z0?4Kcb|Ggl?)N$Q}H38*pftDklqF|5?w-8oF+c zqVQ)&9O;?0`=w_u-QSPm|1wiC&Wlj8yjY7I>x0Pws+wyvlb%;z5&a0m3YW{WzI*ja z%qxj+I)q}r!yYQ7M14atAki4(ZaFd`A#4uq1U_{?$k49#XE=HoYjU{~x-NOv^!3B? zo2sW@b`;%{%A}|f{<*Zirfp{bku~8^!bVdP(u$8DW9q>hv4f8XE&8j0iL00kzi6yk z&*rKO-+nN8T{ziD#p+ARQ+%*|Fh>$9<@Q$hRksdB&eCZ!2jm|{p}bX^UEPT|VqRg3 z_?B<<11lRO&aoe22>Gq2dQu=Ue6fndU1T(3Xv?wXp@3%B)(3}=3RAk)mj7X?QfD%=)#1a7DshW3vFS@?K&AA%$pphEY1fbY|IB*z*22)3nY`=MmR> z>g|(G8cYOHczY1(evIzQfXd8P?XX1hT2Nou7$<8*G$3@-;#C&W_FJuUAs|x%a53(b zJgq2NHl@m#wj=1ot_cy!2)We`$vl+o(gMp}{99zGAnAg_lmO^p;X^G36kf~sP{ID# z_0wlh?ujmkZqj;rn$Vj6Mp+yDM|{XVr9=XcO}VIr6bfREV;7pkneTEtY!(cLDgy}p zQi{2c1Z@iS(qR7F#M3{JWy6&bngwMq{(Q=g03p(I+FnKEP8lJg#L^GCd`R&?CxqyI z9O{P-rk_wE_@-bBQH*bBSBplYk}*|Zsy<+6UE~o*fe>d@Lx3QqSX-}EA2_gI=rvdV z)Pf4NjTCN_p7QyP_2uWbS~{XHR7Hp0kbJuqgmvfNDKc9?d`V(mJ^y*AD>ZAI_pRh8 z?FuBU3D@ftt=2w@dCFI_4~T#>udSaN2^nVERNa4|>L&)pWV?yG?6SDXno-&QQ^~3h zaXl2|w-q!9ALU~tPBYj*0|QO4Fk5PUiJ3+$6-!6e`dQya&kJ$G#8**d&8jQEWX?|u z_rGz(ta4Cju9$k>3lIHY_ub_#E$ z&{9-brT>19EbK*w87eDVb-m+4$UQ=^%FQv61k?9>Z~9W_fnboE*=Hb$Q@Hbw zsSfA3iExWQcQ+dJd)LEwm6|DXtuT2##kQGrsrO?*@EqNU=1!!tU-LueB%LeoPpESvd>0l4` zpS{u8ak|LR3sH_elWnDWert@1{9^X*r9$tR%I7q#!GEOemI)wZ&Yro!N<>pkNu#1 z;P2O}znJkR$!dY4)P?EJOQET&a0M7mC>v z{o?W`c?$PXd_Sq^EY}172Z^31BD@WxXei#+KA&JmcZ7Y2yB2WPE5+l#)`?Ki3kKZDY5JL3HOZF1q|SEk?g63wtl3t?+H z<=>ie60z}#Y+kC{AJ9ENSQbA!py^sJV(V#fSB_MMY}ja-tqhFy{gN{IEX+*~f$z2c z-`u}`t&MuM%hPn8eer<@uJ8U@xckgreOzX1k?7^H)}zzPkNi%*I#sptbJOG(v1|Qi z|KV2ZI#<1bd&*J<Z3RhZ+25`4Nn75;!VqOpZnyv9ifc9DXZ|eOe4SSf9NCWP*|q;> zKVKKcAIT%Q>X&ZVh7Eg~ZpUftcz*Vk@V-4<4;RU7*}R8Skm1FJJC-ps%(qwHS~E}I zY{t_?m+xkSgPT2e_1D?^YoFO)-`15`XZ-z7jKON#5D}d<`#x;*-kAFNfa34NTmHT~ z^c+}T*>C@&otBz?iqYD56~mVuk#p~JZr{6M>))qI>Q9Srar}ma{i~JVD{J-dW$f*f zUKg&of4UhvE3h*ED_6~akcr{K(za5=CG-Dp-kEB)K7HxL95Ja=+4W@$If33`ez*4L z?yTC6^Vcu>w)u4Hto@&5E^zS4`2vSAL7;^bvXiL60B8;f2&h4}QZgK3fozd>n2`V; zeP-Ygh79O3BsKxZeStv1XVj3FMg{ Jvd$@?2>>gmsz(3- literal 0 HcmV?d00001 diff --git a/Tomoe/Core/build/core/config.js b/Tomoe/Core/build/core/config.js new file mode 100644 index 0000000..4c83953 --- /dev/null +++ b/Tomoe/Core/build/core/config.js @@ -0,0 +1,61 @@ +import crypto from 'crypto'; +import fs from 'fs'; + + +import { Definitions } from '../templates'; + +const TOMOE_CONFIG_PATH = `./${Definitions.configName}` + +export class Config{ + constructor(params = {}){ + this.hackathon = params.hackathon || ''; + this.beta = params.beta || false; + this.errorTrack = params.errorTrack || false; + this.secretKey = params.secretKey || process.env.JWT_SECRET_KEY || crypto.randomBytes(64).toString('hex') + this.databaseName = params.databaseName || Definitions.server; + this.databaseUri = params.databaseName || process.env.DB_URI || Definitions.databaseUri; + this.server = params.server || this.database; + this.apiVersion = params.apiVersion || Definitions.apiVersion; + this.userTypes = params.userTypes || Definitions.userTypes; + this.hackerStatuses = params.hackerStatuses || Definitions.defaultHackerStatuses; + this.volunteerStatuses = params.hackerStatuses || Definitions.defaultVolunteerStatuses; + this.build = params.build || ((fs.existsSync('../.hackmerced')) ? Definitions.build.default : Definitions.build.import) + this.adminPermissions = params.adminPermissions || Definitions.defaultAdminPermissions; + } + + get(){ + return { + hackathon: this.hackathon, + beta: this.beta, + errorTrack: this.errorTrack, + secretKey: this.secretKey, + databaseName: this.databaseName, + databaseUri: this.databaseUri, + server: this.server, + apiVersion: this.apiVersion, + userTypes: this.userTypes, + hackerStatuses: this.hackerStatuses, + volunteerStatuses: this.volunteerStatuses, + adminPermissions: this.adminPermissions + } + } + + save(){ + return new Promise((resolve, reject) => { + const configJS = `exports.Tomoe = ${JSON.stringify(this.get(), null, 4).replace(/"((?:\\.|[^"\\])*)":/g, '$1:')}`; + + fs.writeFile(TOMOE_CONFIG_PATH, configJS, function(err){ + if (err){ + reject(err); + return; + } + + resolve() + }); + }) + } + + delete(){ + fs.unlink(TOMOE_CONFIG_PATH); + } +} diff --git a/Tomoe/Core/build/core/generator.js b/Tomoe/Core/build/core/generator.js new file mode 100644 index 0000000..58b7537 --- /dev/null +++ b/Tomoe/Core/build/core/generator.js @@ -0,0 +1,290 @@ +/* + _______ + |__ __| + | | ___ _ __ ___ ___ ___ + | |/ _ \| '_ ` _ \ / _ \ / _ \ + | | (_) | | | | | | (_) | __/ + |_|\___/|_| |_| |_|\___/ \___| + + Version 2.0 +*/ + +import figlet from 'figlet'; +import packageDetail from '../../package.json'; +import colors from 'colors'; +import readline from 'readline-sync'; +import {Database, aql} from 'arangojs'; +import Joi from 'joi'; +import fs from 'fs'; + +import { Admin } from '../../src/server/src/collections'; +import { createCollections, moveFile } from '../util' +import { env, Definitions } from '../templates'; +import { Config } from './config' + + +const term = console.log; // easier to type +function divider() { term('\n==') }; +function createValidationError(validate){ + return validate.details[0].message.replace('"value"', 'This field') +} + +const YESNO_CONTEXT = "\n Type 'Yes' or 'No' to continue: ".grey; +const TOMOE_CONFIG_PATH = `./${Definitions.configName}` + +const databaseName = Definitions.server; + + +let storedAnswers = new Config(); + +let adminDetails; + +const stage = { + currentStage: 0, + start:function(){ + stage.steps[0](); + }, + next:function(){ + stage.currentStage++; + stage.steps[stage.currentStage](); + }, + prev:function(){ + stage.currentStage--; + stage.steps[stage.currentStage](); + }, + same:function(){ + stage.steps[stage.currentStage](); + }, + steps:[ + function introduction(){ + term('\n===================================='); + term(figlet.textSync('Tomoe')); + term('====================================\n'); + term(`You are running the installer for Tomoe v${packageDetail.version}\n`.green); + stage.next(); + }, + function checkEnv(){ + term('Checking for environmental variables...'); + + let missingList = []; + + for(let req in env){ + const reqData = env[req]; + + + + if(!process.env[req] || + (process.env[req] && reqData.filter && Joi.validate(process.env[req], reqData.filter).error)){ + missingList.push({ id: req, value: reqData }); + } + } + + + if(missingList.length){ + term('\nThe following environmental variables are either missing or incorrectly setup:'.red); + + missingList.forEach((missing) => { + term(` ${missing.id}`, `# ${missing.value.description}`.grey); + }); + + term('\nLearn how to create local ENV files at: https://github.com/HackMerced/HackMerced/tree/master/Tomoe#local-environmnet-variables-in-development'.red); + term('\n'); + process.exit(); + } + + stage.next(); + }, + function installDBAssets(){ + term('Checking for ArangoDB instance...'); + + global.db = new Database({ + url: process.env.DB_URI, + }); + + db.listDatabases((err, databaseList) => { + if(databaseList){ + if(databaseList.includes(databaseName) && fs.existsSync(TOMOE_CONFIG_PATH)){ + term('\nYou cannot re-run installation if you have already established your database, please destroy your database before re-running.'.red); + return; + } else if(databaseList.includes(databaseName)){ + // just in case someone fails installing + term('Cleaning up old failed installations...\n'); + + db.dropDatabase(databaseName).then( + info => { + stage.next(); + } + ).catch(err => { + term(err.stack.red) + }) + return; + } + + // no conflicts (fresh new database) + stage.next(); + + return; + } + + term('\nTomoe Installer cannot access your ArangoDB database...make sure your server is on and connection URI is properly setup!\n'.red); + }); + }, + function createDatabase(){ + db.createDatabase(databaseName).then( + info => { + db.useDatabase(databaseName); + + createCollections().then(() => { + db.listCollections().then(() => { + stage.next(); + }).catch(err => { + term(err.red); + }) + }).catch(err => { + term(err.red); + }) + + }, + err => { + term(err.stack.red) + } + ); + }, + function askHackathonName(){ + divider(); + term('We will ask you a few questions to better configure this service for you.\n'); + + storedAnswers.hackathon = readline.question("What is your Hackathon's name?: ".magenta); + + stage.next(); + }, + function askBetaFeatures(){ + let answer = readline.question("\nWould you like to use beta features?".magenta + YESNO_CONTEXT); + answer = answer.toLowerCase(); + + if(['no', 'n'].includes(answer)){ + storedAnswers.beta = false; + } else if(['yes', 'y'].includes(answer)){ + storedAnswers.beta = true; + } else { + stage.same(); + return; + } + + stage.next(); + }, + function askErrorTrack(){ + let answer = readline.question("\nCan Tomoe occasionally send error information to our servers?".magenta + YESNO_CONTEXT); + answer = answer.toLowerCase(); + + if(['no', 'n'].includes(answer)){ + storedAnswers.errorTrack = false; + } else if(['yes', 'y'].includes(answer)){ + storedAnswers.errorTrack = true; + } else { + stage.same(); + return; + } + + stage.next(); + }, + function startUserInfo(){ + divider(); + term('Now we will create a user for our GUI:'); + + // set adminDetails + adminDetails = new Admin(); + stage.next(); + }, + function askUserEmail(){ + + + const email = readline.question("\nWhat is your name?: ".magenta); + const validate = Joi.validate(email, Joi.string().required()).error; + + if(validate){ + term(createValidationError(validate).red); + stage.same(); + return; + } + + adminDetails.setName(email); + stage.next(); + }, + function askUserEmail(){ + + + const email = readline.question("\nWhat is your email?: ".magenta); + const validate = Joi.validate(email, Joi.string().email().required()).error; + + if(validate){ + term(createValidationError(validate).red); + stage.same(); + return; + } + + adminDetails.setEmail(email); + stage.next(); + }, + function askUserPassword(){ + + const password = readline.question("\Please set a password (min 6 characters): ".magenta, { hideEchoBack: true }); + const validate = Joi.validate(password, Joi.string().min(6).strip().required()).error; + + if(validate){ + term(createValidationError(validate).red); + stage.same(); + return; + } + + adminDetails.setPassword(password); + stage.next(); + }, + function askUserConfirmPassword(){ + const confirmedPassword = readline.question("\Please confirm your password: ".magenta, { hideEchoBack: true }); + + if(adminDetails.confirmPassword(confirmedPassword)){ + stage.next(); + return; + } + + term('Your passwords do not match!'.red); + stage.prev(); + }, + function(){ + term('\nAdding you as a user...\n'); + adminDetails.save().then((user) => { + stage.next(); + }, + (err) => { + term('There was an error:\n'.red, err); + }); + }, + function(){ + term('Saving templates...') + moveFile('email.template.html').then(() => { + stage.next(); + }).catch((err) => { + term(err); + }) + }, + function(){ + term('Saving config...') + storedAnswers.save().then(() => { + stage.next(); + }).catch((err) => { + term(err); + }) + }, + function(){ + term('Setup Complete!'.green); + term('\nYou should run the following commands to see Tomoe in action:') + term(' npm start'.grey) + term(' npm run api'.grey) + term('\n') // padding lol + } + ] +} + + +stage.start(); diff --git a/Tomoe/Core/build/core/index.js b/Tomoe/Core/build/core/index.js new file mode 100644 index 0000000..16173e5 --- /dev/null +++ b/Tomoe/Core/build/core/index.js @@ -0,0 +1,10 @@ +const fs = require('fs'), + ENV_PATH = '.env'; + +// support for local .env files +if(fs.existsSync(ENV_PATH)){ + require('dotenv').config({path: ENV_PATH}) +} + +require('babel-core/register'); +require('./generator.js') diff --git a/Tomoe/Core/build/imports/build.js b/Tomoe/Core/build/imports/build.js new file mode 100644 index 0000000..b4f58fe --- /dev/null +++ b/Tomoe/Core/build/imports/build.js @@ -0,0 +1,28 @@ +import fs from 'fs-extra'; +import { Definitions } from '../templates' +const build = require('../../' + Definitions.configName).build; + +// files in the non-development version of Tomoe are pre-imported :) +if(build){ + for(i in build){ + const config = build[i]; + + const dist = config.dist_folder + '/'; + const imports = config.imports; + + if(!fs.existsSync(dist)){ + fs.mkdirSync(dist); + } + + for(i in imports){ + const origin = imports[i][0]; + + if(fs.existsSync(origin)){ + const saveURL = dist + imports[i][1]; + fs.copySync(origin, saveURL); + } else { + throw `The following import, ${i}, does not exist at '${origin}'`; + } + } + } +} diff --git a/Tomoe/Core/build/imports/index.js b/Tomoe/Core/build/imports/index.js new file mode 100644 index 0000000..f923994 --- /dev/null +++ b/Tomoe/Core/build/imports/index.js @@ -0,0 +1,11 @@ +const fs = require('fs'), + ENV_PATH = '.env'; + +// support for local .env files + +if(fs.existsSync(ENV_PATH)){ + require('dotenv').config({path: ENV_PATH}) +} + +require('babel-core/register'); +require('./build.js') diff --git a/Tomoe/Core/build/templates/email.template.html b/Tomoe/Core/build/templates/email.template.html new file mode 100644 index 0000000..f24e9bc --- /dev/null +++ b/Tomoe/Core/build/templates/email.template.html @@ -0,0 +1,14 @@ + + + + + + + + {{email_title}} + + + {{body_content}} + + diff --git a/Tomoe/Core/build/templates/env.template.js b/Tomoe/Core/build/templates/env.template.js new file mode 100644 index 0000000..ce13286 --- /dev/null +++ b/Tomoe/Core/build/templates/env.template.js @@ -0,0 +1,11 @@ +import Joi from 'joi'; + +export const env = { + 'DB_URI': { + description: 'URI of your ArangoDB instance' + }, + 'NODE_ENV':{ + description: 'Set to either production or development', + filter: Joi.string().valid('production', 'development').required() + } +} diff --git a/Tomoe/Core/build/templates/index.js b/Tomoe/Core/build/templates/index.js new file mode 100644 index 0000000..c07b049 --- /dev/null +++ b/Tomoe/Core/build/templates/index.js @@ -0,0 +1,2 @@ +export * from './tomoe.template.js' +export * from './env.template.js' diff --git a/Tomoe/Core/build/templates/tomoe.template.js b/Tomoe/Core/build/templates/tomoe.template.js new file mode 100644 index 0000000..10d42c6 --- /dev/null +++ b/Tomoe/Core/build/templates/tomoe.template.js @@ -0,0 +1,69 @@ +const configNames = { + development: 'tomoe', + production: 'tomoe', + test: 'tomoe-test' +} + +const serverNames = { + development: 'Tomoe_dev', + test: 'Tomoe_test', + production: 'Tomoe' +}; + +const standardDBCollections = [ + 'admin', // admin users + 'hacker', // hacker users + 'volunteer', // volunteer users + 'oauth', // oauth keys information + 'meta' // meta Tomoe information +] + +const dbCollections = { + development: standardDBCollections, + production: standardDBCollections, + test: [ + ...standardDBCollections, + 'user-test' + ] +} + +export const Definitions = { + configName: configNames[process.env.NODE_ENV] + '.config.js', + server: serverNames[process.env.NODE_ENV], + userTypes:['admin', 'hacker', 'volunteer'], + apiVersion: '2.0', + defaultHackerStatuses:[ + 'registered', + 'applied', + 'accepted', + 'waitlisted', + 'confirmed', + 'attending', + 'inactive' + ], + defaultVolunteerStatuses: [ + "applied", + "denied", + "approved", + ], + defaultAdminPermissions: [ + 'read', + 'read+write', // read + write + 'admin' // super admin (controls group settings) + ], + collections: dbCollections[process.env.NODE_ENV], + databaseUri: 'http://root:@127.0.0.1:8529', + build:{ + default: [ + { + app:{ + dist_folder:"./src/app/src/dist", + imports:{ + "resources":["../UI/HackMerced-2017-Style/Resources", "scss/resources"] + }, + } + } + ], + import: false + } +} diff --git a/Tomoe/Core/build/tests/index.js b/Tomoe/Core/build/tests/index.js new file mode 100644 index 0000000..ad78a7e --- /dev/null +++ b/Tomoe/Core/build/tests/index.js @@ -0,0 +1,14 @@ +const fs = require('fs'), + ENV_PATH = '.env'; + +// support for local .env files + +if(fs.existsSync(ENV_PATH)){ + require('dotenv').config({path: ENV_PATH}) +} + +// this environment is always test +process.env.NODE_ENV = 'test'; + +require('babel-core/register'); +require('./test-starter.js') diff --git a/Tomoe/Core/build/tests/test-starter.js b/Tomoe/Core/build/tests/test-starter.js new file mode 100644 index 0000000..379a3f6 --- /dev/null +++ b/Tomoe/Core/build/tests/test-starter.js @@ -0,0 +1,117 @@ +import colors from 'colors'; +import Mocha from 'mocha'; +import fs from 'fs'; +import path from 'path'; +import { Database } from 'arangojs'; + +import { Definitions } from '../templates'; +import { Config } from '../core/config'; +import { createCollections } from '../util' + +const databaseName = Definitions.server; +const SERVER_TESTS_DIR = './src/server/tests' + +// Part two testing things +const mocha = new Mocha() + +global.db = new Database({ + url: process.env.DB_URI +}); + +console.log('Pre-generating database at "Tomoe_test" to test server code!'.green); + +db.listDatabases((err, databaseList) => { + if(databaseList.includes(databaseName)){ + console.log('\nDropping existing test Database') + + db.dropDatabase(databaseName, () => { + createDatabase(); + }, err => { + console.log(('\n' + err.stack).red) + }); + return; + } + + createDatabase(); +}); + +function createDatabase(){ + db.createDatabase(databaseName).then( + info => { + console.log('\nDatabase has been generated, begining tests!'.green); + db.useDatabase(databaseName); + + createCollections([ 'user-test'] ).then(() => { + readTestConfig(); + }).catch((err) => { + console.log('\n'); + console.log(err.stack.red) + }) + + }, + err => { + console.log('\n'); + console.log(err.stack.red) + } + ); +} + +let newTestConfig; + + +function readTestConfig(){ + // generating test config + console.log('Generating tomoe.test.config.js...!'); + + const configParams = { hackathon: 'testHackathon'}; + newTestConfig = new Config(configParams); + newTestConfig.save().then(() => { + setTomoeData(); + }).catch(err => { + console.log(err); + }); + +} + +function setTomoeData(){ + const Tomoe = require('../../tomoe-test.config.js').Tomoe; + global.TOMOE_CONFIG = Tomoe; + + startMochaTests(); +} + + +// make sure your tests are loaded before running the tests + +function startMochaTests() { + function processMochaDirectories(rootDirectory){ + fs.readdirSync(rootDirectory).forEach((child) => { + const childLocation = rootDirectory + '/' + child; + if(fs.lstatSync(childLocation).isDirectory()){ + processMochaDirectories(childLocation); + } else if(child.substr(-8) === '.spec.js') { + mocha.addFile( + path.join(rootDirectory, child) + ) + } + }) + } + + processMochaDirectories(SERVER_TESTS_DIR); + + // Now, you can run the tests. + mocha.run(function(failures){ + process.on('exit', function () { + startFrontEndTests(failures); + }) + }) +} + +function startFrontEndTests (failures){ + doneEverything(failures); +}; + +function doneEverything (failures){ + newTestConfig.delete(); + process.exit(failures); +}; diff --git a/Tomoe/Core/build/util/create-collections.js b/Tomoe/Core/build/util/create-collections.js new file mode 100644 index 0000000..005a1c4 --- /dev/null +++ b/Tomoe/Core/build/util/create-collections.js @@ -0,0 +1,25 @@ +import { Definitions } from '../templates'; + +export function createCollections(additionalCollections = []){ + return new Promise((resolve, reject) => { + const collections = Definitions.collections.concat(additionalCollections); + let error = ''; + collections.forEach((collectionName) => { + db.collection(collectionName).create().then( + () => { }, + (err) => { + + error = err; + return; + } + ) + }); + + if(error){ + reject(error); + return; + } + + resolve(); + }); +} diff --git a/Tomoe/Core/build/util/index.js b/Tomoe/Core/build/util/index.js new file mode 100644 index 0000000..40a91cb --- /dev/null +++ b/Tomoe/Core/build/util/index.js @@ -0,0 +1,2 @@ +export * from './create-collections' +export * from './move-templates' diff --git a/Tomoe/Core/build/util/move-templates.js b/Tomoe/Core/build/util/move-templates.js new file mode 100644 index 0000000..c49132d --- /dev/null +++ b/Tomoe/Core/build/util/move-templates.js @@ -0,0 +1,15 @@ +// DEPRECATION WARNING: This will be removed in later versions of tomoe +import fs from 'fs-extra'; + +const SERVER_DIR = './src/server/src/templates/' +const BUILD_DIR = './build/templates/' + +export function moveFile(fileName){ + return new Promise((resolve, reject) => { + if(!fs.existsSync(SERVER_DIR + fileName)){ + fs.createReadStream(BUILD_DIR + fileName).pipe(fs.createWriteStream(SERVER_DIR + fileName)); + } + + resolve(); + }) +} diff --git a/Tomoe/Core/package.json b/Tomoe/Core/package.json new file mode 100755 index 0000000..3afde10 --- /dev/null +++ b/Tomoe/Core/package.json @@ -0,0 +1,138 @@ +{ + "name": "Tomoe", + "version": "2.1.0", + "description": "Centralized API user platform for Hackathons", + "main": "production.js", + "scripts": { + "clean": "rimraf dist", + "compile": "node ./src/app/build/scripts/compile", + "setup": "npm run generate", + "generate": "node ./build/core", + "build": "npm run clean && cross-env NODE_ENV=production npm run compile", + "start": "node ./build/imports && cross-env NODE_ENV=development node ./src/app/build/scripts/start", + "api": "nodemon -e js --watch './src/server' --watch './src/extensions/**/server/**/*' ./src/server/index.js", + "test_server": "cross-env NODE_ENV=test nyc node ./build/tests", + "test_app": "cross-env NODE_ENV=test karma start ./src/app/build/karma.config", + "test": "npm run test_server", + "test:watch": "npm test -- --watch", + "lint": "eslint .", + "lint:fix": "npm run lint -- --fix" + }, + "repository": { + "type": "git", + "url": "https://github.com/HackMerced/Tomoe.git" + }, + "author": "Shubham Naik ", + "license": "MIT", + "nyc": { + "require": [ + "babel-register" + ], + "exclude": [ + "build", + "**/tests" + ], + "sourceMap": false, + "instrument": false + }, + "devDependencies": { + "babel-cli": "^6.24.1", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-istanbul": "^0.12.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-plugin-transform-runtime": "^6.15.0", + "babel-preset-env": "^1.4.0", + "babel-preset-es2015": "^6.24.1", + "babel-preset-react": "^6.24.1", + "babel-register": "7.0.0-alpha.15", + "babel-runtime": "^6.20.0", + "chai": "^3.5.0", + "chai-as-promised": "^6.0.0", + "chai-enzyme": "^0.6.1", + "chai-http": "^3.0.0", + "chai-nightwatch": "^0.1.1", + "chai-things": "^0.2.0", + "chalk": "^1.1.3", + "codecov": "^2.2.0", + "colors": "^1.1.2", + "connect-history-api-fallback": "^1.3.0", + "cross-env": "^5.0.0", + "css-loader": "^0.28.1", + "dirty-chai": "^1.2.2", + "enzyme": "^2.8.2", + "eslint": "^3.19.0", + "eslint-config-standard": "^10.2.1", + "eslint-config-standard-react": "^5.0.0", + "eslint-plugin-babel": "^4.1.1", + "eslint-plugin-import": "^2.2.0", + "eslint-plugin-node": "^4.2.2", + "eslint-plugin-promise": "^3.5.0", + "eslint-plugin-react": "^7.0.1", + "eslint-plugin-standard": "^3.0.1", + "extract-text-webpack-plugin": "^2.1.0", + "figures": "^2.0.0", + "file-loader": "^0.11.1", + "fs-extra": "^3.0.1", + "html-dnd": "^1.1.0", + "html-webpack-plugin": "^2.24.1", + "karma": "^1.7.0", + "karma-coverage": "^1.1.1", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.1", + "karma-phantomjs-launcher": "^1.0.4", + "karma-webpack-with-fast-source-maps": "^1.10.0", + "mocha": "^3.2.0", + "node-sass": "^4.5.3", + "nodemon": "^1.12.1", + "nyc": "^11.0.3", + "phantomjs-prebuilt": "^2.1.14", + "react-addons-test-utils": "^15.5.1", + "react-test-renderer": "^15.5.4", + "redux-mock-store": "^1.2.3", + "rimraf": "^2.6.1", + "sass-loader": "^6.0.5", + "should": "^9.0.2", + "sinon": "^2.2.0", + "sinon-chai": "^2.10.0", + "style-loader": "^0.17.0", + "url-loader": "^0.5.8", + "webpack": "^2.5.1", + "webpack-dev-middleware": "^1.8.4", + "webpack-hot-middleware": "^2.13.2", + "yargs": "^8.0.1" + }, + "dependencies": { + "arangojs": "^5.4.2", + "body-parser": "^1.15.2", + "boom": "^5.1.0", + "compression": "^1.6.2", + "dotenv": "^4.0.0", + "figlet": "^1.2.0", + "hapi": "^16.4.3", + "hapi-auth-jwt": "^4.0.0", + "isparta": "^4.0.0", + "joi": "^10.6.0", + "nodemailer": "^4.0.1", + "object-assign": "^4.1.1", + "promise": "^7.1.1", + "prop-types": "^15.5.10", + "react": "^15.5.4", + "react-dom": "^15.5.4", + "react-redux": "^5.0.4", + "react-router": "^3.0.0", + "readline-sync": "^1.4.7", + "redbox-react": "^1.3.6", + "redux": "^3.6.0", + "redux-thunk": "^2.2.0", + "relish": "^0.2.4", + "request": "^2.79.0", + "sha256": "^0.2.0", + "uuid": "^3.1.0", + "whatwg-fetch": "^2.0.3" + } +} diff --git a/Tomoe/Core/src/app/src/index.js b/Tomoe/Core/src/app/src/index.js new file mode 100644 index 0000000..239fe51 --- /dev/null +++ b/Tomoe/Core/src/app/src/index.js @@ -0,0 +1,58 @@ +import React from 'react' +import ReactDOM from 'react-dom' +import createStore from './store/createStore' +import './styles/main.scss' + +// Store Initialization +// ------------------------------------ +const store = createStore(window.__INITIAL_STATE__) + +// Render Setup +// ------------------------------------ +const MOUNT_NODE = document.getElementById('root') + +let render = () => { + const App = require('./components/App').default + const routes = require('./routes/index').default(store) + + ReactDOM.render( + , + MOUNT_NODE + ) +} + +// Development Tools +// ------------------------------------ +if (__DEV__) { + if (module.hot) { + const renderApp = render + const renderError = (error) => { + const RedBox = require('redbox-react').default + + ReactDOM.render(, MOUNT_NODE) + } + + render = () => { + try { + renderApp() + } catch (e) { + console.error(e) + renderError(e) + } + } + + // Setup hot module replacement + module.hot.accept([ + './components/', + ], () => + setImmediate(() => { + ReactDOM.unmountComponentAtNode(MOUNT_NODE) + render() + }) + ) + } +} + +// Let's Go! +// ------------------------------------ +if (!__TEST__) render() diff --git a/Tomoe/Core/src/extensions/administration/config.json b/Tomoe/Core/src/extensions/administration/config.json new file mode 100644 index 0000000..f2b06c6 --- /dev/null +++ b/Tomoe/Core/src/extensions/administration/config.json @@ -0,0 +1,6 @@ +{ + "name": "administration", + "displayName": "Admin", + "injectables": { + } +} diff --git a/Tomoe/Core/src/extensions/administration/importable.js b/Tomoe/Core/src/extensions/administration/importable.js new file mode 100644 index 0000000..5418a65 --- /dev/null +++ b/Tomoe/Core/src/extensions/administration/importable.js @@ -0,0 +1 @@ +export * from '../' diff --git a/Tomoe/Core/src/extensions/administration/package.json b/Tomoe/Core/src/extensions/administration/package.json new file mode 100644 index 0000000..ebc3c01 --- /dev/null +++ b/Tomoe/Core/src/extensions/administration/package.json @@ -0,0 +1,11 @@ +{ + "name": "Tomoe-Admin", + "version": "1.0.0", + "description": "Admin utility for Tomoe", + "main": " ", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "HackMerced", + "license": "MIT" +} diff --git a/Tomoe/Core/src/extensions/admissions/config.json b/Tomoe/Core/src/extensions/admissions/config.json new file mode 100644 index 0000000..1426c1c --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/config.json @@ -0,0 +1,7 @@ +{ + "name": "admissions", + "displayName": "Admissions", + "injectables": { + "routes": "server/routes/index.js" + } +} diff --git a/Tomoe/Core/src/extensions/admissions/importable.js b/Tomoe/Core/src/extensions/admissions/importable.js new file mode 100644 index 0000000..5418a65 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/importable.js @@ -0,0 +1 @@ +export * from '../' diff --git a/Tomoe/Core/src/extensions/admissions/package.json b/Tomoe/Core/src/extensions/admissions/package.json new file mode 100644 index 0000000..e824ed9 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/package.json @@ -0,0 +1,11 @@ +{ + "name": "Tomoe-Admissions", + "version": "1.0.0", + "description": "Admissions utility for Tomoe", + "main": " ", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "HackMerced", + "license": "MIT" +} diff --git a/Tomoe/Core/src/extensions/admissions/src/server/collections/Hacker.js b/Tomoe/Core/src/extensions/admissions/src/server/collections/Hacker.js new file mode 100644 index 0000000..36c70c4 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/collections/Hacker.js @@ -0,0 +1,44 @@ +import { User } from '../../../importable'; + +export class Hacker extends User{ + constructor(data = {}){ + super(data); + + this.details = data.details || {}; + this.status = data.status || TOMOE_CONFIG.hackerStatuses[0]; // will pick the first status provided + } + + static getCollection(){ + return db.collection('hacker'); + } + + _get(){ + return { + id: this.id, + name: this.name, + email:this.email, + password:this.password, + status: this.status, + details: this.details + } + } + + static _get(user, protectSenstiveData = true){ + let data = { + id: user.id, + name: user.name, + email:user.email, + status: user.status, + details: user.details + } + + if(!protectSenstiveData){ + data.password = user.password; + data._key = user._key; + data._id = user._id; + } + + return data; + } + +} diff --git a/Tomoe/Core/src/extensions/admissions/src/server/collections/index.js b/Tomoe/Core/src/extensions/admissions/src/server/collections/index.js new file mode 100644 index 0000000..00fd375 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/collections/index.js @@ -0,0 +1 @@ +export * from './Hacker' diff --git a/Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js b/Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js new file mode 100644 index 0000000..f1c061e --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js @@ -0,0 +1,105 @@ +import { Hacker } from '../collections' +import { operatorSearch, respond, transformData, setSearchParam } from '../../../importable'; +import Joi from 'joi'; +import Boom from 'boom'; + +export const hackerHandlers = { + getHackers: ( request, reply ) => { + let params = []; + + for(let searchTerm in request.query){ + const searchString = searchTerm.split('.'); + + params.push({ + root: searchString[0], + data: transformData(searchString[1], request.query[searchTerm]), + option: (searchString.length > 2) ? searchString.splice(2,searchString.length).join('.') : null, + operator: operatorSearch(searchString[1]) + }); + } + + Hacker.query(params).then((users) => { + return reply(respond(users)) + }).catch((err) => { + return reply(err); + }) + }, + getHacker: ( request, reply ) => { + const { user } = request.params; + const param = setSearchParam(user); + + Hacker.find(param).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, + postHacker: ( request, reply ) => { + const { name, email, password, confirmPassword, details, status } = request.payload; + + // if passwords do not match... + if(password !== confirmPassword){ + return reply(Boom.badRequest('Your passwords do not match!')) + } + + const saveHacker = new Hacker({ + tempPassword: password, + name: name, + email: email, + details: details, + status: status + }); + + saveHacker.save().then((user) => { + return reply(respond(user, { created: true }, 201)).code(201); + }).catch((err) => { + return reply(err); + }) + }, + updateHacker: ( request, reply ) => { + const { user } = request.params; + const { payload } = request; + const param = setSearchParam(user); + + Hacker.update(param, payload).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, + deleteHacker: ( request, reply ) => { + const param = setSearchParam(user); + + Hacker.remove(param).then((user) => { + return reply(respond({}, { deleted: true }, 204)).code(204); + }).catch((err) => { + return reply(err); + }) + + }, + validateHacker: ( request, reply ) => { + const { user } = request.params; + const { password } = request.payload; + const param = setSearchParam(user); + + Hacker.validate(param, password).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + }, + updateHackerStatus: ( request, reply ) => { + const { user } = request.params; + const { status } = request.payload; + const param = setSearchParam(user); + + Hacker.update(param, { status: status }).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, +} diff --git a/Tomoe/Core/src/extensions/admissions/src/server/handlers/index.js b/Tomoe/Core/src/extensions/admissions/src/server/handlers/index.js new file mode 100644 index 0000000..d4c8744 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/handlers/index.js @@ -0,0 +1 @@ +export * from './hacker' diff --git a/Tomoe/Core/src/extensions/admissions/src/server/routes/hacker.js b/Tomoe/Core/src/extensions/admissions/src/server/routes/hacker.js new file mode 100644 index 0000000..ba0e199 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/routes/hacker.js @@ -0,0 +1,108 @@ +/* + The Hacker Object + + The Hacker Object is the core to Tomoe's hackathon management system. Hackers are the people who apply to your hackathon. + + { + "_id":"user-id", + "name":"user-name", + "email":"hackathon@email.com", + "password":"userpasswordhash", // not returned normally + "status":"applied", // applied, denied, approved, waitlisted + "survey":{ + ... // array of attributes that can be customized and sent to the user + } + } + +*/ + + +import Joi from 'joi'; +import Boom from 'boom'; +import { hackerHandlers } from '../handlers' +import { hackerValidators } from '../validators' + + +// [GET] /hackers +export const getHackers = { + path: '/hackers', + method: 'GET', + config: { + handler: hackerHandlers.getHackers, + } +}; + +// [GET] /hackers/{user-email} +// [GET] /hackers/{user-id} +export const getHacker = { + path: '/hackers/{user}', + method: 'GET', + config: { + handler: hackerHandlers.getHacker, + } +}; + +// [POST] /hackers +export const postHacker = { + path: '/hackers', + method: 'POST', + config: { + handler: hackerHandlers.postHacker, + validate: hackerValidators.postHacker + } +}; + +// [POST] /hackers/{user-email} +// [POST] /hackers/{user-id} +export const updateHacker = { + path: '/hackers/{user}', + method: 'POST', + config: { + handler: hackerHandlers.updateHacker, + } +}; + +// [DELETE] /hackers/{user-email} +// [DELETE] /hackers/{user-id} +export const deleteHacker = { + path: '/hackers/{user}', + method: 'DELETE', + config: { + handler: hackerHandlers.deleteHacker, + } +}; + +// [POST] /hackers/{user-email}/validate +// [POST] /hackers/{user-id}/validate +export const validateHacker = { + path: '/hackers/{user}/validate', + method: 'POST', + config: { + handler: hackerHandlers.validateHacker, + validate: hackerValidators.validateHacker + } +}; + +// [POST] /hackers/{user-email}/status +// [POST] /hackers/{user-id}/status +export const updateHackerStatus = { + path: '/hackers/{user}/status', + method: 'POST', + config: { + handler: hackerHandlers.updateHackerStatus, + validate: hackerValidators.updateHackerStatus + } +}; + + +const hackerRoutes = [ + getHackers, + getHacker, + postHacker, + updateHacker, + deleteHacker, + validateHacker, + updateHackerStatus +] + +export default hackerRoutes; diff --git a/Tomoe/Core/src/extensions/admissions/src/server/routes/index.js b/Tomoe/Core/src/extensions/admissions/src/server/routes/index.js new file mode 100644 index 0000000..4b0ebe1 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/routes/index.js @@ -0,0 +1,7 @@ +import hackerRoutes from './hacker'; + +const routes = [ + ...hackerRoutes, +]; + +export default routes; diff --git a/Tomoe/Core/src/extensions/admissions/src/server/validators/hacker.js b/Tomoe/Core/src/extensions/admissions/src/server/validators/hacker.js new file mode 100644 index 0000000..a026416 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/validators/hacker.js @@ -0,0 +1,36 @@ +import Joi from 'joi'; + +export const hackerValidators = { + postHacker: { + failAction: require('relish')({ + stripQuotes: true, + messages: { + 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.hackerStatuses.join(', '), + } + }).failAction, + payload: { + email: Joi.string().required().email(), + password: Joi.string().min(6).required(), + confirmPassword: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'and password must match' } } }), + name: Joi.string(), + details: Joi.object(), + status: Joi.any().valid(TOMOE_CONFIG.hackerStatuses) + } + }, + validateHacker: { + payload: { + password: Joi.string().required() + } + }, + updateHackerStatus: { + failAction: require('relish')({ + stripQuotes: true, + messages: { + 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.hackerStatuses.join(', '), + } + }).failAction, + payload: { + status: Joi.any().valid(TOMOE_CONFIG.hackerStatuses).required() + } + }, +} diff --git a/Tomoe/Core/src/extensions/admissions/src/server/validators/index.js b/Tomoe/Core/src/extensions/admissions/src/server/validators/index.js new file mode 100644 index 0000000..d4c8744 --- /dev/null +++ b/Tomoe/Core/src/extensions/admissions/src/server/validators/index.js @@ -0,0 +1 @@ +export * from './hacker' diff --git a/Tomoe/Core/src/extensions/index.js b/Tomoe/Core/src/extensions/index.js new file mode 100644 index 0000000..6ef55ec --- /dev/null +++ b/Tomoe/Core/src/extensions/index.js @@ -0,0 +1 @@ +export * from '../server/exportable'; diff --git a/Tomoe/Core/src/server/exportable.js b/Tomoe/Core/src/server/exportable.js new file mode 100644 index 0000000..8087844 --- /dev/null +++ b/Tomoe/Core/src/server/exportable.js @@ -0,0 +1,4 @@ +// content that can be utilized by extensions + +export * from './src/collections'; +export * from './src/util'; diff --git a/Tomoe/Core/src/server/index.js b/Tomoe/Core/src/server/index.js new file mode 100644 index 0000000..96cd5f0 --- /dev/null +++ b/Tomoe/Core/src/server/index.js @@ -0,0 +1,22 @@ +const fs = require('fs'), + ENV_PATH = './.env'; +const colors = require('colors'); + +// support for local .env files +if(!fs.existsSync(ENV_PATH)){ + require('dotenv').config({path: ENV_PATH}); +} + +// check if tomoe config is installed +if(fs.existsSync('./tomoe.config.js')){ + global.TOMOE_CONFIG = require('../../tomoe.config.js').Tomoe; + + require( 'babel-core/register' ); + require('./src/database.js') + require('./src/server.js'); + +} else { + console.log(colors.red('\n\nWe cannot find your tomoe.config.js file!')); + console.log(colors.grey('Please install Tomoe before turning on the server by entering the following command:')); + console.log('\n npm run setup\n'); +} diff --git a/Tomoe/Core/src/server/src/collections/Admin.js b/Tomoe/Core/src/server/src/collections/Admin.js new file mode 100644 index 0000000..12d3fc9 --- /dev/null +++ b/Tomoe/Core/src/server/src/collections/Admin.js @@ -0,0 +1,42 @@ +import { User } from './'; + +export class Admin extends User{ + constructor(data = {}){ + super(data); + this.permissions = data.permissions; + + } + + static getCollection(){ + return db.collection('admin'); + } + + _get(){ + return { + id: this.id, + name: this.name, + email:this.email, + password:this.password, + permissions: this.permissions + } + } + + + static _get(user, protectSenstiveData = true){ + let data = { + id: user.id, + name: user.name, + email:user.email, + permissions: user.permissions + } + + if(!protectSenstiveData){ + data.password = user.password; + data._key = user._key; + data._id = user._id; + } + + return data; + } + +} diff --git a/Tomoe/Core/src/server/src/collections/Email.js b/Tomoe/Core/src/server/src/collections/Email.js new file mode 100644 index 0000000..1e856b3 --- /dev/null +++ b/Tomoe/Core/src/server/src/collections/Email.js @@ -0,0 +1,28 @@ +import nodemailer from 'nodemailer'; + + +const transporter = nodemailer.createTransport({ + host: TOMOE_CONFIG.email.hostName, + port: 465, + secure: true, // secure:true for port 465, secure:false for port 587 + auth: { + user: TOMOE_CONFIG.email.username, + pass: TOMOE_CONFIG.email.password + } +}); + +export class Email { + constructor(data = {}){ + super(data); + + } + + static getCollection(){ + return db.collection('meta'); + } + + static init(){ + this.getCollection() + } + +} diff --git a/Tomoe/Core/src/server/src/collections/User.js b/Tomoe/Core/src/server/src/collections/User.js new file mode 100644 index 0000000..9ccd071 --- /dev/null +++ b/Tomoe/Core/src/server/src/collections/User.js @@ -0,0 +1,352 @@ +import { aql } from 'arangojs'; +import uuidv4 from 'uuid/v4' +import sha256 from 'sha256'; +import Boom from 'boom'; + +export class User{ + constructor(data = {}){ + // user information + this.id = data.id || uuidv4(); + this.name = data.name || null; + this.email = (data.email) ? data.email.toLowerCase() : null; + this.password = null; + this.tempPassword = data.tempPassword || null; + } + + static getCollection(){ + return db.collection('user-test'); + } + + _get(){ + return { + id: this.id, + name: this.name, + email:this.email, + password:this.password + } + } + + static _get(user, protectSenstiveData = true){ + let data = { + id: user.id, + name: user.name, + email:user.email + } + + if(!protectSenstiveData){ + data.password = user.password; + data._key = user._key; + data._id = user._id; + } + + return data; + } + + static _validatePasswords(plainPass, hashedPass){ + + const salt = hashedPass.substr(0, 10); + const validHash = salt + sha256(plainPass + salt); + return hashedPass === validHash; + } + + _saltAndHashPassword(password){ + function generateSalt(){ + let set = '0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ'; + let salt = ''; + for (let i = 0; i < 10; i++) { + let p = Math.floor(Math.random() * set.length); + salt += set[p]; + } + return salt; + } + + let salt = generateSalt(); + let newPassword = (salt + sha256(password + salt)); + return newPassword; + } + + _securePassword(){ + this.password = this._saltAndHashPassword(this.tempPassword);; + this.tempPassword = null; // sets any temp password to none + } + + _setUserData(user){ + for(let i in this){ + if((this[i] && typeof this[i] !== '[object Function]') && user[i]){ + this[i] = user[i]; + } + } + } + + setEmail(email){ + this.email = (email) ? email.toLowerCase() : null; + } + + setName(name){ + this.name = name; + } + + setPassword(tempPassword){ + this.tempPassword = tempPassword; + } + + confirmPassword(confirmedPassword){ + return confirmedPassword === this.tempPassword; + } + + static query(params, protectSenstiveData = true){ + return new Promise((resolve, reject) => { + + const collection = this.getCollection(); + let query = `FOR user IN @@collection `; + let binds = { '@collection': collection.name } + if(params){ + params.forEach((param) => { + const searchBy = param.root + ((param.option) ? ('.' + param.option) : ''); + const searchByBinder = searchBy.replace(/\./g, '_'); + const operator = param.operator || '=='; + query += `FILTER user.${searchBy} ${operator} @${searchByBinder} `; + binds[searchByBinder] = param.data; + }) + } + + query += 'RETURN user'; + + db.query(query, binds ).then((cursor) => { + if(!cursor){ + reject(Boom.serverUnavailable('ERROR 1: Cursor could not be passed through.')); + return; + } + + cursor.all().then((users) => { + resolve(users.map(user => { + return this._get(user, protectSenstiveData); + })); + }).catch((err) => { + reject(Boom.badImplementation('ERROR 2: ' + err.stack)); + }); + }).catch((err) => { + reject(Boom.badImplementation('ERROR 3: ' + err.stack)); + }); + }); + } + + static find(userData, doNotFind = false, protectSenstiveData = true){ + return new Promise((resolve, reject) => { + const collection = this.getCollection(); + + if(!userData || (userData && !userData.email && !userData.id)){ + reject(Boom.badRequest('id or email is required')); + return; + } + + userData.email = (userData.email) ? userData.email.toLowerCase() : null; + + const searchBy = (userData.id) ? 'id' : 'email'; + let query = `FOR user IN @@collection ` + + `FILTER user.${searchBy} == @searchBy ` + + 'RETURN user'; + + + db.query(query, { '@collection': collection.name, searchBy: userData[searchBy] } ).then((cursor) => { + if(!cursor){ + reject(Boom.serverUnavailable('ERROR 4: Cursor could not be passed through.')) + return; + } + cursor.all().then((users) => { + if(users && users[0] && users[0].email){ + if(doNotFind) { + const errMessage = `user exists with the provided ${searchBy}` + const err = Boom.badRequest(errMessage); + err.output.payload.validation = { + errors: [{ + key: searchBy, + constraint: searchBy, + message: errMessage, + type: 'any' + }] + } + + reject(err); + return; + // TODO: add validator extension somewhere + } + + resolve(this._get(users[0], protectSenstiveData)); + return; + } + + if(doNotFind) { + resolve(); + return; + } + + const errMessage = `no user exists with provided ${searchBy}` + const err = Boom.notFound(errMessage); + err.output.payload.validation = { + errors: [{ + key: searchBy, + constraint: searchBy, + message: errMessage, + type: 'any' + }] + } + + reject(err); + }).catch((err) => { + reject(Boom.badImplementation('ERROR 5: ' + err.stack)); + }); + }).catch((err) => { + reject(Boom.badImplementation('ERROR 6: ' + err.stack)); + }); + }); + } + + validate(){ + return new Promise((resolve, reject) => { + this.constructor.validate({ email: this.email}, this.tempPassword).then((user) => { + this._setUserData(user); + resolve(user); + }).catch(err => { + reject(err); + }) + }); + } + + static validate(searchParam, tempPassword){ + return new Promise((resolve, reject) => { + this.find(searchParam, false, false).then((user) => { + if(this._validatePasswords(tempPassword, user.password)){ + resolve(user); + return; + } + + const errMessage = `password is incorrect`; + const err = Boom.unauthorized(errMessage); + err.output.payload.validation = { + errors: [{ + key: 'password', + constraint: 'password', + message: errMessage, + type: 'any' + }] + } + + reject(err); + }).catch((err) => { + reject(err); + }); + }); + } + + + static _modifyUserObject(newData, original = this, root = true){ + for(let i in newData){ + if(newData[i] && (newData[i].constructor === Object || newData[i].constructor === Array)){ + original[i] = this._modifyUserObject(newData[i], original[i], false) + } else if(newData[i] === '$delete'){ + delete original[i]; + } else { + original[i] = newData[i]; + } + } + + if(!root){ + return original; + } + } + + update(){ + return new Promise((resolve, reject) => { + this.constructor.update({ id: this.id}, this).then((user) => { + this._setUserData(user); + resolve(user); + }).catch(err => { + reject(err); + }) + }); + } + + static update(param, newData){ + return new Promise((resolve, reject) => { + const collection = this.getCollection(); + + this.find(param, false, false).then((user) => { + const userKey = user._key; + let updatedUser = this._modifyUserObject(newData, user, false); + + collection.update(userKey, updatedUser).then((user) => { + if(user){ + this.find(param).then((user) => { + resolve(user); + return; + }).catch((err) => { + reject(err); + return; + }); + + return; + } + + reject(Boom.badImplementation('Error 7: There was an issue creating your user!')); + }).catch((err) => { + reject(Boom.badImplementation('Error 8: ' + err.stack)); + }); + + return; + + }).catch((err) => { + reject(err); + }); + }); + } + + save(){ + return new Promise((resolve, reject) => { + this.constructor.find({ email: this.email }, true).then(() => { + this._securePassword(); + let userDetails = this._get(); + this.constructor.getCollection().save(userDetails).then((user) =>{ + this.constructor.find({ email: this.email }).then((user) => { + this._setUserData(user); + resolve(user); + return; + }).catch((err) => { + reject(Boom.badImplementation('Error 9: ' + err.stack)); + return; + }); + }).catch((err) => { + reject(Boom.badImplementation('Error 10: ' + err.stack)); + }); + }).catch((err) => { + reject(err); + }); + }); + } + + remove(){ + return new Promise((resolve, reject) => { + this.constructor.remove({ email: this.email}).then(() => { + resolve(); + }).catch(err => { + reject(err); + }) + }); + } + + static remove(param){ + return new Promise((resolve, reject) => { + this.find(param, false, false).then((user) => { + this.getCollection().removeByKeys([user._key]).then(() => { + resolve(); + return; + }).catch((err) => { + reject(Boom.badImplementation('Error 11: ' + err.stack)); + return; + }); + }).catch((err) => { + reject(err); + }); + }); + } +} diff --git a/Tomoe/Core/src/server/src/collections/Volunteer.js b/Tomoe/Core/src/server/src/collections/Volunteer.js new file mode 100644 index 0000000..772d38c --- /dev/null +++ b/Tomoe/Core/src/server/src/collections/Volunteer.js @@ -0,0 +1,45 @@ +import { User } from './'; + +export class Volunteer extends User{ + constructor(data = {}){ + super(data); + + this.details = data.details || {}; + this.status = data.status || TOMOE_CONFIG.volunteerStatuses[0]; // will pick the first status provided + } + + static getCollection(){ + return db.collection('volunteer'); + } + + _get(){ + return { + id: this.id, + name: this.name, + email:this.email, + age:this.age, + status: this.status, + availability: this.availability, + details: this.details + } + } + + static _get(user, protectSenstiveData = true){ + let data = { + id: user.id, + name: user.name, + email:user.email, + status: user.status, + availability: user.availability, + details: user.details + } + + if(!protectSenstiveData){ + data._key = user._key; + data._id = user._id; + } + + return data; + } + +} diff --git a/Tomoe/Core/src/server/src/collections/index.js b/Tomoe/Core/src/server/src/collections/index.js new file mode 100644 index 0000000..04dbfb3 --- /dev/null +++ b/Tomoe/Core/src/server/src/collections/index.js @@ -0,0 +1,3 @@ +export * from './User'; +export * from './Admin'; +export * from './Volunteer'; diff --git a/Tomoe/Core/src/server/src/database.js b/Tomoe/Core/src/server/src/database.js new file mode 100644 index 0000000..6fae685 --- /dev/null +++ b/Tomoe/Core/src/server/src/database.js @@ -0,0 +1,7 @@ +import { Database } from 'arangojs'; + +// connect to database +global.db = new Database({ + url: TOMOE_CONFIG.databaseUri, + databaseName: TOMOE_CONFIG.databaseName +}); diff --git a/Tomoe/Core/src/server/src/handlers/admin.js b/Tomoe/Core/src/server/src/handlers/admin.js new file mode 100644 index 0000000..da3df63 --- /dev/null +++ b/Tomoe/Core/src/server/src/handlers/admin.js @@ -0,0 +1,103 @@ +import { Admin } from '../collections' +import { operatorSearch, respond, transformData, setSearchParam } from '../util'; +import Joi from 'joi'; +import Boom from 'boom'; + +export const adminHandlers = { + getAdmins: ( request, reply ) => { + let params = []; + + for(let searchTerm in request.query){ + const searchString = searchTerm.split('.'); + + params.push({ + root: searchString[0], + data: transformData(searchString[1], request.query[searchTerm]), + option: (searchString.length > 2) ? searchString.splice(2,searchString.length).join('.') : null, + operator: operatorSearch(searchString[1]) + }); + } + + Admin.query(params).then((users) => { + return reply(respond(users)) + }).catch((err) => { + return reply(err); + }) + }, + getAdmin: ( request, reply ) => { + const { user } = request.params; + const param = setSearchParam(user); + + Admin.find(param).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, + postAdmin: ( request, reply ) => { + const { name, email, password, confirmPassword, details } = request.payload; + + // if passwords do not match... + if(password !== confirmPassword){ + return reply(Boom.badRequest('Your passwords do not match!')) + } + + const saveAdmin = new Admin({ + tempPassword: password, + name: name, + email: email + }); + + saveAdmin.save().then((user) => { + return reply(respond(user, { created: true }, 201)).code(201); + }).catch((err) => { + return reply(err); + }) + }, + updateAdmin: ( request, reply ) => { + const { user } = request.params; + const { payload } = request; + const param = setSearchParam(user); + + Admin.update(param, payload).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, + deleteAdmin: ( request, reply ) => { + const param = setSearchParam(user); + + Admin.remove(param).then((user) => { + return reply(respond({}, { deleted: true }, 204)).code(204); + }).catch((err) => { + return reply(err); + }) + + }, + validateAdmin: ( request, reply ) => { + const { user } = request.params; + const { password } = request.payload; + const param = setSearchParam(user); + + Admin.validate(param, password).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + }, + updateAdminPermissions: ( request, reply ) => { + const { user } = request.params; + const { permissions } = request.payload; + const param = setSearchParam(user); + + Admin.update(param, { permissions: permissions }).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, +} diff --git a/Tomoe/Core/src/server/src/handlers/index.js b/Tomoe/Core/src/server/src/handlers/index.js new file mode 100644 index 0000000..7e7afea --- /dev/null +++ b/Tomoe/Core/src/server/src/handlers/index.js @@ -0,0 +1,2 @@ +export * from './admin' +export * from './volunteer' diff --git a/Tomoe/Core/src/server/src/handlers/volunteer.js b/Tomoe/Core/src/server/src/handlers/volunteer.js new file mode 100644 index 0000000..8c76fa0 --- /dev/null +++ b/Tomoe/Core/src/server/src/handlers/volunteer.js @@ -0,0 +1,89 @@ +import { Volunteer } from '../collections' +import { operatorSearch, respond, transformData, setSearchParam } from '../util'; +import Joi from 'joi'; +import Boom from 'boom'; + +export const volunteerHandlers = { + getVolunteers: ( request, reply ) => { + let params = []; + + for(let searchTerm in request.query){ + const searchString = searchTerm.split('.'); + + params.push({ + root: searchString[0], + data: transformData(searchString[1], request.query[searchTerm]), + option: (searchString.length > 2) ? searchString.splice(2,searchString.length).join('.') : null, + operator: operatorSearch(searchString[1]) + }); + } + + Volunteer.query(params).then((users) => { + return reply(respond(users)) + }).catch((err) => { + return reply(err); + }) + }, + getVolunteer: ( request, reply ) => { + const { user } = request.params; + const param = setSearchParam(user); + + Volunteer.find(param).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, + postVolunteer: ( request, reply ) => { + const { name, email, availability, details, status } = request.payload; + + const saveVolunteer = new Volunteer({ + availability: availability, + name: name, + email: email, + details: details, + status: status + }); + + saveVolunteer.save().then((user) => { + return reply(respond(user, { created: true }, 201)).code(201); + }).catch((err) => { + return reply(err); + }) + }, + updateVolunteer: ( request, reply ) => { + const { user } = request.params; + const { payload } = request; + const param = setSearchParam(user); + + Volunteer.update(param, payload).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, + deleteVolunteer: ( request, reply ) => { + const param = setSearchParam(user); + + Volunteer.remove(param).then((user) => { + return reply(respond({}, { deleted: true }, 204)).code(204); + }).catch((err) => { + return reply(err); + }) + + }, + updateVolunteerStatus: ( request, reply ) => { + const { user } = request.params; + const { status } = request.payload; + const param = setSearchParam(user); + + Volunteer.update(param, { status: status }).then((user) => { + return reply(respond(user)) + }).catch((err) => { + return reply(err); + }) + + }, +} diff --git a/Tomoe/Core/src/server/src/routes/admin.js b/Tomoe/Core/src/server/src/routes/admin.js new file mode 100644 index 0000000..401e2dc --- /dev/null +++ b/Tomoe/Core/src/server/src/routes/admin.js @@ -0,0 +1,87 @@ +import Joi from 'joi'; +import Boom from 'boom'; +import { adminHandlers } from '../handlers' +import { adminValidators } from '../validators' + +// [GET] /admins +export const getAdmins = { + path: '/admins', + method: 'GET', + config: { + handler: adminHandlers.getAdmins, + } +}; + +// [GET] /admins/{user-email} +// [GET] /admins/{user-id} +export const getAdmin = { + path: '/admins/{user}', + method: 'GET', + config: { + handler: adminHandlers.getAdmin, + } +}; + +// [POST] /admins +export const postAdmin = { + path: '/admins', + method: 'POST', + config: { + handler: adminHandlers.postAdmin, + validate: adminValidators.postAdmin + } +}; + +// [POST] /admins/{user-email} +// [POST] /admins/{user-id} +export const updateAdmin = { + path: '/admins/{user}', + method: 'POST', + config: { + handler: adminHandlers.updateAdmin, + } +}; + +// [DELETE] /admins/{user-email} +// [DELETE] /admins/{user-id} +export const deleteAdmin = { + path: '/admins/{user}', + method: 'DELETE', + config: { + handler: adminHandlers.deleteAdmin, + } +}; + +// [POST] /admins/{user-email}/validate +// [POST] /admins/{user-id}/validate +export const validateAdmin = { + path: '/admins/{user}/validate', + method: 'POST', + config: { + handler: adminHandlers.validateAdmin, + validate: adminValidators.validateAdmin + } +}; + +// [POST] /admins/{user-email}/permissions +// [POST] /admins/{user-id}/permissions +export const updateAdminPermissions = { + path: '/admins/{user}/permissions', + method: 'POST', + config: { + handler: adminHandlers.updateAdminPermissions, + validate: adminValidators.updateAdminPermissions + } +}; + +const adminRoutes = [ + getAdmins, + getAdmin, + postAdmin, + updateAdmin, + deleteAdmin, + validateAdmin, + updateAdminPermissions +] + +export default adminRoutes; diff --git a/Tomoe/Core/src/server/src/routes/index.js b/Tomoe/Core/src/server/src/routes/index.js new file mode 100644 index 0000000..97937b8 --- /dev/null +++ b/Tomoe/Core/src/server/src/routes/index.js @@ -0,0 +1,12 @@ +import adminRoutes from './admin'; +import volunteerRoutes from './volunteer'; + +import { getExtensionContent } from '../util'; + +const routes = [ + ...adminRoutes, + ...volunteerRoutes, + ...getExtensionContent('routes'), +]; + +export default routes; diff --git a/Tomoe/Core/src/server/src/routes/volunteer.js b/Tomoe/Core/src/server/src/routes/volunteer.js new file mode 100644 index 0000000..93de1f4 --- /dev/null +++ b/Tomoe/Core/src/server/src/routes/volunteer.js @@ -0,0 +1,98 @@ +/* + The Volunteer Object + + The Volunteer Object is the core to Tomoe's hackathon management system. Volunteers are the people who apply to your hackathon. + + { + "_id":"user-id", + "name":"user-name", + "email":"hackathon@email.com", + "status":"status", + "availability":"hours", + "details": { + "age":"age", + "dietary_restrictions":"", + "shirt_size":"", + } + } + +*/ + + +import Joi from 'joi'; +import Boom from 'boom'; +import { volunteerHandlers } from '../handlers' +import { volunteerValidators } from '../validators' + + +// [GET] /volunteers +export const getVolunteers = { + path: '/volunteers', + method: 'GET', + config: { + handler: volunteerHandlers.getVolunteers, + } +}; + +// [GET] /volunteers/{user-email} +// [GET] /volunteers/{user-id} +export const getVolunteer = { + path: '/volunteers/{user}', + method: 'GET', + config: { + handler: volunteerHandlers.getVolunteer, + } +}; + +// [POST] /volunteers +export const postVolunteer = { + path: '/volunteers', + method: 'POST', + config: { + handler: volunteerHandlers.postVolunteer, + validate: volunteerValidators.postVolunteer + } +}; + +// [POST] /volunteers/{user-email} +// [POST] /volunteers/{user-id} +export const updateVolunteer = { + path: '/volunteers/{user}', + method: 'POST', + config: { + handler: volunteerHandlers.updateVolunteer, + } +}; + +// [DELETE] /volunteers/{user-email} +// [DELETE] /volunteers/{user-id} +export const deleteVolunteer = { + path: '/volunteers/{user}', + method: 'DELETE', + config: { + handler: volunteerHandlers.deleteVolunteer, + } +}; + +// [POST] /volunteers/{user-email}/status +// [POST] /volunteers/{user-id}/status +export const updateVolunteerStatus = { + path: '/volunteers/{user}/status', + method: 'POST', + config: { + handler: volunteerHandlers.updateVolunteerStatus, + validate: volunteerValidators.updateVolunteerStatus + } +}; + + +const volunteerRoutes = [ + getVolunteers, + getVolunteer, + postVolunteer, + updateVolunteer, + deleteVolunteer, + updateVolunteerStatus +] + +export default volunteerRoutes; diff --git a/Tomoe/Core/src/server/src/server.js b/Tomoe/Core/src/server/src/server.js new file mode 100644 index 0000000..e655897 --- /dev/null +++ b/Tomoe/Core/src/server/src/server.js @@ -0,0 +1,52 @@ +import Hapi from 'hapi'; +import routes from './routes'; + +// start server +const server = new Hapi.Server(); +const Relish = require('relish')({ + stripQuotes: true, + messages: { + 'permissions': 'Please only enter the following permissions: ' + TOMOE_CONFIG.adminPermissions.join(', ') + } +}) + +server.connection( { + port: process.env.PORT || '1738', + routes: { + validate: { + failAction: Relish.failAction, + options: { + abortEarly: false + } + } + } +}); + +server.register( require( 'hapi-auth-jwt' ), ( err ) => { + + if( !err ) { + console.log( 'Loaded JWT' ); + } + + server.auth.strategy( 'token', 'jwt', { + key: TOMOE_CONFIG.secretKey, + verifyOptions: { + algorithms: [ 'HS256' ] + } + }); + + routes.forEach( ( route ) => { + server.route( route ); + } ); +} ); + + +server.start( err => { + if(err) { + throw err; + } + + console.log( `Server started at ${ server.info.uri }` ); +} ); + +export { server }; diff --git a/Tomoe/Core/src/server/src/templates/.gitkeep b/Tomoe/Core/src/server/src/templates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Tomoe/Core/src/server/src/util/extension-handler.js b/Tomoe/Core/src/server/src/util/extension-handler.js new file mode 100644 index 0000000..fd910ef --- /dev/null +++ b/Tomoe/Core/src/server/src/util/extension-handler.js @@ -0,0 +1,9 @@ +const { extensions } = TOMOE_CONFIG; +const EXTENSION_ROOT = '../../../extensions'; + +export function getExtensionContent(extensionType){ + return extensions.map((extName) => { + const extRoute = require(`${EXTENSION_ROOT}/${extName}/config.json`).injectables[extensionType]; + return require(`${EXTENSION_ROOT}/${extName}/src/${extRoute}`).default; + }); +}; diff --git a/Tomoe/Core/src/server/src/util/index.js b/Tomoe/Core/src/server/src/util/index.js new file mode 100644 index 0000000..81ece09 --- /dev/null +++ b/Tomoe/Core/src/server/src/util/index.js @@ -0,0 +1,5 @@ +export * from './operator-search'; +export * from './respond'; +export * from './transform-data' +export * from './set-search-param' +export * from './extension-handler' diff --git a/Tomoe/Core/src/server/src/util/operator-search.js b/Tomoe/Core/src/server/src/util/operator-search.js new file mode 100644 index 0000000..a2e2d26 --- /dev/null +++ b/Tomoe/Core/src/server/src/util/operator-search.js @@ -0,0 +1,11 @@ +const operatorMap = { + data: '==', + gt: '>', + lt: '<', + gte: '>=', + lte: '<=' +} + +export function operatorSearch(operator){ + return (operatorMap[operator]) ? operatorMap[operator] : '=='; +} diff --git a/Tomoe/Core/src/server/src/util/respond.js b/Tomoe/Core/src/server/src/util/respond.js new file mode 100644 index 0000000..e53f83f --- /dev/null +++ b/Tomoe/Core/src/server/src/util/respond.js @@ -0,0 +1,7 @@ +export function respond(data, meta = {}, statusCode = 200){ + return { + statusCode: statusCode, + meta: meta, + results: data + } +} diff --git a/Tomoe/Core/src/server/src/util/set-search-param.js b/Tomoe/Core/src/server/src/util/set-search-param.js new file mode 100644 index 0000000..da6e0e3 --- /dev/null +++ b/Tomoe/Core/src/server/src/util/set-search-param.js @@ -0,0 +1,13 @@ +import Joi from 'joi' + +export function setSearchParam(user){ + + let param = {} + if(Joi.validate(user, Joi.string().email().required()).error){ + param.id = user; + } else { + param.email = user; + } + + return param; +} diff --git a/Tomoe/Core/src/server/src/util/transform-data.js b/Tomoe/Core/src/server/src/util/transform-data.js new file mode 100644 index 0000000..161dcd3 --- /dev/null +++ b/Tomoe/Core/src/server/src/util/transform-data.js @@ -0,0 +1,12 @@ +const transformMap = { + data: function(value){ + return value + }, + number: function(value){ + return parseFloat(value) + }, +} + +export function transformData(operator, value){ + return (transformMap[operator]) ? transformMap[operator](value) : transformMap['data'](value); +} diff --git a/Tomoe/Core/src/server/src/validators/admin.js b/Tomoe/Core/src/server/src/validators/admin.js new file mode 100644 index 0000000..a8c755f --- /dev/null +++ b/Tomoe/Core/src/server/src/validators/admin.js @@ -0,0 +1,23 @@ +import Joi from 'joi'; + +export const adminValidators = { + postAdmin: { + payload: { + email: Joi.string().required().email(), + password: Joi.string().min(6).required(), + confirmPassword: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'and password must match' } } }), + name: Joi.string().required(), + permissions: Joi.any().valid(TOMOE_CONFIG.adminPermissions) + } + }, + validateAdmin: { + payload: { + password: Joi.string().required() + } + }, + updateAdminPermissions: { + payload: { + permissions: Joi.any().valid(TOMOE_CONFIG.adminPermissions).required() + } + }, +} diff --git a/Tomoe/Core/src/server/src/validators/index.js b/Tomoe/Core/src/server/src/validators/index.js new file mode 100644 index 0000000..7e7afea --- /dev/null +++ b/Tomoe/Core/src/server/src/validators/index.js @@ -0,0 +1,2 @@ +export * from './admin' +export * from './volunteer' diff --git a/Tomoe/Core/src/server/src/validators/volunteer.js b/Tomoe/Core/src/server/src/validators/volunteer.js new file mode 100644 index 0000000..1a19876 --- /dev/null +++ b/Tomoe/Core/src/server/src/validators/volunteer.js @@ -0,0 +1,36 @@ +import Joi from 'joi'; + + +export const volunteerValidators = { + postVolunteer: { + failAction: require('relish')({ + stripQuotes: true, + messages: { + 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.volunteerStatuses.join(', '), + } + }).failAction, + payload: { + email: Joi.string().required().email(), + name: Joi.string(), + details: Joi.object(), + availability: Joi.string(), + status: Joi.any().valid(TOMOE_CONFIG.volunteerStatuses) + } + }, + validateVolunteer: { + payload: { + password: Joi.string().required() + } + }, + updateVolunteerStatus: { + failAction: require('relish')({ + stripQuotes: true, + messages: { + 'status': 'Please only enter the following statuses: ' + TOMOE_CONFIG.volunteerStatuses.join(', '), + } + }).failAction, + payload: { + status: Joi.any().valid(TOMOE_CONFIG.volunteerStatuses).required() + } + }, +} diff --git a/Tomoe/Core/src/server/tests/after.spec.js b/Tomoe/Core/src/server/tests/after.spec.js new file mode 100644 index 0000000..94ad678 --- /dev/null +++ b/Tomoe/Core/src/server/tests/after.spec.js @@ -0,0 +1,7 @@ +// this file is only for clean-up mocha tests + +import { server } from '../src/server'; + +after(() => { + server.stop(); +}) diff --git a/Tomoe/Core/src/server/tests/collections/Admin.spec.js b/Tomoe/Core/src/server/tests/collections/Admin.spec.js new file mode 100644 index 0000000..b29353d --- /dev/null +++ b/Tomoe/Core/src/server/tests/collections/Admin.spec.js @@ -0,0 +1,39 @@ +import { assert } from 'chai'; +import { Admin } from '../../src/collections'; +import { sampleAdmin } from '../constants' +import { clearDocuments } from '../util' + +describe('Admin', () => { + let sampleAdminData; + let testAdmin; + + beforeEach((done) => { + // create a user + sampleAdminData = new sampleAdmin(); + testAdmin = new Admin(sampleAdminData); + + testAdmin.save().then((user) => { + done(); + }).catch((err) => { + done(err); + }); + }); + + + + describe('#constructor', () => { + it('accesss the Admin class', () => { + assert.equal(testAdmin.permissions, sampleAdminData.permissions); + }); + }); + + afterEach((done) => { + // delete any created admins!! + clearDocuments(db.collection('admin')).then(() => { + done(); + }).catch((err) => { + done(err); + }); + }); + +}); diff --git a/Tomoe/Core/src/server/tests/collections/Hacker.spec.js b/Tomoe/Core/src/server/tests/collections/Hacker.spec.js new file mode 100644 index 0000000..0fbabed --- /dev/null +++ b/Tomoe/Core/src/server/tests/collections/Hacker.spec.js @@ -0,0 +1,79 @@ +import { assert } from 'chai'; +import { Hacker } from '../../src/collections'; +import { sampleHacker } from '../constants' +import { clearDocuments } from '../util' + +describe('Hacker', () => { + let sampleHackerData; + let testHacker; + + beforeEach((done) => { + // create a user + sampleHackerData = new sampleHacker(); + testHacker = new Hacker(sampleHackerData); + + testHacker.save().then((user) => { + done(); + }).catch((err) => { + done(err); + }); + }); + + describe('#constructor', () => { + it('accesss the Hacker class', () => { + testHacker.setPassword(sampleHackerData.tempPassword); + + assert.include(testHacker.email, sampleHackerData.email); + }); + }); + + describe('#query', () => { + it('can query hackers with data inside of objects inside documents', (done) => { + const params = [ + { + root: 'details', + option: 'age', + data: sampleHackerData.details.age + } + ] + + Hacker.query(params).then((users) => { + assert.equal(users[0].details.age, params[0].data); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can query hackers with data inside of objects inside documents and normal values', (done) => { + const params = [ + { + root: 'details', + option: 'age', + data: sampleHackerData.details.age + }, + { + root: 'name', + data: sampleHackerData.name + } + ] + + Hacker.query(params).then((users) => { + assert.equal(users[0].details.age, params[0].data); + done(); + }).catch((err) => { + done(err); + }); + }); + }); + + afterEach((done) => { + // delete any created users!! + clearDocuments(db.collection('hacker')).then(() => { + done(); + }).catch((err) => { + done(err); + }); + }); + +}); diff --git a/Tomoe/Core/src/server/tests/collections/Volunteer.spec.js b/Tomoe/Core/src/server/tests/collections/Volunteer.spec.js new file mode 100644 index 0000000..eb1c32b --- /dev/null +++ b/Tomoe/Core/src/server/tests/collections/Volunteer.spec.js @@ -0,0 +1,79 @@ +import { assert } from 'chai'; +import { Volunteer } from '../../src/collections'; +import { sampleVolunteer } from '../constants' +import { clearDocuments } from '../util' + +describe('Volunteer', () => { + let sampleVolunteerData; + let testVolunteer; + + beforeEach((done) => { + // create a user + sampleVolunteerData = new sampleVolunteer(); + testVolunteer = new Volunteer(sampleVolunteerData); + + testVolunteer.save().then((user) => { + done(); + }).catch((err) => { + done(err); + }); + }); + + describe('#constructor', () => { + it('accesss the Volunteer class', () => { + testVolunteer.setPassword(sampleVolunteerData.tempPassword); + + assert.include(testVolunteer.email, sampleVolunteerData.email); + }); + }); + + describe('#query', () => { + it('can query volunteers with data inside of objects inside documents', (done) => { + const params = [ + { + root: 'details', + option: 'age', + data: sampleVolunteerData.details.age + } + ] + + Volunteer.query(params).then((users) => { + assert.equal(users[0].details.age, params[0].data); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can query volunteers with data inside of objects inside documents and normal values', (done) => { + const params = [ + { + root: 'details', + option: 'age', + data: sampleVolunteerData.details.age + }, + { + root: 'name', + data: sampleVolunteerData.name + } + ] + + Volunteer.query(params).then((users) => { + assert.equal(users[0].details.age, params[0].data); + done(); + }).catch((err) => { + done(err); + }); + }); + }); + + afterEach((done) => { + // delete any created users!! + clearDocuments(db.collection('volunteer')).then(() => { + done(); + }).catch((err) => { + done(err); + }); + }); + +}); diff --git a/Tomoe/Core/src/server/tests/collections/user.spec.js b/Tomoe/Core/src/server/tests/collections/user.spec.js new file mode 100644 index 0000000..4323d5d --- /dev/null +++ b/Tomoe/Core/src/server/tests/collections/user.spec.js @@ -0,0 +1,317 @@ +import { assert } from 'chai'; +import { User } from '../../src/collections'; +import { sampleUser, sampleUser2 } from '../constants' +import { clearDocuments } from '../util' + +describe('User', () => { + let sampleUserData; + let sampleUserData2; + let testUser; + let testUser2; + let userId; + + beforeEach((done) => { + // create a user + sampleUserData = new sampleUser(); + sampleUserData2 = new sampleUser2(); + testUser = new User(sampleUserData); + testUser2 = new User(sampleUserData2); + + testUser.save().then((user) => { + userId = user.id; + done(); + }).catch((err) => { + done(err); + }); + }); + + describe('#constructor', () => { + const sampleUserData = new sampleUser(); + + it('access the User class', () => { + const testUser = new User({ name: sampleUserData.name}); + assert.equal(testUser.name, sampleUserData.name); + }); + }); + + describe('#setEmail', () => { + const sampleUserData = new sampleUser(); + const testUser = new User({ name: sampleUserData.name} ); + + it('sets a user email', () => { + testUser.setEmail(sampleUserData.email); + + assert.equal(testUser.email, sampleUserData.email); + }); + }); + + describe('#setPassword', () => { + const sampleUserData = new sampleUser(); + const testUser = new User({ name: sampleUserData.name} ); + + it('sets a temporary password', () => { + testUser.setEmail(sampleUserData.email); + testUser.setPassword(sampleUserData.tempPassword); + + assert.equal(testUser.tempPassword, sampleUserData.tempPassword); + }); + }); + + describe('#confirmPassword', () => { + const sampleUserData = new sampleUser(); + const testUser = new User(sampleUserData); + + it('can confirm a password ', () => { + const confirmStatus = testUser.confirmPassword(sampleUserData.tempPassword); + + assert.equal(confirmStatus, true); + }); + }); + + describe('#save', () => { + it('can save a user to a database ', (done) => { + testUser2.save().then((user) => { + assert.equal(testUser2.name, sampleUserData2.name); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can prevent overwriting an existing user ', (done) => { + testUser.save().then((user) => { + done('A user was created somehow!'); + }).catch((err) => { + assert.equal('user exists with the provided email', err.message); + done(); + }); + }); + }); + + describe('#find', () => { + it('can find an existing user with email', (done) => { + User.find({email: sampleUserData.email}).then((user) => { + assert.equal(user.name, sampleUserData.name); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can find an existing user with id ', (done) => { + User.find({id: userId}).then((user) => { + assert.equal(user.name, sampleUserData.name); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can report an error if no user email or id is provided', (done) => { + User.find().then((user) => { + done('This should not happen'); + }).catch((err) => { + assert.equal('id or email is required', err.message); + done(); + }); + }); + + it('can tell you it cannot find a user via an email search', (done) => { + User.find({email: 'blah'}).then((user) => { + done('This should not happen'); + }).catch((err) => { + assert.equal('no user exists with provided email', err.message); + done(); + }); + }); + + it('can tell you it cannot find a user via an id search', (done) => { + User.find({id: 'blah'}).then((user) => { + done('This should not happen'); + }).catch((err) => { + assert.equal('no user exists with provided id', err.message); + done(); + }); + }); + }); + + describe('#_modifyUserObject', () => { + const originalData = { + data: "b", + data2: { + next: { + internal: true, + souwu: true + }, + next2: 'test2', + next3: ['one', 'two'] + }, + data3: 'test3', + } + + const modify = { + data: "b", + data2: { + next: { + internal: false, + }, + next2: 'test2', + next3: ['one', 'two', 'three'] + }, + data3: '$delete', + } + + const modifiedData = { + data: "b", + data2: { + next: { + internal: false, + souwu: true, + }, + next2: 'test2', + next3: ['one', 'two', 'three'] + } + } + + it('update a user object', () => { + const finalData = User._modifyUserObject(modify, originalData, false); + assert.equal(JSON.stringify(modifiedData), JSON.stringify(finalData)); + }); + }); + + + + describe('#update', () => { + it('can not update a user if that user does not exists', (done) => { + testUser.id = 'blah'; + testUser.update().then(() => { + done('This should not happen'); + }).catch((err) => { + assert.equal('no user exists with provided id', err.message); + done(); + }); + }); + + it('can update your user account', (done) => { + testUser.id = userId; + sampleUserData.name = sampleUserData.newName; + testUser.setName(sampleUserData.name); + testUser.update().then((user) => { + assert.equal(user.name, sampleUserData.name); + done(); + }).catch((err) => { + done(err); + }); + }); + }); + + describe('#query', () => { + it('can return a list of users', (done) => { + User.query().then((users) => { + assert.equal(users.length, 1); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can return a list of users based on a query', (done) => { + const params = [ + { + root: 'email', + data: sampleUserData.email + } + ] + + User.query(params).then((users) => { + assert.equal(users[0].email, params[0].data); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can return a list of users based on multiple queries', (done) => { + const params = [ + { + root: 'email', + data: sampleUserData.email + }, + { + root: 'name', + data: sampleUserData.name + } + ] + + User.query(params).then((users) => { + assert.equal(users[0].email, params[0].data); + done(); + }).catch((err) => { + done(err); + }); + }); + + it('can return an empty list of users', (done) => { + const params = [ + { + root: 'email', + data: 'blah' + } + ] + + User.query(params).then((users) => { + assert.equal(users.length, 0); + done() + }).catch((err) => { + + done(err); + }); + }); + }); + + describe('#validate', () => { + it('can notify if you are not validated', (done) => { + testUser.setPassword('blah'); + testUser.validate().then(() => { + done('This should not happen'); + }).catch((err) => { + assert.equal('password is incorrect', err.message); + done(); + }); + }); + + it('can validate your user account (login operation)', (done) => { + testUser.setPassword(sampleUserData.tempPassword); + testUser.validate().then((user) => { + assert.equal(user.name, sampleUserData.name); + done(); + }).catch((err) => { + done(err); + }); + }); + }); + + describe('#remove', () => { + it('can remove a user', (done) => { + testUser.remove().then(() => { + User.find({ email: testUser.email }).then((user) => { + done('Should not be found'); + }).catch((err) => { + assert.equal('no user exists with provided email', err.message); + done(); + }); + }).catch((err) => { + done(err); + }); + }); + }); + + afterEach((done) => { + // delete any created users!! + clearDocuments(db.collection('user-test')).then(() => { + done(); + }).catch((err) => { + done(err); + }); + }); +}); diff --git a/Tomoe/Core/src/server/tests/constants.js b/Tomoe/Core/src/server/tests/constants.js new file mode 100644 index 0000000..a134f31 --- /dev/null +++ b/Tomoe/Core/src/server/tests/constants.js @@ -0,0 +1,114 @@ +export class sampleUser{ + constructor(){ + return { + name: 'Shubham Naik', + email: 'shub@hackmerced.com', + tempPassword: 'testing2', + newName: 'Shubham D Naik', + permissions: 'rw', + details: { + age: 20 + } + } + } +} + +export class sampleUser2{ + constructor(){ + return { + name: 'Jan Tanja', + email: 'jan@hackmerced.com', + tempPassword: 'testing3', + permissions: 'rw', + details: { + age: 20 + } + } + } +} + +export class sampleHacker{ + constructor(){ + return { + name: 'Steven Dinh', + email: 'steven@hackmerced.com', + password: 'testing3', + confirmPassword: 'testing3', + status: 'applied', + details: { + age: 20 + } + } + } +} + + +export class sampleHacker2{ + constructor(){ + return { + name: 'Deo Halili', + email: 'deo@hackmerced.com', + password: 'testing3', + confirmPassword: 'testing3', + status: 'applied', + details: { + age: 20 + } + } + } +} + +export class sampleAdmin{ + constructor(){ + return { + name: 'Kevin Ta', + email: 'kevin@hackmerced.com', + password: 'testing3', + confirmPassword: 'testing3', + permissions: 'read' + } + } +} + + +export class sampleAdmin2{ + constructor(){ + return { + name: 'Sophie Vo', + email: 'sophie@hackmerced.com', + password: 'testing4', + confirmPassword: 'testing4', + permissions: 'read' + } + } +} + + +export class sampleVolunteer{ + constructor(){ + return { + name: 'Mark Santiago', + email: 'mark@hackmerced.com', + availability: 'all', + status: 'denied', + details: { + age: 21, + } + } + } +} + + +export class sampleVolunteer2{ + constructor(){ + return { + name: 'Mimi Pomephimkham', + email: 'mimi@hackmerced.com', + availability: 'all', + status: 'applied', + details: { + age: 21, + } + } + } +} diff --git a/Tomoe/Core/src/server/tests/routes/admin.spec.js b/Tomoe/Core/src/server/tests/routes/admin.spec.js new file mode 100644 index 0000000..9f2dd4f --- /dev/null +++ b/Tomoe/Core/src/server/tests/routes/admin.spec.js @@ -0,0 +1,351 @@ +import Chai from 'chai'; +import ChaiHttp from 'chai-http'; +import { assert } from 'chai'; + +import { aql } from 'arangojs'; + +import { server } from '../../src/server'; +import { Admin } from '../../src/collections'; +import { sampleAdmin, sampleAdmin2 } from '../constants' +import { clearDocuments } from '../util' + +Chai.use(ChaiHttp); +const mockServer = Chai.request(server.listener) +const should = Chai.should(); + +describe('route: admin', () => { + let sampleAdminData; + let sampleAdminData2; + let testAdmin; + let testAdmin2; + let adminId; + + beforeEach((done) => { + // create a user + sampleAdminData = new sampleAdmin(); + sampleAdminData2 = new sampleAdmin2(); + + testAdmin = new Admin(sampleAdminData); + testAdmin2 = new Admin(sampleAdminData2); + + testAdmin.setPassword(sampleAdminData.password); + testAdmin.save().then((user) => { + adminId = user.id; + done(); + }).catch((err) => { + done(err); + }); + }); + + describe('GET /admins', () => { + it('it should GET all admins', (done) => { + mockServer + .get('/admins') + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('array'); + res.body.results.length.should.be.eql(1); + + done(); + }); + }); + + it('it should GET an empty list of admins', (done) => { + mockServer + .get('/admins?details.number.age=99') + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('array'); + res.body.results.length.should.be.eql(0); + + done(); + }); + }); + + it('it should GET a list of admins from a query', (done) => { + mockServer + .get('/admins?permissions=read') + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('array'); + res.body.results.length.should.be.eql(1); + + done(); + }); + }); + }); + + describe('GET /admins/{user}', () => { + it('it should GET a admin from an email', (done) => { + mockServer + .get('/admins/' + sampleAdminData.email) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleAdminData.name, res.body.results.name); + + done(); + }); + }); + + it('it should GET a admin an id', (done) => { + mockServer + .get('/admins/' + adminId) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleAdminData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 404 if admin is not found', (done) => { + mockServer + .get('/admins/' + 'blah@gmail.com') + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + }); + + describe('POST /admins', () => { + it('it should not make a admin when an email is not provided', (done) => { + delete sampleAdminData.email; + + mockServer + .post('/admins') + .send(sampleAdminData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('email is required', res.body.message); + done(); + }); + }); + + it('it should not make a admin when a password is not provided', (done) => { + delete sampleAdminData.password; + + mockServer + .post('/admins') + .send(sampleAdminData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('password is required, confirmPassword and password must match', res.body.message); + done(); + }); + }); + + it('it should not make a admin when a confirmed password is not provided', (done) => { + delete sampleAdminData.confirmPassword; + + mockServer + .post('/admins') + .send(sampleAdminData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('confirmPassword is required', res.body.message); + done(); + }); + }); + + it('it should not make a admin with matching passwords', (done) => { + sampleAdminData.confirmPassword = 'blah'; + + mockServer + .post('/admins') + .send(sampleAdminData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('confirmPassword and password must match', res.body.message); + done(); + }); + }); + + it('it should create a admin', (done) => { + mockServer + .post('/admins') + .send(sampleAdminData2) + .end((err, res) => { + res.should.have.status(201); + res.body.results.should.be.a('object'); + assert.equal(res.body.results.name, sampleAdminData2.name); + + db.query( aql` + FOR user IN admin + RETURN user + `).then((cursor) => { + cursor.all().then((users) => { + done(); + }).catch((err) => { + done(err); + }); + }).catch(err => { + done(err); + }) + }); + }); + }); + + describe('POST /admins/{user}', () => { + it('it should update a admin from an email', (done) => { + mockServer + .post('/admins/' + sampleAdminData.email) + .send({name: 'blah'}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal('blah', res.body.results.name); + + done(); + }); + }); + + it('it should update a admin from an id', (done) => { + mockServer + .post('/admins/' + adminId) + .send({ name: sampleAdminData.name }) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleAdminData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 404 if user is not found', (done) => { + mockServer + .post('/admins/' + 'blah@gmail.com') + .send() + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + }); + + describe('POST /admins/{user}/validate', () => { + it('it should validate a admin from an email', (done) => { + mockServer + .post('/admins/' + sampleAdminData.email + '/validate') + .send({ password: sampleAdminData.password }) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleAdminData.name, res.body.results.name); + + done(); + }); + }); + + it('it should validate a admin from an id', (done) => { + mockServer + .post('/admins/' + adminId + '/validate') + .send({ password: sampleAdminData.password }) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleAdminData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 403 if user is not validated', (done) => { + mockServer + .post('/admins/' + sampleAdminData.email + '/validate') + .send({ password: 'blah' }) + .end((err, res) => { + res.should.have.status(401); + assert.equal('password is incorrect', res.body.message); + done(); + }); + }); + + it('it return GET a 400 if user has not send a password', (done) => { + mockServer + .post('/admins/' + sampleAdminData.email + '/validate') + .send({}) + .end((err, res) => { + res.should.have.status(400); + assert.equal('password is required', res.body.message); + done(); + }); + }); + }); + + describe('/POST admins/{user}/permissions', () => { + it('it should update a admin permission from an email', (done) => { + sampleAdminData.permissions = TOMOE_CONFIG.adminPermissions[0]; + + mockServer + .post('/admins/' + sampleAdminData.email + '/permissions') + .send({permissions: sampleAdminData.permissions}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleAdminData.permissions, res.body.results.permissions); + + done(); + }); + }); + + it('it should update a admin permission from an id', (done) => { + sampleAdminData.permissions = TOMOE_CONFIG.adminPermissions[1]; + + mockServer + .post('/admins/' + adminId + '/permissions') + .send({permissions: sampleAdminData.permissions}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleAdminData.permissions, res.body.results.permissions); + + done(); + }); + }); + + + it('it return GET a 404 if user is not found', (done) => { + mockServer + .post('/admins/' + 'blah@gmail.com' + '/permissions') + .send({permissions: sampleAdminData.permissions}) + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + + it('it return an error if an invalid permission is entered', (done) => { + sampleAdminData.permissions = 'blah'; + + mockServer + .post('/admins/' + sampleAdminData.email + '/permissions') + .send({permissions: sampleAdminData.permissions}) + .end((err, res) => { + res.should.have.status(400); + assert.equal('Please only enter the following permissions: ' + TOMOE_CONFIG.adminPermissions.join(', '), res.body.message); + done(); + }); + }); + }); + + afterEach((done) => { + // delete any created users!! + clearDocuments(db.collection('admin')).then(() => { + done(); + }).catch((err) => { + done(err); + }); + }); + +}); diff --git a/Tomoe/Core/src/server/tests/routes/hacker.spec.js b/Tomoe/Core/src/server/tests/routes/hacker.spec.js new file mode 100644 index 0000000..7edf078 --- /dev/null +++ b/Tomoe/Core/src/server/tests/routes/hacker.spec.js @@ -0,0 +1,341 @@ +import Chai from 'chai'; +import ChaiHttp from 'chai-http'; +import { assert } from 'chai'; + +import { aql } from 'arangojs'; + +import { server } from '../../src/server'; +import { Hacker } from '../../src/collections'; +import { sampleHacker, sampleHacker2 } from '../constants' +import { clearDocuments } from '../util' + +Chai.use(ChaiHttp); +const mockServer = Chai.request(server.listener) +const should = Chai.should(); + +describe('route: hacker', () => { + let sampleHackerData; + let sampleHackerData2; + let testHacker; + let testHacker2; + let hackerId; + + beforeEach((done) => { + // create a user + sampleHackerData = new sampleHacker(); + sampleHackerData2 = new sampleHacker2(); + + testHacker = new Hacker(sampleHackerData); + testHacker2 = new Hacker(sampleHackerData2); + + testHacker.setPassword(sampleHackerData.password); + testHacker.save().then((user) => { + hackerId = user.id; + done(); + }).catch((err) => { + done(err); + }); + }); + + describe('GET /hackers', () => { + it('it should GET all hackers', (done) => { + mockServer + .get('/hackers') + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('array'); + res.body.results.length.should.be.eql(1); + + done(); + }); + }); + + it('it should GET an empty list of hackers', (done) => { + mockServer + .get('/hackers?details.number.age=99') + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('array'); + res.body.results.length.should.be.eql(0); + + done(); + }); + }); + + }); + + describe('GET /hackers/{user}', () => { + it('it should GET a hacker from an email', (done) => { + mockServer + .get('/hackers/' + sampleHackerData.email) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleHackerData.name, res.body.results.name); + + done(); + }); + }); + + it('it should GET a hacker an id', (done) => { + mockServer + .get('/hackers/' + hackerId) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleHackerData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 404 if user is not found', (done) => { + mockServer + .get('/hackers/' + 'blah@gmail.com') + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + }); + + describe('POST /hackers', () => { + it('it should not make a hacker when an email is not provided', (done) => { + delete sampleHackerData.email; + + mockServer + .post('/hackers') + .send(sampleHackerData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('email is required', res.body.message); + done(); + }); + }); + + it('it should not make a hacker when a password is not provided', (done) => { + delete sampleHackerData.password; + + mockServer + .post('/hackers') + .send(sampleHackerData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('password is required, confirmPassword and password must match', res.body.message); + done(); + }); + }); + + it('it should not make a hacker when a confirmed password is not provided', (done) => { + delete sampleHackerData.confirmPassword; + + mockServer + .post('/hackers') + .send(sampleHackerData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('confirmPassword is required', res.body.message); + done(); + }); + }); + + it('it should not make a hacker with matching passwords', (done) => { + sampleHackerData.confirmPassword = 'blah'; + + mockServer + .post('/hackers') + .send(sampleHackerData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('confirmPassword and password must match', res.body.message); + done(); + }); + }); + + it('it should create a hacker', (done) => { + mockServer + .post('/hackers') + .send(sampleHackerData2) + .end((err, res) => { + res.should.have.status(201); + res.body.results.should.be.a('object'); + assert.equal(res.body.results.name, sampleHackerData2.name); + + db.query( aql` + FOR user IN hacker + RETURN user + `).then((cursor) => { + cursor.all().then((users) => { + done(); + }).catch((err) => { + done(err); + }); + }).catch(err => { + done(err); + }) + }); + }); + }); + + describe('POST /hackers/{user}', () => { + it('it should update a hacker from an email', (done) => { + mockServer + .post('/hackers/' + sampleHackerData.email) + .send({name: 'blah'}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal('blah', res.body.results.name); + + done(); + }); + }); + + it('it should update a hacker from an id', (done) => { + mockServer + .post('/hackers/' + hackerId) + .send({ name: sampleHackerData.name }) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleHackerData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 404 if user is not found', (done) => { + mockServer + .post('/hackers/' + 'blah@gmail.com') + .send() + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + }); + + describe('POST /hackers/{user}/validate', () => { + it('it should validate a hacker from an email', (done) => { + mockServer + .post('/hackers/' + sampleHackerData.email + '/validate') + .send({ password: sampleHackerData.password }) + .end((err, res) => { + + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleHackerData.name, res.body.results.name); + + done(); + }); + }); + + it('it should validate a hacker from an id', (done) => { + mockServer + .post('/hackers/' + hackerId + '/validate') + .send({ password: sampleHackerData.password }) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleHackerData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 403 if user is not validated', (done) => { + mockServer + .post('/hackers/' + sampleHackerData.email + '/validate') + .send({ password: 'blah' }) + .end((err, res) => { + res.should.have.status(401); + assert.equal('password is incorrect', res.body.message); + done(); + }); + }); + + it('it return GET a 400 if user has not send a password', (done) => { + mockServer + .post('/hackers/' + sampleHackerData.email + '/validate') + .send({}) + .end((err, res) => { + res.should.have.status(400); + assert.equal('password is required', res.body.message); + done(); + }); + }); + }); + + describe('POST /hackers/{user}/status', () => { + it('it should update a hacker status from an email', (done) => { + sampleHackerData.status = TOMOE_CONFIG.hackerStatuses[1]; + + mockServer + .post('/hackers/' + sampleHackerData.email + '/status') + .send({status: sampleHackerData.status}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleHackerData.status, res.body.results.status); + + done(); + }); + }); + + it('it should update a hacker status from an id', (done) => { + sampleHackerData.status = TOMOE_CONFIG.hackerStatuses[2]; + + mockServer + .post('/hackers/' + hackerId + '/status') + .send({status: sampleHackerData.status}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleHackerData.status, res.body.results.status); + + done(); + }); + }); + + it('it return GET a 404 if user is not found', (done) => { + sampleHackerData.status = TOMOE_CONFIG.hackerStatuses[2]; + + mockServer + .post('/hackers/' + 'blah@gmail.com' + '/status') + .send({status: sampleHackerData.status}) + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + + it('it return an error if an invalid status is entered', (done) => { + sampleHackerData.status = 'blah'; + + mockServer + .post('/hackers/' + sampleHackerData.email + '/status') + .send({status: sampleHackerData.status}) + .end((err, res) => { + res.should.have.status(400); + assert.equal('Please only enter the following statuses: ' + TOMOE_CONFIG.hackerStatuses.join(', '), res.body.message); + done(); + }); + }); + }); + + afterEach((done) => { + // delete any created users!! + clearDocuments(db.collection('hacker')).then(() => { + done(); + }).catch((err) => { + done(err); + }); + }); +}); diff --git a/Tomoe/Core/src/server/tests/routes/volunteer.spec.js b/Tomoe/Core/src/server/tests/routes/volunteer.spec.js new file mode 100644 index 0000000..84e4aaa --- /dev/null +++ b/Tomoe/Core/src/server/tests/routes/volunteer.spec.js @@ -0,0 +1,247 @@ +import Chai from 'chai'; +import ChaiHttp from 'chai-http'; +import { assert } from 'chai'; + +import { aql } from 'arangojs'; + +import { server } from '../../src/server'; +import { Volunteer } from '../../src/collections'; +import { sampleVolunteer, sampleVolunteer2 } from '../constants' +import { clearDocuments } from '../util' + +Chai.use(ChaiHttp); +const mockServer = Chai.request(server.listener) +const should = Chai.should(); + +describe('route: volunteer', () => { + let sampleVolunteerData; + let sampleVolunteerData2; + let testVolunteer; + let testVolunteer2; + let volunteerId; + + beforeEach((done) => { + // create a user + sampleVolunteerData = new sampleVolunteer(); + sampleVolunteerData2 = new sampleVolunteer2(); + + testVolunteer = new Volunteer(sampleVolunteerData); + testVolunteer2 = new Volunteer(sampleVolunteerData2); + + testVolunteer.setPassword(sampleVolunteerData.password); + testVolunteer.save().then((user) => { + volunteerId = user.id; + done(); + }).catch((err) => { + done(err); + }); + }); + + describe('GET /volunteers', () => { + it('it should GET all volunteers', (done) => { + mockServer + .get('/volunteers') + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('array'); + res.body.results.length.should.be.eql(1); + + done(); + }); + }); + + it('it should GET an empty list of volunteers', (done) => { + mockServer + .get('/volunteers?details.number.age=99') + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('array'); + res.body.results.length.should.be.eql(0); + + done(); + }); + }); + + }); + + describe('GET /volunteers/{user}', () => { + it('it should GET a volunteer from an email', (done) => { + mockServer + .get('/volunteers/' + sampleVolunteerData.email) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleVolunteerData.name, res.body.results.name); + + done(); + }); + }); + + it('it should GET a volunteer an id', (done) => { + mockServer + .get('/volunteers/' + volunteerId) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleVolunteerData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 404 if user is not found', (done) => { + mockServer + .get('/volunteers/' + 'blah@gmail.com') + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + }); + + describe('POST /volunteers', () => { + it('it should not make a volunteer when an email is not provided', (done) => { + delete sampleVolunteerData.email; + + mockServer + .post('/volunteers') + .send(sampleVolunteerData) + .end((err, res) => { + res.should.have.status(400); + res.body.should.be.a('object'); + assert.equal('email is required', res.body.message); + done(); + }); + }); + + it('it should create a volunteer', (done) => { + mockServer + .post('/volunteers') + .send(sampleVolunteerData2) + .end((err, res) => { + res.should.have.status(201); + res.body.results.should.be.a('object'); + assert.equal(res.body.results.name, sampleVolunteerData2.name); + + db.query( aql` + FOR user IN volunteer + RETURN user + `).then((cursor) => { + cursor.all().then((users) => { + done(); + }).catch((err) => { + done(err); + }); + }).catch(err => { + done(err); + }) + }); + }); + }); + + describe('POST /volunteers/{user}', () => { + it('it should update a volunteer from an email', (done) => { + mockServer + .post('/volunteers/' + sampleVolunteerData.email) + .send({name: 'blah'}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal('blah', res.body.results.name); + + done(); + }); + }); + + it('it should update a volunteer from an id', (done) => { + mockServer + .post('/volunteers/' + volunteerId) + .send({ name: sampleVolunteerData.name }) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleVolunteerData.name, res.body.results.name); + + done(); + }); + }); + + + it('it return GET a 404 if user is not found', (done) => { + mockServer + .post('/volunteers/' + 'blah@gmail.com') + .send() + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + }); + + describe('POST /volunteers/{user}/status', () => { + it('it should update a volunteer status from an email', (done) => { + sampleVolunteerData.status = TOMOE_CONFIG.volunteerStatuses[1]; + + mockServer + .post('/volunteers/' + sampleVolunteerData.email + '/status') + .send({status: sampleVolunteerData.status}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleVolunteerData.status, res.body.results.status); + + done(); + }); + }); + + it('it should update a volunteer status from an id', (done) => { + sampleVolunteerData.status = TOMOE_CONFIG.volunteerStatuses[2]; + + mockServer + .post('/volunteers/' + volunteerId + '/status') + .send({status: sampleVolunteerData.status}) + .end((err, res) => { + res.should.have.status(200); + res.body.results.should.be.a('object'); + assert.equal(sampleVolunteerData.status, res.body.results.status); + + done(); + }); + }); + + it('it return GET a 404 if user is not found', (done) => { + sampleVolunteerData.status = TOMOE_CONFIG.volunteerStatuses[2]; + + mockServer + .post('/volunteers/' + 'blah@gmail.com' + '/status') + .send({status: sampleVolunteerData.status}) + .end((err, res) => { + res.should.have.status(404); + done(); + }); + }); + + it('it return an error if an invalid status is entered', (done) => { + sampleVolunteerData.status = 'blah'; + + mockServer + .post('/volunteers/' + sampleVolunteerData.email + '/status') + .send({status: sampleVolunteerData.status}) + .end((err, res) => { + res.should.have.status(400); + assert.equal('Please only enter the following statuses: ' + TOMOE_CONFIG.volunteerStatuses.join(', '), res.body.message); + done(); + }); + }); + }); + + afterEach((done) => { + // delete any created users!! + clearDocuments(db.collection('volunteer')).then(() => { + done(); + }).catch((err) => { + done(err); + }); + }); +}); diff --git a/Tomoe/Core/src/server/tests/util/clear-documents.js b/Tomoe/Core/src/server/tests/util/clear-documents.js new file mode 100644 index 0000000..62830fc --- /dev/null +++ b/Tomoe/Core/src/server/tests/util/clear-documents.js @@ -0,0 +1,14 @@ +import { aql } from 'arangojs'; + +export function clearDocuments(collection){ + return new Promise((resolve, reject) => { + const removeQuery = aql`FOR u in ${collection} + REMOVE u IN ${collection}` + + db.query(removeQuery).then((meta) => { + resolve() + }).catch((err) => { + reject(err); + }) + }) +} diff --git a/Tomoe/Core/src/server/tests/util/index.js b/Tomoe/Core/src/server/tests/util/index.js new file mode 100644 index 0000000..59e3df5 --- /dev/null +++ b/Tomoe/Core/src/server/tests/util/index.js @@ -0,0 +1 @@ +export * from './clear-documents'; diff --git a/Tomoe/Core/yarn.lock b/Tomoe/Core/yarn.lock new file mode 100755 index 0000000..9859630 --- /dev/null +++ b/Tomoe/Core/yarn.lock @@ -0,0 +1,7300 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1, abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +accept@2.x.x: + version "2.1.4" + resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.4.tgz#887af54ceee5c7f4430461971ec400c61d09acbb" + dependencies: + boom "5.x.x" + hoek "4.x.x" + +accepts@1.3.3, accepts@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" + +acorn@^5.0.0, acorn@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + +ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ammo@2.x.x: + version "2.0.4" + resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.4.tgz#bf80aab211698ea78f63ef5e7f113dd5d9e8917f" + dependencies: + boom "5.x.x" + hoek "4.x.x" + +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + +arangojs@^5.4.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/arangojs/-/arangojs-5.6.1.tgz#c51ca877f9d24e0796877528ca82cbecdb279c42" + dependencies: + es6-error "^4.0.1" + http-errors "^1.6.1" + linkedlist "^1.0.1" + multi-part "^2.0.0" + retry "^0.10.0" + utf8-length "^0.0.1" + xhr "^2.3.1" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +argv@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" + +asn1.js@^4.0.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assertion-error@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" + +assertion-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + +async@1.x, async@^1.4.0, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.2, async@^2.1.5: + version "2.4.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" + dependencies: + lodash "^4.14.0" + +async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +b64@3.x.x: + version "3.0.2" + resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.2.tgz#7a9d60466adf7b8de114cbdf651a5fdfcc90894d" + +babel-cli@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" + dependencies: + babel-core "^6.24.1" + babel-polyfill "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^7.0.0" + lodash "^4.2.0" + output-file-sync "^1.1.0" + path-is-absolute "^1.0.0" + slash "^1.0.0" + source-map "^0.5.0" + v8flags "^2.0.10" + optionalDependencies: + chokidar "^1.6.1" + +babel-code-frame@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-7.0.0-alpha.15.tgz#381d3e06e17b73201129c4a019e8b62d84e2dde3" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-core@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-alpha.15.tgz#4c5e608b3de921dbfea68f7ca196d297931acb23" + dependencies: + babel-code-frame "7.0.0-alpha.15" + babel-generator "7.0.0-alpha.15" + babel-helpers "7.0.0-alpha.15" + babel-messages "7.0.0-alpha.15" + babel-template "7.0.0-alpha.15" + babel-traverse "7.0.0-alpha.15" + babel-types "7.0.0-alpha.15" + babylon "7.0.0-beta.15" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + micromatch "^2.3.11" + resolve "^1.3.2" + source-map "^0.5.0" + +babel-core@^6.1.4, babel-core@^6.24.1, babel-core@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" + dependencies: + babel-code-frame "^6.22.0" + babel-generator "^6.25.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.25.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-eslint@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" + dependencies: + babel-code-frame "^6.22.0" + babel-traverse "^6.23.1" + babel-types "^6.23.0" + babylon "^6.17.0" + +babel-generator@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-7.0.0-alpha.15.tgz#27884018a9cc8300e20497cad17c4bc1f416a9fc" + dependencies: + babel-messages "7.0.0-alpha.15" + babel-types "7.0.0-alpha.15" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-generator@^6.18.0, babel-generator@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.25.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + esutils "^2.0.0" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-7.0.0-alpha.15.tgz#087bb6bb6677acde36b3c19f6bc1afedb3d12e30" + dependencies: + babel-helper-get-function-arity "7.0.0-alpha.15" + babel-template "7.0.0-alpha.15" + babel-traverse "7.0.0-alpha.15" + babel-types "7.0.0-alpha.15" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-alpha.15.tgz#17e93206d0b625c3122f4c674478cbed53281f24" + dependencies: + babel-types "7.0.0-alpha.15" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-7.0.0-alpha.15.tgz#60e08a396d7ce79104dd2da4651a61e625468ebe" + dependencies: + babel-template "7.0.0-alpha.15" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-istanbul@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/babel-istanbul/-/babel-istanbul-0.12.2.tgz#e723f07c9a2432d88055520bc22e75f5c239161c" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + multi-glob "^1.0.1" + nopt "3.x" + object-assign "^4.0.1" + once "1.x" + resolve "^1.1.0" + source-map "0.4.x" + supports-color "3.1.x" + which "1.2.x" + wordwrap "1.0.x" + +babel-loader@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.0.0.tgz#2e43a66bee1fff4470533d0402c8a4532fafbaf7" + dependencies: + find-cache-dir "^0.1.1" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-7.0.0-alpha.15.tgz#97991d32d86a2130aff08fa75a16cfc5acad9e42" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-istanbul@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" + dependencies: + find-up "^2.1.0" + istanbul-lib-instrument "^1.7.2" + test-exclude "^4.1.1" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-display-name@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-self@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-source@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" + dependencies: + regenerator-transform "0.9.11" + +babel-plugin-transform-runtime@^6.15.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-preset-env@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.4.0.tgz#c8e02a3bcc7792f23cded68e0355b9d4c28f0f7a" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^1.4.0" + invariant "^2.2.2" + +babel-preset-es2015@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-flow@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" + dependencies: + babel-plugin-transform-flow-strip-types "^6.22.0" + +babel-preset-react@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" + dependencies: + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-react-display-name "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" + babel-preset-flow "^6.23.0" + +babel-register@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-7.0.0-alpha.15.tgz#2f5cc86c29eab9fbb003aa88426d5e279e053f38" + dependencies: + babel-core "7.0.0-alpha.15" + core-js "^2.4.0" + find-cache-dir "^0.1.1" + home-or-tmp "^3.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + pirates "^3.0.1" + source-map-support "^0.4.2" + +babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" + dependencies: + babel-core "^6.24.1" + babel-runtime "^6.22.0" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-template@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-alpha.15.tgz#08b56562987c9893bbd6646bce4819074ba1cf90" + dependencies: + babel-traverse "7.0.0-alpha.15" + babel-types "7.0.0-alpha.15" + babylon "7.0.0-beta.13" + lodash "^4.2.0" + +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" + lodash "^4.2.0" + +babel-traverse@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-7.0.0-alpha.15.tgz#d7af52cb8ee6e0867b778da17166e6f01498b11a" + dependencies: + babel-code-frame "7.0.0-alpha.15" + babel-helper-function-name "7.0.0-alpha.15" + babel-messages "7.0.0-alpha.15" + babel-types "7.0.0-alpha.15" + babylon "7.0.0-beta.15" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.25.0" + babylon "^6.17.2" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@7.0.0-alpha.15: + version "7.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-alpha.15.tgz#e4021e6a432e906678dfc6cc89805ba3234f9f48" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" + dependencies: + babel-runtime "^6.22.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@7.0.0-beta.13: + version "7.0.0-beta.13" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.13.tgz#12425c1bfd9498be419021ed36b43fe4f0289c0a" + +babylon@7.0.0-beta.15: + version "7.0.0-beta.15" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.15.tgz#410348bcd21af470a55abea9698c9c651d87f1c6" + +babylon@^6.17.0, babylon@^6.17.2, babylon@^6.17.4: + version "6.17.4" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^0.4.1, balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64-js@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + +base64url@2.0.0, base64url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + +binary-extensions@^1.0.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.3.0, bluebird@^3.4.7: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + +body-parser@^1.15.2, body-parser@^1.16.1: + version "1.17.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" + dependencies: + bytes "2.4.0" + content-type "~1.0.2" + debug "2.6.1" + depd "~1.1.0" + http-errors "~1.6.1" + iconv-lite "0.4.15" + on-finished "~2.3.0" + qs "6.4.0" + raw-body "~2.2.0" + type-is "~1.6.14" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boom@3.x.x: + version "3.2.2" + resolved "https://registry.yarnpkg.com/boom/-/boom-3.2.2.tgz#0f0cc5d04adc5003b8c7d71f42cca7271fef0e78" + dependencies: + hoek "4.x.x" + +boom@5.x.x, boom@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.1.0.tgz#0308fa8e924cd6d42d9c3bf4883bdc98f0e71df8" + dependencies: + hoek "4.x.x" + +boxen@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^1.0.0" + +brace-expansion@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + dependencies: + buffer-xor "^1.0.2" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + inherits "^2.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserslist@^1.3.6, browserslist@^1.4.0, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +bytes@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" + +bytes@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + +caching-transform@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" + dependencies: + md5-hex "^1.2.0" + mkdirp "^0.5.1" + write-file-atomic "^1.1.4" + +call@4.x.x: + version "4.0.2" + resolved "https://registry.yarnpkg.com/call/-/call-4.0.2.tgz#df76f5f51ee8dd48b856ac8400f7e69e6d7399c4" + dependencies: + boom "5.x.x" + hoek "4.x.x" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000670" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000670.tgz#90d33b79e3090e25829c311113c56d6b1788bf43" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +catbox-memory@2.x.x: + version "2.0.4" + resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5" + dependencies: + hoek "4.x.x" + +catbox@7.x.x: + version "7.1.4" + resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.4.tgz#8a950ed18b64ba8088c1ae132e85c58479d2b6cc" + dependencies: + boom "5.x.x" + hoek "4.x.x" + joi "10.x.x" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai-as-promised@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6" + dependencies: + check-error "^1.0.2" + +chai-enzyme@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/chai-enzyme/-/chai-enzyme-0.6.1.tgz#585c963c6ea1331446efd12ee8391e807d758620" + dependencies: + html "^1.0.0" + react-element-to-jsx-string "^5.0.0" + +chai-http@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chai-http/-/chai-http-3.0.0.tgz#5460d8036e1f1a12b0b5b5cbd529e6dc1d31eb4b" + dependencies: + cookiejar "2.0.x" + is-ip "1.0.0" + methods "^1.1.2" + qs "^6.2.0" + superagent "^2.0.0" + +chai-nightwatch@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz#1ca56de768d3c0868fe7fc2f4d32c2fe894e6be9" + dependencies: + assertion-error "1.0.0" + deep-eql "0.1.3" + +chai-things@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/chai-things/-/chai-things-0.2.0.tgz#c55128378f9bb399e994f00052151984ed6ebe70" + +chai@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" + dependencies: + assertion-error "^1.0.1" + deep-eql "^0.1.3" + type-detect "^1.0.0" + +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + +cheerio@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash.assignin "^4.0.9" + lodash.bind "^4.1.4" + lodash.defaults "^4.0.1" + lodash.filter "^4.4.0" + lodash.flatten "^4.2.0" + lodash.foreach "^4.3.0" + lodash.map "^4.4.0" + lodash.merge "^4.4.0" + lodash.pick "^4.2.1" + lodash.reduce "^4.4.0" + lodash.reject "^4.4.0" + lodash.some "^4.4.0" + +chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.1, chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" + dependencies: + inherits "^2.0.1" + +circular-json@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + +clap@^1.0.9: + version "1.1.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.3.tgz#b3bd36e93dd4cbfb395a3c26896352445265c05b" + dependencies: + chalk "^1.1.3" + +clean-css@4.1.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.2.tgz#6029aea30b1d9520a968a3caee0dabb1184e353a" + dependencies: + source-map "0.5.x" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +codecov@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/codecov/-/codecov-2.2.0.tgz#2d06817ceb8891eca6368836d4fb6bf6cc04ffd1" + dependencies: + argv "0.0.2" + request "2.79.0" + urlgrey "0.4.4" + +collapse-white-space@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.2.tgz#9c463fb9c6d190d2dcae21a356a01bcae9eeef6d" + +color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@^1.1.0, colors@^1.1.2, colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + dependencies: + lodash "^4.5.0" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@2.9.0, commander@2.9.x, commander@^2.8.1, commander@^2.9.0, commander@~2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.1, component-emitter@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +compressible@~2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" + dependencies: + mime-db ">= 1.27.0 < 2" + +compression@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" + dependencies: + accepts "~1.3.3" + bytes "2.3.0" + compressible "~2.0.8" + debug "~2.2.0" + on-headers "~1.0.1" + vary "~1.1.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +concat-stream@^1.4.7, concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + +connect@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.1.tgz#b7760693a74f0454face1d9378edb3f885b43227" + dependencies: + debug "2.6.3" + finalhandler "1.0.1" + parseurl "~1.3.1" + utils-merge "1.0.0" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + +content-type@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" + +content@3.x.x: + version "3.0.4" + resolved "https://registry.yarnpkg.com/content/-/content-3.0.4.tgz#ca3dde04480f12519b71526ec44bd488ddfb3fef" + dependencies: + boom "5.x.x" + +convert-hex@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/convert-hex/-/convert-hex-0.1.0.tgz#08c04568922c27776b8a2e81a95d393362ea0b65" + +convert-source-map@^1.1.0, convert-source-map@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +convert-string@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/convert-string/-/convert-string-0.1.0.tgz#79ce41a9bb0d03bcf72cdc6a8f3c56fbbc64410a" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +cookiejar@2.0.x, cookiejar@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.0.6.tgz#0abf356ad00d1c5a219d88d44518046dd026acfe" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.2.0, core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-class@^15.5.1: + version "15.5.3" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.5.3.tgz#fb0f7cae79339e9a179e194ef466efa3923820fe" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-env@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.0.0.tgz#565ccae4d09676441a5087f406fe7661a29c931b" + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^4, cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +crypto-browserify@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-loader@^0.28.1: + version "0.28.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.1.tgz#220325599f8f00452d9ceb4c3ca6c8a66798642d" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.7.0" + cssnano ">=2.6.1 <4" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + postcss-value-parser "^3.3.0" + source-list-map "^0.1.7" + +css-select@^1.1.0, css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +dateformat@^1.0.6: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + +debug-log@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@2.2.0, debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + dependencies: + ms "0.7.2" + +debug@2.6.1, debug@^2.1.1, debug@^2.2.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" + dependencies: + ms "0.7.2" + +debug@2.6.3, debug@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" + dependencies: + ms "0.7.2" + +debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-eql@0.1.3, deep-eql@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + dependencies: + type-detect "0.1.1" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.0, depd@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +diff@3.2.0, diff@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dirty-chai@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/dirty-chai/-/dirty-chai-1.2.2.tgz#78495e619635f7fe44219aa4c837849bf183142e" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0, dom-serializer@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domhandler@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1, domutils@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ecdsa-sig-formatter@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1" + dependencies: + base64url "^2.0.0" + safe-buffer "^5.0.1" + +editions@^1.1.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.3.tgz#0907101bdda20fac3cbe334c27cbd0688dc99a5b" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +electron-to-chromium@^1.2.7: + version "1.3.10" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.10.tgz#63d62b785471f0d8dda85199d64579de8a449f08" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.2" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.2" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + dependencies: + after "0.8.2" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.7" + wtf-8 "1.0.0" + +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.2" + +enhanced-resolve@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.5" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +enzyme@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.8.2.tgz#6c8bcb05012abc4aa4bc3213fb23780b9b5b1714" + dependencies: + cheerio "^0.22.0" + function.prototype.name "^1.0.0" + is-subset "^0.1.1" + lodash "^4.17.2" + object-is "^1.0.1" + object.assign "^4.0.4" + object.entries "^1.0.3" + object.values "^1.0.3" + prop-types "^15.5.4" + uuid "^2.0.3" + +errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292" + dependencies: + stackframe "^0.3.1" + +es-abstract@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.18" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.18.tgz#dc239d3dce4c22b9c939aa180878837a3c0b5c92" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-error@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + +es6-promise@~4.0.3: + version "4.0.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@1.8.x, escodegen@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-config-standard-jsx@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642" + +eslint-config-standard-react@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-react/-/eslint-config-standard-react-5.0.0.tgz#64c7b8140172852be810a53d48ee87649ff178e3" + dependencies: + eslint-config-standard-jsx "^4.0.0" + +eslint-config-standard@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" + +eslint-import-resolver-node@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c" + dependencies: + debug "^2.2.0" + object-assign "^4.0.1" + resolve "^1.1.6" + +eslint-module-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz#a6f8c21d901358759cdc35dbac1982ae1ee58bce" + dependencies: + debug "2.2.0" + pkg-dir "^1.0.0" + +eslint-plugin-babel@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.1.tgz#ef285c87039b67beb3bbd227f5b0eed4fb376b87" + +eslint-plugin-import@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.2.0" + doctrine "1.5.0" + eslint-import-resolver-node "^0.2.0" + eslint-module-utils "^2.0.0" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + pkg-up "^1.0.0" + +eslint-plugin-node@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-4.2.2.tgz#82959ca9aed79fcbd28bb1b188d05cac04fb3363" + dependencies: + ignore "^3.0.11" + minimatch "^3.0.2" + object-assign "^4.0.1" + resolve "^1.1.7" + semver "5.3.0" + +eslint-plugin-promise@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" + +eslint-plugin-react@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.0.1.tgz#e78107e1e559c6e2b17786bb67c2e2a010ad0d2f" + dependencies: + doctrine "^2.0.0" + has "^1.0.1" + jsx-ast-utils "^1.3.4" + +eslint-plugin-standard@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" + +eslint@^3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.5.2" + debug "^2.1.1" + doctrine "^2.0.0" + escope "^3.6.0" + espree "^3.4.0" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.14.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~2.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" + dependencies: + acorn "^5.0.1" + acorn-jsx "^3.0.0" + +esprima@2.7.x, esprima@^2.1.0, esprima@^2.6.0, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +event-stream@~3.3.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" + dependencies: + create-hash "^1.1.1" + +execa@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" + dependencies: + cross-spawn "^4.0.0" + get-stream "^2.2.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@^3.0.0, extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extract-text-webpack-plugin@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159" + dependencies: + ajv "^4.11.2" + async "^2.1.2" + loader-utils "^1.0.2" + webpack-sources "^0.1.0" + +extract-zip@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" + dependencies: + concat-stream "1.5.0" + debug "0.7.4" + mkdirp "0.5.0" + yauzl "2.4.1" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +fbjs@^0.8.4, fbjs@^0.8.9: + version "0.8.12" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figlet@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-loader@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.1.tgz#6b328ee1234a729e4e47d36375dd6d35c0e1db84" + dependencies: + loader-utils "^1.0.2" + +file-type@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" + dependencies: + debug "2.6.3" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.1" + statuses "~1.3.1" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-each@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" + dependencies: + is-function "~1.0.0" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.3, for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +foreground-child@^1.5.3, foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@1.0.0-rc4: + version "1.0.0-rc4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.0-rc4.tgz#05ac6bc22227b43e4461f488161554699d4f8b5e" + dependencies: + async "^1.5.2" + combined-stream "^1.0.5" + mime-types "^2.1.10" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +formatio@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" + dependencies: + samsam "1.x" + +formidable@^1.0.17: + version "1.1.1" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + +fs-extra@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-extra@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +function.prototype.name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.0.tgz#5f523ca64e491a5f95aba80cc1e391080a14482e" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.0" + is-callable "^1.1.2" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" + dependencies: + globule "^1.0.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@5.x, glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +globals@^9.0.0, globals@^9.14.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globule@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" + dependencies: + glob "~7.1.1" + lodash "~4.16.4" + minimatch "~3.0.2" + +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +handlebars@^4.0.1, handlebars@^4.0.3: + version "4.0.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.8.tgz#22b875cd3f0e6cbea30314f144e82bc7a72ff420" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +hapi-auth-jwt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hapi-auth-jwt/-/hapi-auth-jwt-4.0.0.tgz#ca1a0dda86aec97ea83b184dfdff57c13236b9ae" + dependencies: + boom "3.x.x" + hoek "3.x.x" + jsonwebtoken "5.x.x" + +hapi@^16.4.3: + version "16.4.3" + resolved "https://registry.yarnpkg.com/hapi/-/hapi-16.4.3.tgz#be4daaf2dcdbee97957ce503061b09765078aa05" + dependencies: + accept "2.x.x" + ammo "2.x.x" + boom "5.x.x" + call "4.x.x" + catbox "7.x.x" + catbox-memory "2.x.x" + cryptiles "3.x.x" + heavy "4.x.x" + hoek "4.x.x" + iron "4.x.x" + items "2.x.x" + joi "10.x.x" + mimos "3.x.x" + podium "1.x.x" + shot "3.x.x" + statehood "5.x.x" + subtext "4.x.x" + topo "2.x.x" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.0.1" + +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" + dependencies: + inherits "^2.0.1" + +hasha@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +heavy@4.x.x: + version "4.0.4" + resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.4.tgz#36c91336c00ccfe852caa4d153086335cd2f00e9" + dependencies: + boom "5.x.x" + hoek "4.x.x" + joi "10.x.x" + +history@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c" + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + query-string "^4.2.2" + warning "^3.0.0" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hoek@3.x.x: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-3.0.4.tgz#268adff66bb6695c69b4789a88b1e0847c3f3123" + +hoek@4.x.x: + version "4.1.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.1.1.tgz#9cc573ffba2b7b408fb5e9c2a13796be94cddce9" + +hoek@~4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.0.2.tgz#7b969f4c8a1af8a38ca2c666c66bfa6c42fe2cdd" + +hoist-non-react-statics@^1.0.3, hoist-non-react-statics@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +home-or-tmp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" + +hosted-git-info@^2.1.4: + version "2.4.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +html-dnd@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/html-dnd/-/html-dnd-1.2.0.tgz#00b4407c13b9eb27c8c39f5761cd3ab5b6477e3d" + dependencies: + multiline "^1.0.2" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +html-minifier@^3.2.3: + version "3.5.0" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.0.tgz#98be1b18f87443592722f654e67a1541f22018cb" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.9.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.0.x" + +html-webpack-plugin@^2.24.1: + version "2.28.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + +html@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/html/-/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" + dependencies: + concat-stream "^1.4.7" + +htmlparser2@^3.9.1: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-errors@^1.6.1, http-errors@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" + dependencies: + depd "1.1.0" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-proxy@^1.13.0: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +iconv-lite@0.4.15, iconv-lite@~0.4.13: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + +icss-replace-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + +ignore@^3.0.11, ignore@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.0.tgz#3812d22cbe9125f2c2b4915755a1b8abd745a001" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ip-regex@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" + +iron@4.x.x: + version "4.0.5" + resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.5.tgz#4f042cceb8b9738f346b59aa734c83a89bc31428" + dependencies: + boom "5.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.2, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-function@^1.0.1, is-function@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-ip@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-1.0.0.tgz#2bb6959f797ccd6f9fdc812758bcbc87c4c59074" + dependencies: + ip-regex "^1.0.0" + +is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-plain-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.1.tgz#4d7ca539bc9db9b737b8acb612f2318ef92f294f" + dependencies: + isobject "^1.0.0" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regex@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isbinaryfile@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + +isemail@2.x.x: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isparta@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isparta/-/isparta-4.0.0.tgz#1de91996f480b22dcb1aca8510255bae1574446e" + dependencies: + babel-core "^6.1.4" + escodegen "^1.6.1" + esprima "^2.1.0" + istanbul "^0.4.0" + mkdirp "^0.5.0" + nomnomnomnom "^2.0.0" + object-assign "^4.0.1" + source-map "^0.5.0" + which "^1.0.9" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" + +istanbul-lib-hook@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.7.3: + version "1.7.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz#e9fd920e4767f3d19edc765e2d6b3f5ccbd0eea8" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.17.4" + istanbul-lib-coverage "^1.1.1" + semver "^5.3.0" + +istanbul-lib-report@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" + dependencies: + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" + dependencies: + debug "^2.6.3" + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" + dependencies: + handlebars "^4.0.3" + +istanbul@^0.4.0: + version "0.4.5" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +items@2.x.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +joi@10.x.x, joi@^10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-10.6.0.tgz#52587f02d52b8b75cdb0c74f0b164a191a0e1fc2" + dependencies: + hoek "4.x.x" + isemail "2.x.x" + items "2.x.x" + topo "2.x.x" + +js-base64@^2.1.8, js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-tokens@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + +js-yaml@3.x, js-yaml@^3.5.1: + version "3.8.4" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsonwebtoken@5.x.x: + version "5.7.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-5.7.0.tgz#1c90f9a86ce5b748f5f979c12b70402b4afcddb4" + dependencies: + jws "^3.0.0" + ms "^0.7.1" + xtend "^4.0.1" + +jsprim@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + dependencies: + assert-plus "1.0.0" + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +jsx-ast-utils@^1.3.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" + +jwa@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5" + dependencies: + base64url "2.0.0" + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.9" + safe-buffer "^5.0.1" + +jws@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2" + dependencies: + base64url "^2.0.0" + jwa "^1.1.4" + safe-buffer "^5.0.1" + +karma-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6" + dependencies: + dateformat "^1.0.6" + istanbul "^0.4.0" + lodash "^3.8.0" + minimatch "^3.0.0" + source-map "^0.5.1" + +karma-mocha-reporter@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20" + dependencies: + chalk "1.1.3" + +karma-mocha@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" + dependencies: + minimist "1.2.0" + +karma-phantomjs-launcher@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" + dependencies: + lodash "^4.0.1" + phantomjs-prebuilt "^2.1.7" + +karma-webpack-with-fast-source-maps@^1.10.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/karma-webpack-with-fast-source-maps/-/karma-webpack-with-fast-source-maps-1.10.1.tgz#1676e7e028561016e29691e701b5372fe8cac1e0" + dependencies: + async "~0.9.0" + loader-utils "^0.2.5" + lodash "^3.8.0" + source-map "^0.1.41" + webpack-dev-middleware "^1.0.11" + +karma@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^3.8.0" + log4js "^0.6.31" + mime "^1.3.4" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "1.7.3" + source-map "^0.5.3" + tmp "0.0.31" + useragent "^2.1.12" + +kew@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" + dependencies: + is-buffer "^1.1.5" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +linkedlist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/linkedlist/-/linkedlist-1.0.1.tgz#7b74189bfad6e76367fb5a10f3c36913128b782b" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^0.2.16, loader-utils@^0.2.5: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash-es@^4.2.0, lodash-es@^4.2.1: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + +lodash._createassigner@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" + dependencies: + lodash._bindcallback "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.restparam "^3.0.0" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash.assign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" + dependencies: + lodash._baseassign "^3.0.0" + lodash._createassigner "^3.0.0" + lodash.keys "^3.0.0" + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + +lodash.assignin@^4.0.9: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" + +lodash.bind@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.defaults@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" + dependencies: + lodash.assign "^3.0.0" + lodash.restparam "^3.0.0" + +lodash.defaults@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + +lodash.filter@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" + +lodash.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + +lodash.foreach@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.map@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.merge@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" + +lodash.mergewith@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" + +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + +lodash.reduce@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" + +lodash.reject@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.some@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + +lodash.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@3.x, lodash@^3.8.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lodash@~4.16.4: + version "4.16.6" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" + +log4js@^0.6.31: + version "0.6.38" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" + dependencies: + readable-stream "~1.0.2" + semver "~4.3.3" + +lolex@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +make-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" + dependencies: + pify "^2.3.0" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +md5-hex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" + dependencies: + md5-o-matic "^0.1.1" + +md5-o-matic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-source-map@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + dependencies: + source-map "^0.5.6" + +methods@^1.1.1, methods@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +miller-rabin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.x.x, "mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" + +mime-kind@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-2.0.2.tgz#5a43d5bebdeb082182224d9d263206329e57cdf8" + dependencies: + file-type "^4.3.0" + mime-types "^2.1.15" + +mime-types@^2.1.10, mime-types@^2.1.12, mime-types@^2.1.15, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + dependencies: + mime-db "~1.27.0" + +mime@1.3.x, mime@^1.3.4: + version "1.3.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +mimos@3.x.x: + version "3.0.3" + resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f" + dependencies: + hoek "4.x.x" + mime-db "1.x.x" + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha@^3.2.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.1.tgz#a3802b4aa381934cacb38de70cf771621da8f9af" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.0" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2, ms@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multi-glob@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/multi-glob/-/multi-glob-1.0.1.tgz#e67d2ab4429d27606e6eb4db35094afc91788750" + dependencies: + async "1.x" + glob "5.x" + lodash "3.x" + +multi-part@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/multi-part/-/multi-part-2.0.0.tgz#674f53b432f850cf8cc02d30d21f2064e309563c" + dependencies: + mime-kind "^2.0.1" + +multiline@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/multiline/-/multiline-1.0.2.tgz#69b1f25ff074d2828904f244ddd06b7d96ef6c93" + dependencies: + strip-indent "^1.0.0" + +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +nan@^2.3.0, nan@^2.3.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +nigel@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1" + dependencies: + hoek "4.x.x" + vise "2.x.x" + +no-case@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" + dependencies: + lower-case "^1.1.1" + +node-fetch@^1.0.1: + version "1.6.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-gyp@^3.3.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.1.tgz#19561067ff185464aded478212681f47fd578cbc" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "2" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-libs-browser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.1.4" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.0.5" + stream-browserify "^2.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + +node-pre-gyp@^0.6.29: + version "0.6.34" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-sass@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "^2.79.0" + sass-graph "^2.1.1" + stdout-stream "^1.4.0" + +nodemailer@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.0.1.tgz#b95864b07facee8287e8232effd6f1d56ec75ab2" + +nodemon@^1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d" + dependencies: + chokidar "^1.7.0" + debug "^2.6.8" + es6-promise "^3.3.1" + ignore-by-default "^1.0.1" + lodash.defaults "^3.1.2" + minimatch "^3.0.4" + ps-tree "^1.1.0" + touch "^3.1.0" + undefsafe "0.0.3" + update-notifier "^2.2.0" + +nomnomnomnom@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz#b2239f031c8d04da67e32836e1e3199e12f7a8e2" + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + +"nopt@2 || 3", nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +nyc@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.0.3.tgz#0c28bc669a851621709bf7a08503034bee3812b6" + dependencies: + archy "^1.0.0" + arrify "^1.0.1" + caching-transform "^1.0.0" + convert-source-map "^1.3.0" + debug-log "^1.0.1" + default-require-extensions "^1.0.0" + find-cache-dir "^0.1.1" + find-up "^2.1.0" + foreground-child "^1.5.3" + glob "^7.0.6" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-hook "^1.0.7" + istanbul-lib-instrument "^1.7.3" + istanbul-lib-report "^1.1.1" + istanbul-lib-source-maps "^1.2.1" + istanbul-reports "^1.1.1" + md5-hex "^1.2.0" + merge-source-map "^1.0.2" + micromatch "^2.3.11" + mkdirp "^0.5.0" + resolve-from "^2.0.0" + rimraf "^2.5.4" + signal-exit "^3.0.1" + spawn-wrap "^1.3.7" + test-exclude "^4.1.1" + yargs "^8.0.1" + yargs-parser "^5.0.0" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object-is@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" + +object-keys@^1.0.10, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.assign@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.0" + object-keys "^1.0.10" + +object.entries@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.values@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@1.x, once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" + dependencies: + execa "^0.5.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0, osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-headers@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" + dependencies: + for-each "^0.3.2" + trim "0.0.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + +pbkdf2@^3.0.3: + version "3.0.12" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pez@2.x.x: + version "2.1.5" + resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.5.tgz#5ec2cc62500cc3eb4236d4a414cf5a17b5eb5007" + dependencies: + b64 "3.x.x" + boom "5.x.x" + content "3.x.x" + hoek "4.x.x" + nigel "2.x.x" + +phantomjs-prebuilt@^2.1.14, phantomjs-prebuilt@^2.1.7: + version "2.1.14" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" + dependencies: + es6-promise "~4.0.3" + extract-zip "~1.5.0" + fs-extra "~1.0.0" + hasha "~2.2.0" + kew "~0.7.0" + progress "~1.1.8" + request "~2.79.0" + request-progress "~2.0.1" + which "~1.2.10" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pirates@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-3.0.1.tgz#8a87bf9ab7f58d6c3deee6a1a1c892ffe823811f" + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pkg-up@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" + dependencies: + find-up "^1.0.0" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + +podium@1.x.x: + version "1.2.5" + resolved "https://registry.yarnpkg.com/podium/-/podium-1.2.5.tgz#87c566c2f0365bcf0a1ec7602c4d01948cdd2ad5" + dependencies: + hoek "4.x.x" + items "2.x.x" + joi "10.x.x" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" + dependencies: + postcss "^5.0.4" + +postcss-modules-local-by-default@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-scope@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-values@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" + dependencies: + icss-replace-symbols "^1.0.2" + postcss "^5.0.14" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-error@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.0.tgz#87f4e9d706a24c87d6cbee9fabec001fcf8c75d8" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + +progress@^1.1.8, progress@~1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +promise@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@~15.5.7: + version "15.5.10" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +ps-tree@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + dependencies: + event-stream "~3.3.0" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qjobs@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" + +qs@6.4.0, qs@^6.1.0, qs@^6.2.0, qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + +query-string@^4.1.0, query-string@^4.2.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +randombytes@^2.0.0, randombytes@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + +range-parser@^1.0.3, range-parser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" + dependencies: + bytes "2.4.0" + iconv-lite "0.4.15" + unpipe "1.0.0" + +rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-addons-test-utils@^15.5.1: + version "15.5.1" + resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7" + dependencies: + fbjs "^0.8.4" + object-assign "^4.1.0" + +react-dom@^15.5.4: + version "15.5.4" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "~15.5.7" + +react-element-to-jsx-string@^5.0.0: + version "5.0.7" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-5.0.7.tgz#c663a4800a9c712115c0d8519cb0215a46a1f0f2" + dependencies: + collapse-white-space "^1.0.0" + is-plain-object "^2.0.1" + lodash "^4.17.4" + sortobject "^1.0.0" + stringify-object "2.4.0" + traverse "^0.6.6" + +react-redux@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.4.tgz#1563babadcfb2672f57f9ceaa439fb16bf85d55b" + dependencies: + create-react-class "^15.5.1" + hoist-non-react-statics "^1.0.3" + invariant "^2.0.0" + lodash "^4.2.0" + lodash-es "^4.2.0" + loose-envify "^1.1.0" + prop-types "^15.0.0" + +react-router@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.0.5.tgz#c3b7873758045a8bbc9562aef4ff4bc8cce7c136" + dependencies: + create-react-class "^15.5.1" + history "^3.0.0" + hoist-non-react-statics "^1.2.0" + invariant "^2.2.1" + loose-envify "^1.2.0" + prop-types "^15.5.6" + warning "^3.0.0" + +react-test-renderer@^15.5.4: + version "15.5.4" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.5.4.tgz#d4ebb23f613d685ea8f5390109c2d20fbf7c83bc" + dependencies: + fbjs "^0.8.9" + object-assign "^4.1.0" + +react@^15.5.4: + version "15.5.4" + resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.7" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@1.0, readable-stream@~1.0.2: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: + version "2.2.9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +readline-sync@^1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.7.tgz#001bfdd4c06110c3c084c63bf7c6a56022213f30" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redbox-react@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.3.6.tgz#70314c57c066257eb70b0a24dc794b5cef4f1c4e" + dependencies: + error-stack-parser "^1.3.6" + object-assign "^4.0.1" + prop-types "^15.5.4" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +redux-mock-store@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/redux-mock-store/-/redux-mock-store-1.2.3.tgz#1b3ad299da91cb41ba30d68e3b6f024475fb9e1b" + +redux-thunk@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.2.0.tgz#e615a16e16b47a19a515766133d1e3e99b7852e5" + +redux@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-3.6.0.tgz#887c2b3d0b9bd86eca2be70571c27654c19e188d" + dependencies: + lodash "^4.2.1" + lodash-es "^4.2.1" + loose-envify "^1.1.0" + symbol-observable "^1.0.2" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.0: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-transform@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +relish@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/relish/-/relish-0.2.4.tgz#a2111ba53af480f92a01f72e893cf22961c8512b" + dependencies: + hoek "~4.0.2" + +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request-progress@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request@2, request@2.79.0, request@^2.79.0, request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.1.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + +samsam@1.x, samsam@^1.1.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" + +sass-graph@^2.1.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.3.tgz#2ba9f170f6cafed5b51665abe13cf319c9269c31" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^6.6.0" + +sass-loader@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.5.tgz#a847910f36442aa56c5985879d54eb519e24a328" + dependencies: + async "^2.1.5" + clone-deep "^0.2.4" + loader-utils "^1.0.1" + lodash.tail "^4.1.1" + pify "^2.3.0" + +sax@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + dependencies: + inherits "^2.0.1" + +sha256@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/sha256/-/sha256-0.2.0.tgz#73a0b418daab7035bff86e8491e363412fc2ab05" + dependencies: + convert-hex "~0.1.0" + convert-string "~0.1.0" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@^0.7.5: + version "0.7.7" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shot@3.x.x: + version "3.4.2" + resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.2.tgz#1e5c3f6f2b26649adc42f7eb350214a5a0291d67" + dependencies: + hoek "4.x.x" + joi "10.x.x" + +should-equal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-1.0.1.tgz#0b6e9516f2601a9fb0bb2dcc369afa1c7e200af7" + dependencies: + should-type "^1.0.0" + +should-format@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-1.0.0.tgz#0a30cdab4a3bd1427bbccb8b738567bda7290d78" + dependencies: + should-type "^1.0.0" + +should-type@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + +should@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/should/-/should-9.0.2.tgz#b550f691e71c66788e0e96e9f721d58be6920e5a" + dependencies: + should-equal "^1.0.0" + should-format "^1.0.0" + should-type "^1.0.0" + +signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +sinon-chai@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-2.10.0.tgz#6ab3008bb8cae9929e744d766574b4cf35f34b5b" + +sinon@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.2.0.tgz#3b1b42ff5defcbf51a52a62aca6d61171b9fd262" + dependencies: + diff "^3.1.0" + formatio "1.2.0" + lolex "^1.6.0" + native-promise-only "^0.8.1" + path-to-regexp "^1.7.0" + samsam "^1.1.3" + text-encoding "0.6.4" + type-detect "^4.0.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.3" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" + dependencies: + debug "2.3.3" + engine.io "1.8.3" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.3" + socket.io-parser "2.3.1" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +sortobject@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sortobject/-/sortobject-1.1.1.tgz#4f695d4d44ed0a4c06482c34c2582a2dcdc2ab34" + dependencies: + editions "^1.1.1" + +source-list-map@^0.1.7, source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-list-map@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" + +source-map-support@^0.4.2: + version "0.4.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" + dependencies: + source-map "^0.5.6" + +source-map@0.4.x, source-map@^0.4.2, source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@^0.1.41: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +spawn-wrap@^1.3.7: + version "1.3.8" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" + dependencies: + foreground-child "^1.5.6" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.3.3" + signal-exit "^3.0.2" + which "^1.2.4" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stackframe@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4" + +statehood@5.x.x: + version "5.0.2" + resolved "https://registry.yarnpkg.com/statehood/-/statehood-5.0.2.tgz#c6b3baa16ed8b121d3f09a3ffa85e22195a7f2a9" + dependencies: + boom "5.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + iron "4.x.x" + items "2.x.x" + joi "10.x.x" + +"statuses@>= 1.3.1 < 2", statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stdout-stream@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" + dependencies: + readable-stream "^2.0.1" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-http@^2.3.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.2.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" + dependencies: + buffer-shims "~1.0.0" + +stringify-object@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-2.4.0.tgz#c62d11023eb21fe2d9b087be039a26df3b22a09d" + dependencies: + is-plain-obj "^1.0.0" + is-regexp "^1.0.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.0, strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +style-loader@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.17.0.tgz#e8254bccdb7af74bd58274e36107b4d5ab4df310" + dependencies: + loader-utils "^1.0.2" + +subtext@4.x.x: + version "4.4.1" + resolved "https://registry.yarnpkg.com/subtext/-/subtext-4.4.1.tgz#2fcec945de429283c3d18b151ff0fa1f1b87aec9" + dependencies: + boom "5.x.x" + content "3.x.x" + hoek "4.x.x" + pez "2.x.x" + wreck "12.x.x" + +superagent@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-2.3.0.tgz#703529a0714e57e123959ddefbce193b2e50d115" + dependencies: + component-emitter "^1.2.0" + cookiejar "^2.0.6" + debug "^2.2.0" + extend "^3.0.0" + form-data "1.0.0-rc4" + formidable "^1.0.17" + methods "^1.1.1" + mime "^1.3.4" + qs "^6.1.0" + readable-stream "^2.0.5" + +supports-color@3.1.2, supports-color@3.1.x, supports-color@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.2, supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +symbol-observable@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +tapable@^0.2.5, tapable@~0.2.5: + version "0.2.6" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.0.0, tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + +test-exclude@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +text-encoding@0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +timers-browserify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" + dependencies: + setimmediate "^1.0.4" + +tmp@0.0.31, tmp@0.0.x: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +topo@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" + dependencies: + hoek "4.x.x" + +toposort@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" + +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + dependencies: + nopt "~1.0.10" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +traverse@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + +type-detect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" + +type-detect@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" + +type-is@~1.6.14: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + +typedarray@^0.0.6, typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.9: + version "0.7.12" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" + +uglify-js@3.0.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.6.tgz#17a673f64a78d8807fbda1b4c9ffce114c6febfd" + dependencies: + commander "~2.9.0" + source-map "~0.5.1" + +uglify-js@^2.6, uglify-js@^2.8.5: + version "2.8.26" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.26.tgz#3a1db8ae0a0aba7f92e1ddadadbd0293d549f90e" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +undefsafe@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +update-notifier@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" + dependencies: + boxen "^1.0.0" + chalk "^1.0.0" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +url-loader@^0.5.8: + version "0.5.8" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5" + dependencies: + loader-utils "^1.0.2" + mime "1.3.x" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +urlgrey@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +useragent@^2.1.12: + version "2.1.13" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.13.tgz#bba43e8aa24d5ceb83c2937473e102e21df74c10" + dependencies: + lru-cache "2.2.x" + tmp "0.0.x" + +utf8-length@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/utf8-length/-/utf8-length-0.0.1.tgz#d315c4bed529c977f18dd35c73d72628327d9ada" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +uuid@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0, uuid@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +v8flags@^2.0.10: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vary@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vise@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39" + dependencies: + hoek "4.x.x" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + dependencies: + loose-envify "^1.0.0" + +watchpack@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" + dependencies: + async "^2.1.2" + chokidar "^1.4.3" + graceful-fs "^4.1.2" + +webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.8.4: + version "1.10.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz#2e252ce1dfb020dbda1ccb37df26f30ab014dbd1" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + +webpack-hot-middleware@^2.13.2: + version "2.18.0" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.18.0.tgz#a16bb535b83a6ac94a78ac5ebce4f3059e8274d3" + dependencies: + ansi-html "0.0.7" + html-entities "^1.2.0" + querystring "^0.2.0" + strip-ansi "^3.0.0" + +webpack-sources@^0.1.0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" + dependencies: + source-list-map "~0.1.7" + source-map "~0.5.3" + +webpack-sources@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" + dependencies: + source-list-map "^1.1.1" + source-map "~0.5.3" + +webpack@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.5.1.tgz#61742f0cf8af555b87460a9cd8bba2f1e3ee2fce" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^4.7.0" + ajv-keywords "^1.1.1" + async "^2.1.2" + enhanced-resolve "^3.0.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^0.2.16" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^3.1.0" + tapable "~0.2.5" + uglify-js "^2.8.5" + watchpack "^1.3.1" + webpack-sources "^0.2.3" + yargs "^6.0.0" + +whatwg-fetch@>=0.10.0, whatwg-fetch@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@1, which@1.2.x, which@^1.0.9, which@^1.1.1, which@^1.2.4, which@^1.2.9, which@~1.2.10: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@1.0.x, wordwrap@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +wreck@12.x.x: + version "12.2.2" + resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.2.2.tgz#e21823d34c36d672004eefa347ae8c4f6050e3db" + dependencies: + boom "5.x.x" + hoek "4.x.x" + +write-file-atomic@^1.1.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write-file-atomic@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +ws@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + +xhr@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993" + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + +xtend@^4.0.0, xtend@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^6.0.0, yargs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.1.tgz#420ef75e840c1457a80adcca9bc6fa3849de51aa" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 3efb96968bdeb33ab2eea598eed07b78a922b7a3 Mon Sep 17 00:00:00 2001 From: Shubham Naik Date: Thu, 28 Sep 2017 18:28:02 -0700 Subject: [PATCH 3/3] feature(Tomoe) refactor --- .../src/extensions/administration/config.json | 6 ------ .../src/extensions/admissions/config.json | 3 ++- .../server/{collections => classes}/Hacker.js | 0 .../server/{collections => classes}/index.js | 0 .../admissions/src/server/handlers/hacker.js | 2 +- .../Core/src/extensions/template/config.json | 2 +- .../Core/src/extensions/volunteers/README.md | 1 + .../src/extensions/volunteers/config.json | 7 +++++++ .../importable.js | 0 .../package.json | 4 ++-- .../volunteers/server/classes}/Volunteer.js | 2 +- .../volunteers/server/classes/index.js | 1 + .../volunteers/server/handlers/index.js | 1 + .../volunteers/server}/handlers/volunteer.js | 4 ++-- .../volunteers/server/routes/index.js | 7 +++++++ .../volunteers/server}/routes/volunteer.js | 0 .../volunteers/server/validators/index.js | 1 + .../server}/validators/volunteer.js | 0 Tomoe/Core/src/server/exportable.js | 2 +- .../{collections => classes/generic}/Email.js | 1 - .../src/server/src/classes/generic/Event.js | 19 +++++++++++++++++++ .../{collections => classes/generic}/User.js | 3 ++- .../src/server/src/classes/generic/index.js | 2 ++ Tomoe/Core/src/server/src/classes/index.js | 2 ++ .../{collections => classes/strict}/Admin.js | 2 +- .../src/server/src/classes/strict/index.js | 1 + .../Core/src/server/src/collections/index.js | 3 --- Tomoe/Core/src/server/src/handlers/admin.js | 2 +- Tomoe/Core/src/server/src/handlers/index.js | 1 - Tomoe/Core/src/server/src/routes/index.js | 2 -- .../src/server/src/util/extension-handler.js | 7 ++++++- Tomoe/Core/src/server/src/validators/index.js | 1 - 32 files changed, 62 insertions(+), 27 deletions(-) delete mode 100644 Tomoe/Core/src/extensions/administration/config.json rename Tomoe/Core/src/extensions/admissions/src/server/{collections => classes}/Hacker.js (100%) rename Tomoe/Core/src/extensions/admissions/src/server/{collections => classes}/index.js (100%) create mode 100644 Tomoe/Core/src/extensions/volunteers/README.md create mode 100644 Tomoe/Core/src/extensions/volunteers/config.json rename Tomoe/Core/src/extensions/{administration => volunteers}/importable.js (100%) rename Tomoe/Core/src/extensions/{administration => volunteers}/package.json (68%) rename Tomoe/Core/src/{server/src/collections => extensions/volunteers/server/classes}/Volunteer.js (95%) create mode 100644 Tomoe/Core/src/extensions/volunteers/server/classes/index.js create mode 100644 Tomoe/Core/src/extensions/volunteers/server/handlers/index.js rename Tomoe/Core/src/{server/src => extensions/volunteers/server}/handlers/volunteer.js (97%) create mode 100644 Tomoe/Core/src/extensions/volunteers/server/routes/index.js rename Tomoe/Core/src/{server/src => extensions/volunteers/server}/routes/volunteer.js (100%) create mode 100644 Tomoe/Core/src/extensions/volunteers/server/validators/index.js rename Tomoe/Core/src/{server/src => extensions/volunteers/server}/validators/volunteer.js (100%) rename Tomoe/Core/src/server/src/{collections => classes/generic}/Email.js (96%) create mode 100644 Tomoe/Core/src/server/src/classes/generic/Event.js rename Tomoe/Core/src/server/src/{collections => classes/generic}/User.js (99%) create mode 100644 Tomoe/Core/src/server/src/classes/generic/index.js create mode 100644 Tomoe/Core/src/server/src/classes/index.js rename Tomoe/Core/src/server/src/{collections => classes/strict}/Admin.js (96%) create mode 100644 Tomoe/Core/src/server/src/classes/strict/index.js delete mode 100644 Tomoe/Core/src/server/src/collections/index.js diff --git a/Tomoe/Core/src/extensions/administration/config.json b/Tomoe/Core/src/extensions/administration/config.json deleted file mode 100644 index f2b06c6..0000000 --- a/Tomoe/Core/src/extensions/administration/config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "administration", - "displayName": "Admin", - "injectables": { - } -} diff --git a/Tomoe/Core/src/extensions/admissions/config.json b/Tomoe/Core/src/extensions/admissions/config.json index 1426c1c..b5880a1 100644 --- a/Tomoe/Core/src/extensions/admissions/config.json +++ b/Tomoe/Core/src/extensions/admissions/config.json @@ -3,5 +3,6 @@ "displayName": "Admissions", "injectables": { "routes": "server/routes/index.js" - } + }, + "interface": "sidebar" } diff --git a/Tomoe/Core/src/extensions/admissions/src/server/collections/Hacker.js b/Tomoe/Core/src/extensions/admissions/src/server/classes/Hacker.js similarity index 100% rename from Tomoe/Core/src/extensions/admissions/src/server/collections/Hacker.js rename to Tomoe/Core/src/extensions/admissions/src/server/classes/Hacker.js diff --git a/Tomoe/Core/src/extensions/admissions/src/server/collections/index.js b/Tomoe/Core/src/extensions/admissions/src/server/classes/index.js similarity index 100% rename from Tomoe/Core/src/extensions/admissions/src/server/collections/index.js rename to Tomoe/Core/src/extensions/admissions/src/server/classes/index.js diff --git a/Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js b/Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js index f1c061e..894baa4 100644 --- a/Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js +++ b/Tomoe/Core/src/extensions/admissions/src/server/handlers/hacker.js @@ -1,4 +1,4 @@ -import { Hacker } from '../collections' +import { Hacker } from '../classes' import { operatorSearch, respond, transformData, setSearchParam } from '../../../importable'; import Joi from 'joi'; import Boom from 'boom'; diff --git a/Tomoe/Core/src/extensions/template/config.json b/Tomoe/Core/src/extensions/template/config.json index 8710700..dd15375 100644 --- a/Tomoe/Core/src/extensions/template/config.json +++ b/Tomoe/Core/src/extensions/template/config.json @@ -3,5 +3,5 @@ "displayName": "template", "injectables": { }, - "interface":"sidebar", + "interface": "sidebar" } diff --git a/Tomoe/Core/src/extensions/volunteers/README.md b/Tomoe/Core/src/extensions/volunteers/README.md new file mode 100644 index 0000000..792d600 --- /dev/null +++ b/Tomoe/Core/src/extensions/volunteers/README.md @@ -0,0 +1 @@ +# diff --git a/Tomoe/Core/src/extensions/volunteers/config.json b/Tomoe/Core/src/extensions/volunteers/config.json new file mode 100644 index 0000000..dd15375 --- /dev/null +++ b/Tomoe/Core/src/extensions/volunteers/config.json @@ -0,0 +1,7 @@ +{ + "name": "template", + "displayName": "template", + "injectables": { + }, + "interface": "sidebar" +} diff --git a/Tomoe/Core/src/extensions/administration/importable.js b/Tomoe/Core/src/extensions/volunteers/importable.js similarity index 100% rename from Tomoe/Core/src/extensions/administration/importable.js rename to Tomoe/Core/src/extensions/volunteers/importable.js diff --git a/Tomoe/Core/src/extensions/administration/package.json b/Tomoe/Core/src/extensions/volunteers/package.json similarity index 68% rename from Tomoe/Core/src/extensions/administration/package.json rename to Tomoe/Core/src/extensions/volunteers/package.json index ebc3c01..0291c99 100644 --- a/Tomoe/Core/src/extensions/administration/package.json +++ b/Tomoe/Core/src/extensions/volunteers/package.json @@ -1,7 +1,7 @@ { - "name": "Tomoe-Admin", + "name": "template", "version": "1.0.0", - "description": "Admin utility for Tomoe", + "description": "A template for Tomoe Extensions", "main": " ", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/Tomoe/Core/src/server/src/collections/Volunteer.js b/Tomoe/Core/src/extensions/volunteers/server/classes/Volunteer.js similarity index 95% rename from Tomoe/Core/src/server/src/collections/Volunteer.js rename to Tomoe/Core/src/extensions/volunteers/server/classes/Volunteer.js index 772d38c..bd5fa24 100644 --- a/Tomoe/Core/src/server/src/collections/Volunteer.js +++ b/Tomoe/Core/src/extensions/volunteers/server/classes/Volunteer.js @@ -1,4 +1,4 @@ -import { User } from './'; +import { User } from '../../../importable'; export class Volunteer extends User{ constructor(data = {}){ diff --git a/Tomoe/Core/src/extensions/volunteers/server/classes/index.js b/Tomoe/Core/src/extensions/volunteers/server/classes/index.js new file mode 100644 index 0000000..e409448 --- /dev/null +++ b/Tomoe/Core/src/extensions/volunteers/server/classes/index.js @@ -0,0 +1 @@ +export * from './Volunteer' diff --git a/Tomoe/Core/src/extensions/volunteers/server/handlers/index.js b/Tomoe/Core/src/extensions/volunteers/server/handlers/index.js new file mode 100644 index 0000000..77fcb10 --- /dev/null +++ b/Tomoe/Core/src/extensions/volunteers/server/handlers/index.js @@ -0,0 +1 @@ +export * from './volunteer' diff --git a/Tomoe/Core/src/server/src/handlers/volunteer.js b/Tomoe/Core/src/extensions/volunteers/server/handlers/volunteer.js similarity index 97% rename from Tomoe/Core/src/server/src/handlers/volunteer.js rename to Tomoe/Core/src/extensions/volunteers/server/handlers/volunteer.js index 8c76fa0..41a53be 100644 --- a/Tomoe/Core/src/server/src/handlers/volunteer.js +++ b/Tomoe/Core/src/extensions/volunteers/server/handlers/volunteer.js @@ -1,5 +1,5 @@ -import { Volunteer } from '../collections' -import { operatorSearch, respond, transformData, setSearchParam } from '../util'; +import { Volunteer } from '../classes' +import { operatorSearch, respond, transformData, setSearchParam } from '../../../importable'; import Joi from 'joi'; import Boom from 'boom'; diff --git a/Tomoe/Core/src/extensions/volunteers/server/routes/index.js b/Tomoe/Core/src/extensions/volunteers/server/routes/index.js new file mode 100644 index 0000000..f702b30 --- /dev/null +++ b/Tomoe/Core/src/extensions/volunteers/server/routes/index.js @@ -0,0 +1,7 @@ +import volunteerRoutes from './volunteer'; + +const routes = [ + ...volunteerRoutes, +]; + +export default routes; diff --git a/Tomoe/Core/src/server/src/routes/volunteer.js b/Tomoe/Core/src/extensions/volunteers/server/routes/volunteer.js similarity index 100% rename from Tomoe/Core/src/server/src/routes/volunteer.js rename to Tomoe/Core/src/extensions/volunteers/server/routes/volunteer.js diff --git a/Tomoe/Core/src/extensions/volunteers/server/validators/index.js b/Tomoe/Core/src/extensions/volunteers/server/validators/index.js new file mode 100644 index 0000000..77fcb10 --- /dev/null +++ b/Tomoe/Core/src/extensions/volunteers/server/validators/index.js @@ -0,0 +1 @@ +export * from './volunteer' diff --git a/Tomoe/Core/src/server/src/validators/volunteer.js b/Tomoe/Core/src/extensions/volunteers/server/validators/volunteer.js similarity index 100% rename from Tomoe/Core/src/server/src/validators/volunteer.js rename to Tomoe/Core/src/extensions/volunteers/server/validators/volunteer.js diff --git a/Tomoe/Core/src/server/exportable.js b/Tomoe/Core/src/server/exportable.js index 8087844..ac3e2f4 100644 --- a/Tomoe/Core/src/server/exportable.js +++ b/Tomoe/Core/src/server/exportable.js @@ -1,4 +1,4 @@ // content that can be utilized by extensions -export * from './src/collections'; +export * from './src/classes'; export * from './src/util'; diff --git a/Tomoe/Core/src/server/src/collections/Email.js b/Tomoe/Core/src/server/src/classes/generic/Email.js similarity index 96% rename from Tomoe/Core/src/server/src/collections/Email.js rename to Tomoe/Core/src/server/src/classes/generic/Email.js index 1e856b3..509a6d5 100644 --- a/Tomoe/Core/src/server/src/collections/Email.js +++ b/Tomoe/Core/src/server/src/classes/generic/Email.js @@ -13,7 +13,6 @@ const transporter = nodemailer.createTransport({ export class Email { constructor(data = {}){ - super(data); } diff --git a/Tomoe/Core/src/server/src/classes/generic/Event.js b/Tomoe/Core/src/server/src/classes/generic/Event.js new file mode 100644 index 0000000..3329cc5 --- /dev/null +++ b/Tomoe/Core/src/server/src/classes/generic/Event.js @@ -0,0 +1,19 @@ +import uuidv4 from 'uuid/v4' + +export class Event { + constructor({ id = uuidv4(), date = null }){ + this.id = id; + this.date = date; + } + + static getCollection(){ + return db.collection('event'); + } + + _get(){ + return { + id: this.id, + date: this.date, + } + } +} diff --git a/Tomoe/Core/src/server/src/collections/User.js b/Tomoe/Core/src/server/src/classes/generic/User.js similarity index 99% rename from Tomoe/Core/src/server/src/collections/User.js rename to Tomoe/Core/src/server/src/classes/generic/User.js index 9ccd071..f59317a 100644 --- a/Tomoe/Core/src/server/src/collections/User.js +++ b/Tomoe/Core/src/server/src/classes/generic/User.js @@ -1,9 +1,10 @@ import { aql } from 'arangojs'; +import { Tomoe } from './'; import uuidv4 from 'uuid/v4' import sha256 from 'sha256'; import Boom from 'boom'; -export class User{ +export class User { constructor(data = {}){ // user information this.id = data.id || uuidv4(); diff --git a/Tomoe/Core/src/server/src/classes/generic/index.js b/Tomoe/Core/src/server/src/classes/generic/index.js new file mode 100644 index 0000000..c6e37b2 --- /dev/null +++ b/Tomoe/Core/src/server/src/classes/generic/index.js @@ -0,0 +1,2 @@ +export * from './User'; +export * from './Event'; diff --git a/Tomoe/Core/src/server/src/classes/index.js b/Tomoe/Core/src/server/src/classes/index.js new file mode 100644 index 0000000..480e2d0 --- /dev/null +++ b/Tomoe/Core/src/server/src/classes/index.js @@ -0,0 +1,2 @@ +export * from './generic'; +export * from './strict'; diff --git a/Tomoe/Core/src/server/src/collections/Admin.js b/Tomoe/Core/src/server/src/classes/strict/Admin.js similarity index 96% rename from Tomoe/Core/src/server/src/collections/Admin.js rename to Tomoe/Core/src/server/src/classes/strict/Admin.js index 12d3fc9..7ecc1e0 100644 --- a/Tomoe/Core/src/server/src/collections/Admin.js +++ b/Tomoe/Core/src/server/src/classes/strict/Admin.js @@ -1,4 +1,4 @@ -import { User } from './'; +import { User } from '../'; export class Admin extends User{ constructor(data = {}){ diff --git a/Tomoe/Core/src/server/src/classes/strict/index.js b/Tomoe/Core/src/server/src/classes/strict/index.js new file mode 100644 index 0000000..c956a8f --- /dev/null +++ b/Tomoe/Core/src/server/src/classes/strict/index.js @@ -0,0 +1 @@ +export * from './Admin'; diff --git a/Tomoe/Core/src/server/src/collections/index.js b/Tomoe/Core/src/server/src/collections/index.js deleted file mode 100644 index 04dbfb3..0000000 --- a/Tomoe/Core/src/server/src/collections/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './User'; -export * from './Admin'; -export * from './Volunteer'; diff --git a/Tomoe/Core/src/server/src/handlers/admin.js b/Tomoe/Core/src/server/src/handlers/admin.js index da3df63..21b9deb 100644 --- a/Tomoe/Core/src/server/src/handlers/admin.js +++ b/Tomoe/Core/src/server/src/handlers/admin.js @@ -1,4 +1,4 @@ -import { Admin } from '../collections' +import { Admin } from '../classes' import { operatorSearch, respond, transformData, setSearchParam } from '../util'; import Joi from 'joi'; import Boom from 'boom'; diff --git a/Tomoe/Core/src/server/src/handlers/index.js b/Tomoe/Core/src/server/src/handlers/index.js index 7e7afea..e9c8561 100644 --- a/Tomoe/Core/src/server/src/handlers/index.js +++ b/Tomoe/Core/src/server/src/handlers/index.js @@ -1,2 +1 @@ export * from './admin' -export * from './volunteer' diff --git a/Tomoe/Core/src/server/src/routes/index.js b/Tomoe/Core/src/server/src/routes/index.js index 97937b8..8c82d1a 100644 --- a/Tomoe/Core/src/server/src/routes/index.js +++ b/Tomoe/Core/src/server/src/routes/index.js @@ -1,11 +1,9 @@ import adminRoutes from './admin'; -import volunteerRoutes from './volunteer'; import { getExtensionContent } from '../util'; const routes = [ ...adminRoutes, - ...volunteerRoutes, ...getExtensionContent('routes'), ]; diff --git a/Tomoe/Core/src/server/src/util/extension-handler.js b/Tomoe/Core/src/server/src/util/extension-handler.js index fd910ef..f6ea5c2 100644 --- a/Tomoe/Core/src/server/src/util/extension-handler.js +++ b/Tomoe/Core/src/server/src/util/extension-handler.js @@ -4,6 +4,11 @@ const EXTENSION_ROOT = '../../../extensions'; export function getExtensionContent(extensionType){ return extensions.map((extName) => { const extRoute = require(`${EXTENSION_ROOT}/${extName}/config.json`).injectables[extensionType]; - return require(`${EXTENSION_ROOT}/${extName}/src/${extRoute}`).default; + + if(extRoute) { + return require(`${EXTENSION_ROOT}/${extName}/src/${extRoute}`).default; + } + + return null; }); }; diff --git a/Tomoe/Core/src/server/src/validators/index.js b/Tomoe/Core/src/server/src/validators/index.js index 7e7afea..e9c8561 100644 --- a/Tomoe/Core/src/server/src/validators/index.js +++ b/Tomoe/Core/src/server/src/validators/index.js @@ -1,2 +1 @@ export * from './admin' -export * from './volunteer'