From c6ce220a8014d2226da29bbef5438f9fd4601ab7 Mon Sep 17 00:00:00 2001 From: Stephan Classen Date: Tue, 28 Apr 2020 14:43:35 +0200 Subject: [PATCH 1/3] setup gradle build for downloading and installing node/npm --- .gitignore | 17 ++- build.gradle | 45 ++++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58694 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 183 +++++++++++++++++++++++ gradlew.bat | 103 +++++++++++++ 6 files changed, 351 insertions(+), 2 deletions(-) create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat diff --git a/.gitignore b/.gitignore index 594c315..bbfce7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,23 @@ .DS_Store -.idea +# Idea +.idea/ *iml -.nyc_output/ +# Gradle +.gradle +.gradletasknamecache +build/ +dist/ + +# Javascript +node/ node_modules/ +dist/ +dev/ coverage/ +.nyc_output/ .stryker-tmp/ reports/ + +npm-debug.log diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..44ea07d --- /dev/null +++ b/build.gradle @@ -0,0 +1,45 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + } + dependencies { + classpath "com.moowork.gradle:gradle-node-plugin:1.3.1" + } +} + +plugins { + id "base" + id "com.github.node-gradle.node" version "2.2.3" +} + +node { + version = '12.16.2' // Version of node to use. + npmVersion = '6.14.4' // Version of npm to use. + distBaseUrl = 'https://nodejs.org/dist' + download = true + // Set the work directory for unpacking node + workDir = file("${project.projectDir}/node/") + // Set the work directory where node_modules should be located + nodeModulesDir = file("${project.projectDir}") +} + + +task cleanJsBuildFiles() { + doLast { + ['dist'].each { dir -> + delete "${project.projectDir}/" + dir + } + } +} + +task cleanAllJsDependencies(dependsOn: ['cleanJsBuildFiles']) { + doLast { + ['node_modules', 'node'].each { dir -> + delete "${project.projectDir}/" + dir + } + } +} + +npm_run_build.dependsOn 'npmInstall' +clean.dependsOn cleanJsBuildFiles diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..490fda8577df6c95960ba7077c43220e5bb2c0d9 GIT binary patch literal 58694 zcma&OV~}Oh(k5J8>Mq;1ZQHhO+v>7y+qO>Gc6Hgdjp>5?}0s%q%y~>Cv3(!c&iqe4q$^V<9O+7CU z|6d2bzlQvOI?4#hN{EUmDbvb`-pfo*NK4Vs&cR60P)<+IG%C_BGVL7RP11}?Ovy}9 zNl^cQJPR>SIVjSkXhS0@IVhqGLL)&%E<(L^ymkEXU!M5)A^-c;K>yy`Ihy@nZ}orr zK>gFl%+bKu+T{P~iuCWUZjJ`__9l-1*OFwCg_8CkKtLEEKtOc=d5NH%owJkk-}N#E z7Pd;x29C}qj>HVKM%D&SPSJ`JwhR2oJPU0u3?)GiA|6TndJ+~^eXL<%D)IcZ)QT?t zE7BJP>Ejq;`w$<dd^@|esR(;1Z@9EVR%7cZG`%Xr%6 zLHXY#GmPV!HIO3@j5yf7D{PN5E6tHni4mC;qIq0Fj_fE~F1XBdnzZIRlk<~?V{-Uc zt9ldgjf)@8NoAK$6OR|2is_g&pSrDGlQS);>YwV7C!=#zDSwF}{_1#LA*~RGwALm) zC^N1ir5_}+4!)@;uj92irB5_Ugihk&Uh|VHd924V{MiY7NySDh z|6TZCb1g`c)w{MWlMFM5NK@xF)M33F$ZElj@}kMu$icMyba8UlNQ86~I$sau*1pzZ z4P)NF@3(jN(thO5jwkx(M5HOe)%P1~F!hXMr%Rp$&OY0X{l_froFdbi(jCNHbHj#! z(G`_tuGxu#h@C9HlIQ8BV4>%8eN=MApyiPE0B3dR`bsa1=MM$lp+38RN4~`m>PkE? zARywuzZ#nV|0wt;22|ITkkrt>ahz7`sKXd2!vpFCC4i9VnpNvmqseE%XnxofI*-Mr6tjm7-3$I-v}hr6B($ALZ=#Q4|_2l#i5JyVQCE{hJAnFhZF>vfSZgnw`Vgn zIi{y#1e7`}xydrUAdXQ%e?_V6K(DK89yBJ;6Sf{Viv*GzER9C3Mns=nTFt6`Eu?yu<*Fb}WpP$iO#-y+^H>OQ< zw%DSM@I=@a)183hx!sz(#&cg-6HVfK(UMgo8l2jynx5RWEo8`?+^3x0sEoj9H8%m1 z87?l+w;0=@Dx_J86rA6vesuDQ^nY(n?SUdaY}V)$Tvr%>m9XV>G>6qxKxkH zN6|PyTD(7+fjtb}cgW1rctvZQR!3wX2S|ils!b%(=jj6lLdx#rjQ6XuJE1JhNqzXO zKqFyP8Y1tN91g;ahYsvdGsfyUQz6$HMat!7N1mHzYtN3AcB>par(Q>mP7^`@7@Ox14gD12*4RISSYw-L>xO#HTRgM)eLaOOFuN}_UZymIhu%J?D|k>Y`@ zYxTvA;=QLhu@;%L6;Ir_$g+v3;LSm8e3sB;>pI5QG z{Vl6P-+69G-P$YH-yr^3cFga;`e4NUYzdQy6vd|9${^b#WDUtxoNe;FCcl5J7k*KC z7JS{rQ1%=7o8to#i-`FD3C?X3!60lDq4CqOJ8%iRrg=&2(}Q95QpU_q ziM346!4()C$dHU@LtBmfKr!gZGrZzO{`dm%w_L1DtKvh8UY zTP3-|50~Xjdu9c%Cm!BN^&9r?*Wgd(L@E!}M!#`C&rh&c2fsGJ_f)XcFg~$#3S&Qe z_%R=Gd`59Qicu`W5YXk>vz5!qmn`G>OCg>ZfGGuI5;yQW9Kg*exE+tdArtUQfZ&kO ze{h37fsXuQA2Z(QW|un!G2Xj&Qwsk6FBRWh;mfDsZ-$-!YefG!(+bY#l3gFuj)OHV830Xl*NKp1-L&NPA3a8jx#yEn3>wea~ z9zp8G6apWn$0s)Pa!TJo(?lHBT1U4L>82jifhXlkv^a+p%a{Og8D?k6izWyhv`6prd7Yq5{AqtzA8n{?H|LeQFqn(+fiIbDG zg_E<1t%>753QV!erV^G4^7p1SE7SzIqBwa{%kLHzP{|6_rlM*ae{*y4WO?{%&eQ`| z>&}ZkQ;<)rw;d(Dw*om?J@3<~UrXsvW2*0YOq_-Lfq45PQGUVu?Ws3&6g$q+q{mx4 z$2s@!*|A+74>QNlK!D%R(u22>Jeu}`5dsv9q~VD!>?V86x;Fg4W<^I;;ZEq5z4W5c z#xMX=!iYaaW~O<(q>kvxdjNk15H#p0CSmMaZB$+%v90@w(}o$T7;(B+Zv%msQvjnW z`k7=uf(h=gkivBw?57m%k^SPxZnYu@^F% zKd`b)S#no`JLULZCFuP^y5ViChc;^3Wz#c|ehD+2MHbUuB3IH5+bJ_FChTdARM6Q2 zdyuu9eX{WwRasK!aRXE+0j zbTS8wg@ue{fvJ*=KtlWbrXl8YP88;GXto?_h2t@dY3F?=gX9Frwb8f1n!^xdOFDL7 zbddq6he>%k+5?s}sy?~Ya!=BnwSDWloNT;~UF4|1>rUY!SSl^*F6NRs_DT-rn=t-p z_Ga0p)`@!^cxW_DhPA=0O;88pCT*G9YL29_4fJ(b{| zuR~VCZZCR97e%B(_F5^5Eifes$8!7DCO_4(x)XZDGO%dY9Pkm~-b1-jF#2H4kfl<3 zsBes0sP@Zyon~Q&#<7%gxK{o+vAsIR>gOm$w+{VY8ul7OsSQ>07{|7jB6zyyeu+WU zME>m2s|$xvdsY^K%~nZ^%Y`D7^PCO(&)eV-Qw|2_PnL=Nd=}#4kY)PS=Y62Dzz1e2 z&*)`$OEBuC&M5f`I}A-pEzy^lyEEcd$n1mEgLj}u_b^d!5pg{v+>_FexoDxYj%X_F z5?4eHVXurS%&n2ISv2&Eik?@3ry}0qCwS9}N)`Zc_Q8}^SOViB_AB&o6Eh#bG;NnL zAhP2ZF_la`=dZv6Hs@78DfMjy*KMSExRZfccK=-DPGkqtCK%U1cUXxbTX-I0m~x$3 z&Oc&aIGWtcf|i~=mPvR^u6^&kCj|>axShGlPG}r{DyFp(Fu;SAYJ}9JfF*x0k zA@C(i5ZM*(STcccXkpV$=TznZKQVtec!A24VWu*oS0L(^tkEm2ZIaE4~~?#y9Z4 zlU!AB6?yc(jiB`3+{FC zl|IdP1Fdt#e5DI{W{d8^$EijTU(8FA@8V&_A*tO?!9rI zhoRk`Q*riCozP>F%4pDPmA>R#Zm>_mAHB~Y5$sE4!+|=qK0dhMi4~`<6sFHb=x8Naml}1*8}K_Es3#oh3-7@0W}BJDREnwWmw<{wY9p)3+Mq2CLcX?uAvItguqhk*Po!RoP`kR)!OQy3Ayi zL@ozJ!I_F2!pTC?OBAaOrJmpGX^O(dSR-yu5Wh)f+o5O262f6JOWuXiJS_Jxgl@lS z6A9c*FSHGP4HuwS)6j3~b}t{+B(dqG&)Y}C;wnb!j#S0)CEpARwcF4Q-5J1NVizx7 z(bMG>ipLI1lCq?UH~V#i3HV9|bw%XdZ3Q#c3)GB+{2$zoMAev~Y~(|6Ae z^QU~3v#*S>oV*SKvA0QBA#xmq9=IVdwSO=m=4Krrlw>6t;Szk}sJ+#7=ZtX(gMbrz zNgv}8GoZ&$=ZYiI2d?HnNNGmr)3I);U4ha+6uY%DpeufsPbrea>v!D50Q)k2vM=aF-zUsW*aGLS`^2&YbchmKO=~eX@k9B!r;d{G% zrJU~03(->>utR^5;q!i>dAt)DdR!;<9f{o@y2f}(z(e)jj^*pcd%MN{5{J=K<@T!z zseP#j^E2G31piu$O@3kGQ{9>Qd;$6rr1>t!{2CuT_XWWDRfp7KykI?kXz^{u_T2AZ z-@;kGj8Iy>lOcUyjQqK!1OHkY?0Kz+_`V8$Q-V|8$9jR|%Ng;@c%kF_!rE3w>@FtX zX1w7WkFl%Vg<mE0aAHX==DLjyxlfA}H|LVh;}qcWPd8pSE!_IUJLeGAW#ZJ?W}V7P zpVeo|`)a<#+gd}dH%l)YUA-n_Vq3*FjG1}6mE;@A5ailjH*lJaEJl*51J0)Xecn6X zz zDr~lx5`!ZJ`=>>Xb$}p-!3w;ZHtu zX@xB4PbX!J(Jl((<8K%)inh!-3o2S2sbI4%wu9-4ksI2%e=uS?Wf^Tp%(Xc&wD6lV z*DV()$lAR&##AVg__A=Zlu(o$3KE|N7ZN{X8oJhG+FYyF!(%&R@5lpCP%A|{Q1cdr>x0<+;T`^onat<6tlGfEwRR?ZgMTD-H zjWY?{Fd8=Fa6&d@0+pW9nBt-!muY@I9R>eD5nEDcU~uHUT04gH-zYB>Re+h4EX|IH zp`Ls>YJkwWD3+}DE4rC3kT-xE89^K@HsCt6-d;w*o8xIHua~||4orJ<7@4w_#C6>W z2X$&H38OoW8Y-*i=@j*yn49#_C3?@G2CLiJUDzl(6P&v`lW|=gQ&)DVrrx8Bi8I|$ z7(7`p=^Lvkz`=Cwd<0%_jn&6k_a(+@)G^D04}UylQax*l(bhJ~;SkAR2q*4>ND5nc zq*k9(R}Ijc1J8ab>%Tv{kb-4TouWfA?-r(ns#ghDW^izG3{ts{C7vHc5Mv?G;)|uX zk&Fo*xoN`OG9ZXc>9(`lpHWj~9!hI;2aa_n!Ms1i;BFHx6DS23u^D^e(Esh~H@&f}y z(=+*7I@cUGi`U{tbSUcSLK`S)VzusqEY)E$ZOokTEf2RGchpmTva?Fj! z<7{9Gt=LM|*h&PWv6Q$Td!|H`q-aMIgR&X*;kUHfv^D|AE4OcSZUQ|1imQ!A$W)pJtk z56G;0w?&iaNV@U9;X5?ZW>qP-{h@HJMt;+=PbU7_w`{R_fX>X%vnR&Zy1Q-A=7**t zTve2IO>eEKt(CHjSI7HQ(>L5B5{~lPm91fnR^dEyxsVI-wF@82$~FD@aMT%$`usqNI=ZzH0)u>@_9{U!3CDDC#xA$pYqK4r~9cc_T@$nF1yODjb{=(x^({EuO?djG1Hjb{u zm*mDO(e-o|v2tgXdy87*&xVpO-z_q)f0~-cf!)nb@t_uCict?p-L%v$_mzG`FafIV zPTvXK4l3T8wAde%otZhyiEVVU^5vF zQSR{4him-GCc-(U;tIi;qz1|Az0<4+yh6xFtqB-2%0@ z&=d_5y>5s^NQKAWu@U#IY_*&G73!iPmFkWxxEU7f9<9wnOVvSuOeQ3&&HR<>$!b%J z#8i?CuHx%la$}8}7F5-*m)iU{a7!}-m@#O}ntat&#d4eSrT1%7>Z?A-i^Y!Wi|(we z$PBfV#FtNZG8N-Ot#Y>IW@GtOfzNuAxd1%=it zDRV-dU|LP#v70b5w~fm_gPT6THi zNnEw&|Yc9u5lzTVMAL} zgj|!L&v}W(2*U^u^+-e?Tw#UiCZc2omzhOf{tJX*;i2=i=9!kS&zQN_hKQ|u7_3vo6MU0{U+h~` zckXGO+XK9{1w3Z$U%%Fw`lr7kK8PzU=8%0O8ZkW`aQLFlR4OCb^aQgGCBqu6AymXk zX!p(JDJtR`xB$j48h}&I2FJ*^LFJzJQJ0T>=z{*> zWesZ#%W?fm`?f^B^%o~Jzm|Km5$LP#d7j9a{NCv!j14axHvO<2CpidW=|o4^a|l+- zSQunLj;${`o%xrlcaXzOKp>nU)`m{LuUW!CXzbyvn;MeK#-D{Z4)+>xSC)km=&K%R zsXs3uRkta6-rggb8TyRPnquv1>wDd)C^9iN(5&CEaV9yAt zM+V+%KXhGDc1+N$UNlgofj8+aM*(F7U3=?grj%;Pd+p)U9}P3ZN`}g3`{N`bm;B(n z12q1D7}$``YQC7EOed!n5Dyj4yl~s0lptb+#IEj|!RMbC!khpBx!H-Kul(_&-Z^OS zQTSJA@LK!h^~LG@`D}sMr2VU#6K5Q?wqb7-`ct2(IirhhvXj?(?WhcNjJiPSrwL0} z8LY~0+&7<~&)J!`T>YQgy-rcn_nf+LjKGy+w+`C*L97KMD%0FWRl`y*piJz2=w=pj zxAHHdkk9d1!t#bh8Joi1hTQr#iOmt8v`N--j%JaO`oqV^tdSlzr#3 zw70~p)P8lk<4pH{_x$^i#=~E_ApdX6JpR`h{@<Y;PC#{0uBTe z1Puhl^q=DuaW}Gdak6kV5w);35im0PJ0F)Zur)CI*LXZxZQTh=4dWX}V}7mD#oMAn zbxKB7lai}G8C){LS`hn>?4eZFaEw-JoHI@K3RbP_kR{5eyuwBL_dpWR>#bo!n~DvoXvX`ZK5r|$dBp6%z$H@WZ6Pdp&(zFKGQ z2s6#ReU0WxOLti@WW7auSuyOHvVqjaD?kX;l)J8tj7XM}lmLxLvp5V|CPQrt6ep+t z>7uK|fFYALj>J%ou!I+LR-l9`z3-3+92j2G`ZQPf18rst;qXuDk-J!kLB?0_=O}*XQ5wZMn+?ZaL5MKlZie- z0aZ$*5~FFU*qGs|-}v-t5c_o-ReR@faw^*mjbMK$lzHSheO*VJY)tBVymS^5ol=ea z)W#2z8xCoh1{FGtJA+01Hwg-bx`M$L9Ex-xpy?w-lF8e*xJXS4(I^=k1zFy|V)=ll z#&yez3hRC5?@rPywJo2eOHWezUxZphm#wo`oyA-sP@|^+LV0^nzq|UJEZZM9wqa z5Y}M0Lu@0Qd%+Q=3kCSb6q4J60t_s(V|qRw^LC>UL7I`=EZ zvIO;P2n27=QJ1u;C+X)Si-P#WB#phpY3XOzK(3nEUF7ie$>sBEM3=hq+x<=giJjgS zo;Cr5uINL%4k@)X%+3xvx$Y09(?<6*BFId+399%SC)d# zk;Qp$I}Yiytxm^3rOxjmRZ@ws;VRY?6Bo&oWewe2i9Kqr1zE9AM@6+=Y|L_N^HrlT zAtfnP-P8>AF{f>iYuKV%qL81zOkq3nc!_?K7R3p$fqJ?};QPz6@V8wnGX>3%U%$m2 zdZv|X+%cD<`OLtC<>=ty&o{n-xfXae2~M-euITZY#X@O}bkw#~FMKb5vG?`!j4R_X%$ZSdwW zUA0Gy&Q_mL5zkhAadfCo(yAw1T@}MNo>`3Dwou#CMu#xQKY6Z+9H+P|!nLI;4r9@k zn~I*^*4aA(4y^5tLD+8eX;UJW;>L%RZZUBo(bc{)BDM!>l%t?jm~}eCH?OOF%ak8# z*t$YllfyBeT(9=OcEH(SHw88EOH0L1Ad%-Q`N?nqM)<`&nNrp>iEY_T%M6&U>EAv3 zMsvg1E#a__!V1E|ZuY!oIS2BOo=CCwK1oaCp#1ED_}FGP(~Xp*P5Gu(Pry_U zm{t$qF^G^0JBYrbFzPZkQ;#A63o%iwe;VR?*J^GgWxhdj|tj`^@i@R+vqQWt~^ z-dLl-Ip4D{U<;YiFjr5OUU8X^=i35CYi#j7R! zI*9do!LQrEr^g;nF`us=oR2n9ei?Gf5HRr&(G380EO+L6zJD)+aTh_<9)I^{LjLZ} z{5Jw5vHzucQ*knJ6t}Z6k+!q5a{DB-(bcN*)y?Sfete7Y}R9Lo2M|#nIDsYc({XfB!7_Db0Z99yE8PO6EzLcJGBlHe(7Q{uv zlBy7LR||NEx|QyM9N>>7{Btifb9TAq5pHQpw?LRe+n2FV<(8`=R}8{6YnASBj8x}i zYx*enFXBG6t+tmqHv!u~OC2nNWGK0K3{9zRJ(umqvwQ~VvD;nj;ihior5N$Hf@y0G z$7zrb=CbhyXSy`!vcXK-T}kisTgI$8vjbuCSe7Ev*jOqI&Pt@bOEf>WoQ!A?`UlO5 zSLDKE(-mN4a{PUu$QdGbfiC)pA}phS|A1DE(f<{Dp4kIB_1mKQ5!0fdA-K0h#_ z{qMsj@t^!n0Lq%)h3rJizin0wT_+9K>&u0%?LWm<{e4V8W$zZ1w&-v}y zY<6F2$6Xk>9v{0@K&s(jkU9B=OgZI(LyZSF)*KtvI~a5BKr_FXctaVNLD0NIIokM}S}-mCB^^Sgqo%e{4!Hp)$^S%q@ zU%d&|hkGHUKO2R6V??lfWCWOdWk74WI`xmM5fDh+hy6>+e)rG_w>_P^^G!$hSnRFy z5fMJx^0LAAgO5*2-rsN)qx$MYzi<_A=|xez#rsT9&K*RCblT2FLJvb?Uv3q^@Dg+J zQX_NaZza4dAajS!khuvt_^1dZzOZ@eLg~t02)m2+CSD=}YAaS^Y9S`iR@UcHE%+L0 zOMR~6r?0Xv#X8)cU0tpbe+kQ;ls=ZUIe2NsxqZFJQj87#g@YO%a1*^ zJZ+`ah#*3dVYZdeNNnm8=XOOc<_l-b*uh zJR8{yQJ#-FyZ!7yNxY|?GlLse1ePK!VVPytKmBwlJdG-bgTYW$3T5KinRY#^Cyu@& zd7+|b@-AC67VEHufv=r5(%_#WwEIKjZ<$JD%4!oi1XH65r$LH#nHHab{9}kwrjtf= zD}rEC65~TXt=5bg*UFLw34&*pE_(Cw2EL5Zl2i^!+*Vx+kbkT_&WhOSRB#8RInsh4 z#1MLczJE+GAHR^>8hf#zC{pJfZ>6^uGn6@eIxmZ6g_nHEjMUUfXbTH1ZgT7?La;~e zs3(&$@4FmUVw3n033!1+c9dvs&5g#a;ehO(-Z}aF{HqygqtHf=>raoWK9h7z)|DUJ zlE0#|EkzOcrAqUZF+Wd@4$y>^0eh!m{y@qv6=C zD(){00vE=5FU@Fs_KEpaAU1#$zpPJGyi0!aXI8jWaDeTW=B?*No-vfv=>`L`LDp$C zr4*vgJ5D2Scl{+M;M(#9w_7ep3HY#do?!r0{nHPd3x=;3j^*PQpXv<~Ozd9iWWlY_ zVtFYzhA<4@zzoWV-~in%6$}Hn$N;>o1-pMK+w$LaN1wA95mMI&Q6ayQO9 zTq&j)LJm4xXjRCse?rMnbm%7E#%zk!EQiZwt6gMD=U6A0&qXp%yMa(+C~^(OtJ8dH z%G1mS)K9xV9dlK>%`(o6dKK>DV07o46tBJfVxkIz#%VIv{;|)?#_}Qq(&| zd&;iIJt$|`te=bIHMpF1DJMzXKZp#7Fw5Q0MQe@;_@g$+ELRfh-UWeYy%L*A@SO^J zLlE}MRZt(zOi6yo!);4@-`i~q5OUAsac^;RpULJD(^bTLt9H{0a6nh0<)D6NS7jfB ze{x#X2FLD2deI8!#U@5$i}Wf}MzK&6lSkFy1m2c~J?s=!m}7%3UPXH_+2MnKNY)cI z(bLGQD4ju@^<+%T5O`#77fmRYxbs(7bTrFr=T@hEUIz1t#*ntFLGOz)B`J&3WQa&N zPEYQ;fDRC-nY4KN`8gp*uO@rMqDG6=_hHIX#u{TNpjYRJ9ALCl!f%ew7HeprH_I2L z6;f}G90}1x9QfwY*hxe&*o-^J#qQ6Ry%2rn=9G3*B@86`$Pk1`4Rb~}`P-8^V-x+s zB}Ne8)A3Ex29IIF2G8dGEkK^+^0PK36l3ImaSv1$@e=qklBmy~7>5IxwCD9{RFp%q ziejFT(-C>MdzgQK9#gC?iFYy~bjDcFA^%dwfTyVCk zuralB)EkA)*^8ZQd8T!ofh-tRQ#&mWFo|Y3taDm8(0=KK>xke#KPn8yLCXwq zc*)>?gGKvSK(}m0p4uL8oQ~!xRqzDRo(?wvwk^#Khr&lf9YEPLGwiZjwbu*p+mkWPmhoh0Fb(mhJEKXl+d68b6%U{E994D z3$NC=-avSg7s{si#CmtfGxsijK_oO7^V`s{?x=BsJkUR4=?e@9# z-u?V8GyQp-ANr%JpYO;3gxWS?0}zLmnTgC66NOqtf*p_09~M-|Xk6ss7$w#kdP8`n zH%UdedsMuEeS8Fq0RfN}Wz(IW%D%Tp)9owlGyx#i8YZYsxWimQ>^4ikb-?S+G;HDT zN4q1{0@|^k_h_VFRCBtku@wMa*bIQc%sKe0{X@5LceE`Uqqu7E9i9z-r}N2ypvdX1{P$*-pa$A8*~d0e5AYkh_aF|LHt7qOX>#d3QOp-iEO7Kq;+}w zb)Le}C#pfmSYYGnq$Qi4!R&T{OREvbk_;7 zHP<*B$~Qij1!9Me!@^GJE-icH=set0fF-#u5Z{JmNLny=S*9dbnU@H?OCXAr7nHQH zw?$mVH^W-Y89?MZo5&q{C2*lq}sj&-3@*&EZaAtpxiLU==S@m_PJ6boIC9+8fKz@hUDw==nNm9? z`#!-+AtyCOSDPZA)zYeB|EQ)nBq6!QI66xq*PBI~_;`fHEOor}>5jj^BQ;|-qS5}1 zRezNBpWm1bXrPw3VC_VHd z$B06#uyUhx)%6RkK2r8*_LZ3>-t5tG8Q?LU0Yy+>76dD(m|zCJ>)}9AB>y{*ftDP3 z(u8DDZd(m;TcxW-w$(vq7bL&s#U_bsIm67w{1n|y{k9Ei8Q9*8E^W0Jr@M?kBFJE< zR7Pu}#3rND;*ulO8X%sX>8ei7$^z&ZH45(C#SbEXrr3T~e`uhVobV2-@p5g9Of%!f z6?{|Pt*jW^oV0IV7V76Pd>Pcw5%?;s&<7xelwDKHz(KgGL7GL?IZO%upB+GMgBd3ReR9BS zL_FPE2>LuGcN#%&=eWWe;P=ylS9oIWY)Xu2dhNe6piyHMI#X4BFtk}C9v?B3V+zty zLFqiPB1!E%%mzSFV+n<(Rc*VbvZr)iJHu(HabSA_YxGNzh zN~O(jLq9bX41v{5C8%l%1BRh%NDH7Vx~8nuy;uCeXKo2Do{MzWQyblZsWdk>k0F~t z`~8{PWc86VJ)FDpj!nu))QgHjl7a%ArDrm#3heEHn|;W>xYCocNAqX{J(tD!)~rWu zlRPZ3i5sW;k^^%0SkgV4lypb zqKU2~tqa+!Z<)!?;*50pT&!3xJ7=7^xOO0_FGFw8ZSWlE!BYS2|hqhQT8#x zm2a$OL>CiGV&3;5-sXp>3+g+|p2NdJO>bCRs-qR(EiT&g4v@yhz(N5cU9UibBQ8wM z0gwd4VHEs(Mm@RP(Zi4$LNsH1IhR}R7c9Wd$?_+)r5@aj+!=1-`fU(vr5 z1c+GqAUKulljmu#ig5^SF#{ag10PEzO>6fMjOFM_Le>aUbw>xES_Ow|#~N%FoD{5!xir^;`L1kSb+I^f z?rJ0FZugo~sm)@2rP_8p$_*&{GcA4YyWT=!uriu+ZJ%~_OD4N%!DEtk9SCh+A!w=< z3af%$60rM%vdi%^X2mSb)ae>sk&DI_&+guIC88_Gq|I1_7q#}`9b8X zGj%idjshYiq&AuXp%CXk>zQ3d2Ce9%-?0jr%6-sX3J{*Rgrnj=nJ2`#m`TaW-13kl zS2>w8ehkYEx@ml2JPivxp zIa2l^?)!?Y*=-+jk_t;IMABQ5Uynh&LM^(QB{&VrD7^=pXNowzD9wtMkH_;`H|d0V z*rohM)wDg^EH_&~=1j1*?@~WvMG3lH=m#Btz?6d9$E*V5t~weSf4L%|H?z-^g>Fg` zI_Q+vgHOuz31?mB{v#4(aIP}^+RYU}^%XN}vX_KN=fc{lHc5;0^F2$2A+%}D=gk-) zi1qBh!1%xw*uL=ZzYWm-#W4PV(?-=hNF%1cXpWQ_m=ck1vUdTUs5d@2Jm zV8cXsVsu~*f6=_7@=1 zaV0n2`FeQ{62GMaozYS)v~i10wGoOs+Z8=g$F-6HH1qBbasAkkcZj-}MVz{%xf8`2 z1XJU;&QUY4Hf-I(AG8bX zhu~KqL}TXS6{)DhW=GFkCzMFMSf`Y00e{Gzu2wiS4zB|PczU^tjLhOJUv=i2KuFZHf-&`wi>CU0h_HUxCdaZ`s9J8|7F}9fZXg`UUL}ws7G=*n zImEd-k@tEXU?iKG#2I13*%OX#dXKTUuv1X3{*WEJS41ci+uy=>30LWCv*YfX_A2(M z9lnNAjLIzX=z;g;-=ARa<`z$x)$PYig1|#G;lnOs8-&rB2lT0#e;`EH8qZ_xNvwy7 zo_9>P@SHK(YPu*8r86f==eshYjM3yAPOHDn- zmuW04o02AGMz!S|S32(h560d(IP$;S7LIM(PC7Owwr$&XCbsQNY))+3HYS+ZcHTVq zJm;QsfA`#~_m8fwuI~DFb$@pE-h1t}*HZB7hc-CUM~x6aZ<4v9_Jr-))=El>(rphK z(@wMC$e>^o+cQ(9S+>&JfP;&KM6nff2{RNu;MqE9>L9t^lvzo^*B5>@$TG!gZlh0Z z%us8ys$1~v&&N-gPBvXl5b<#>-@lhAkg_4Ev6#R&r{ObIn=Qki&`wxR_OWj%kU_RW&w#Mxv%x zW|-sJ^jss+;xmxi8?gphNW{^HZ!xF?poe%mgZ>nwlqgvH@TrZ zad5)yJx3T|&$Afl$pkh=7bZAwBdv+tQEP=d3vE#o<&r6h+sTU$64ZZQ0e^Fu9FrnL zN-?**4ta&!+{cP=jt`w)5|dD&CP@-&*BsN#mlbUn!V*(E_gskcQ*%F#Nw#aTkp%x| z8^&g)1d!%Y+`L!Se2s_XzKfonT_BWbn}LQo#YUAx%f7L__h4Xi680GIk)s z8GHm59EYn(@4c&eAO)}0US@((t#0+rNZ680SS<=I^|Y=Yv)b<@n%L20qu7N%V1-k1 z*oxpOj$ZAc>L6T)SZX?Pyr#}Q?B`7ZlBrE1fHHx_Au{q9@ zLxwPOf>*Gtfv6-GYOcT^ZJ7RGEJTVXN=5(;{;{xAV3n`q1Z-USkK626;atcu%dTHU zBewQwrpcZkKoR(iF;fVev&D;m9q)URqvKP*eF9J=A?~0=jn3=_&80vhfBp?6@KUpgyS`kBk(S0@X5Xf%a~?#4Ct5nMB9q~)LP<`G#T-eA z+)6cl1H-2uMP=u<=saDj*;pOggb2(NJO^pW8O<6u^?*eiqn7h)w9{D`TrE1~k?Xuo z(r%NIhw3kcTHS%9nbff>-jK1k^~zr8kypQJ6W+?dkY7YS`Nm z5i;Q23ZpJw(F7|e?)Tm~1bL9IUKx6GC*JpUa_Y00Xs5nyxGmS~b{ zR!(TzwMuC%bB8&O->J82?@C|9V)#i3Aziv7?3Z5}d|0eTTLj*W3?I32?02>Eg=#{> zpAO;KQmA}fx?}j`@@DX-pp6{-YkYY81dkYQ(_B88^-J#rKVh8Wys-;z)LlPu{B)0m zeZr=9{@6=7mrjShh~-=rU}n&B%a7qs1JL_nBa>kJFQ8elV=2!WY1B5t2M5GD5lt|f zSAvTgLUv#8^>CX}cM(i(>(-)dxz;iDvWw5O!)c5)TBoWp3$>3rUI=pH9D1ffeIOUW zDbYx}+)$*+`hT}j226{;=*3(uc*ge(HQpTHM4iD&r<=JVc1(gCy}hK%<(6)^`uY4>Tj6rIHYB zqW5UAzpdS!34#jL;{)Fw{QUgJ~=w`e>PHMsnS1TcIXXHZ&3M~eK5l>Xu zKsoFCd%;X@qk#m-fefH;((&?Y9grF{Al#55A3~L5YF0plJ;G=;Tr^+W-7|6IO;Q+8 z(jAXq$ayf;ZkMZ4(*w?Oh@p8LhC6=8??!%@V(e}%*>fW^Gdn|qZVyvHhcn;7nP7e; z13!D$^-?^#x*6d1)88ft06hVZh%m4w`xR?!cnzuoOj(g9mdE2vbKT@RghJ)XOPj{9 z@)8!#=HRJvG=jDJ77XND;cYsC=CszC!<6GUC=XLuTJ&-QRa~EvJ1rk2+G!*oQJ-rv zDyHVZ{iQN$*5is?dNbqV8|qhc*O15)HGG)f2t9s^Qf|=^iI?0K-Y1iTdr3g=GJp?V z$xZiigo(pndUv;n1xV1r5+5qPf#vQQWw3m&pRT>G&vF( zUfKIQg9%G;R`*OdO#O;nP4o+BElMgmKt<>DmKO1)S$&&!q6#4HnU4||lxfMa-543{ zkyJ+ohEfq{OG3{kZszURE;Rw$%Q;egRKJ%zsVcXx!KIO0*3MFBx83sD=dDVsvc17i zIOZuEaaI~q`@!AR{gEL#Iw}zQpS$K6i&omY2n94@a^sD@tQSO(dA(npgkPs7kGm>;j?$Ia@Q-Xnzz?(tgpkA6VBPNX zE?K%$+e~B{@o>S+P?h6K=XP;caQ=3)I{@ZMNDz)9J2T#5m#h9nXd*33TEH^v7|~i) zeYctF*06eX)*0e{xXaPT!my1$Xq>KPJakJto3xnuT&z zSaL8NwRUFm?&xIMwA~gt4hc3=hAde#vDjQ!I)@;V<9h2YOvi-XzleP!g4blZm|$iV zF%c3G8Cs;FH8|zEczqGSY%F54h`$P_VsmJ6TaXRLc8lSf`Sv%s%6<4+;Wbs-3lya( z=9I>I%97Y~G945O48YaAq6ENPUs%EJvyC! zM4jMgJj}r~@D;cdaQ-j#`5zCRku}42aI<>CgraXuKDr19db~#|@UyM;f-uc!(KDsu z5EA@CsN>^t@oH+0!SALi;ud>`P5mQta+Lh*-#RHJ)Gin%>EaFLSoU`(TG7c|yeFvl zk|Yll%)h-*%WoI6M*j+4xw`OqiDVX{k-^V2{rzCIM9mzNHGP^D={!*P7T)%yDSI5- zkGA4}r3`)#Vl6JFJ3xG)8K;FTtII9o7jNHof_Z_Zc<%@-H4RPpyXudpf)ky zmTH$LFGxaIUGQ;l=>R>?+>ZSCU|@&+Gt@5Bj3w{L{KPpgQ<~)jqx0oNZSv9R&^A42 zzqJr?C#D-n>=9FjM=D=7h_$QO$KQ8*%0%)rI(Npai_JjE9_lBk75BQMI zkk4X5PATWgrub!fb5Hxi8{(Y<(GOO8^HECOA)eanyS{u%leQOkp;1W}_8eH?nPQxW zd#Z+uJfTK>g-TR3WPu~2Ru9A+NkuIICM@PyPmJn(GBZt;xFZNDMbw8`xzl2`(?UC- z#<*=*fo{UOvycb|b&4y0Nm!sHhFMI*Y$Olgh;BG#xBU+yxav82Ejj(ZvQ|64Wwy7I zN=DXx7(V^NTH3YRB4HOu6T5=DW86P`L#Ng!SuT{%&>Cq8>|o8lF^^U%MRU41TT?h& z!uJ$YdbM*2y?#`LJ2)XPoKq`hm$I3R{V5-;@u7!E9tH4sR(`Ab-Qh!|UN-a5fZ?P@2LWRvSv!hOk08;Yy!h&uEI-X}j+&v`X` zkqY%*F@{}DHL*Jgjg2}a54hwEV`63bK4>mL%D^YT|>m1-kX{876BRm&`Y#{$&oz($qWJL}T*tj42k+yu8fa=4b7VUPq()Wb~=L?DU0U-4*Iu^KMZBRByWn-@=_f(4){Or#| zpw}~Ajs6a=z!8_H59lqYlfnS77QY0pHpIz0#)}!EGhypupZeZe@%cv z6Dngnl*SsUy^a`v?>lARi6Yps@%32JpGQvrcd*A8LPLEInBEU2vriGvMqG!jh^=Gj zXvu5zpikqnt*e4&Un_e$2FAB?(yOS0JAzxh@nN?Blqc-)Pv`U}&E5|# z)97-9utpqi*`hR+$;eS)A+KK)CO)V`b?*}z&*+28mDfWI31)sF)tBg6LVlxS z225poL+O|x)5;skkj{rew<}TsDVqFMMLSgd;UK7^clMcObM~IgSq6!eJ($JP!KHPr zBJ&SHi{wLsgMzn1^#kV#_!NO@RG@B5lxBO7WfIAi@o`{_XQg(*{R=@Z(0ij+*i7sK zW5D%_fRN7l6qpytW2K1lUqP&W5jDT!AA9@q<;M!T=CKv*^MP)Er_uLL+Y53>**w7Y zQ!2?^4$wC;Soc!+#~d?Yec;NLdR z{~*hrSQS>UOMBe)1pHe0EsyO@d(IrU4ZiS&jL`wqv6Oqv=HbI^70qu9kn~wGkNL^> z!Pd2)i--+&zp^`#4@*Myg;3r(jt*h@RWgRt70byZr;0Na8n4!bmpuX1&gK=QK!@j< zH2fF7@2s0H0!9%VC-BIp(99@e@<%Ko?BB9uv*xPnZ5dQr z8r7~9cZXv(AZPY^<(X@}GARv&_}mfYA7`vdl=)g2GIyN(<}(b_S_N2--NKp$SgO<3 zRx|EabcjUSB44GaH3Kxmx3SW;E;Eia2Zs5SkbkQ8E%VQqr0J?tQjF~p;nbIXn+D;? zg;t3Jg7A@9U**@aaqs}9;%??Scm{zBIY2ceYAQd*W-hB-!+H&4#yrm*GtT*&#`FXx zGIVm}G<;Pj+h*KQ68S4rcIIGw-mkl039s@O4p9F%TC&&&xRL=N49v2PdBb$MxJoMo zQk8+Sv+F5m{xP1prZvn1=x-Q z&Yox|y&arZrLTm~<%o}VfPV#z+i&{)W5emXhx^g~8>eUe)|Vvwp8-x8d-MOj%@mSk zZ9i{-Hu8m-rfO##y(_Rv;Y@?6%h4Id#6%`7ah+IaQ13o7o>bG&ScMj&KO~QoCmNT6()+oo%B zugV3Da)t>unQq=tbD)FP{JmB~S5QCmb)lq9Fp(*|(UGeXr3kR?k35sKFs{{a*y+h0anA_K@iCi;BR6nFmKHC=@)rMmu=XWS1nVqD*=#${cFJ6<{e=U7!Rbg>Y0b~d#&viX+5m9aNAv=RAMt8=n6a&@t^|2LsKMR7xF z;Cmw>t0<=W2II;doX`p#bcjPV9z&3dhAObzcB9xXMslqr(y!P6+2kG>Eh!rx&ZKmW)Wk~_xh`?neJqVhJk~1eTvRF#ehRwpS>s1{vUx*qf&Jm z$)Wh|lmwYatW@U@*$<14>^|yYwmwFs)C5ke9hG42{gilSU#^ulO`M}`wJ_4*-3 zGb?hfQj_AGQBI?4ghGijqfu>uAYkLK#!^uGUXuctdn8Ae5I7}o+j{9MJiM|sf9Nc{ zuP&Ls@?rMe=IfJo!=iX?9&*4!Yjs5d?0Yx4cIFXrkSHRk17Fc@yM__fyFLLl6O9nT zQqaDXunH;!PpQ7+-&#wJVtJXl8LjIkh)5qmcqhErYrP31w5~#!tS{LYTWGKEtbpE%(hH>qV(!2KMfs#a z?ZzzbDB}(7+NWIiSBQ<_{3>;H;z}uZI;n2PKWJNxM=l;5-^zpu-}+1x|38lS-}6GX z6F=M~bUtHg98X@of>mgCH-&5g6UpXGAla<+g`b&MQANW6D^;zfSzq0mQ)*J%;&tPOYin?J*G7GqmQ=>jvWvOn6E?! z{$(CU7}zChEnl$(>xf`ZdeF2E9Bv=eH&T4HWAOQ!9gBs z{gl^|(78q-ioBS^rR2PEGZLe_4Rl**H(bB?84RHquCEKi8N#29u=Eoh(DV`ZX{+8< z3BIX<`sOFNBziFWS#-X%(e`0C_|Q8;Pw9izjNOF8h|kvmWCmDHM&pANC9MV<wEJ;W{-jXqm!zC+Y@Q1y_lLL zfV^(1{A;L%TWmyI)RPknVUB<4r+d42S(W=%bXd@YB(~d>ABq-E;t)ie6%ouy(Fg`p zuj<=I7^PDs5H+UsG}+GH}zoGt*{yKF&n23C7aW@ z4ydrRtFW-uuAUu@RWe&0c!N4!H;`!n@@t#u zxlGQB4rx(F7#&MKHPy}EI;d+l(G{1KG!ZBE)7)@P!AsUCCCb0IH!P5TW=GoNFcif`NB4en16Cp<7=fhz7^uQAjbJBH>@naf2ueMktmtZ|U|)ICDMN2r`mgMSl=qDwHL;}L-d~El>pf8UJRts_03eTj*hVy6H z5o!>?AcffORZq9!NJNa`-W4wMfe6I{3*rYUhIMA>y|T}KZ56HR5XEs{(|x#SDtP@N z5?12L0W7qfvWl8T-V+u=fkBH8!$}g)7hRs34m7~)^S&Ar zd`Kz7$S2Mz(|5H(Dwn$V7n8K2pqhHQ8!i{G4C~Y6_Ex&Y%EyXdw#Nj}VdG`XCN_1n zFg4;3DGjjUo$%=m@ui%z$JU66QK^qywvLKZpD6ZQ2Ve2VBps8rcvJ6^Cf^#H4?UQ5PW$4;b)55yIY9}@k@48RLtJa>7bofX{EUE7 z?0Cx0PeYbbLAelC-BfqHf_08;{lzC1kwr|a>5{O6*g<~wt6KYPfP5uW0w?VTO!M~Q z6H@n{cONp`{>hVjEIkOV6m^ZP^l;mGz=T&*5&`m84astyZ#XZ6CpH384tt%vSJ zsvYDC5u`D&U_u)1OJ&D2=F*ie-7!%N+V6*qoM6m-zj|}hDZ+@?`mJ10OX3K-`+R0m zNk$^+zBJK7%It=_&sIc}&DT>!LYU{|WPNrp-Nfly8u5&3@(l{!pcPxek3^{L`<9*! zE-0KukkD^^+<&3BNJM$e0=~B$=VQEp@V`L+PsUEL-_%+E_kyR-_mUjr|D1Z2J->y2 zZNHTrzP$=uEKQvy4DG&+4*o5^8Kd?eI>5S#b;NXlSrGVnj3~e^OLe4*Qe7%U#4WiX z)k7h@VHRERR_j{wp8ALHdD6bj&+Dl^?2(MuL9*oTRUI3SQ2jJ4x#!GR~b8F(H6|clt%g_O=v(@*;;5eW{e)CsR{UNDIE{C-1@qe z7NY&S7DeI4?z7tR9LJ$e6za%qLsF(>%M?m1nQQ4htpl?P)yj7_C#Ds5k5F z1h@YlI%a#k9x6}=hs(mkRr-fSrmikEk)Iv6D`S==)-dDVbNK;4F@J7iC(M!K6l<^lm@iXKpYbd7b{_0BDjc9ju~tFH7Qfcgu>A9~3tzmbFnXbS(pWES9955Vbu=iI zX>GH$kbD_?_fRojp{~Mz+%=%RHG!3l(wxQb{zQlW&MTlbr2*9|peUBo#YZ8u!UMPz zJo9lmW3isPrkErmxp&SA4Z4vpe~LLL-w6JUW}f*bf#w6lVyDvUhdK9fX!p#TT3fL+ z7im|;28gcWM)UdfRI;603BWd`d%7#sP0t)qNW*R*WmrD?hg37Zngmu{P;Lm`rlK_> zITGMQH~V(}6l6}TeG5nPEHYI3EHiY}TD%AAQ@%&*Q@w}lLp!VC>E;PCjzgVyNqNmA zYd0t~-pn55?#)1Tc-(xbL07m;Md14bPJOLyoRpLhRx-BtH{Z%<78P>0$olxWy4d9! zncKIDHrWFnBRUUqc`qiz@xrz52u-?2kq~5n$h}&*K?MxJ?xV?vVXvLErROVl7L9s; zedsv`#k1PCWY;`{${N?=R9%uy1P+jKf$&__RLHP zWVH#4;U{}bB4D^B*hm%nhRpQF{4?xW$&|oNp2CUE?Coyj1QI%P|w91%+*lty%ecgZ$I1|mJWq9_c?+4{KElHR%TIU zf+^4^hXY?f0&(|Q5=NG~AhiIVR+(a1gF)Q;L&vH%zPO{yydKt*(f#LehU3CVRIS&* zA1khb+xXe{29|Ggayz;nqv9M8n$JYj?Z!w0Sb}^lq#XQlg~=nkBhYxmlB{huZcL}F zA6sNZgJpJ|laA>P$V#ZhT+&$nvNM2sudEEeUaohc#ab+sC zrj7G)E-#;G-w=I1hTjN@b;lAjX40pR+<>)=n`V_!(JFk*yE zP3nDEs^C9DCSbs8`TV~U17Bmq%9I^$2xWK;N>;W~^^HOu)jQt*LH(-WD@UyR?lk$o z+mZhVgYn<1!ov1;W|rozPKN*0V#Xxdelr-6M$Gf?*Y~BQbHRK-&@B;ni(p_#pe0mg z(1pQKcH#lqe^P^eZVUta>(kWOPSnhH^E-oKtcJzCI^FSuJ zze(PI3_%VP4Fp7k#GyT8c6l?vndL`$$s5Z05+P==upnazJ>&{eIc?MW6fVO34pXfm zmmilQmRYtQ*e*BV>J{aqI%F$j*;=Tdx{msYgM{2Gd`D^TU>~NLKrbqtQDh6KPGcB& zYEY{fj~P1Q zY_vIx8j+W?nOTo{k7|A!vvlK?qYKZnTkm@qV7lWQf#;J@)(qh~m07vHwdQ@701t>}N2> zYt=Q^?p;5oP%enrkvLCarS2rlJ;zjT@1)Ha_28t7T(IMcZi3U?D_dTzMKnR%{b7 zXeWL6f-xfJvhsVNF_?I2^3gmv=2|f7azO~wc+o|=2cR+N_<9sF;vio2z;vtlV7U6o z%q9XNPhjS1Fv)QuRq|0#HVGw&HG!!t0wQo=W>hP)uYZ7o;_qdM=-*`k-Z%4+>VGZ; z{vGL`lv&#q*NFJmy`%{yAIPrAB%*freDk*5cHaNPB~B86YH zIw9gNDz9H+n0&}J-c0V{E(`My-2Nkt0NBY-PjL5r*s48D&j)h7pIpJUb+0ol1F*~` zp1!}vw0*&IA^z*SXZ}pIG9;ySrW01 zpU6d%LB2t@(;)LD!*G(DXK-!R!}Bp1mKS>Uu`^#p z>~WR%dn&;>iuz9Pv3W7EPX~GtnCg$63a-#A$1B7q;ZqH{xws^Pf-V1eO|D zHXE9qC~c)%CS>n>jc?m)ux2hN2UpKIU2hP(X}`Ljjc|CDFH%asVJH&6j5&Rb6aaVeQvSt z6VIX1X(pXAmxL>}wO&QIImzI9LcFhECJ|Mzi1FWhCgS$=^!!D3^vyEEY0HM0>?fsv zz1W(i8*H{v9APY$IW@J9NQ06Y@g$&STTrPC$I1{t0ptDZ=rHjEZnN2BSw{(Pn+6KD zRZ-hjn-KgzRa=ZoUs=W0cAc-}66Rmi)kZgub$G6zPQn>fM&}9X6!J^UsbVFdewj#M zt5erf{g$1$WV`h=0<2Y%iDK|HwH6hSu-8LDPknW`jl$UfmI_z9=GkC(@A$oVsRFl` zMYdksp797E2vzaH-N_%;t@q4}Z;FxZ(y&6&(#;_uzaGV+M%CB= zVNRMN3tj1#%##v%wdYNDfy0)|Q$>JYJ8-6o*K4hcC(;5F=_Mn-l)y@UX$ zt$YU7Q%o3cqwRC6;{vbL1No%d&)=)2$$;SD9a-=PfFh$6P1;*I*d z?C_52JLp$(UF}SCxJXTY+9?uE`@f35}k=i`#4Rk6e@*KDc^(tnQcw(jY^fcG z2hqo(q%7)o0YkX;lCq$o6hgCi3n%i#6vZ7x&_k#aW{QnPk2CWm8yVytzz-Xd_05x& zK3Vo>SFs-R)cf&`{&tL=xJVe`-HvE7&mAL^uj`W z%$d@~HtC6RV)R6}b6PqR$Pa7R8c3d_D4Hqq2NfG(>kTi!rOp%>Lc~n3!5mddW>>pR zt8tmTCxnr(Xk6g2^MqN08AmxcFLP;APA}^V80R_+K#agUx(RR48L2ZQej@XRm?OF3 z&jyIH+L2f<&wdR}X$XB~;2tBIf^AThY(zLA4*i6@9FdbT!Xy~7Ywt-zdi=wCIRuOL z73^T>|0wMU6&500dh%`EqjoMKS;Z+_5iFfnaLNy+B-@vyNWRdcmRaaBUdtQvT_Q17 zTG$aE4SA0iRA}+d@r;k~BwsTn@=r*;LgW8Q~>>Y9oke1Rm(xx!gv){TQFv|25IK_jjLj z_mxH%0-WoyI`)361H|?QVmz7;GfF~EKrTLxMMI`-GF&@Hdq@W!)mBLYniN*qL^iti)BMVHlCJ}6zkOoinJYolUHu!*(WoxKrxmw=1b&YHkFD)8! zM;5~XMl=~kcaLx%$51-XsJ|ZRi6_Vf{D(Kj(u!%R1@wR#`p!%eut#IkZ5eam1QVDF zeNm0!33OmxQ-rjGle>qhyZSvRfes@dC-*e=DD1-j%<$^~4@~AX+5w^Fr{RWL>EbUCcyC%19 z80kOZqZF0@@NNNxjXGN=X>Rfr=1-1OqLD8_LYcQ)$D0 zV4WKz{1eB#jUTU&+IVkxw9Vyx)#iM-{jY_uPY4CEH31MFZZ~+5I%9#6yIyZ(4^4b7 zd{2DvP>-bt9Zlo!MXFM`^@N?@*lM^n=7fmew%Uyz9numNyV{-J;~}``lz9~V9iX8` z1DJAS$ejyK(rPP!r43N(R`R%ay*Te2|MStOXlu&Na7^P-<-+VzRB!bKslVU1OQf;{WQ`}Nd5KDyDEr#7tB zKtpT2-pRh5N~}mdm+@1$<>dYcykdY94tDg4K3xZc?hfwps&VU*3x3>0ejY84MrKTz zQ{<&^lPi{*BCN1_IJ9e@#jCL4n*C;8Tt?+Z>1o$dPh;zywNm4zZ1UtJ&GccwZJcU+H_f@wLdeXfw(8tbE1{K>*X1 ze|9e`K}`)B-$3R$3=j~{{~fvi8H)b}WB$K`vRX}B{oC8@Q;vD8m+>zOv_w97-C}Uj zptN+8q@q-LOlVX|;3^J}OeiCg+1@1BuKe?*R`;8het}DM`|J7FjbK{KPdR!d6w7gD zO|GN!pO4!|Ja2BdXFKwKz}M{Eij2`urapNFP7&kZ!q)E5`811 z_Xf}teCb0lglZkv5g>#=E`*vPgFJd8W}fRPjC0QX=#7PkG2!}>Ei<<9g7{H%jpH%S zJNstSm;lCYoh_D}h>cSujzZYlE0NZj#!l_S$(^EB6S*%@gGHuW z<5$tex}v$HdO|{DmAY=PLn(L+V+MbIN)>nEdB)ISqMDSL{2W?aqO72SCCq${V`~Ze z#PFWr7?X~=08GVa5;MFqMPt$8e*-l$h* zw=_VR1PeIc$LXTeIf3X3_-JoIXLftZMg?JDcnctMTH0aJ`DvU{k}B1JrU(TEqa_F zPLhu~YI`*APCk%*IhBESX!*CLEKTI9vSD9IXLof$a4mLTe?Vowa0cRAGP!J;D)JC( z@n)MB^41Iari`eok4q+2rg;mKqmb)1b@CJ3gf$t{z;o0q4BPVPz_N!Zk0p~iR_&9f ztG4r5U0Fq~2siVlw3h6YEBh_KpiMbas0wAX_B{@z&V@{(7jze4fqf#OP(qSuE|aca zaMu)GD18I+Lq0`_7yC7Vbd44}0`E=pyfUq3poQ-ajw^kZ+BT=gnh{h>him533v+o7 zuI18YU5ZPG>90kTxI(#aFOh~_37&3NK|h?(K7M8_22UIYl$5*-E7X9K++N?J5X3@O z2ym8Yrt5Zekk;S{f3llyqQi)F-ZAq;PkePNF=?`k(ibbbYq)OsFBkC7^H7nb6&bhDx~F#muc#-a(ymv|)2@4)NQw!cgZ|NLJ@N6o#y!T* zi0kdtK#GC8e7m#SA9pSuiE5bOKs^ox%=l6KBL?8Rl;8R~V>7UCaz+Y_hEOZ^fT}$m{$;GJt9$l$m3ax6_ro{OH@r z8LmGIt2C9tM6fNUD<(Y1Q8w(aN2t@VPrjc;dLp9756VNLt9&>pX!L*6kyU=uui9e7 zrQ^&h7Nuk|fa1WH?@{DNg}C&i2BPX$%)+AMi%-ImT2Q_QnRV)3UbO2JW7T-JYoYnU!(}tii1LAN|D(%7cL@IEI0mCT0!t|kd)1KahVC2K z|9L76JA1F#-=|{!eJcN|r2bI={kK#3M*^rokSGIa zWe@gc$gT&!Q!WYqGHNy3PlhBvcjf&X0o_R>a?DGQ`e|uWa)>YuWk(ibM6r_Xpiaq4 zWtcFh6k&ih==f(%+T$`L1EYJ^CeevsviNKGK3iUF&1QI!EZOR4y2d?z{kh!@hfoR4 zR$n!oTq-{w^eSf-ckrX)rp`@DG4(8%e{AtoKlwoHjNIX8hY>P;3y*y_O8XZ8ien=J zQR{%EX3|XA79>Al$+8(rw$Y~9ydiaH!@*{;*H_Weng(B+tJe^@Hh~lm^J?rL_`0$g z%o51AI)M5AP4)R##rWU8U-|zQ>N#rK?x?C*TS+B3tQmUYjh6X32PBq4xJ`|D)tg%M zLwd8z7?Ds5CNhvE8H^bY$XD*~ke$yZo!3P40jio4f0GcqUohXX>C;+gOt>>PizdRd z?{b{G8+tZA!Aj6GmXFD*thAzMDL!h{90}jI=PdjS093DQi3v@l|5~^hKrwR6 zeUbcTjhPDLUg*ao;c>8JN}wB>MOIE^vN22t5147OVW>!BTDvz4xeP$B({i(Po~_BL z9*#5s@;l~%7S3?WkF0}E8>iN+UQZh{-D}3F##`x$+YG@H0vyyD%vY!zsJHcnGrN|& z;j<&E%0i6kwaMT{tjp$m5^V4*+9;13^DDjgaFvvOe3=j2hWU3(PY)kFXvfx#EJF(V zM!l@%;xJuF3pERftbWw~WnR$A&ok4UQ0dISRjNi-j7>!WdGm0^FUmns_uy2DYX1!< zihag3z-a%BI*WE?er9_UTY_Eui-R>cvS1;=N#Bv{mPKKIv5O9iXS- z3|WAAOhFjGB1il&5F9vj6Vm!t99VnZ6v)$mKW$!I)_=41msTtDQ`CAV`azZw#(aSt z5XK052F(2mTOy|hb~KaAM@(Gg9l3=rqXB79Zp!Q>)*)Hhm(8O3s53@BCx_ltYRV=o ztb3!SE4UlbZadeiDcr2NZnT1}MNd0Au}VRHKQ!`nW(2!sPW5ulYI zosR$tFs@ul-q2)^z}}Y;3$Jj4J#kik5ou3xxf)_JL$5C!E%MDFH5fza9unrHXXw5F zHY#AcZSU73&;sy;y;fM_*p0Txd{DmQVYSyT(8Bu@vSLZAPKlVDd&6%bHj%HaV1{=L z91uK99)#H)!*Q6S`Dv))pyUoDkMa0Sllw7Fvb!iKKjbR3>q-@zp>$lcNLt4(&F9yk z!g!~88ulk{z2xgG-3{{il~#8wah-S$PDsv)h$4v?e@iEW{%JRU21>lL%fw8~(DT#^ zywKIPee|O;<3lWQL$hEWAUeA2)~-xA7yV(I(Pe55DMTFD&6fP6bS3JXHE& ze2nS2pMh>pdB%}#XYcS*N|SMQmQ2J&7WZu72OP zj&wXEJHG2^_XZLJUco>yC|q(0L~1fPN+}|}7%$xcp-i$$kXV=D`~$(T`2Y)+8U2yu zvr%Mzd~RzcUfF#X_+uh&RV1fO9P&C;yFTuW5sb%e_xPYEB%AgtaOJ(ztnLEW_Hao2 zZHV-;f-^2epH zxn#@~NOA z11ZBV6tw5T5>Iz^Jb)0%OIlra;qJl^ufG156Ui{A2$qpZ_{^c1^R`+fbi*WT%;He@ zyieltZ{6ivdgz6i=@iEldc;jVS!5E5$rymBrD?v#K?Mr`?ocG-n&lL`@;sMYaM2m6 z)Tt641KSaR_(MIZi0J-0r(53x)8LPvfBwp-{yFxkKiTU)pdB)FGjC~7AfTS_$=v_Y z*Z#MJ`R|V^X!eb+h*>&0yC}OF{rl;vioX)<^+YRtY&IVpwZx%m(G%kbE0AM%G$dMnxO@9U~x`$qY-b?f@fkQ`9pNJeiFRud6ZB~-h_kWX>mCgONAn%y8FDS z1jJ5f3AGpr111cNW(=njoJxN_XIF;t1dO^e0km*ZO?76yVM(*B>Ix?cT=nC+o2XP$ zo!&hK$H9sd8H07(XoY2&7QG(*iL;qrs4U*82`MFg4P0Dzw%rEFXuGLBslk;D|Cf}sL{Bdj9TpChAGEEN*DvCLV(j_N-e zcLNc98=ZJ>3?UluoPSL2QwygpEHOrNp?KEVT77e1i3zzY%Y9lStpis{$m zm(cz{%HDxH)4xj^O$Qy@?AW%`NjkP|cWgVkW81cE+qP}nZ)X0p&N}nVoOeCvGhF+3 z?b@|#SADRMCTILsR4>rrHy4AU0PJ{|)~M^(@q-e3hLdj7_}OdzCb7?6jvhyQy!)3Gv3ELg)6!VjwA<}NC@GK%{NI0 zJT}T#aRk{>TXHs_T?t5eRw>v2ntXC6^p*jkWo`a)WZ0?8&JFWArnx^e@#->FsW0`H zaG;x(iE*;8ugY6Nhw%)c!hpKUyX3jhGA*i6J6@(fUBPL$z{4dz!^d6OL#hN?41I+g z!KjR5!+yZ+z+Y#U0p;s{fV{jmnQyy>%`Eu5GUWo&fsZL97=D~-b_O#00NQ+zO>XS` z6cn1v6jGixMb@=ItgwK*pbiAms3``uBok32wSnIF!(VPSH!Aca2(cTt_k_R zo!iTIMT0nvu%dfM`Tm^UEy_oqiKOy5hANU5*kqB?bbwBoz>e&)X{#5b+bFeY#FB}p zj#JFe|1ix8(itqE%U8Oe9{8p+lmPB#ITX?HhA~WU^`aMeLagZ?{J#$k1(<*Ga=!-# z(r?kozXS&T@4ut}e53yWT>JmB5K8z*I`ZXC(_u$bUyRSI0_sa;;}c3a_~)8{7*#4- z*hR0l-h`v$GUX!Y8S$OAGx`t7Oh5c~5aXowl-+DBh(YT4|& zz2Q~Iz2(b(#FdLc$(X>h-N-=%K&sS{-j3KfIshl~vZ(yd@zZNg`=RANO&IW5GfVZE zs6mU)V!n_RSxggdO;6lhUb4T6hUvzQ$bXz{bZkC4QCxql0E>+~jH^F@J~OC%bQSnw z!dVcM*I_fSE>Yp7Ty9TQ8VjoGh>2rpcziKFwP#ZBOnF7Eb+fb#57*n=S;keHfwc zH49H*3q*cDponQrD`v$M1l5b=n=zY6HiA!3d-3ZhDZ+LzKN9kDW#xrc^yy*`$5>{c zL~=_5`{q}NdlgOp5;!td)>hv&2umQuUJip0G-qJ0O^3tqXGdqmn}Z9DTz4j33Oh6* zRs?8e!2wbIsGfGP{9#WZD|RF{E86KJLEy$vz9KuntCBzNS(>A~j5a$SlK;1USU4_S zB~S;>^=U+8Kqh5?r+Nbfvr>prvVolf25hJ>p9%wx5ew2uyC4l%vXv}jkoT5T@NOml z^@+(g=Fks#f9@XKR3CWI`oEWac$gIO`*&M%ga!iQ{=d%2|J9ZRjEt@AzT>j~_r7Ge zrikzvS+U<-JIh%phK;}dvq;P%#NIq@*-Ro zG795&jLHtK3kt@gsFnVb^geyY&Q#0!O5NK<5l`92U6zg)2z^ixqqM;dD69k{pn5na zjzCXM7%i#qTM&x#D|7;Cs8qI%RB+HS5}ROsznNr@l{c2b$1$=!oSc;%3db4qHN!gG z%>$rEZM~8pIiTEB<|bT*mBLb{tT1uWu6OFJ)KF7(hj^P2rs5QyMx#q_*|BJuoXwJv zyh%!-X{q#YM`heA8Hj!57>5|U9qR_sVak1r z2ZH_d(s!DNqIuDZc5gkw(w^h@n7~LZ82aCz6|aG^n5bXeTCFdW z7m@2Ej5B%8MSD2HAr*BPh~b^9^;NJ~HXJJX7VeGl(#=!DS?r0mNIH^}d}=~&Ui+B^ z_wm)B4@6oIZ9FP|3#qxxW6-_;>b*pN_iexjXi=h}e`(krgGC?N9fbTnyYPYIO6K}B zFA_P-suUrOEb6b`R1i9SkQ*s2Jb7^Y-tOTodB9(}j@~WUg#QJE`jW#~0+;?p-Oyv- zf|?tPS8>)50*6Qh^}EqVu&_nQ+F^C-IvX6tCg-UDYg3UXsv^pjsXxyJD>pVkh$z=?hWh9Cyd8bJRGUUU{A@XK zEFVF%XrUA0yYJ(VcELR{+rh(`Av6SI^lRD?z)AQ$gLvakWpQF`_zp{aqZKUt@U1H2uD*qV*seS(QQ2Dy-oc-O8X zMKUd~h#|T^-6H}`fk?iJx;2kI2$Jj;QIf6%C{vhRVjqTvaHy7Wq*g(r%|c-3w(n|C zr9N;Rs9JfUDeCWJFL}uP;Y0FDf(Wy};!IZ2zFjeU(d+_6MEJlaX*p=3D!D0b>op*k zuYr23N1W0wly8w74c#W1LpXP|?)nWr(3eXs$E(c&PiERe!JWE^z0mm5cg@7F`_!@X za8nQpF$jOM+JDY~nb?BoW=-xIQ22c3TFS?M{R<~rPg$le_1#FXz85*d|IS}UP|x1z z+ey;M%HGW3JB?4_`{vKeW ztvEN4bJui=CcnsQr$FVybke#RDpaIHY{GaczId-A9x@ zD;Gi-lJ9Iau-2o;`eV1*3ztzN3!P`Jxrc)3ocRRAct^jD5E<^lS-Z2}IFL)oUQ<%h z4?B_#BP>07`M}`7ywGkk}UQpFIOvRZx*v_~StXIsHv% zk|F{D@%%dlD`92rZ1oTF`=>D~IOsVT{euA~R8PKHPL!_>)`|SN9}+Q?LbiX7V;y|` zxRlL>%Ik$H(5Pr(Mxx>JnH-I0{je|Ff^ zz-BM|Nl%;W&QA{{-tTu0O+e~5f#GiJBzZraC7MNqDOlr?|LhqN(b;MvwI7GKiU~0K z{eT373oTRU0c$+Rhw4@XlTr&~#ma@bzsx0Wj}{NwfD$q4FH;&|U+$&78LfwdW8CyW z;OP%PLaqA+xw`)8&GY!c(BaeeC9Brzjgx$h5BNTOB+6D5tkg^CsI*KLgPcM%ya0vp zbV@C>a?WQSn!)u=q#cuPB(|i9nbp{($Sdf>!kHiclcaabX4aUu7DhI!LxJ!}0zu6Q zTOuR4jCzAp4HQB~$lx0-I*OxW?+7`C+)yPz2LhTJcEWDtrjrKPGYcx7JOz5>Fq1BbCwdcc~)V(_dWb^W^Cg+d`E znHou4u_BxEZ#{w1)X2Kp1f&31bB$h<4(gDTg@SKrHdbYIH!LCpjoWx$m6H?^Rn_?n zQtIMb-Te>usVOR~oBNm|$%EuM-Al$LI7T(caHlUC_)EwIwb_}nTuQcJOCTkj73b`fRMv9KQcH|un^M#jXkC}A*2{;)>XL4t%9j;TE~jj=;kQxkt|4?2+jG$ zO>MA4Ihwb3fs%0QJ?(xri>|+HFKQwe~VKVDLRp+kcn%p&_N|cAcOg@pMI36hxJ}`pdX&g37 z;cjX3*$bO0ZP)WGjS+*#9BPg-k|%%ld(u(z6#Rs)CdDq3v`;~(3yzuCIThvMSR?)N8k)5*zG&`Z5~4mo5!kDs8X%#wWG=BAOu>f;BBx)i={ZF2%pg&8u9OHu$RwHWi(Zrnb_F!S4}H4Pemup{B?g&x zU#uE<^xzLw!p;7LfV$qJaB~})?F?0goeb3_q^thbL^rZUwm(m}&9u{(G_k#^JTnZ# z?ls#Ol&@v+(`?BLI#?e_JDXMXZ{(A&w5)*9@rU$xbIzoJK{+Kq$9~gGf?d^9H95ge z9~bmk_TQ;pQR=n`mb-!up;6q>rJg5h&~DXGOL10ZCpZElV9+NXAe{ z(U{+>WGl-7n9_cB;esbv`zQd5PGDmtwrS6_?5O|j?f&4!=Swn)P&{DTRm#Q z?lZCaTsQRukADw>9hvymR@=x9j+`A^;gGe7opW<)l3(+nJ@lsz+RXHLf8DN7;}xZk z?qsC(lwIfrLNr`%cX`j&a39Sp*W&E5ABI{ZAa5xsdUx~eii8JeRZF~w%iTbC#CrAF z-f(##d2g%O_TH()d(?*AHm2=rhVJdR;EgIyP9gikuT_JX+bTqZK_f(F?2|1`kjc^R zBzDQ!BZWG%cOfa7HvQaL{Ub@Sf-hnaA$2DxLI5WNxlEM_Y{{$4dSJMYh7u9pnQdxV z4jn2yc%eOWUGmF0IvlC|>3K7RbP86le>*$oQf1o9Hu$U5W?FiyW4x15Ke~2{<~fNTN9&{nZ5ltn)|0&e(%8lU!5}Jn=P4>{Wc_V#@<*& z#iR_5lKis*QVSbHPz*U4gh7_7OW&h{zBrzGiDu1}dlO-OKldzv6xfgM1;iJBv)(xV zL*nOH>}C4e_pM>gMOIgr7fA9zY$T{1XY4SU7$v!*x(F28!b*5-sBQdSve9%p&6M3A zoF)u_&hxDVt(HQi+d30wc#%MI?O*#P7A-(aDiQVoVBc|#+G2bKX3W9;9o8 zD4HbHZV4&TIV&gj0z6v7AXq7b^MENIMn!!BR-tnjn>8c7k|S+hdv8|W%?0CbQ$7B2 z*nZ5BW(Fd9tQJwZVVWzfGE-5!b%f6Gtb7t<-@dIT#=TMz3ERX_;%e*+5i3(E=Fe|ao}{&(4(W{aQ4Aoc)ELdd z5xg&)DFQ19QdauMEM#(&`Aef|XP5yeP7=4gf8P)3_V6z`))+>cj3Zt1W8V+5k z6@?Vs07*I%!{dvD{3k3PvAAMT~6`Iim@M4XaO_%YOCvyx_aZ#OE zEoQCTV=MOnIy3QCDFvy%ko~6YBp3`2U{rdbr*BHVsIz1!_!-at!VxNhO7NC`mw*3v z`Ttu;@xSWcS?XvTO7%Eu&JIN?8S!yGelAjipZZjjL?kL>E`1=KPegVn$cd#Q3 zmrT=BIxi`@g_jH)Xa+_?g2hpyNK%m(2OB8!%k?+{0(O|w)+-aJ*9?afapdUc!Kzrs z{bs76WLj({R!@J8BMHvCo3*s0;2pzhzGX)r8;v!#bHTvh^<3+|+&~E$E|kdCik&Q* zvXm9N43@#(!o=hFvr%fQ&OT-!rqBw$jx?HZJdVPlcdD=K;SDr6uCWgM^>3>bYYyzD zw(m$e)>4rAZ2TKb((Vb1@C$)B zlGwcqUCU-rWbV8uqUIsl`VCcnOj-itFqI_2Vd=!Iq?jNi9x#_YHyx#bWu>p$(+<#3 zm8~w;gB*jg_f08pzm}{qhFqd*D)ma%t4`7=-7rq(#5?lpDE3t^qTn!nJd{~h0E~E- zRQR>Q81&d@rddwej@!YvrbA+RoMKfi;I-d?R$U8^y^k3xwU)Hbm+Y+5OD;`JOia_@ z@eFpvBey;1Twd9l*KHO!*;QK5)5hjZ6$t;DMfiE(0a6m5?s6M|m_vXC)Q4Fs9sn_y zI!or%?trl8Gt;p&}Jf;`yVHP@rsXhgAkueW}cmxLXHXddup{SVk z>^B@F*hxOnbBoJ8BbZ4}yNfh{NlUbMcb;7pL3x^mNLtFPzQXori=YGCNI{)ZAZ2Ki zs3qvR(7N>3nl%-R(nxn9g25ba>ww@!Zk2n&Ba}d16bhv_#ER1_5xYp4v>EZSD=SiN zawHYv%hwEpP%wK16R};MR@m~tu!hMb+v9EDkD&DX5wQI`eh`K1)O`&W>qHzi z!b-DJ&}vPMc~072@*LfJeLTEC`v}F87}68vWOcpLQ|U|l0V(wYixZ*=QHzP%b48F5 zDzkei^(!En6E0%9u}ZGpvth=98Ab7vbAkWtt0*l8ho~bKg&k)N)D{X)Sw;9K%Rymb9ZkXRbICW~F^rHlD@gHfrM)$z@z z$hD#^b4Oa|U>c*}O;;{gCD0tASCj@XM=^K~@*b&A(W9HhBW7}y*>zs`L6&b(Numk+ z?}W2dTTY-k=m`2Mn)4HUL~E6!TYM-44baeHe*R4+@g^O;S2E_999y!?b&i{oCw2p8XKj8~?@*s%WZ!JnBS*(vHBdP{u*jZ;&mPhgW- z$TymUXpLsqmETA3RIEm7PvM~#n2jc{hcz=P?u0)H3}EOmNcTzyZTDabzVJS};Lw~R z^_n%#OhfmE{M47|-{~Pe!$80aEMfivs=~;(cxH+gPUI*ZYK)Fs^CUuPfB%5wwKIf`Er>NFR$wv_^&lqkC2)JPA$tSp%^o25 zAg&XPxP;|y!~aPnY+-Z{-RB5sI)^EdId1W3Ryen*fIbqnZ*#ViWDj((OR4xJM)(;? z@Cf4i$TZxF!ziNG;)MR>mr=gWYsSqO1fHC|%#CXi%S_NF)#i?IVU?g9jGmIR0)3Bq z;tln(pGsuhYpC|QPZ-M*8&b?$?(Qip*nJ?akUU7FF0*UvGnI!R3f3ehEjPhPEH4?iI+hc$O*6CpeI~ z4Sg%6ZtDeiGX3M@Xb0VgXkGxN8nJgs*k=MrN#I7+%!m&e>Y)R!$GXr{Ox1#dMkdI= zlKCh%&BnMT;qlKbqHxO{`^lO_0%GE1Wrg?yydI<3s6he$-Lq$K9S~S3G^v4nX^Z) zB1xZCP}vgY{yApKcg{ysSWd~`b){kFXX{Ue7MRxdIp*Pn%tWiA;G zK}!DfOQSN$&ZWcr5-u-l7x|fv7&wHK*XJt#+uRJnB2FM~@^XCA<8EU7^5gaHgUsjK zVOWSyGNZpfk~vg>rhqFct7@kb;0^O2Xsel9!;mh_$I zaKvjBu*O_)8H>OOS4ydd6g-9Aa_$Ws${Ws6Fz0|USEkulnyRswYM|urnEWUey-5v< zK|YioRQPd{ip*!92N>e3y5>A+Nv3n4toNold<;@)Cpa-}o{A3jKdb?O!_ZABIy-wA ztzaL_l_MAt9Aem+gcuy}HD3IYtK{aB*hzTjXq&0A@uXRXv^;8|0?@Am=!pbiG=C5N zM)McoW~TRnVW3NZq1KJj+xK2C;;K|}6aa~;Hr(bM#K7Rt=}86*!4%lv7!SYq>1?b! zoj=E)44db=!=F?h3B5g#AL`+B*zeH*a^T`<+KZ^BuwjR)kT#^@EDMz<=4WrL{?JQL z(Midu5k`G6nx|MAl2Y&qGSM%%J)+Yw(FWm|z4fu4I z{{3wjNT2C$ql;!i*H5F{3gKU*q?bZrK0;+SlBwYIPElp%gqUQ} zu~PZr#qYvYE(y1#z$@vrcmgY2xRG0o>lUpzY=8Rxlo4QAjRJzT;NnCL<(mUbSdA4= ztVE89jFFMl`L#!Zg%3PXupV$V{iK<4bVwi2|NAg#!f#s}|6Tho-?jh$0}cQ0{CR|dmG3a^sq@LvxXZ)+3$dF}+2P(mIEWS<*7dvo6~{*oVgRl! zQj7D|**X2unoU|<->1K~fm%Nsb}uww1XK5 zPTkQf9B`IX6+xXBtW=vbHP=GNFEGLjjx=4n!T8k>P0Dxgg)8?1odzkeL#&YQ#Ot0b z=PB19V^dl>CF9vFxxuNE`{qHrf083@(u~2?E+QAb|ND4Ak^;V`^p(&%y!)wtA0#DI~1sjPy=Gl=Jk_LKV+s!Y^j?t@%~H!tX2)H zm{hZ!i~RL`v`e690}D)}3FD}V(vmxXyhY%K5Guq{_Mv9?v2lT{bOWg4Zu^7y1ar8n zmAHd)JADf~14}K&Kd>r_R}_x(PBD?%GkD@IDUklYfy|?y1BVdi#9312{)remsr!-H zjW0tu#v*ygyWbLt^s5_5MkpYWOUgiCwk>cCafD`_APTvKBz%WJjzlS-G2A*dS)qkQzz504s~eJE&!(*U_>0mr$HykbwGNoNWwCEjL=c7M*D!Nb`PH zx2NPxryn>XZ%|N7#-LQKLHw1-kG_2=QJ2=JLW=C*nydd_?z&Q5N}%86-u%7SV*Gb- z@Bf(i5)`(qXJx-{k|yJdb?lP{@*FHb*?$CWe>MafB>S6?GqJ~&cUG(*a1pK4j zcf{!2#D*VPQ_jByclkm!s~C_7tTThdil^s=WdwIgp0IA$=lH>9hCTx z5Xr)>@*R|x(DjaQ$DHV74NS`Whn+KWt~fSy84>OBxriMf6kUU4Q-kS1l88`oJ;U37 zBQ0WgFx`l;cSai&{i2YGMjA#*3na}+e^znG8aHDsy4bZf z{#LURLOT3~vp8(Iz0R{4 z(_8XLA)?)amfcWVTsCQ-sSBOwSm)13fLBY`sl!Db%2|ifT=q zA}^pepW;deI;)PQ&|m^3N#3nC$*tDKC&*TfWst8|sxfW&I?b{?nN`JNk9Ca(mhRwR z;e*YDD(uF0O__g-j`;qano_bd|GzAsI+Vubzr}$(&aq;>^uHkxZUTeJ#UKKb;6ZDm zXJ;v)Dg@N3+lUox9T)|rNJr_O>1gvqMG~O-x)ZQ{39k$k* zrcOGGtVyrDyF9^lp_*9wqZg(DHLU6pbt5$?+x}t^@`ZWLSOY9S8qUS0f_DMG--u2U zVVx5|fL}q@Sl3A;632wqbUjvV!&-8wpc7-pG>olAC=&9uR9P+aLa{6Tryv9JHBdyU z`QqpdCu5x$noe5^wes^G-+w6U9@E!NDHQLKi5hO!OIh=Gi{cttNKdQZov`>`$0}qW zwz3-)$gk3`583rGJ_}20tDDcVxc&m|+f<1AbLy?n*OZa;*e5mRaNf1g%?~}~d-9qg z)YnEg7G_l=&u9@fFIBKaalRbC<3=@@*feY>lRsNADQ15TvdRTJZ<)eCYVPqzdL=Ef zN5(>Vd%-(d`|e!KyLWUEG);_E!J-fhAOl=zUcrgVX1&hj`Zz+wvF9Oz%X4gGuONcH z%h?(;os*+5gzz&rd5$4ULvA`P^W&(9fPMjG4QPG?KhaXi@O6O|U0j#gaaIq8)g2TV zw^p{f?V!a@N*#6eiN&o9wm34rAKw#f?N|a+zzc!gN;w?_aaFF$hD3`u9UipKy2=a?eobQF_M*REf$ zj;+{$jx7^GXy!mmwnHMf3B}G*11Dl+ur+U$HV>=|*rWme??d4H)D^+~34-e<&T4fK z9ektGZMEA`+wEVx>}pcQ8=?b3U&4M_&cEw^b7&G~t`IahA*>38X=Dd9PK+d+v5AchxFfgIsaho z3^g-d&4HLt@zfMHx9?onm0BKMiye@&M25!d0|j0nObOP+ni%+TRkv7Sys6+6#71_3 z=3c}|gh*XvU|-!JP`?&KXx|m7=3b=XOQhwATD=v29v@f&3!tGPuaC{Nnek)Hkat;U z8D}L&CC7!O1(_;b_eTUDwOd6z&YPOQpDHX}OEqX&rqBLxbi6Y+6raWRuS~FCMLRMt z&#=5pIeXB!uFvv)dfz7vM;+QgV~i`G1D= z-T1{F=Svc>DCY7thwMnMEmQWBpxlHg7sL~EN*8FEl-J$-QY%K%J<1cYy3$KV zG+EM%8p|KXJPMwGyQmer(9LR9MVP?GkZ=w}PhCJq%Z)LsM&!Gw6`W|6YLt|VXVknn zG+d8xv`&o*XpcrIyO?E>GlQ59W6fo)hgdm&!us+gk&~Z(xzd@ocd|b&VXN{1iqTsr*tppm%|xZev}kgETo?Ip)PrPEKQ`fJY27Z?+iQ zPb+`K9I8RYFXR$~Ml+_RwfhqjPI$G<^2eQukio^mMUAfca=8^`P$}-3av))0#reBX zJO?KRoQN}PfKy6EWE<${E5oA4psTIXI5R3P!`afUEO#@F#cW6?SdJ)pjcBxn{HXms zby#DnxcBA!a)&`0rbZD2SYTN$P0#hKE_J>aS6t>Fk>J=OkHFT(x{~rHi3m`WL<=kn zYqLhsunHC_IFkJ)nD=}RTK!-#DyN3zk?9q}WQ|y1rKvmlPWbjHi7UlXup~E2|PJyPAGVueL7){V%z~!0G zXAH|iVbtT<`S2``Tz}5WNHpQkL-$|7{gJQRQ z{~K-@lS>`6>%9heUPf-y_RL%GwF=+XQ~OK*X5E^AVS9Hz$Yi?j*y$}A5lRJRSrKl( z3QcA!z)W=;sR?}0Mz~&?X z!oKp_GaPNka5j@l=_W8i_Ofa*C=4c}Wn{Tg&f#Kv>KXE-R$KfXiUCcU6VXc% z=8i?pTr4YAqN+|9NHN6(T6PSGByZO+A&`CaMYXfh0S?fVLF)`1*NWI$0?QTU>kd1; zGzWn5_-2B({Gn)x14cpGBq|78lCZr3xPjhMM!`-370O&|EV~3vDVO@igfR9m|9LnF``CmprMnO!UW=7QAFV7bZS z&97u9G63r&&SVh|)l9V;7LLGCY8;X~D^VDNon%jj$@1u7VD2c4OvIF-u>sc%Ihq#3{;M1c1{1p*hfy2MCQDBv0zVR>fl{I|lfOf;-g+=$^M zq0Rs#+yN#^6GhBtw92LZA^WH9cMTdqHT|aKv9`5>skD<(_o8oU-&XLEN{BSkLfhlzuyX9QH{N}qaK6~?EU{Kz zFf*F$WS+nvgybofAOzsSJB2OZAEG_m7vlWn+^D;_jaN7gg(HGtYw~px zw}w`idAI|sf^=i2^*GKT7v~wW-*+2JZJYOB6^uJwuw86RE7aIFD9F(*S)1|L=(x*R zBloIwb9(ht1|YF%8f9femH5?zGAQAwWo zyqo4TV2R=B`U<5m8wAeMHEHpWnOW5wp)I$xr(kkl)R;Oi0isun=y}c-l7LZ7m;lm$ z$q4Iy6Sc&$7dUfcx*n3=`*`*UR zN1JtLOUYS-=7UaFQks;9^B@e^CN+Pz{Jd$gh_F`j>;ZkK-Md1}-@#73aDFjIwBy*d zTlwKK`nqGu3$(>F?Ap8A?q4y9mka`bxGNnAlZNNKWA&(V)8YwF5nmp7j%ul`_QG%4 zaeXBNd7~ytMg3#Xf>6W<>tYbEa%-$6=;P^Sh>aUHZ+e~0RG)Xi3%`rEs8MS8uYqwNdw4SWVkOjZaf` zG5VfUUiPoOG}N6 z<{qp@h!mly6=>7I?*}czyF3Y!CUIt=0}iD^XE&VrDA?Dp@(yuX{qsEJgb&Q}SNvXl zg?HrA?!MH-r4JN!Af3G9!#Qn(6l%OCA`)Ef2g8*M)Z!C4?WMK9NKh2jRTsnTgfut9 zpcZ7xAHd%`iq|80efZ31m3pN9wwBIl#Hqv=X)1r?($L>(#BR+)^)pSgbo+7#q<^S1nr$1&0=q$@M&POX?y?3L&3X z!%^Atu025LgEZ~|-)Cd0=o8K9A{$sT;SHj3M?l{!Er;st5w=T=K2^hJ<$(>&P!j2m zy3~(Qm?r5vh*EGKNLnP31{fhbiIU~c2GX_wqmM}ik7)NF$bEYKH^bK?MD+uJ24Qa=6~Fg-o!gSX*ZYoo{fzTLs$371<;7oLD|PiS3s zz;aIW1HVCV2r*#r`V-0hw_!s4!G4R|L@`u_;)KA?o(p8@$&bkWXV*taO%NC3k? zok=*KA5vswZe|5QOQd*4kD7Db^c|__5C;&|S5MvKdkPtu)vo}DGqDpc097%52V*z( zXp%Esq4?Rzj53SE6hKu;Xc!&LMZPPIj;O-Gnpq&!&u5db7Xi z64ox137#@4w5it68EPn<8RO48KG_2>?+Aa}Qo7fR%&wXJNf2J;Kwm6Opddsyx$gY# zU+b%y*{cBju|sw!wOcY_sMFWX9(C02d(;_YQh1*sH9?j$%`tKJyd(j0PtK#D+KLHI zL;b*n{CZ7IBb}MUGdG3l2vFGJn3TOYJD$Hz2OOy*%!5a{!!0mvok+e+N zaP?Ndm;SO(8-v%yvu#Rr;qFSgZrKJxV^uEnX@L(r4)dZeyh@yRqoi@3M|#Hz`hHN6 zA|8#&oFv8+1F8t(#j1%Ywdn%N2uREt;@bFAF}2zeI2KE&uZr$?-SIwKu<5ThXn_}f z`@RRcJ!3;pKi>mQe)VU5;c)zA@b#dd(J?}$sg0K5L^fIm8%TV4|>Q?qdfMwAh4AM8l8J|tiSF32B4q`!TYj_z!4Lowq99lipY?vlC zJssf0Vy+@In|fg`2sUl$wDGr$XY+4g*%PhDjM^G!Z{H44gwY-ymOqXka)G3ulfWdY ztNvx4oW*}=5^&NGhiS)Vzwb4;K`^*tjj8h$esujKb7&}?V_cU5kQElGgCL<358O^% zcT-EwP>hqb1%_8C_5R4e#7RH zp@tA$bVGG}q@TDR#-_^YT6}Zo5~p_5P%C_pRxwhgkor!;FtNFF#cncoEHm=#?xtY0 z1dHK{(;)5CQJ`0upxdRV?(5PH{JISW%d+@v8FmbTh9n5TXGnM`Cs}{(AbDxaIg&O2 zg<~{fKtj#r91u9PujPqhkFt7tid?IZ={dML<$3sh;A*Hw=VP++12;lVguAyio!na#kaYeX{|8h3_;g*K=UEf zU*{ZR($$Bw*(h;CSO4{alBraU^)52&nxLKUxg=1N5MCBUJ+3a^`9#f?7=4#`&oz?k zoz-#s4C)f8Uk@S*VF!Uc>X}9M`_*gkn0&GI2R*j zUlHUy5b;rLro3?bBLIt%dRd~2lT@kjcfY~OL5ZmTl)ExZyt!)^K#1p>U~rdclk``e z>=zHu6Qp^z%nX2U*RE14f{$U0*Cf)LfBz-c)t%iD%3wxsgHpRPvieqZgEC0IX_Vkd zxh27*KXpXxYD=^PP&EtX{NlX zC%v9)Wz6De((qH}Jqg-g`mwJ!IZ^L?eE2PE9@#9U0T>jD%e^K8-Phz7cZ-bP zU%h91CvGtNYmE{gk=tex+96fK^!I7P7YI3Ma}h)ty%NEN zn}d&kVV1DM4tPht`B!poikUOE396Uy+VE|E*eQuq zoT8M0M&bcREYOX7Q)F5+d!xec;2;H!WO+!r;v#uo402OEt*q%vj)mC@8wg}HO02G( zYG=<5*Vgl3R(5)N@{y+rvBY9CgUHeN`qQLm*3;$@Ez|2z2j3@V_m6j4Kc{5MTf}GG zMS_qp%5n(5$y|Ke#!!7w$4KKAJmhA@sJLcoS}Mv+l^X$2DS9H)ezLP0LfVpNMIPwL2U@Y%%7Q7jPXmGSPlRwa7*y~EkqObIDtyFm)q z-D~m~?At^+db`FvO2uEi2FuK@`RaSN*`T%G!}yA5f-hG1SYtty+Q}}`O^In~cgi>l z=zXVDDNVH?QHtgup3*d46+OEicA^)pIn2`}B}8}{g`msSbzzvq5zHCIjU>OrtmbrG zU26iOxr*A6%_LC(|3nH@ef$16q%glnTl}ob+(w=A9Uk48Pe(F^%ktv(oHC2Ve4|TE zc6J5le1ZqXdLP~+(UY@`Y?r~{B6_Alh8Q{OmhufQSf94*GFtAi(lV<=!6wqxL;jck zOnpR+=HK3Nh}Vv}%LXPzn;0b#^5Afk3y&G)X}NEkE`~TM%tU-P1@^=msCxOyP!IRO zBegW5wZ@10CM!9*_|kF~ZSxrk>r^zyCL|dy9$~*`OX?>1)fL1l(|lW|G!``CEq!N$ zMM)W~G2zDb6wA#)D5OmIMu_&UH_5B%DJ#NKl#R!?QVz>y5jLrK(-JpI6LIGVyD%W9 zg+7;cE40;Rcv9 zkCrUgZ-H}IaC=aY8~7*9+Ny?O=Ep;yso*#-SesEGSa3T&e&DQ`k!p#Zgb<6@KRjgn zG+Z?LoNstww}#+R`Y(?d>>GG^ncorkoKX@REYSTD zQTYHMwNiE~9MM(>u%!3KVR=O=by_thqeFR&Bm;D|lW@>^unOrb^k9yd-=S2LH0S7} z>ae^bwruKEB*7m=)u$5MIo(`)Y+RR5o>9(DDDV623UMVck1##|b`7H%yjK9unoDGkVIKrG*dvN;2S3P_9>ckR6c?7n{s5v!i;dE&<_aDaPA_ zi>Z&SHW^bWYJr-2sb7{WC|0k-a}7>k3)*YgZora(7dVnK7b6?Y7U|>t*u=-aLgC3` zvnz>+QQ_%r^ePEJA5X6^`Ey@^#{dDW(QZr*A_L9Y+QI4?xFXAQ-JDe?&YmeAVN{2b zK0DO+&S-fQWDg`ab0$mQodAEemrA3p{cHbqx{yVqz5Ns6)Rixse^k(i5spvs@22QF zAhsD~>)rC%n(#M+D1!s?DFCBTRfNF~`N7kC8by+1samiHH9dbid%Masz0;p`l^GuF z)taCc0FD9!#^qP3B`G>vZA2db%ma*@6WNWW{*kPq^|f^R%Ee|F-FM69H)u|#Qt{qt zoi{%@b&~<}!vBf99Ef=ih~RNSh2LT6zvdLf+KCi=hu6#d5v7kpppM&Z;F3;`{0FxW z@#nY=LnIjx1?~XD?48~y)>Y&odjWF%6G64~A_3<{rx6>R zqF2ozPyJzzmcF+3AQwJQ@C?KEo|5k3xP%;^ZN*zpQBm5ho(*e)*zn8NzzzG6V?5V0 z2<7tkys|TInay6or7^K(y0ZdwJz|6$blXL}SX7s2es~5{gYwS3d>6k|3V9vz-#G3! zh@|-B?^JP~seJrS$&XAfp`RknZ!pFw@e!a9WgKijDz3K#6@`ifTCWHTa}Tr}n!~;0 zh0~X4_sEKGZZ^}8+X9!T7NazNv{%@nJgpJ8M;Oa zaYo_2Qbk6_j7W15!`+XKC!`+_)IGZ>r6X=buKUkQ*5wXs5}A2D@eYvF0{q(=wm znxEYB{>rdO75{|gy2>`^UB!(y+9acVVRieAMG@Lhf)g>yr+Ccgf8oy1qUO@L$n8@A z;nKV>muW=<*rD@Su=A?nhxTpx>?1>jYOk(ytb|TNwq8q1{;WERaWZi0ov0xFjiIm} z)PkKhn`#2CSuR?p?4)9Vk#`#oL)#q8!B*j3s+x*6kQ~2Pog{K^{k(=xfv{IP9MecW zCB_bMVE;HQS12k5L;tHHjhJ8m%07IN<1N(vQCG+8IilmMo{g$Y5nrPhSx`OH03*55 z;^!ZP!KR|h3~K&8O?uAqKie(}FOYVMt}S-M;FF6%#pX@C<8P!jbk&G&a^_Oj+^2Ys z*1tnnx4eOpd*hgE$xD+(iTw1TaGNs=4*;Pf#P`fd%_%)Jk|eeooma)pR9ka)Ek(PX zq2N$R8sio=D*TQ0BaO+M*8wF-0cR8Bq6vZjr?NAFhjQ!V_)x?Yxmhd9T8#bPWJ^p2 zVbs{=P2C~;GV>Zlkw%u3?OM9&TE|2xMT@t3uSiNEt`MOO*Q>52Wh>pfXJR}YW6XQ{ zJfCN%^ZlJU=RD7Ip3^zMKT-4Q8#0faYOd#r>yK58)sH5XCS>Yj%p1^_p%gSNX4Iai z%;dio52O@`qrWD0>K#6CJvdGFcB%`pA47@W5qIzGe`HRY=O5CK4bZvl6IkJj{#%r? z|A5O4Uo8)Ng;t9f!sRAIsl1a8=TST_Vn(m0i`>XCa0r`>YP-LwxB%^wu8;8+GdQv( zG^usXB?ocI0_)y0MR`T!?Us5ehia8>M~+$sXlUCRovE--QR@;Ys?Ozq9P(Q7ZQ43> zpIo}_{z39UhS{5f8wKSDu+TKfi+#n{O-~4Uk zh*EmSxYYrfwOxCYV}}!zL%2uIc%Oe$XRV@rFeWeka?;Z(XI{}`X?HJGyIgFm@ZX;w zsc2~^A%MTLdqhpoV!jr)}36>dv>Px$jJImpFCzVcs)1b7l%&=qcE;^ zEoSbtk#6sYkpC=iQX(3 z5EUP%LDh0p49U2=$~DIZhi;dDRKwLN8`|PiC-Echa#PXZ|6)S}wWEA@3f!rX>G_!A zphhlmxu@3JVRr3xOWD}*UYv04{*WHt*vT;0@pVLmuu52Mb_Vg9Wg9EUuA2 zl8?Jv5GSU+*{PO$tBpirns`>?!VL-cX@gZO&q)OL%2_8U)8r*4jrGrH`p2zV!T-&| zaf{j)uCI!{A{R9~aJ?$SZ?kk?jfE7FM%1sOCd&S0B(^ckufHtAOetsuspYrqyZ)x8Z8=dG=GG1lcFtKmoxl{>m zAakHGc|f5ZKh>>}F8qu)Y29d2Op+uf?qK|dKPwE!pPkfGl#Sa#?TmJfv}jA5;1`#= zQqplM=!3^!2QZeCx7wu8uWl9!IN85^zrmqGDxsj;TVs=EU)ubiDaD<*@ss- zm%Y-l)9@TN+_0W7Ml5XnEz>_ep>fFIL{5V-n#cCKFhy#0p;!@D!D-=e{(8;*$#2G- z-~F3cHNv>%;D819xg3-F_yHg8bD1W}{1-kQ-da2kMRP?r=@>BD^b5H6=`Lf3y6VPn$`%)-GW}O^kSon7EBP;q9?=n_7O67v9pc>!pQb z)auPuaqG5v3l(E)_GSI_vFY2BtlPgw{(hIMip%d;>9vWnej@q%qMva4iRPI|N7n7w z(!_tL^K*((d428fyiU(eFYzyaICWGnFx_T^a$3(A4p<5kwVtGjOSNa=ey z3;wiIDZDmghb8BsMcSVyT9^W#{YkoGJ9As)0ccff5 zB`U1^TKO@jql!utGX7_6ceT=$mJTWcQ+7_Fk7=jIE7Lu2Ja%~~6K=X$o@5Q7)=`Ao z%Vptz#p~F$l82kO>0*a`LQ8HomkN}$Q0{w8GzfUMX3_$LbiUMT6?eJhshLtmT2m`2 zrK@zuUt8C6$2Zb?u5HM~2xm~H)s1rOJ^3v#{cdG~?xM<+6Lrd(chPMthvmtIcgJoV z-(H!YsUD=t^F)QFU+e|WYBXo`#ht!`&flPI?tga}(nLX13WI~;V?XO(57wx&_pbkw zBgcA$g+wx2w|Xvakrlw=n~x7nWeO7*SwR2(p1`8M*~Ae34SZ&}#$zt|Z%!C%XpOXbpLFv5`sjlu|+#!Pgo9FXG>J~QZn(O%YH zBWQs46dZC)E;!SviJp zefD-koJ?SaKCq_$3t)wALZM_9CQK zGw9iXX^iWLHTQFmME^y==>muB0FYBWAg>aJ#z};63aHSV~ z^&BI1Xx6m%m3k8-P|$7QUIaSpT%uDW?OD?BB+n%~l7+?9t%+Q~hX?=}`?8pcPE~ed z2_t~uEm#W0-QN{N#+ApD+=zZSaBm3ob`3@h+u^Gh4ttNN2s$sX!nzuwp?JOsGoHwj z2@l5>ME8YD3`fUA=$RfY>9hSG4D8@onJ^lTK8T>xz1g7`#v+8NaNr$;IubZHjA0js z2L>_#pi_KLjIjbU(W!eWi-1dyWY}RDad&1C;~9SzVCP+CjBSB%W;hBDGdrDHyErp5 z5X#cSZWs?oRzdJKA&bh!#B=h>1`ELv5fGsjM;8grEB_Ml5nw!Q?T_Fy!`b1Xw-Oi& zJK7`IPZ8{}^QU`YChTvFFb$*GF~83#Ejd(!t%MOOCWZs*(#FDY@nJtyM5ys3r$RH; zGwY5D3&8G^h`_zm90;)SqJ))TM><4FJcR=#j{NChP1sZn(R`H3fhIePF<1&VWkIAq zW^y3K#-asQg8eTLr4LygD9v;SEK4^GSPFI-K%^#fIhF$V7sl;-&O{IvfwyiWBC85G z7MZzT=Na3;D)1g*L}lf9j#XxMO|l*@z#B0U0n~;6Q((CogEzq;QX^ml3_auK-QH(! zYRlFYydetV8<%jvXTLoPZWwqE2_hCzy1W?cwt!a;Ak6maMa=Kjv3M;3Tu%5uArNL? z-SSL!&nS5679sOBE+%t6kqdtVcsdc$>26x21CM6sb)#h-?QyJ literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..5028f28 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..2fe81a7 --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# 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 +# +# https://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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..9109989 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 632331af5d360ac23c5d1deafb0029aedf0ce3f9 Mon Sep 17 00:00:00 2001 From: Stephan Classen Date: Tue, 28 Apr 2020 15:19:13 +0200 Subject: [PATCH 2/3] update npm dependencies --- package-lock.json | 8090 +++++++++++++++++++++++---------------------- package.json | 54 +- 2 files changed, 4187 insertions(+), 3957 deletions(-) diff --git a/package-lock.json b/package-lock.json index 329927d..45c9bc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,87 +5,66 @@ "requires": true, "dependencies": { "@babel/cli": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.2.3.tgz", - "integrity": "sha512-bfna97nmJV6nDJhXNPeEfxyMjWnt6+IjUAaDPiYRTBlm8L41n8nvw6UAqUCbvpFfU246gHPxW7sfWwqtF4FcYA==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.8.4.tgz", + "integrity": "sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag==", "dev": true, "requires": { - "chokidar": "^2.0.3", - "commander": "^2.8.1", + "chokidar": "^2.1.8", + "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.10", - "mkdirp": "^0.5.1", - "output-file-sync": "^2.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" - }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } } }, "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.8.3" } }, - "@babel/core": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", - "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.2.2", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.2", - "@babel/types": "^7.2.2", - "convert-source-map": "^1.1.0", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.10", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { - "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" - }, - "dependencies": { - "@babel/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==", - "dev": true - } - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -95,1210 +74,1637 @@ "ms": "^2.1.1" } }, - "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", - "dev": true - }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, "@babel/generator": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", - "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.2.2", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - } + "lodash": "^4.17.13", + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "@babel/helper-call-delegate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", - "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.0.tgz", - "integrity": "sha512-DUsQNS2CGLZZ7I3W3fvh0YpPDd6BuWJlDl+qmZZpABZHza2ErE3LxtEzLJFHFC1ZwtlAXvHhbFYbtM5o5B0WBw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.5.tgz", + "integrity": "sha512-IipaxGaQmW4TfWoXdqjY0TzoXQ1HRS0kPpEgvjosb3u7Uedcq297xFqDQiCcQtRRwzIMif+N1MLVI8C5a4/PAA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.2.3" + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", - "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-hoist-variables": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", - "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-module-transforms": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", - "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.10" + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", "dev": true }, "@babel/helper-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", - "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-replace-supers": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", - "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.0.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==", - "dev": true - }, - "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helpers": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", - "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", "dev": true, "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.3.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.0.tgz", - "integrity": "sha512-QkFPw68QqWU1/RVPyBe8SO7lXbPfjtqAxRYQKpFpaB8yMq7X2qAqfwK5LKoQufEkSmO5NQ70O6Kc3Afk03RwXw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/parser": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.2.tgz", - "integrity": "sha512-UNTmQ5cSLDeBGBl+s7JeowkqIHgmFAGBnLDdIzFmUNSuS5JF0XBcN59jsh/vJO/YjfsBqMxhMjoFGmNExmf0FA==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz", - "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.3.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.1.tgz", - "integrity": "sha512-Nmmv1+3LqxJu/V5jU9vJmxR/KIRWFk2qLHmbB56yRRRFhlaSuOVXscX3gUmhaKgUhzA3otOHVubbIEVYsZ0eZg==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", + "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", - "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-typescript": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz", - "integrity": "sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", + "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", - "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", - "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.10" + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", - "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.1.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", - "dev": true - } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-destructuring": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz", - "integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", - "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", - "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-function-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", - "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", - "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", - "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz", - "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", "dev": true, "requires": { - "regexp-tree": "^0.1.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3" } }, "@babel/plugin-transform-new-target": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", - "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", - "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.1.0", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-regenerator": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", - "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", "dev": true, "requires": { - "regenerator-transform": "^0.13.3" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" } }, "@babel/plugin-transform-template-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", - "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-typescript": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.2.0.tgz", - "integrity": "sha512-EnI7i2/gJ7ZNr2MuyvN2Hu+BHJENlxWte5XygPvfj/MbvtOkWor9zcnHpMMQL2YYaaCcqtIvJUyJ7QVfoGs7ew==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz", + "integrity": "sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-typescript": "^7.2.0" + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-typescript": "^7.8.3" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", - "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/preset-env": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", - "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.5.tgz", + "integrity": "sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.5", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.3.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.2.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.2.0", - "@babel/plugin-transform-classes": "^7.2.0", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.2.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, "@babel/preset-typescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz", - "integrity": "sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", + "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.1.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-typescript": "^7.9.0" } }, "@babel/register": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", - "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.9.0.tgz", + "integrity": "sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q==", "dev": true, "requires": { - "core-js": "^2.5.7", - "find-cache-dir": "^1.0.0", - "home-or-tmp": "^3.0.0", - "lodash": "^4.17.10", - "mkdirp": "^0.5.1", + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", "pirates": "^4.0.0", - "source-map-support": "^0.5.9" + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" }, "dependencies": { - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "ms": "^2.1.1" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, - "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", + "integrity": "sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "type-detect": "4.0.8" } }, - "@babel/traverse": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", - "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.6", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.1.6", - "@babel/types": "^7.1.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/formatio": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-5.0.1.tgz", + "integrity": "sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^5.0.2" + } + }, + "@sinonjs/samsam": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.0.3.tgz", + "integrity": "sha512-QucHkc2uMJ0pFGjJUDP3F9dq5dx8QIaqISl9QgwLOh6P9yv877uONPGXh/OH/0zmM3tW1JjuJltAZV2l7zU+uQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, + "@stryker-mutator/api": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/api/-/api-3.1.0.tgz", + "integrity": "sha512-HhfcATYxcIWpzOZ2J8MiqUkNyipF4QvJi8aDxI2r0Zc2aLkJZWj/VMrOuCVX/5AJqCpAJXSeVk/A+z2A15fQEg==", + "dev": true, + "requires": { + "mutation-testing-report-schema": "~1.3.0", + "surrial": "~2.0.2", + "tslib": "~1.11.1" + } + }, + "@stryker-mutator/babel-transpiler": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/babel-transpiler/-/babel-transpiler-3.1.0.tgz", + "integrity": "sha512-25m/hqSTci2CeFViQiEs4xotjYPSDw83zJdrGsUaopdGztGGQKlQSvBB4cgA8zqjB7IFWKT6BsD3Np7QjcgG7g==", + "dev": true, + "requires": { + "@stryker-mutator/api": "^3.1.0", + "@stryker-mutator/util": "^3.1.0", + "minimatch": "~3.0.4" }, "dependencies": { + "@stryker-mutator/util": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/util/-/util-3.1.0.tgz", + "integrity": "sha512-9u5cekP4VfYOdrBoRIJeYiVXiW/5EQfwPe029GFNn07OiSDsikiQQDI23xzew3DzDFTzQfN1dsPgqjB/r5kolw==", + "dev": true + } + } + }, + "@stryker-mutator/core": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/core/-/core-3.1.0.tgz", + "integrity": "sha512-riO2ccmOklvR5qXVrcEtUBqkryNY27lL85ZkFfcnPtOon0y1XtDClLz/DogLr4FH414RqHBL5ZMjrk0Bf/sKug==", + "dev": true, + "requires": { + "@stryker-mutator/api": "^3.1.0", + "@stryker-mutator/util": "^3.1.0", + "chalk": "~3.0.0", + "commander": "~4.1.0", + "file-url": "~3.0.0", + "get-port": "~5.0.0", + "glob": "~7.1.2", + "inquirer": "~7.1.0", + "istanbul-lib-instrument": "~3.3.0", + "lodash.flatmap": "^4.5.0", + "lodash.groupby": "^4.6.0", + "log4js": "6.1.2", + "mkdirp": "~1.0.3", + "mutation-testing-elements": "~1.3.0", + "mutation-testing-metrics": "~1.3.0", + "progress": "~2.0.0", + "rimraf": "~3.0.0", + "rxjs": "~6.5.1", + "source-map": "~0.7.3", + "surrial": "~2.0.2", + "tree-kill": "~1.2.0", + "tslib": "~1.11.1", + "typed-inject": "~2.1.1", + "typed-rest-client": "~1.7.1" + }, + "dependencies": { + "@stryker-mutator/util": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/util/-/util-3.1.0.tgz", + "integrity": "sha512-9u5cekP4VfYOdrBoRIJeYiVXiW/5EQfwPe029GFNn07OiSDsikiQQDI23xzew3DzDFTzQfN1dsPgqjB/r5kolw==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true + }, "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "file-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", + "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "log4js": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.1.2.tgz", + "integrity": "sha512-knS4Y30pC1e0n7rfx3VxcLOdBCsEo0o6/C7PVTGxdVK+5b1TYOSGQPn9FDcrhkoQBV29qwmA2mtkznPAQKnxQg==", + "dev": true, + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.3" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true + }, + "typed-rest-client": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.7.3.tgz", + "integrity": "sha512-CwTpx/TkRHGZoHkJhBcp4X8K3/WtlzSHVQR0OIFnt10j4tgy4ypgq/SrrgVpA1s6tAL49Q6J3R5C0Cgfh2ddqA==", + "dev": true, + "requires": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "1.8.3" + } } } }, - "@babel/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", - "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", + "@stryker-mutator/html-reporter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/html-reporter/-/html-reporter-3.1.0.tgz", + "integrity": "sha512-Lpn9YGt4NS9lLYhjBNZ1yZ9tCX9FWa66skR6Ieij3wMMtQvPlSswar6fmVqUiyPl/wmpTGSoptOcWDFEZ5qp8A==", + "dev": true + }, + "@stryker-mutator/javascript-mutator": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/javascript-mutator/-/javascript-mutator-3.1.0.tgz", + "integrity": "sha512-0UUp9f8vnbIo/5lWm91OZGkcb2x8XdlE38AZbrJmYNqENh11ZoZywoKpYyn/sIpmp2CDpAKY+CxWCr8yiFTiZA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "@babel/generator": "~7.8.3", + "@babel/parser": "~7.8.3", + "@babel/traverse": "~7.8.3", + "@stryker-mutator/api": "^3.1.0", + "tslib": "~1.11.1" }, "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "@babel/generator": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.7", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "dev": true + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, - "@sinonjs/commons": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.0.tgz", - "integrity": "sha512-j4ZwhaHmwsCb4DlDOIWnI5YyKDNMoNThsmwEpfHx6a1EpsGZ9qYLxP++LMlmBRjtGptGHFsGItJ768snllFWpA==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/formatio": { + "@stryker-mutator/mocha-framework": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.1.0.tgz", - "integrity": "sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg==", + "resolved": "https://registry.npmjs.org/@stryker-mutator/mocha-framework/-/mocha-framework-3.1.0.tgz", + "integrity": "sha512-tTgivRwRBoCOkBLIDrVlTvpHxAIFLhdAYn1+3AjOEH+fO90W58OPBmixon3E2Xwro3XsGEQCzeJyA40Qo6v4FA==", "dev": true, "requires": { - "@sinonjs/samsam": "^2 || ^3" + "@stryker-mutator/api": "^3.1.0", + "@stryker-mutator/util": "^3.1.0" + }, + "dependencies": { + "@stryker-mutator/util": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stryker-mutator/util/-/util-3.1.0.tgz", + "integrity": "sha512-9u5cekP4VfYOdrBoRIJeYiVXiW/5EQfwPe029GFNn07OiSDsikiQQDI23xzew3DzDFTzQfN1dsPgqjB/r5kolw==", + "dev": true + } } }, - "@sinonjs/samsam": { + "@stryker-mutator/mocha-runner": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.1.0.tgz", - "integrity": "sha512-IXio+GWY+Q8XUjHUOgK7wx8fpvr7IFffgyXb1bnJFfX3001KmHt35Zq4tp7MXZyjJPCLPuadesDYNk41LYtVjw==", + "resolved": "https://registry.npmjs.org/@stryker-mutator/mocha-runner/-/mocha-runner-3.1.0.tgz", + "integrity": "sha512-Zg4jisPRmZDV2i4TUIJTsh8TmInSuVHZ0AMyY7vWdvxD0EQUBW+CrnDsfmhmiRpUej6jM8kc/XuqOZetO8dZ4A==", "dev": true, "requires": { - "@sinonjs/commons": "^1.0.2", - "array-from": "^2.1.1", - "lodash.get": "^4.4.2" + "@stryker-mutator/api": "^3.1.0", + "multimatch": "~4.0.0", + "tslib": "~1.11.1" + }, + "dependencies": { + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + } } }, - "@stryker-mutator/util": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@stryker-mutator/util/-/util-0.1.0.tgz", - "integrity": "sha512-1hdU/FV5vkBeIfkBjoNC5AUGEZYvxkjKHBvRgAqoSvMQ0X0hfZXCB1eXdOIW2CbZj6/IlSxVvBwBejAsFXDfmw==", + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { - "@xtuc/long": "4.2.1" + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, "@xtuc/ieee754": { @@ -1308,58 +1714,62 @@ "dev": true }, "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, "acorn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", - "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" } }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", "dev": true }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -1372,28 +1782,38 @@ "dev": true }, "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "optional": true + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -1405,12 +1825,6 @@ "color-convert": "^1.9.0" } }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -1419,7 +1833,27 @@ "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" - } + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } }, "aproba": { "version": "1.2.0", @@ -1427,6 +1861,12 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1454,51 +1894,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-differ": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.0.3.tgz", - "integrity": "sha1-AZW7AMzM8nEQbv7kpHhkiLcYBxI=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -1520,11 +1921,12 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -1570,15 +1972,9 @@ "dev": true }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "asynckit": { @@ -1600,21 +1996,31 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, "babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" } }, "balanced-match": { @@ -1675,19 +2081,13 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, "bcrypt-pbkdf": { @@ -1706,15 +2106,25 @@ "dev": true }, "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "bn.js": { @@ -1769,9 +2179,9 @@ "dev": true }, "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, "browser-stdout": { @@ -1852,20 +2262,21 @@ } }, "browserslist": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", - "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000929", - "electron-to-chromium": "^1.3.103", - "node-releases": "^1.1.3" + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -1892,25 +2303,37 @@ "dev": true }, "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { - "bluebird": "^3.5.3", + "bluebird": "^3.5.5", "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", + "glob": "^7.1.4", "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "cache-base": { @@ -1930,22 +2353,51 @@ "unset-value": "^1.0.0" } }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caniuse-lite": { - "version": "1.0.30000932", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000932.tgz", - "integrity": "sha512-4bghJFItvzz8m0T3lLZbacmEY9X1Z2AtIzTr7s7byqZIOumASfr4ynDx7rtm0J85nDmx8vsgR6vnaSoeU8Oh0A==", + "version": "1.0.30001048", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz", + "integrity": "sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==", "dev": true }, "caseless": { @@ -1992,36 +2444,35 @@ "dev": true }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", "glob-parent": "^3.1.0", - "inherits": "^2.0.1", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "readdirp": "^2.2.1", + "upath": "^1.1.1" } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2037,12 +2488,6 @@ "safe-buffer": "^5.0.1" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -2066,66 +2511,63 @@ } } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true }, - "cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "restore-cursor": "^3.1.0" } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -2151,25 +2593,19 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "dev": true - }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, "commondir": { @@ -2179,9 +2615,9 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { @@ -2203,13 +2639,10 @@ } }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "constants-browserify": { "version": "1.0.0", @@ -2218,9 +2651,9 @@ "dev": true }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -2238,6 +2671,17 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "copy-descriptor": { @@ -2246,11 +2690,23 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "core-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", - "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==", - "dev": true + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } }, "core-util-is": { "version": "1.0.2", @@ -2259,25 +2715,16 @@ "dev": true }, "coveralls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", - "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.0.tgz", + "integrity": "sha512-sHxOu2ELzW8/NC1UP5XVLbZDzO4S3VxfFye3XYCznopHy02YjNkHcj5bKaVw2O7hVaBdBjEdQGpie4II1mWhuQ==", "dev": true, "requires": { - "growl": "~> 1.10.0", - "js-yaml": "^3.11.0", - "lcov-parse": "^0.0.10", + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", "log-driver": "^1.2.7", - "minimist": "^1.2.0", - "request": "^2.85.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + "minimist": "^1.2.5", + "request": "^2.88.2" } }, "create-ecdh": { @@ -2350,24 +2797,32 @@ } }, "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.2.0.tgz", + "integrity": "sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA==", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } } }, "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "dashdash": { @@ -2380,28 +2835,16 @@ } }, "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" } }, - "date-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", - "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2417,6 +2860,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decimal.js": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", + "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -2432,18 +2881,21 @@ "type-detect": "^4.0.0" } }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2491,12 +2943,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -2507,9 +2953,9 @@ "dev": true }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -2540,9 +2986,9 @@ } }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -2555,18 +3001,26 @@ "dev": true }, "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } } }, "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -2586,15 +3040,15 @@ } }, "electron-to-chromium": { - "version": "1.3.108", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.108.tgz", - "integrity": "sha512-/QI4hMpAh48a1Sea6PALGv+kuVne9A2EWGd8HrWHMdYhIzGtbhVVHh6heL5fAzGaDnZuPyrlWJRl8WPm4RyiQQ==", + "version": "1.3.420", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.420.tgz", + "integrity": "sha512-iVmQhf25F+5bdAyDrfOmCMjyLlIwsr9UT/LyYPQ3J1Vrypr9IgHf2PxqlsnzicnRAYDev6S9cl1tYlDHZUHY/g==", "dev": true }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -2611,30 +3065,48 @@ "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", "integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=" }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "errno": { @@ -2647,23 +3119,28 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -2671,6 +3148,12 @@ "is-symbol": "^1.0.2" } }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2678,24 +3161,18 @@ "dev": true }, "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", "dev": true, "requires": { - "esprima": "^3.1.3", + "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2706,55 +3183,50 @@ } }, "eslint": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.13.0.tgz", - "integrity": "sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.5.3", + "ajv": "^6.10.0", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.0", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", "esquery": "^1.0.1", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.1.0", - "js-yaml": "^3.12.0", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.5", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.0.2", - "text-table": "^0.2.0" + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -2764,27 +3236,42 @@ "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "type-fest": "^0.8.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2792,26 +3279,29 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", - "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "requires": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -2821,12 +3311,20 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } } }, "esrecurse": { @@ -2839,21 +3337,21 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", "dev": true }, "evp_bytestokey": { @@ -2881,14 +3379,11 @@ "strip-eof": "^1.0.0" }, "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true } } }, @@ -2964,9 +3459,9 @@ } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -3036,12 +3531,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -3052,15 +3541,15 @@ "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -3070,35 +3559,35 @@ "dev": true }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^2.0.1" } }, - "file-url": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-2.0.2.tgz", - "integrity": "sha1-6VF4TXkJUSfTcTApqwY/QIGMoq4=", - "dev": true + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, "fill-range": { "version": "4.0.0", @@ -3124,68 +3613,90 @@ } }, "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", + "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^2.0.0" } }, "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "dev": true, "requires": { "detect-file": "^1.0.0", - "is-glob": "^3.1.0", + "is-glob": "^4.0.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true } } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, "for-in": { @@ -3194,6 +3705,59 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -3230,6 +3794,23 @@ "readable-stream": "^2.0.0" } }, + "fromentries": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", + "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -3255,14 +3836,15 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" }, "dependencies": { "abbrev": { @@ -3274,7 +3856,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3283,7 +3866,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -3295,19 +3878,21 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "chownr": { - "version": "1.0.1", + "version": "1.1.4", "bundled": true, "dev": true, "optional": true @@ -3315,17 +3900,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3334,16 +3922,16 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "3.2.6", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -3361,12 +3949,12 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -3392,7 +3980,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.6", "bundled": true, "dev": true, "optional": true, @@ -3412,16 +4000,16 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true, @@ -3440,9 +4028,10 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3454,6 +4043,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3468,78 +4058,82 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.8", + "version": "1.2.5", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.9.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" } }, "mkdirp": { - "version": "0.5.1", + "version": "0.5.3", "bundled": true, "dev": true, + "optional": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "ms": { - "version": "2.0.0", + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.14.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^4" + "tar": "^4.4.2" } }, "nopt": { - "version": "4.0.1", + "version": "4.0.3", "bundled": true, "dev": true, "optional": true, @@ -3549,19 +4143,29 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.4.8", "bundled": true, "dev": true, "optional": true, "requires": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npmlog": { @@ -3579,7 +4183,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3591,6 +4196,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3624,33 +4230,25 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } } }, "readable-stream": { - "version": "2.3.6", + "version": "2.3.7", "bundled": true, "dev": true, "optional": true, @@ -3665,18 +4263,19 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.7.1", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3691,7 +4290,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.1", "bundled": true, "dev": true, "optional": true @@ -3712,6 +4311,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3731,6 +4331,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3742,18 +4343,18 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.13", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -3763,23 +4364,25 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -3795,10 +4398,16 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-func-name": { @@ -3808,16 +4417,30 @@ "dev": true }, "get-port": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.1.0.tgz", - "integrity": "sha512-4/fqAYrzrzOiqDrdeZRKXGdTGgbkfTEumGlNQPeP6Jy8w0PzN9mzeNQ3XgHaTNie8pQ3hOUkrwlZt2Fzk5H9mA==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.0.0.tgz", + "integrity": "sha512-imzMU0FjsZqNa6BqOjbbW6w5BivHIuQKopjpPqcnx0AVHJQKCxK1O+Ab3OrVXhrekqfVMjwA9ZYu062R+KcIsQ==", + "dev": true, + "requires": { + "type-fest": "^0.3.0" + }, + "dependencies": { + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } }, "get-stream": { - "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } }, "get-value": { "version": "2.0.6", @@ -3835,9 +4458,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3870,22 +4493,27 @@ } }, "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + } } }, - "global-modules-path": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.1.tgz", - "integrity": "sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg==", - "dev": true - }, "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", @@ -3900,15 +4528,15 @@ } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, "growl": { @@ -3949,9 +4577,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -4006,10 +4634,20 @@ "minimalistic-assert": "^1.0.1" } }, + "hasha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", + "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "hmac-drbg": { @@ -4023,30 +4661,30 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "home-or-tmp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", - "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", - "dev": true - }, "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, "requires": { "parse-passwd": "^1.0.0" } }, "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "^1.0.5" } }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -4074,9 +4712,9 @@ } }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, "iferr": { @@ -4092,9 +4730,9 @@ "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -4109,60 +4747,6 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } } }, "imurmurhash": { @@ -4171,10 +4755,16 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { @@ -4188,9 +4778,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "ini": { @@ -4200,39 +4790,83 @@ "dev": true }, "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" }, "dependencies": { - "ansi-regex": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "has-flag": "^4.0.0" } } } @@ -4258,6 +4892,12 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -4265,6 +4905,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-binary-path": { @@ -4283,9 +4934,9 @@ "dev": true }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "dev": true }, "is-data-descriptor": { @@ -4295,12 +4946,23 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-descriptor": { @@ -4335,15 +4997,15 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -4356,14 +5018,19 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4373,34 +5040,34 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", "dev": true }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -4415,6 +5082,12 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4440,96 +5113,286 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, - "istanbul-lib-instrument": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", - "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.3", - "semver": "^5.5.0" + "append-transform": "^2.0.0" } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-13.2.0.tgz", - "integrity": "sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.0.9", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.5", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, - "jsdom-global": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", - "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", - "dev": true + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, - "json-parse-better-errors": { - "version": "1.0.2", + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.2.2.tgz", + "integrity": "sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.0.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "jsdom-global": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", + "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true @@ -4558,6 +5421,24 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -4571,19 +5452,16 @@ } }, "just-extend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", - "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", + "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", "dev": true }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "lcid": { "version": "2.0.0", @@ -4595,11 +5473,26 @@ } }, "lcov-parse": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", - "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", "dev": true }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -4610,12 +5503,6 @@ "type-check": "~0.3.2" } }, - "lightercollective": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lightercollective/-/lightercollective-0.1.0.tgz", - "integrity": "sha512-J9tg5uraYoQKaWbmrzDDexbG6hHnMcWS1qLYgJSWE+mpA3U5OCSeMUhb+K55otgZJ34oFdR0ECvdIb3xuO5JOQ==", - "dev": true - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -4623,13 +5510,13 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -4641,35 +5528,35 @@ "requires": { "minimist": "^1.2.0" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true } } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "^3.0.0", + "p-locate": "^2.0.0", "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "lodash.flatmap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, "lodash.get": { @@ -4678,6 +5565,12 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -4690,48 +5583,15 @@ "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", "dev": true }, - "log4js": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz", - "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==", + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, "requires": { - "circular-json": "^0.5.5", - "date-format": "^1.2.0", - "debug": "^3.1.0", - "rfdc": "^1.1.2", - "streamroller": "0.7.0" - }, - "dependencies": { - "circular-json": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", - "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==", - "dev": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "chalk": "^2.4.2" } }, - "lolex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.0.0.tgz", - "integrity": "sha512-hcnW80h3j2lbUfFdMArd5UPA/vxZJ+G8vobd+wg3nVEQA0EigStbYcrG030FJxL6xiDDPEkoMatV9xIh5OecQQ==", - "dev": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4751,12 +5611,13 @@ } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, "map-age-cleaner": { @@ -4795,14 +5656,14 @@ } }, "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, "memory-fs": { @@ -4834,14 +5695,6 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, "miller-rabin": { @@ -4855,24 +5708,24 @@ } }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "1.44.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimalistic-assert": { @@ -4897,9 +5750,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "mississippi": { @@ -4921,9 +5774,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -4942,46 +5795,125 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", + "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", "dev": true, "requires": { + "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", + "chokidar": "3.3.0", + "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "glob": "7.1.2", + "find-up": "3.0.0", + "glob": "7.1.3", "growl": "1.10.5", - "he": "1.1.1", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" }, "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "ms": "2.0.0" + "to-regex-range": "^5.0.1" } }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4992,14 +5924,102 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "requires": { "has-flag": "^3.0.0" } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } } } }, @@ -5015,47 +6035,56 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multimatch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz", - "integrity": "sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==", - "dev": true, - "requires": { - "array-differ": "^2.0.3", - "array-union": "^1.0.2", - "arrify": "^1.0.1", - "minimatch": "^3.0.4" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mutation-testing-elements": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mutation-testing-elements/-/mutation-testing-elements-1.3.1.tgz", + "integrity": "sha512-XXP/enxyOd8X6lK/lu4nlPGLmwH3wfMwj9eatxLp4er0zrmv0p5gGZVkj4KnuuGfp7rnlVNBI/5EZShPJgK3HA==", "dev": true }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "mutation-testing-metrics": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mutation-testing-metrics/-/mutation-testing-metrics-1.3.0.tgz", + "integrity": "sha512-T7UkUGljyCLMEWGK6YtRTjt4fxqi5+052gjDBkKBR6T5Po6DbwwIx6DAvFyBYzjBzUx6wUhXt7UaxB/wy+JyEg==", "dev": true, "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "mutation-testing-report-schema": "^1.3.0" } }, + "mutation-testing-report-schema": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mutation-testing-report-schema/-/mutation-testing-report-schema-1.3.1.tgz", + "integrity": "sha512-2T2A5qBg+2SZ7CtAvW5m4W95VJxZ/UsSWVwzv3VZpm7c2VoGgIWZGPiTC76a+gorxJobyCzkWv0902UNs4Wl5Q==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", "dev": true, "optional": true }, @@ -5076,14 +6105,6 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, "natural-compare": { @@ -5093,9 +6114,9 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "nice-try": { @@ -5105,64 +6126,32 @@ "dev": true }, "nise": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.8.tgz", - "integrity": "sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.0.3.tgz", + "integrity": "sha512-EGlhjm7/4KvmmE6B/UFsKh7eHykRl9VH+au8dduHLCyWUO/hr7+N+WtTvDUwc9zHuM1IaIJs/0lQ6Ag1jDkQSg==", "dev": true, "requires": { - "@sinonjs/formatio": "^3.1.0", + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" - }, - "dependencies": { - "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - } + "path-to-regexp": "^1.7.0" } }, - "nock": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/nock/-/nock-9.6.1.tgz", - "integrity": "sha512-EDgl/WgNQ0C1BZZlASOQkQdE6tAWXJi8QQlugqzN64JJkvZ7ILijZuG24r4vCC7yOfnm6HKpne5AGExLGCeBWg==", + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", "dev": true, "requires": { - "chai": "^4.1.2", - "debug": "^3.1.0", - "deep-equal": "^1.0.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.5", - "mkdirp": "^0.5.0", - "propagate": "^1.0.0", - "qs": "^6.5.1", - "semver": "^5.5.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" } }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -5175,7 +6164,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -5187,7 +6176,7 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { "punycode": { @@ -5204,23 +6193,26 @@ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", "dev": true }, - "node-releases": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.5.tgz", - "integrity": "sha512-6C2K0x1QlYTz9wCueMN/DVZFcBVg/qsj2k9iV5gV/+OvG4KNrl7Nu7TWbWFQ3/Z2V10qVFQWtj5Xa+VBodcI6g==", + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, "requires": { - "semver": "^5.3.0" + "process-on-spawn": "^1.0.0" } }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "npm-run-path": { "version": "2.0.2", @@ -5231,1090 +6223,276 @@ "path-key": "^2.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "nwsapi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.0.tgz", - "integrity": "sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, "nyc": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.2.0.tgz", - "integrity": "sha512-gQBlOqvfpYt9b2PZ7qElrHWt8x4y8ApNfbMBoDPdl3sY4/4RJwCxDGTSqhA9RnaguZjS5nW7taW8oToe86JLgQ==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.1.tgz", + "integrity": "sha512-n0MBXYBYRqa67IVt62qW1r/d9UH/Qtr7SF1w/nQLJ9KxvWF6b2xCHImRAixHN9tnMMYHC2P14uo6KddNGwMgGg==", "dev": true, "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^3.0.1", - "convert-source-map": "^1.6.0", - "find-cache-dir": "^2.0.0", - "find-up": "^3.0.0", - "foreground-child": "^1.5.6", - "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.3", - "istanbul-lib-hook": "^2.0.3", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.2", - "istanbul-reports": "^2.1.0", - "make-dir": "^1.3.0", - "merge-source-map": "^1.1.0", - "resolve-from": "^4.0.0", - "rimraf": "^2.6.3", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", "signal-exit": "^3.0.2", - "spawn-wrap": "^1.4.2", - "test-exclude": "^5.1.0", - "uuid": "^3.3.2", - "yargs": "^12.0.5", - "yargs-parser": "^11.1.1" + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "1.0.0", - "bundled": true, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "default-require-extensions": "^2.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "async": { - "version": "2.6.1", - "bundled": true, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "lodash": "^4.17.10" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-name": "~1.1.4" } }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "caching-transform": { - "version": "3.0.1", - "bundled": true, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { - "hasha": "^3.0.0", - "make-dir": "^1.3.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.3.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, - "camelcase": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "cliui": { + "find-up": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "commander": { - "version": "2.17.1", - "bundled": true, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true + "requires": { + "p-locate": "^4.1.0" + } }, - "convert-source-map": { - "version": "1.6.0", - "bundled": true, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "semver": "^6.0.0" } }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "p-try": "^2.0.0" } }, - "debug": { - "version": "4.1.1", - "bundled": true, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "ms": "^2.1.1" + "p-limit": "^2.2.0" } }, - "decamelize": { - "version": "1.2.0", - "bundled": true, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "default-require-extensions": { - "version": "2.0.0", - "bundled": true, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "strip-bom": "^3.0.0" + "find-up": "^4.0.0" } }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "once": "^1.4.0" + "ansi-regex": "^5.0.0" } }, - "error-ex": { - "version": "1.3.2", - "bundled": true, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "es6-error": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "execa": { - "version": "1.0.0", - "bundled": true, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.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" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "bundled": true, - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" } }, - "find-cache-dir": { - "version": "2.0.0", - "bundled": true, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } - }, - "find-up": { - "version": "3.0.0", - "bundled": true, + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "locate-path": "^3.0.0" + "is-descriptor": "^0.1.0" } }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.12", - "bundled": true, - "dev": true, - "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "hasha": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-stream": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invert-kv": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, - "istanbul-lib-report": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "supports-color": "^6.0.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "rimraf": "^2.6.2", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "istanbul-reports": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.11" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "lcid": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "bundled": true, - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "mem": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.10", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-is-promise": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "package-hash": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "pump": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.3", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^1.0.1" - } - }, - "uglify-js": { - "version": "3.4.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "uuid": { - "version": "3.3.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "2.4.2", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "12.0.5", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.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 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "is-buffer": "^1.1.5" } } } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { @@ -6326,14 +6504,26 @@ "isobject": "^3.0.0" } }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.pick": { @@ -6355,26 +6545,26 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, "os-browserify": { @@ -6398,18 +6588,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "output-file-sync": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", - "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" - } + "dev": true }, "p-defer": { "version": "1.0.0", @@ -6424,65 +6603,86 @@ "dev": true }, "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" } }, "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "aggregate-error": "^3.0.0" } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, "pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } }, "parent-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", - "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" } }, "parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -6500,9 +6700,9 @@ "dev": true }, "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "dev": true }, "pascalcase": { @@ -6512,9 +6712,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -6535,12 +6735,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -6554,9 +6748,9 @@ "dev": true }, "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, "requires": { "isarray": "0.0.1" @@ -6595,16 +6789,22 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pirates": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.0.tgz", - "integrity": "sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "dev": true, "requires": { "node-modules-regexp": "^1.0.0" @@ -6617,13 +6817,61 @@ "dev": true, "requires": { "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } } }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } }, "posix-character-classes": { "version": "0.1.1", @@ -6637,12 +6885,6 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "prettier": { - "version": "1.16.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", - "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", - "dev": true - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -6656,11 +6898,20 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -6673,28 +6924,16 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "propagate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", - "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", - "dev": true - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "public-encrypt": { @@ -6769,256 +7008,89 @@ "dev": true }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", - "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-transform": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", - "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", - "dev": true, - "requires": { - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp-tree": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.0.tgz", - "integrity": "sha512-rHQv+tzu+0l3KS/ERabas1yK49ahNVxuH40WcPg53CzP5p8TgmmyBgHELLyJcvjhTD0e5ahSY6C76LbEVtr7cg==", - "dev": true, - "requires": { - "cli-table3": "^0.5.0", - "colors": "^1.1.2", - "yargs": "^10.0.3" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "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" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^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": "^8.1.0" - } - }, - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "regexpp": { @@ -7028,29 +7100,29 @@ "dev": true }, "regexpu-core": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", - "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -7064,6 +7136,15 @@ } } }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -7083,9 +7164,9 @@ "dev": true }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -7095,7 +7176,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -7105,47 +7186,29 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } } }, "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", "dev": true, "requires": { - "lodash": "^4.13.1" + "lodash": "^4.17.15" } }, "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", "dev": true, "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" } }, "require-directory": { @@ -7155,15 +7218,15 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -7194,6 +7257,19 @@ "requires": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } } }, "resolve-from": { @@ -7209,12 +7285,12 @@ "dev": true }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -7225,15 +7301,15 @@ "dev": true }, "rfdc": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz", - "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -7250,13 +7326,10 @@ } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "run-queue": { "version": "1.0.3", @@ -7268,9 +7341,9 @@ } }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -7298,35 +7371,34 @@ "dev": true }, "saxes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.6.tgz", - "integrity": "sha512-LAYs+lChg1v5uKNzPtsgTxSS5hLo8aIhSMCJt1WMpefAxm3D1RTpMwSpb6ebdL31cubiLTnhokVktBW+cv9Y9w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, "requires": { - "xmlchars": "^1.3.1" + "xmlchars": "^2.2.0" } }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" } }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", "dev": true }, "set-blocking": { @@ -7336,9 +7408,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -7390,30 +7462,59 @@ "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "sinon": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.3.tgz", - "integrity": "sha512-i6j7sqcLEqTYqUcMV327waI745VASvYuSuQMCjbAwlpAeuCgKZ3LtrjDxAbu+GjNQR0FEDpywtwGCIh8GicNyg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.3.0", - "@sinonjs/formatio": "^3.1.0", - "@sinonjs/samsam": "^3.0.2", - "diff": "^3.5.0", - "lolex": "^3.0.0", - "nise": "^1.4.8", - "supports-color": "^5.5.0" + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.2.tgz", + "integrity": "sha512-0uF8Q/QHkizNUmbK3LRFqx5cpTttEVXudywY9Uwzy8bTfZUhljZ7ARzSxnRHWYWtVTeh4Cw+tTb3iU21FQVO9A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.2", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/formatio": "^5.0.1", + "@sinonjs/samsam": "^5.0.3", + "diff": "^4.0.2", + "nise": "^4.0.1", + "supports-color": "^7.1.0" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "sinon-test": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/sinon-test/-/sinon-test-2.4.0.tgz", - "integrity": "sha512-oQnO02I7JDbtrSKN8Qs3upobCQRythJCBn3DzPmv4m/SoPvhZJDVqHDFkRZ1lZhN2GkBqOR3m7WT79190z9kEg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sinon-test/-/sinon-test-3.0.0.tgz", + "integrity": "sha512-k2V042JwIS6SC3M8Ih3Uo6+6mlL5FKqvvobxoWQobFkACr61WpyAMKsfqXecLL+DrDD3s9T+eYSZdVQzMH1pkA==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, "slice-ansi": { @@ -7425,6 +7526,14 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } } }, "snapdragon": { @@ -7511,12 +7620,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -7527,6 +7630,17 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "source-list-map": { @@ -7542,12 +7656,12 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -7555,9 +7669,9 @@ } }, "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -7578,6 +7692,46 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -7656,336 +7810,143 @@ "readable-stream": "^2.0.2" } }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "streamroller": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", - "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", - "dev": true, - "requires": { - "date-format": "^1.2.0", - "debug": "^3.1.0", - "mkdirp": "^0.5.1", - "readable-stream": "^2.3.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, - "stryker": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/stryker/-/stryker-0.35.0.tgz", - "integrity": "sha512-+PYal9OkClkOmBH+1CIt9XV4qKZ3pPj/yF8dqlrMK9MbfZQYsKg0gDKSlVYu4bGOBNS4aVFwtGxAI8aCX+pR5w==", + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "@stryker-mutator/util": "^0.1.0", - "chalk": "~2.4.1", - "commander": "~2.19.0", - "escodegen": "~1.8.0", - "esprima": "~2.7.0", - "get-port": "~4.1.0", - "glob": "~7.1.2", - "inquirer": "~6.2.0", - "istanbul-lib-instrument": "~3.0.0", - "lodash": "~4.17.4", - "log4js": "~3.0.0", - "mkdirp": "~0.5.1", - "prettier": "~1.16.1", - "progress": "~2.0.0", - "rimraf": "~2.6.1", - "rxjs": "~6.3.0", - "source-map": "~0.6.1", - "surrial": "^0.2.0", - "tree-kill": "~1.2.0", - "tslib": "~1.9.3", - "typed-inject": "^0.2.0", - "typed-rest-client": "~1.0.7" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" - }, - "dependencies": { - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.1.tgz", - "integrity": "sha512-/LTPhh1YKXjJlb5uggsiZjJHuViIljcIsB1zqmZegIw2yQ4l8LRksRGebJrZUFVEE28ZtKzmmT50W5tpAucfJg==", - "dev": true, - "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.2", - "semver": "^5.5.0" - } - }, - "rxjs": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "tslib": "^1.9.0" + "ansi-regex": "^5.0.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, - "stryker-api": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/stryker-api/-/stryker-api-0.24.0.tgz", - "integrity": "sha512-2A4ErZ9aG85UsHHVvOANJRZtNYxnikF3QRNT7QkfDBoDKZtYxaxVDuWDkwL+WQ2kN/7WMaM2lRxXGOyjZqTELQ==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { - "tslib": "~1.9.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "stryker-babel-transpiler": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/stryker-babel-transpiler/-/stryker-babel-transpiler-0.10.0.tgz", - "integrity": "sha512-8uGP/TfEPXWilmzcJrZozUS80rliRqIb1rMA8lryXJaRzE4cKaeRYM9/PTdIa9KhALKXwKaaMnMgihuo3i3g5w==", + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", "dev": true, "requires": { - "@stryker-mutator/util": "^0.1.0", - "minimatch": "~3.0.4", - "stryker-api": "^0.24.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" } }, - "stryker-html-reporter": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/stryker-html-reporter/-/stryker-html-reporter-0.18.0.tgz", - "integrity": "sha512-ambJbUtQSyyQ/+tDWSJUdXpNlS5j4vlq713Z8VoXw4UthmrQhblnk8xje9d4k3xDQJ+odCZaGNTzs8MQHDCFjA==", + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", "dev": true, "requires": { - "@stryker-mutator/util": "^0.1.0", - "file-url": "~2.0.0", - "lodash": "~4.17.10", - "mkdirp": "~0.5.1", - "mz": "~2.7.0", - "rimraf": "~2.6.1", - "stryker-api": "^0.24.0", - "typed-html": "~0.6.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" } }, - "stryker-javascript-mutator": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/stryker-javascript-mutator/-/stryker-javascript-mutator-0.14.0.tgz", - "integrity": "sha512-2OQXBH8iAjH89srI7EpJ3gy6OT9gsadplNYt1ZDBSpTKp8oue9KehBA6NvVUQSIuDQqlVFSntTmE8Hu3U56+FQ==", + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { - "@babel/generator": "~7.2.0", - "@babel/parser": "~7.3.1", - "@babel/traverse": "~7.2.2", - "lodash": "~4.17.4", - "stryker-api": "^0.24.0", - "tslib": "~1.9.3" - }, - "dependencies": { - "@babel/parser": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz", - "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==", - "dev": true - }, - "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "stryker-mocha-framework": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/stryker-mocha-framework/-/stryker-mocha-framework-0.15.0.tgz", - "integrity": "sha512-oFInMUe3AV8bkOii9mR0VusM5kH4WuMmOs9nlJ8hJZfEOyFmrxmYZPckf6k2Nhxv35K6W3XoQfBkDxnHLfrwyA==", + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "stryker-api": "^0.24.0" + "safe-buffer": "~5.1.0" } }, - "stryker-mocha-runner": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/stryker-mocha-runner/-/stryker-mocha-runner-0.17.0.tgz", - "integrity": "sha512-xEQosuKRr9u9sBUxTxL58HokomCXVHUwI66n5g2X0U1Vgkvv0wH2gvj6P0n6eGageV5hwFX6kzqan7lwjUoy6A==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "multimatch": "~3.0.0", - "stryker-api": "^0.24.0", - "tslib": "~1.9.3" + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -7996,50 +7957,75 @@ } }, "surrial": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/surrial/-/surrial-0.2.0.tgz", - "integrity": "sha512-oe4Jrb9Z41gVQ1OZJMmTudYE1R/bBkHVfdZZW3+IWkNiX8uOs52htmGtVqxQgrQxZFhYPYXAZSq+8Ssw66HgVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/surrial/-/surrial-2.0.2.tgz", + "integrity": "sha512-YQ0XyrdBI8Kx10lIK81zOGXdGtc0P+3FTqEtCdaKzfEJKJWDju2QPp+XhzihmN2KOTRDtkKSyQQXZHYP+SqapA==", "dev": true }, "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, "table": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.2.tgz", - "integrity": "sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "^6.6.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.0.0", - "string-width": "^2.1.1" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } } }, "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, "terser": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", - "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", + "version": "4.6.12", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.12.tgz", + "integrity": "sha512-fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==", "dev": true, "requires": { - "commander": "~2.17.1", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.6" + "source-map-support": "~0.5.12" }, "dependencies": { "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "source-map": { @@ -8047,35 +8033,43 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } } } }, "terser-webpack-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", - "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", "dev": true, "requires": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "serialize-javascript": "^2.1.2", "source-map": "^0.6.1", - "terser": "^3.8.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -8084,11 +8078,16 @@ } } }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } }, "text-table": { "version": "0.2.0", @@ -8096,24 +8095,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -8131,9 +8112,9 @@ } }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -8154,6 +8135,12 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -8161,6 +8148,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-regex": { @@ -8196,30 +8194,24 @@ } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", "dev": true, "requires": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" } }, "tree-kill": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", - "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, "tty-browserify": { @@ -8228,12 +8220,6 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, - "tunnel": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", - "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -8264,27 +8250,19 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, - "typed-html": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/typed-html/-/typed-html-0.6.3.tgz", - "integrity": "sha512-8pgmsEz2TnelKwr9Yu9U8199vsY1zFErZMl/tG+R76xpJOp3gpJnz+TZMhPXk5o8JNzqwgOmRun0swZzwJEMVw==", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "typed-inject": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/typed-inject/-/typed-inject-0.2.0.tgz", - "integrity": "sha512-8ZR5rvwfayGqoSVFk2r+bF8K/QVEZXtxwKcUgNy/wcN9vA7P/AgtSy/WrczsbOj0N4XnjqMQDgAMiesHRDWOnQ==", - "dev": true - }, - "typed-rest-client": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.0.11.tgz", - "integrity": "sha512-Iz2/p1EkJp8laAIlW/4h+3u+eJqmslosrX2wK1ofM74fCnRpM/EAPM+psjcQKomlNQrInKLPp/JYnsH4ZuzhQQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/typed-inject/-/typed-inject-2.1.1.tgz", + "integrity": "sha512-TaQrNsYjGTMmgfEwKtjP9+qyZu//H1RJ0RYNvvQ/rcAnpQGZLxHajb+O6TnyFZGfLaK/9319VYaG4PFXGjImug==", "dev": true, "requires": { - "nock": "9.6.1", - "tunnel": "0.0.4", - "underscore": "1.8.3" + "typescript": "^3.6.3" } }, "typedarray": { @@ -8293,52 +8271,66 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", - "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", "dev": true }, "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.1.tgz", + "integrity": "sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==", "dev": true, "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" + "commander": "~2.20.3" }, "dependencies": { "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true } } }, "uglifyjs-webpack-plugin": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.1.tgz", - "integrity": "sha512-TQEcyMNkObX/H+FfcKjiDgs5RcXX8vW2UUUrDTOfQgg3lrafztfeM5WAwXo+AzqozJK6NP9w98xNpG/dutzSsg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", "dev": true, "requires": { - "cacache": "^11.2.0", - "find-cache-dir": "^2.0.0", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "serialize-javascript": "^1.7.0", "source-map": "^0.6.1", - "uglify-js": "^3.0.0", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "uglify-js": "^3.6.0", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -8370,50 +8362,27 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", - "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", - "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-filename": { @@ -8426,14 +8395,20 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -8475,9 +8450,9 @@ } }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "uri-js": { @@ -8526,6 +8501,14 @@ "dev": true, "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "util-deprecate": { @@ -8534,26 +8517,16 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, "verror": { @@ -8568,151 +8541,268 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, "requires": { - "browser-process-hrtime": "^0.1.2" + "browser-process-hrtime": "^1.0.0" } }, "w3c-xmlserializer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz", - "integrity": "sha512-XZGI1OH/OLQr/NaJhhPmzhngwcAnZDLytsvXnRmlYeRkmbb0I7sqFFA22erq4WQR0sUu17ZSQOAV9mFwCqKRNg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", "xml-name-validator": "^3.0.0" } }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^2.1.8", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true }, "webpack": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.0.tgz", - "integrity": "sha512-pxdGG0keDBtamE1mNvT5zyBdx+7wkh6mh7uzMOo/uRQ/fhsdj5FXkh/j5mapzs060forql1oXqXN9HJGju+y7w==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" }, "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } } } }, "webpack-cli": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.1.tgz", - "integrity": "sha512-jeJveHwz/vwpJ3B8bxEL5a/rVKIpRNJDsKggfKnxuYeohNDW4Y/wB9N/XHJA093qZyS0r6mYL+/crLsIol4WKA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "findup-sync": "^2.0.0", - "global-modules": "^1.0.0", - "global-modules-path": "^2.3.0", - "import-local": "^2.0.0", - "interpret": "^1.1.0", - "lightercollective": "^0.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.4" + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } } } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -8743,14 +8833,22 @@ "dev": true }, "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.0.0.tgz", + "integrity": "sha512-41ou2Dugpij8/LPO5Pq64K5q++MnRCBpEHvQr26/mArEKTkCV5aoXIqyhuYtE0pkqScXwhf2JP57rkRTYM29lQ==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "^2.0.0", + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } } }, "which": { @@ -8768,49 +8866,95 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { "errno": "~0.1.7" } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } @@ -8822,23 +8966,32 @@ "dev": true }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" } }, - "ws": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.3.tgz", - "integrity": "sha512-tbSxiT+qJI223AP4iLfQbkbxkwdFcneYinM2+x46Gx2wgvbaOMO36czfdfVUBRTHvzAMRhDd98sA5d/BuWbQdg==", + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, + "ws": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", + "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==", + "dev": true + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", @@ -8846,15 +8999,15 @@ "dev": true }, "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { @@ -8864,40 +9017,117 @@ "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } } } } diff --git a/package.json b/package.json index db92bc9..ede7ae4 100644 --- a/package.json +++ b/package.json @@ -29,35 +29,35 @@ ], "license": "Apache-2.0", "devDependencies": { - "@babel/cli": "7.2.3", - "@babel/core": "7.2.2", - "@babel/plugin-proposal-class-properties": "7.3.0", - "@babel/plugin-proposal-object-rest-spread": "7.3.1", - "@babel/preset-env": "7.3.1", - "@babel/preset-typescript": "7.1.0", - "@babel/register": "7.0.0", - "babel-loader": "8.0.5", - "coveralls": "3.0.2", + "@babel/cli": "7.8.4", + "@babel/core": "7.9.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.9.5", + "@babel/preset-env": "7.9.5", + "@babel/preset-typescript": "7.9.0", + "@babel/register": "7.9.0", + "babel-loader": "8.1.0", + "coveralls": "3.1.0", "chai": "4.2.0", - "eslint": "5.13.0", - "jsdom": "13.2.0", + "eslint": "6.8.0", + "jsdom": "16.2.2", "jsdom-global": "3.0.2", - "mocha": "5.2.0", - "nyc": "13.2.0", - "rimraf": "2.6.3", - "typescript": "3.2.4", - "sinon": "7.2.3", - "sinon-test": "2.4.0", - "stryker": "0.35.0", - "stryker-api": "0.24.0", - "stryker-html-reporter": "0.18.0", - "stryker-babel-transpiler": "0.10.0", - "stryker-javascript-mutator": "0.14.0", - "stryker-mocha-framework": "0.15.0", - "stryker-mocha-runner": "0.17.0", - "uglifyjs-webpack-plugin": "2.1.1", - "webpack": "4.29.0", - "webpack-cli": "3.2.1" + "mocha": "7.1.2", + "nyc": "15.0.1", + "rimraf": "3.0.2", + "sinon": "9.0.2", + "sinon-test": "3.0.0", + "@stryker-mutator/core": "3.1.0", + "@stryker-mutator/api": "3.1.0", + "@stryker-mutator/html-reporter": "3.1.0", + "@stryker-mutator/babel-transpiler": "3.1.0", + "@stryker-mutator/javascript-mutator": "3.1.0", + "@stryker-mutator/mocha-framework": "3.1.0", + "@stryker-mutator/mocha-runner": "3.1.0", + "typescript": "3.8.3", + "uglifyjs-webpack-plugin": "2.2.0", + "webpack": "4.43.0", + "webpack-cli": "3.3.11" }, "dependencies": { "emitter-component": "1.1.1" From 9f313ccc77e7ef831d36c20e337ec9938cac31b0 Mon Sep 17 00:00:00 2001 From: Stephan Classen Date: Tue, 28 Apr 2020 15:25:27 +0200 Subject: [PATCH 3/3] new build --- .gitignore | 2 - dist/rico.js | 117 ++++++++++++++++++++++++++----------------- dist/rico.js.map | 2 +- dist/rico.min.js | 2 +- dist/rico.min.js.map | 2 +- 5 files changed, 74 insertions(+), 51 deletions(-) diff --git a/.gitignore b/.gitignore index bbfce7a..31c6f76 100644 --- a/.gitignore +++ b/.gitignore @@ -8,12 +8,10 @@ .gradle .gradletasknamecache build/ -dist/ # Javascript node/ node_modules/ -dist/ dev/ coverage/ .nyc_output/ diff --git a/dist/rico.js b/dist/rico.js index e73ad7a..f72ef38 100644 --- a/dist/rico.js +++ b/dist/rico.js @@ -284,8 +284,17 @@ Emitter.prototype.hasListeners = function(event){ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); +// EXPORTS +__webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return /* reexport */ loggerfactory_LoggerFactory; }); +__webpack_require__.d(__webpack_exports__, "LogLevel", function() { return /* reexport */ LogLevel; }); +__webpack_require__.d(__webpack_exports__, "getService", function() { return /* binding */ getService; }); +__webpack_require__.d(__webpack_exports__, "hasService", function() { return /* binding */ hasService; }); +__webpack_require__.d(__webpack_exports__, "registerServiceProvider", function() { return /* binding */ registerServiceProvider; }); +__webpack_require__.d(__webpack_exports__, "HTTP", function() { return /* reexport */ HTTP; }); + // CONCATENATED MODULE: ./src/logging/constants.js var LogLevel = { NONE: { @@ -328,11 +337,15 @@ var LogLevel = { // CONCATENATED MODULE: ./src/utils/index.js function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } @@ -429,13 +442,17 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || logger_unsupportedIterableToArray(arr) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } +function logger_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return logger_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return logger_arrayLikeToArray(o, minLen); } -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return logger_arrayLikeToArray(arr); } + +function logger_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } @@ -1958,21 +1975,23 @@ var startLongPollCommand_StartLongPollCommand = function StartLongPollCommand() // CONCATENATED MODULE: ./src/remoting/commands/codecError.js -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function codecError_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } -function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } -function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } @@ -1983,10 +2002,12 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g var CodecError = function (_Error) { _inherits(CodecError, _Error); + var _super = _createSuper(CodecError); + function CodecError(message) { codecError_classCallCheck(this, CodecError); - return _possibleConstructorReturn(this, _getPrototypeOf(CodecError).call(this, message)); + return _super.call(this, message); } return CodecError; @@ -1994,7 +2015,7 @@ var CodecError = function (_Error) { // CONCATENATED MODULE: ./src/remoting/commands/codec.js -function codec_typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { codec_typeof = function _typeof(obj) { return typeof obj; }; } else { codec_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return codec_typeof(obj); } +function codec_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { codec_typeof = function _typeof(obj) { return typeof obj; }; } else { codec_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return codec_typeof(obj); } function codec_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -2863,7 +2884,7 @@ var clientConnector_ClientConnector = function () { clientConnector_ClientConnector.LOGGER = loggerfactory_LoggerFactory.getLogger('ClientConnector'); // CONCATENATED MODULE: ./src/remoting/clientAttribute.js -function clientAttribute_typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { clientAttribute_typeof = function _typeof(obj) { return typeof obj; }; } else { clientAttribute_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return clientAttribute_typeof(obj); } +function clientAttribute_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { clientAttribute_typeof = function _typeof(obj) { return typeof obj; }; } else { clientAttribute_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return clientAttribute_typeof(obj); } function clientAttribute_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -3392,7 +3413,7 @@ var clientModelStore_ClientModelStore = function () { if (this.presentationModels.has(model.id)) { this.removePresentationModelByType(model); - this.presentationModels.delete(model.id); + this.presentationModels["delete"](model.id); model.getAttributes().forEach(function (attribute) { _this3.removeAttributeById(attribute); @@ -3464,7 +3485,7 @@ var clientModelStore_ClientModelStore = function () { } if (presentationModels.length === 0) { - this.presentationModelsPerType.delete(model.presentationModelType); + this.presentationModelsPerType["delete"](model.presentationModelType); } } }, { @@ -3547,7 +3568,7 @@ var clientModelStore_ClientModelStore = function () { return; } - this.attributesPerId.delete(attribute.id); + this.attributesPerId["delete"](attribute.id); } }, { key: "findAttributeById", @@ -3590,7 +3611,7 @@ var clientModelStore_ClientModelStore = function () { } if (attributes.length === 0) { - this.attributesPerQualifier.delete(attribute.getQualifier()); + this.attributesPerQualifier["delete"](attribute.getQualifier()); } } }, { @@ -4220,7 +4241,7 @@ var beanManager_BeanManager = function () { beanManager_BeanManager.LOGGER = loggerfactory_LoggerFactory.getLogger('BeanManager'); // CONCATENATED MODULE: ./src/remoting/classRepository.js -function classRepository_typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { classRepository_typeof = function _typeof(obj) { return typeof obj; }; } else { classRepository_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return classRepository_typeof(obj); } +function classRepository_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { classRepository_typeof = function _typeof(obj) { return typeof obj; }; } else { classRepository_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return classRepository_typeof(obj); } function classRepository_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -4718,7 +4739,7 @@ var controllerProxy_ControllerProxy = function () { this.onDestroyedHandlers.add(handler); return { unsubscribe: function unsubscribe() { - self.onDestroyedHandlers.delete(handler); + self.onDestroyedHandlers["delete"](handler); } }; } @@ -4795,10 +4816,10 @@ var controllerManager_ControllerManager = function () { } catch (e) { reject(MSG_ERROR_CREATING_CONTROLLER + e); } - }).catch(function (error) { + })["catch"](function (error) { reject(MSG_ERROR_CREATING_CONTROLLER + error); }); - }).catch(function (error) { + })["catch"](function (error) { reject(MSG_ERROR_CREATING_CONTROLLER + error); }); }); @@ -4862,7 +4883,7 @@ var controllerManager_ControllerManager = function () { } self.dolphin.deletePresentationModel(pm); - }).catch(reject); + })["catch"](reject); }); } }, { @@ -4873,9 +4894,9 @@ var controllerManager_ControllerManager = function () { var self = this; return new Promise(function (resolve, reject) { self.connector.getHighlanderPM().then(function (highlanderPM) { - self.controllers.delete(controller); + self.controllers["delete"](controller); highlanderPM.findAttributeByPropertyName(controllerManager_CONTROLLER_ID).setValue(controller.controllerId); - self.connector.invoke(commandFactory_CommandFactory.createDestroyControllerCommand(controller.getId())).then(resolve).catch(reject); + self.connector.invoke(commandFactory_CommandFactory.createDestroyControllerCommand(controller.getId())).then(resolve)["catch"](reject); }); }); } @@ -4940,7 +4961,7 @@ var clientContext_ClientContext = function () { self._connector.invoke(commandFactory_CommandFactory.createCreateContextCommand()).then(function () { self.isConnected = true; resolve(); - }).catch(reject); + })["catch"](reject); }); return this.connectionPromise; } @@ -4991,22 +5012,24 @@ var clientContext_ClientContext = function () { emitter_component_default()(clientContext_ClientContext.prototype); // CONCATENATED MODULE: ./src/remoting/errors.js -function errors_typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { errors_typeof = function _typeof(obj) { return typeof obj; }; } else { errors_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return errors_typeof(obj); } +function errors_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { errors_typeof = function _typeof(obj) { return typeof obj; }; } else { errors_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return errors_typeof(obj); } function errors_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function errors_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) errors_setPrototypeOf(subClass, superClass); } + +function errors_createSuper(Derived) { return function () { var Super = errors_getPrototypeOf(Derived), result; if (errors_isNativeReflectConstruct()) { var NewTarget = errors_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return errors_possibleConstructorReturn(this, result); }; } + function errors_possibleConstructorReturn(self, call) { if (call && (errors_typeof(call) === "object" || typeof call === "function")) { return call; } return errors_assertThisInitialized(self); } function errors_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -function errors_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) errors_setPrototypeOf(subClass, superClass); } - function errors_wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; errors_wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !errors_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return errors_construct(Class, arguments, errors_getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return errors_setPrototypeOf(Wrapper, Class); }; return errors_wrapNativeSuper(Class); } -function errors_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } - function errors_construct(Parent, args, Class) { if (errors_isNativeReflectConstruct()) { errors_construct = Reflect.construct; } else { errors_construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) errors_setPrototypeOf(instance, Class.prototype); return instance; }; } return errors_construct.apply(null, arguments); } +function errors_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function errors_isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } function errors_setPrototypeOf(o, p) { errors_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return errors_setPrototypeOf(o, p); } @@ -5016,6 +5039,8 @@ function errors_getPrototypeOf(o) { errors_getPrototypeOf = Object.setPrototypeO var DolphinRemotingError = function (_Error) { errors_inherits(DolphinRemotingError, _Error); + var _super = errors_createSuper(DolphinRemotingError); + function DolphinRemotingError() { var _this; @@ -5024,7 +5049,7 @@ var DolphinRemotingError = function (_Error) { errors_classCallCheck(this, DolphinRemotingError); - _this = errors_possibleConstructorReturn(this, errors_getPrototypeOf(DolphinRemotingError).call(this, message)); + _this = _super.call(this, message); _this.detail = detail || undefined; return _this; } @@ -5034,12 +5059,14 @@ var DolphinRemotingError = function (_Error) { var DolphinSessionError = function (_Error2) { errors_inherits(DolphinSessionError, _Error2); + var _super2 = errors_createSuper(DolphinSessionError); + function DolphinSessionError() { var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Session Error'; errors_classCallCheck(this, DolphinSessionError); - return errors_possibleConstructorReturn(this, errors_getPrototypeOf(DolphinSessionError).call(this, message)); + return _super2.call(this, message); } return DolphinSessionError; @@ -5047,12 +5074,14 @@ var DolphinSessionError = function (_Error2) { var HttpResponseError = function (_Error3) { errors_inherits(HttpResponseError, _Error3); + var _super3 = errors_createSuper(HttpResponseError); + function HttpResponseError() { var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Http Response Error'; errors_classCallCheck(this, HttpResponseError); - return errors_possibleConstructorReturn(this, errors_getPrototypeOf(HttpResponseError).call(this, message)); + return _super3.call(this, message); } return HttpResponseError; @@ -5060,12 +5089,14 @@ var HttpResponseError = function (_Error3) { var HttpNetworkError = function (_Error4) { errors_inherits(HttpNetworkError, _Error4); + var _super4 = errors_createSuper(HttpNetworkError); + function HttpNetworkError() { var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Http Network Error'; errors_classCallCheck(this, HttpNetworkError); - return errors_possibleConstructorReturn(this, errors_getPrototypeOf(HttpNetworkError).call(this, message)); + return _super4.call(this, message); } return HttpNetworkError; @@ -5171,7 +5202,7 @@ var platformHttpTransmitter_PlatformHttpTransmitter = function () { if (httpClient && self.failed_attempt <= self.maxRetry) { httpClient.post(self.url).withHeadersInfo(_this.headersInfo).withContent(encodedCommands).readString().execute(useWorker).then(function (response) { resolve(response.content); - }).catch(function (exception) { + })["catch"](function (exception) { var status = exception.getStatus(); self.failed_attempt += 1; @@ -5213,7 +5244,7 @@ var platformHttpTransmitter_PlatformHttpTransmitter = function () { onError(_errorMsg); } - }).catch(function (error) { + })["catch"](function (error) { _this2.emit('error', error); onError(error); @@ -5224,7 +5255,7 @@ var platformHttpTransmitter_PlatformHttpTransmitter = function () { value: function signal(command) { var _this3 = this; - this._send([command]).catch(function (error) { + this._send([command])["catch"](function (error) { return _this3.emit('error', error); }); } @@ -5614,7 +5645,7 @@ var keycloakSecurity_KeycloakSecurity = function () { } else { reject('No access token found'); } - }).catch(function (error) { + })["catch"](function (error) { return reject(error); }); }); @@ -5673,12 +5704,6 @@ function security_register(client) { // CONCATENATED MODULE: ./src/index.js -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getService", function() { return getService; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasService", function() { return hasService; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "registerServiceProvider", function() { return registerServiceProvider; }); -/* concated harmony reexport LoggerFactory */__webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return loggerfactory_LoggerFactory; }); -/* concated harmony reexport LogLevel */__webpack_require__.d(__webpack_exports__, "LogLevel", function() { return LogLevel; }); -/* concated harmony reexport HTTP */__webpack_require__.d(__webpack_exports__, "HTTP", function() { return HTTP; }); function src_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function src_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } diff --git a/dist/rico.js.map b/dist/rico.js.map index 3236cfe..f404248 100644 --- a/dist/rico.js.map +++ b/dist/rico.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ricojs/webpack/universalModuleDefinition","webpack://ricojs/webpack/bootstrap","webpack://ricojs/./node_modules/emitter-component/index.js","webpack://ricojs/./src/logging/constants.js","webpack://ricojs/./src/utils/index.js","webpack://ricojs/./src/logging/logger.js","webpack://ricojs/./src/logging/loggerfactory.js","webpack://ricojs/./src/logging/index.js","webpack://ricojs/./src/platform/client.js","webpack://ricojs/./src/platform/serviceProvider.js","webpack://ricojs/./src/platform/constants.js","webpack://ricojs/./src/http/httpResponse.js","webpack://ricojs/./src/http/httpException.js","webpack://ricojs/./src/http/executor.js","webpack://ricojs/./src/http/reponseBuilder.js","webpack://ricojs/./src/http/requestBuilder.js","webpack://ricojs/./src/http/httpClient.js","webpack://ricojs/./src/http/httpClientInterceptor.js","webpack://ricojs/./src/http/index.js","webpack://ricojs/./src/platform/clientScope.js","webpack://ricojs/./src/remoting/commands/commandConstants.js","webpack://ricojs/./src/remoting/commandBatcher.js","webpack://ricojs/./src/remoting/constants.js","webpack://ricojs/./src/remoting/commands/impl/valueChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/attributeMetadataChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/callActionCommand.js","webpack://ricojs/./src/remoting/commands/impl/changeAttributeMetadataCommand.js","webpack://ricojs/./src/remoting/commands/impl/createContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/createControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/createPresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/deletePresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/interruptLongPollCommand.js","webpack://ricojs/./src/remoting/commands/impl/presentationModelDeletedCommand.js","webpack://ricojs/./src/remoting/commands/impl/startLongPollCommand.js","webpack://ricojs/./src/remoting/commands/codecError.js","webpack://ricojs/./src/remoting/commands/codec.js","webpack://ricojs/./src/remoting/eventBus.js","webpack://ricojs/./src/remoting/clientPresentationModel.js","webpack://ricojs/./src/remoting/clientConnector.js","webpack://ricojs/./src/remoting/clientAttribute.js","webpack://ricojs/./src/remoting/clientDolphin.js","webpack://ricojs/./src/remoting/attribute.js","webpack://ricojs/./src/remoting/commands/commandFactory.js","webpack://ricojs/./src/remoting/clientModelStore.js","webpack://ricojs/./src/remoting/noTransmitter.js","webpack://ricojs/./src/remoting/dolphinBuilder.js","webpack://ricojs/./src/remoting/connector.js","webpack://ricojs/./src/remoting/beanManager.js","webpack://ricojs/./src/remoting/classRepository.js","webpack://ricojs/./src/remoting/controllerProxy.js","webpack://ricojs/./src/remoting/controllerManager.js","webpack://ricojs/./src/remoting/clientContext.js","webpack://ricojs/./src/remoting/errors.js","webpack://ricojs/./src/remoting/remotingErrorHandler.js","webpack://ricojs/./src/remoting/platformHttpTransmitter.js","webpack://ricojs/./src/remoting/clientContextFactory.js","webpack://ricojs/./src/remoting/index.js","webpack://ricojs/./src/security/keycloakConnection.js","webpack://ricojs/./src/security/keycloakFunctions.js","webpack://ricojs/./src/security/securityHttpClientInterceptor.js","webpack://ricojs/./src/security/keycloakSecurity.js","webpack://ricojs/./src/security/index.js","webpack://ricojs/./src/index.js"],"names":["LogLevel","NONE","name","text","level","ALL","TRACE","DEBUG","INFO","WARN","ERROR","_checkMethodName","exists","object","checkMethod","checkParam","param","parameterName","Error","parseUrl","url","pattern","matches","match","scheme","length","substring","path","query","hashes","split","reduce","params","hash","key","val","Object","assign","fragment","hostname","port","window","location","protocol","indexOf","parseInt","user","password","LOCALS","pad","size","result","internalLog","args","Array","from","arguments","func","shift","context","logLevel","date","Date","dateString","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getCookie","document","cookie","value","parts","pop","Logger","rootLogger","cookieLogLevel","console","isLogLevel","log","warn","error","getLogLevel","levelName","ROOT_LOGGER","loggers","Map","LoggerFactory","existingLogger","get","logger","set","Client","LOGGER","getLogger","services","serviceProviders","configuration","getService","service","provider","hasService","getAllServiceTypes","forEach","serviceProvider","push","registerServiceProvider","getName","current","debug","init","trace","initServiceProvider","ServiceProvider","serviceClass","client","serviceInstance","RESPONSE_TYPE","ARRAY_BUFFER","TEXT","JSON","HTTP","METHOD","GET","POST","PUT","DELETE","STATUS","ACCEPTED","BAD_GATEWAY","BAD_REQUEST","CONFLICT","CONTINUE","CREATED","EXPECTATION_FAILED","FAILED_DEPENDENCY","FORBIDDEN","GATEWAY_TIMEOUT","GONE","HTTP_VERSION_NOT_SUPPORTED","IM_A_TEAPOT","INSUFFICIENT_SPACE_ON_RESOURCE","INSUFFICIENT_STORAGE","INTERNAL_SERVER_ERROR","LENGTH_REQUIRED","LOCKED","METHOD_FAILURE","METHOD_NOT_ALLOWED","MOVED_PERMANENTLY","MOVED_TEMPORARILY","MULTI_STATUS","MULTIPLE_CHOICES","NETWORK_AUTHENTICATION_REQUIRED","NO_CONTENT","NON_AUTHORITATIVE_INFORMATION","NOT_ACCEPTABLE","NOT_FOUND","NOT_IMPLEMENTED","NOT_MODIFIED","OK","PARTIAL_CONTENT","PAYMENT_REQUIRED","PERMANENT_REDIRECT","PRECONDITION_FAILED","PRECONDITION_REQUIRED","PROCESSING","PROXY_AUTHENTICATION_REQUIRED","REQUEST_HEADER_FIELDS_TOO_LARGE","REQUEST_TIMEOUT","REQUEST_TOO_LONG","REQUEST_URI_TOO_LONG","REQUESTED_RANGE_NOT_SATISFIABLE","RESET_CONTENT","SEE_OTHER","SERVICE_UNAVAILABLE","SWITCHING_PROTOCOLS","TEMPORARY_REDIRECT","TOO_MANY_REQUESTS","UNAUTHORIZED","UNPROCESSABLE_ENTITY","UNSUPPORTED_MEDIA_TYPE","USE_PROXY","HEADER_NAME","ACCEPT","ACCEPT_CHARSET","ACCEPT_ENCODING","ACCEPT_LANGUAGE","ACCEPT_DATETIME","AUTHORIZATION","CACHE_CONTROL","CONNECTION","COOKIE","CONTENT_LENGTH","CONTENT_MD5","CONTENT_TYPE","DATE","EXPECT","FORWARDED","FROM","HOST","IF_MATCH","IF_MODIFIED_SINCE","IF_NONE_MATCH","IF_RANGE","MAX_FORWARDS","PRAGMA","PROXY_AUTHORIZATION","REFERER","TE","USER_AGENT","X_CLIENT_ID","X_CLIENT_SESSION_ID","X_PLATFORM_SECURITY_REALM","X_PLATFORM_SECURITY_BEARER_ONLY","X_PLATFORM_SECURITY_APPLICATION","APPLICATION_JSON","APPLICATION_X_WWW_FORM_URLENCODED","TEXT_HTML","TEXT_PLAIN","XMLHTTPREQUEST_READYSTATE","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","SECURITY","AUTH_ENDPOINT","HttpResponse","status","content","headers","headerArray","trim","i","line","header","toLowerCase","join","HttpException","message","timedout","Executor","timeout","worker","httpWorker","useWorker","timeoutToUse","requestInterceptors","getRequestInterceptors","responseInterceptors","getResponseInterceptors","directCall","resolve","reject","self","httpRequest","XMLHttpRequest","async","open","method","withCredentials","requestInterceptor","handleRequest","setRequestHeader","responseType","ontimeout","statusText","httpException","onerror","onreadystatechange","readyState","httpResponse","response","getAllResponseHeaders","responseInterceptor","handleResponse","send","requestBody","bind","workerCall","collectedRequestHeaders","createWorker","onmessage","event","terminate","msg","data","responseHeaders","postMessage","conf","requestHeaders","Promise","ResponseBuilder","executor","RequestBuilder","reponseBuilder","headersInfo","hasOwnProperty","HttpClient","requestBuilder","request","HttpClientInterceptor","requestHandlers","Set","responseHandlers","handler","add","list","register","httpClientProvider","httpClientInterceptorProvider","ClientScope","clientIds","clientId","getClientId","newClientId","getHeaderByName","setClientId","addRequestInterceptor","addResponseInterceptor","calcKey","clientScopeProvider","ATTRIBUTE_METADATA_CHANGED_COMMAND_ID","CALL_ACTION_COMMAND_ID","CHANGE_ATTRIBUTE_METADATA_COMMAND_ID","CREATE_CONTEXT_COMMAND_ID","CREATE_CONTROLLER_COMMAND_ID","CREATE_PRESENTATION_MODEL_COMMAND_ID","DELETE_PRESENTATION_MODEL_COMMAND_ID","DESTROY_CONTEXT_COMMAND_ID","DESTROY_CONTROLLER_COMMAND_ID","INTERRUPT_LONG_POLL_COMMAND_ID","PRESENTATION_MODEL_DELETED_COMMAND_ID","START_LONG_POLL_COMMAND_ID","VALUE_CHANGED_COMMAND_ID","ID","ATTRIBUTE_ID","PM_ID","CONTROLLER_ID","PM_TYPE","NAME","VALUE","PARAMS","PM_ATTRIBUTES","BlindCommandBatcher","folding","maxBatchSize","queue","batch","batchLength","element","command","id","attributeId","newValue","splice","JS_STRING_TYPE","REMOTING_BEAN","BYTE","SHORT","INT","LONG","FLOAT","DOUBLE","BOOLEAN","STRING","ENUM","CALENDAR","LOCAL_DATE_FIELD_TYPE","LOCAL_DATE_TIME_FIELD_TYPE","ZONED_DATE_TIME_FIELD_TYPE","ADDED_TYPE","REMOVED_TYPE","ValueChangedCommand","AttributeMetadataChangedCommand","metadataName","CallActionCommand","controllerid","actionName","ChangeAttributeMetadataCommand","CreateContextCommand","CreateControllerCommand","controllerName","parentControllerId","CreatePresentationModelCommand","presentationModel","attributes","clientSideOnly","pmId","pmType","presentationModelType","getAttributes","attr","propertyName","getValue","DeletePresentationModelCommand","DestroyContextCommand","DestroyControllerCommand","controllerId","InterruptLongPollCommand","PresentationModelDeletedCommand","StartLongPollCommand","CodecError","Codec","jsonCommand","map","attribute","commands","stringify","_encodeAttributeMetadataChangedCommand","_encodeCallActionCommand","_encodeChangeAttributeMetadataCommand","_encodeCreateContextCommand","_encodeCreateControllerCommand","_encodeCreatePresentationModelCommand","_encodeDeletePresentationModelCommand","_encodeDestroyContextCommand","_encodeDestroyControllerCommand","_encodeInterruptLongPollCommand","_encodePresentationModelDeletedCommand","_encodeStartLongPollCommand","_encodeValueChangedCommand","transmitted","parse","_decodeAttributeMetadataChangedCommand","_decodeCallActionCommand","_decodeChangeAttributeMetadataCommand","_decodeCreateContextCommand","_decodeCreateControllerCommand","_decodeCreatePresentationModelCommand","_decodeDeletePresentationModelCommand","_decodeDestroyContextCommand","_decodeDestroyControllerCommand","_decodeInterruptLongPollCommand","_decodePresentationModelDeletedCommand","_decodeStartLongPollCommand","_decodeValueChangedCommand","EventBus","eventHandlers","eventHandler","handle","presentationModelInstanceCount","ClientPresentationModel","dirty","toString","invalidBus","dirtyValueChangeBus","attributeCopy","copy","addAttribute","findAttributeByPropertyName","getQualifier","findAttributeByQualifier","setPresentationModel","onValueChange","trigger","source","handleInvalidate","onEvent","slice","qualifier","sourcePresentationModel","targetAttribute","sourceAttribute","getAt","syncWith","ClientConnector","transmitter","clientDolphin","slackMS","commandQueue","currentlySending","pushEnabled","waiting","codec","commandBatcher","newBatcher","enabled","newListener","pushListener","newCommand","releaseCommand","onFinished","release","doSendNext","enqueuePushCommand","cmdsAndHandlers","callback","cah","transmit","touchedPMs","touched","setTimeout","onError","handleDeletePresentationModelCommand","handleCreatePresentationModelCommand","handleValueChangedCommand","handleAttributeMetadataChangedCommand","serverCommand","model","findPresentationModelById","getClientModelStore","deletePresentationModel","containsPresentationModel","clientAttribute","clientPm","addAttributes","updatePresentationModelQualifier","findAttributeById","setValueFromServer","me","onFinishedData","signal","ClientAttribute","clientAttributeInstanceCount","valueChangeBus","qualifierChangeBus","setValue","setQualifier","verifiedValue","checkValue","oldValue","newQualifier","oldQualifier","String","Boolean","Number","valueOf","ok","SUPPORTED_VALUE_TYPES","ClientDolphin","clientConnector","type","clientModelStore","listPresentationModelIds","listPresentationModels","findAllPresentationModelByType","modelToDelete","updateAttributeQualifier","findAllAttributesByQualifier","pushCommand","setPushListener","setReleaseCommand","setPushEnabled","listen","Attribute","QUALIFIER_PROPERTY","CommandFactory","ClientModelStore","presentationModels","presentationModelsPerType","attributesPerId","attributesPerQualifier","modelStoreChangeBus","addAttributeById","addAttributeByQualifier","evt","sendToServer","createValueChangedCommand","getClientConnector","attrs","findAttributesByFilter","onQualifierChange","createChangeAttributeMetadataCommand","has","added","addPresentationModelByType","connector","createCreatePresentationModelCommand","registerAttribute","removed","removePresentationModelByType","delete","removeAttributeById","removeAttributeByQualifier","filter","iter","keys","next","done","values","notify","remove","createPresentationModelDeletedCommand","pmStoreEvent","clientPresentationModel","NoTransmitter","onDone","DolphinBuilder","setClientConnector","setClientModelStore","dolphinBuilder","DOLPHIN_BEAN","ACTION_CALL_BEAN","HIGHLANDER_BEAN","DOLPHIN_LIST_SPLICE","SOURCE_SYSTEM","SOURCE_SYSTEM_CLIENT","SOURCE_SYSTEM_SERVER","Connector","dolphin","classRepository","config","highlanderPMResolver","highlanderPMPromise","onModelStoreChange","sourceSystem","eventType","onModelAdded","onModelRemoved","that","startPushListening","createStartLongPollCommand","createInterruptLongPollCommand","registerClass","spliceListEntry","load","unregisterClass","unload","reason","BeanManager","addedHandlers","removedHandlers","updatedHandlers","arrayUpdatedHandlers","allAddedHandlers","allRemovedHandlers","allUpdatedHandlers","allArrayUpdatedHandlers","_handleBeanAdded","_handleBeanRemoved","_handleBeanUpdate","_handleArrayUpdate","onBeanAdded","onBeanRemoved","onBeanUpdate","onArrayUpdate","bean","handlerList","e","index","count","newElements","notifyBeanChange","removedElements","notifyArrayChange","collection","predicate","concat","unsubscribe","ClassRepository","classes","beanFromDolphin","beanToDolphin","classInfos","beanAddedHandlers","beanRemovedHandlers","propertyUpdateHandlers","arrayUpdateHandlers","blocked","modelId","to","classInfo","toDolphin","apply","undefined","fromDolphin","isBlocked","array","removedElementsCount","isArray","sendListSplice","search","validateList","block","unblock","toISOString","TypeError","consts","fixType","parseFloat","ControllerProxy","manager","destroyed","onDestroyedHandlers","invokeAction","_createController","getId","destroyController","MODEL","ERROR_CODE","ControllerManager","controllers","getHighlanderPM","then","highlanderPM","MSG_ERROR_CREATING_CONTROLLER","invoke","createCreateControllerCommand","getValueWithRetry","ctrlId","mapDolphinToBean","controller","catch","getValueCall","errorMessage","RETRIES","RETRY_TIME","intervalID","setInterval","clearInterval","pm","actionParams","mapParamToDolphin","createCallActionCommand","isError","createDestroyControllerCommand","controllersCopy","promises","destroy","all","ClientContext","beanManager","controllerManager","_controllerManager","_connector","connectionPromise","isConnected","connect","createCreateContextCommand","createController","stopPushListening","createDestroyContextCommand","Emitter","prototype","DolphinRemotingError","detail","DolphinSessionError","HttpResponseError","HttpNetworkError","RemotingErrorHandler","DOLPHIN_SESSION_TIMEOUT","PlatformHttpTransmitter","failed_attempt","connectionConfig","_connectionConfig","maxRetry","connection","errorHandlers","encodedCommands","encode","isLogLevelUseable","httpClient","post","withHeadersInfo","withContent","readString","execute","exception","getStatus","_handleError","_send","responseText","responseCommands","decode","err","errorMsg","emit","ClientContextFactory","legecyClientSupport","on","clientContext","withTransmitter","withSlackMS","withMaxBatchSize","MAX_SAFE_INTEGER","build","createClientContext","create","clientContextFactoryProvider","KeycloakConnection","authEndpoint","realmName","KeycloakFunctions","directConnection","appName","encodedUser","encodeURIComponent","encodedPassword","encodedAppName","createDirectConnection","createServerProxyConnection","refreshToken","body","createRefreshConnection","receiveToken","SecurityHttpClientInterceptor","token","realm","KeycloakSecurity","functions","interceptor","intervall","isAuthorized","createLoginConnection","access_token","setToken","setRealm","setAppName","expires","expires_in","MIN_TOKEN_EXPIRES_RUN","sleepTime","Math","max","TOKEN_EXPIRES_DELTA","refresh_token","securityProvider","registerHttp","registerClientScope","registerRemotingScope","registerSecurity","info","RICO_VERSION","Worker","Blob","URL","createObjectURL","HttpWorker","blob","RICO_WORKER","httpWorkerProvider","showWarning"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;ACjFA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAC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","file":"rico.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ricojs\"] = factory();\n\telse\n\t\troot[\"ricojs\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const LogLevel = {\n NONE: { name: 'NONE', text: '[NONE ]', level: 0 },\n ALL: { name: 'ALL', text: '[ALL ]', level: 100 },\n TRACE: { name: 'TRACE', text: '[TRACE]', level: 5 },\n DEBUG: { name: 'DEBUG', text: '[DEBUG]', level: 4 },\n INFO: { name: 'INFO', text: '[INFO ]', level: 3 },\n WARN: { name: 'WARN', text: '[WARN ]', level: 2 },\n ERROR: { name: 'ERROR', text: '[ERROR]', level: 1 },\n};\n\nexport { LogLevel };","var _checkMethodName;\n\nexport function exists(object) {\n return typeof object !== 'undefined' && object !== null;\n}\n\nexport function checkMethod(name) {\n _checkMethodName = name;\n}\n\nexport function checkParam(param, parameterName) {\n if(!exists(param)) {\n throw new Error('The parameter ' + parameterName + ' is mandatory in ' + _checkMethodName);\n }\n}\n\nexport function parseUrl(url) {\n //https://jsperf.com/url-parsing\n const pattern = /^(((([^:\\/#\\?]+:)?(?:(\\/\\/)((?:(([^:@\\/#\\?]+)(?:\\:([^:@\\/#\\?]+))?)@)?(([^:\\/#\\?\\]\\[]+|\\[[^\\/\\]@#?]+\\])(?:\\:([0-9]+))?))?)?)?((\\/?(?:[^\\/\\?#]+\\/+)*)([^\\?#]*)))?(\\?[^#]+)?)(#.*)?/\n const matches = url.match(pattern);\n\n let scheme;\n if (matches[4] && matches[4].length > 1) {\n scheme = matches[4].substring(0, matches[4].length-1);\n }\n\n let path = matches[13];\n\n let query;\n if (matches[16] && matches[16].length > 1) {\n query = matches[16].substring(1, matches[16].length);\n const hashes = query.split('&');\n query = hashes.reduce((params, hash) => {\n let [key, val] = hash.split('=')\n return Object.assign(params, {[key]: val})\n }, {});\n }\n\n let fragment;\n if (matches[17] && matches[17].length > 1) {\n fragment = matches[17].substring(1, matches[17].length);\n }\n\n let hostname = matches[11];\n let port = matches[12];\n if (hostname && !port && scheme === 'http') {\n port = 80;\n } else if (hostname && !port && scheme === 'https') {\n port = 443;\n }\n\n //relative url? get hostname and port from the browser\n if (!hostname && !port && !scheme) {\n \n if (window && window.location && window.location.hostname) {\n hostname = window.location.hostname;\n }\n if (window && window.location && window.location.port) {\n port = window.location.port;\n }\n if (window && window.location && window.location.protocol) {\n scheme = window.location.protocol.substring(0, window.location.protocol.length-1) ;\n }\n // strip '.' from relative path\n if (path.indexOf('.') === 0) {\n path = path.substring(1, path.length);\n }\n }\n\n // port should be a number, always\n if (port) {\n port = parseInt(port);\n }\n\n return {\n scheme: scheme,\n user: matches[8],\n password: matches[9],\n hostname: hostname,\n port: port,\n path: path,\n query: query,\n fragment: fragment\n };\n \n}\n\n","import {checkParam, exists} from '../utils'\nimport { LogLevel } from \"./constants\";\n\n// private methods\nconst LOCALS = {\n pad (text, size) {\n let result = '' + text;\n while (result.length < size) {\n result = '0' + result;\n }\n return result;\n },\n internalLog () {\n const args = Array.from(arguments);\n const func = args.shift();\n const context = args.shift();\n const logLevel = args.shift();\n const date = new Date();\n const dateString = date.getFullYear() + '-' + LOCALS.pad(date.getMonth() + 1, 2) + '-' + LOCALS.pad(date.getDate(), 2) + ' ' + LOCALS.pad(date.getHours(), 2) + ':' + LOCALS.pad(date.getMinutes(), 2) + ':' + LOCALS.pad(date.getSeconds(), 2) + '.' + LOCALS.pad(date.getMilliseconds(), 3);\n func(dateString, logLevel.text, context, ...args);\n\n },\n getCookie (name) {\n if (exists(window) && exists(window.document) && exists(window.document.cookie)) { \n const value = '; ' + window.document.cookie;\n const parts = value.split('; ' + name + '=');\n if ( parts.length === 2 ) {\n return parts.pop().split(';').shift();\n }\n }\n }\n};\n\n\n// public\nclass Logger {\n\n constructor(context, rootLogger) {\n this.context = context;\n this.rootLogger = rootLogger;\n const cookieLogLevel = LOCALS.getCookie('RICO_LOGGER_' + this.context);\n switch (cookieLogLevel) {\n case 'NONE':\n this.logLevel = LogLevel.NONE;\n break;\n case 'ALL':\n this.logLevel = LogLevel.ALL;\n break;\n case 'TRACE':\n this.logLevel = LogLevel.TRACE;\n break;\n case 'DEBUG':\n this.logLevel = LogLevel.DEBUG;\n break;\n case 'INFO':\n this.logLevel = LogLevel.INFO;\n break;\n case 'WARN':\n this.logLevel = LogLevel.WARN;\n break;\n case 'ERROR':\n this.logLevel = LogLevel.ERROR;\n break;\n }\n\n }\n\n trace() {\n if (exists(console) && this.isLogLevel(LogLevel.TRACE)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.TRACE, ...arguments);\n }\n }\n\n debug() {\n if (exists(console) && this.isLogLevel(LogLevel.DEBUG)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.DEBUG, ...arguments);\n }\n }\n\n info() {\n if (exists(console) && this.isLogLevel(LogLevel.INFO)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.INFO, ...arguments);\n }\n }\n\n warn() {\n if (exists(console) && this.isLogLevel(LogLevel.WARN)) {\n LOCALS.internalLog(console.warn, this.context, LogLevel.WARN, ...arguments);\n }\n }\n\n error() {\n if (exists(console) && this.isLogLevel(LogLevel.ERROR)) {\n LOCALS.internalLog(console.error, this.context, LogLevel.ERROR, ...arguments);\n }\n }\n\n getLogLevel() {\n if (exists(this.logLevel)) {\n return this.logLevel;\n } else if (exists(this.rootLogger)) {\n return this.rootLogger.getLogLevel();\n } else {\n return LogLevel.INFO;\n }\n }\n\n setLogLevel(level) {\n this.logLevel = level;\n }\n\n setLogLevelByName(levelName) {\n if (exists(LogLevel[levelName])) {\n this.logLevel = LogLevel[levelName];\n }\n }\n\n isLogLevel(level) {\n if (this.getLogLevel() === LogLevel.NONE) {\n return false;\n }\n if (this.getLogLevel() === LogLevel.ALL) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.DEBUG && level !== LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.INFO && level !== LogLevel.TRACE && level !== LogLevel.DEBUG) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.WARN && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.ERROR && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO && level !== LogLevel.WARN) {\n return true;\n }\n return false;\n }\n\n isLogLevelUseable(level) {\n checkParam(level, 'level');\n if (level.level) {\n return this.getLogLevel().level >= level.level;\n } else {\n return false;\n }\n }\n}\n\nexport { Logger };","import { exists } from \"../utils\";\nimport { Logger } from \"./logger\";\n\nconst ROOT_LOGGER = new Logger('ROOT');\n\n// private methods\nconst LOCALS = {\n loggers: new Map()\n};\n\n\n// public\nclass LoggerFactory {\n\n static getLogger(context) {\n if (!exists(context) || context === 'ROOT') {\n return ROOT_LOGGER;\n }\n const existingLogger = LOCALS.loggers.get(context);\n if (existingLogger) {\n return existingLogger;\n }\n\n const logger = new Logger(context, ROOT_LOGGER);\n LOCALS.loggers.set(context, logger);\n return logger;\n }\n}\n\nexport { LoggerFactory }","import { LogLevel } from \"./constants\";\nimport { LoggerFactory } from \"./loggerfactory\";\n\nexport { LogLevel, LoggerFactory };","import {exists} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass Client {\n\n}\n\nClient.LOGGER = LoggerFactory.getLogger('Client');\n\nClient.services = new Map();\nClient.serviceProviders = new Map();\nClient.configuration = {};\n\nClient.getService = function(name) {\n let service = Client.services.get(name);\n if (!exists(service)) {\n let provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n throw new Error('No service provider found for ' + name);\n } else {\n service = provider.getService(Client.configuration);\n Client.services.set(name, service);\n }\n }\n return service;\n};\n\nClient.hasService = function(name) {\n const provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n return false;\n } else {\n return true;\n }\n};\n\nClient.getAllServiceTypes = function() {\n let result = [];\n Client.serviceProviders.forEach((serviceProvider) => result.push(serviceProvider));\n return result;\n};\n\n\nClient.registerServiceProvider = function(serviceProvider) {\n if (serviceProvider === null || typeof serviceProvider === 'undefined') {\n throw new Error('Cannot register empty service provider');\n }\n \n if (typeof serviceProvider.getName === 'function' && typeof serviceProvider.getService === 'function') {\n const current = Client.serviceProviders.get(serviceProvider.getName());\n if (!current) {\n Client.serviceProviders.set(serviceProvider.getName(), serviceProvider);\n Client.LOGGER.debug('Service provider registered with name', serviceProvider.getName());\n } else {\n throw new Error('Cannot register another service provider. Name already in use.');\n }\n } else {\n throw new Error('Cannot register service provider without getName() and getService() methods');\n }\n};\n\nClient.init = function() {\n Client.serviceProviders.forEach((serviceProvider) => {\n const service = serviceProvider.getService();\n Client.LOGGER.trace('Initializing service for service provider', serviceProvider.getName());\n if (typeof service.initServiceProvider === 'function') {\n Client.LOGGER.debug('Initializing service', service);\n service.initServiceProvider(Client);\n }\n });\n}\n\nexport { Client }","import { checkMethod, checkParam } from '../utils'\nclass ServiceProvider {\n\n constructor(serviceClass, name, client) {\n checkMethod('constructor');\n checkParam(serviceClass, 'serviceClass');\n checkParam(name, 'name');\n \n this.serviceInstance = new serviceClass(client);\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getService() {\n return this.serviceInstance;\n }\n}\n\nexport { ServiceProvider }","// Reponse type\nexport const RESPONSE_TYPE = {\n ARRAY_BUFFER: 'arraybuffer',\n TEXT: 'text',\n JSON: 'json'\n}\n\n// HTTP methods and status codes\nexport const HTTP = {\n METHOD: {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE'\n },\n STATUS: {\n ACCEPTED: 202,\n BAD_GATEWAY: 502,\n BAD_REQUEST: 400,\n CONFLICT: 409,\n CONTINUE: 100,\n CREATED: 201,\n EXPECTATION_FAILED: 417,\n FAILED_DEPENDENCY : 424,\n FORBIDDEN: 403,\n GATEWAY_TIMEOUT: 504,\n GONE: 410,\n HTTP_VERSION_NOT_SUPPORTED: 505,\n IM_A_TEAPOT: 418,\n INSUFFICIENT_SPACE_ON_RESOURCE: 419,\n INSUFFICIENT_STORAGE: 507,\n INTERNAL_SERVER_ERROR: 500,\n LENGTH_REQUIRED: 411,\n LOCKED: 423,\n METHOD_FAILURE: 420,\n METHOD_NOT_ALLOWED: 405,\n MOVED_PERMANENTLY: 301,\n MOVED_TEMPORARILY: 302,\n MULTI_STATUS: 207,\n MULTIPLE_CHOICES: 300,\n NETWORK_AUTHENTICATION_REQUIRED: 511,\n NO_CONTENT: 204,\n NON_AUTHORITATIVE_INFORMATION: 203,\n NOT_ACCEPTABLE: 406,\n NOT_FOUND: 404,\n NOT_IMPLEMENTED: 501,\n NOT_MODIFIED: 304,\n OK: 200,\n PARTIAL_CONTENT: 206,\n PAYMENT_REQUIRED: 402,\n PERMANENT_REDIRECT: 308,\n PRECONDITION_FAILED: 412,\n PRECONDITION_REQUIRED: 428,\n PROCESSING: 102,\n PROXY_AUTHENTICATION_REQUIRED: 407,\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n REQUEST_TIMEOUT: 408,\n REQUEST_TOO_LONG: 413,\n REQUEST_URI_TOO_LONG: 414,\n REQUESTED_RANGE_NOT_SATISFIABLE: 416,\n RESET_CONTENT: 205,\n SEE_OTHER: 303,\n SERVICE_UNAVAILABLE: 503,\n SWITCHING_PROTOCOLS: 101,\n TEMPORARY_REDIRECT: 307,\n TOO_MANY_REQUESTS: 429,\n UNAUTHORIZED: 401,\n UNPROCESSABLE_ENTITY: 422,\n UNSUPPORTED_MEDIA_TYPE: 415,\n USE_PROXY: 305\n },\n HEADER_NAME: {\n ACCEPT: 'Accept',\n ACCEPT_CHARSET: 'Accept-Charset', \n ACCEPT_ENCODING: 'Accept-Encoding', \n ACCEPT_LANGUAGE: 'Accept-Language',\n ACCEPT_DATETIME: 'Accept-Datetime',\n AUTHORIZATION: 'Authorization',\n CACHE_CONTROL: 'Cache-Control',\n CONNECTION: 'Connection',\n COOKIE: 'Cookie',\n CONTENT_LENGTH: 'Content-Length',\n CONTENT_MD5: 'Content-MD5',\n CONTENT_TYPE: 'Content-Type',\n DATE: 'Date',\n EXPECT: 'Expect',\n FORWARDED: 'Forwarded',\n FROM: 'From',\n HOST: 'Host', \n IF_MATCH: 'If-Match', \n IF_MODIFIED_SINCE: 'If-Modified_Since',\n IF_NONE_MATCH: 'If-None_Match',\n IF_RANGE: 'If-Range',\n MAX_FORWARDS: 'Max-Forwards',\n PRAGMA: 'Pragma', \n PROXY_AUTHORIZATION: 'Proxy-Authorization',\n REFERER: 'Referer',\n TE: 'TE',\n USER_AGENT: 'User-Agent',\n X_CLIENT_ID: 'X-Client-Id',\n X_CLIENT_SESSION_ID: 'X-Client-Session-Id',\n X_PLATFORM_SECURITY_REALM: 'X-platform-security-realm',\n X_PLATFORM_SECURITY_BEARER_ONLY: 'X-platform-security-bearer-only',\n X_PLATFORM_SECURITY_APPLICATION: 'X-platform-security-application'\n },\n CONTENT_TYPE: {\n APPLICATION_JSON: 'application/json',\n APPLICATION_X_WWW_FORM_URLENCODED: 'application/x-www-form-urlencoded',\n TEXT_HTML: 'text/html',\n TEXT_PLAIN: 'text/plain'\n },\n XMLHTTPREQUEST_READYSTATE: {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE:4\n }\n}\n\n// Security\nexport const SECURITY = {\n AUTH_ENDPOINT: '/openid-connect'\n}","import { exists, checkMethod, checkParam } from '../utils';\nclass HttpResponse {\n\n constructor(url, status, content, headers) {\n this.url = url;\n this.status = status;\n this.content = content;\n this.headers = {};\n if (exists(headers) && typeof headers === 'string') {\n const headerArray = headers.trim().split(/[\\r\\n]+/);\n for (let i = 0; i < headerArray.length; i++) {\n const line = headerArray[i];\n const parts = line.split(': ');\n if (parts.length === 2) {\n const header = parts.shift().toLowerCase();\n const value = parts.join(': ');\n this.headers[header] = value;\n }\n }\n }\n }\n\n getUrl() {\n return this.url;\n }\n\n getContent() {\n return this.content;\n }\n\n getStatus() {\n return this.status;\n }\n\n getHeaders() {\n return this.headers;\n }\n\n getHeaderByName(name) {\n checkMethod('getHeaderByName');\n checkParam(name, 'name');\n \n return this.headers[name.toLowerCase()];\n }\n\n}\n\nexport { HttpResponse }","class HttpException {\n\n constructor(message, status, timedout) {\n this.message = message;\n this.status = status || 0;\n this.timedout = timedout || false;\n }\n\n getMessage() {\n return this.message;\n }\n\n getStatus() {\n return this.status;\n }\n\n isTimedout() {\n return this.timedout;\n }\n\n}\n\nexport { HttpException }","import { LoggerFactory } from '../logging';\nimport { HttpResponse } from './httpResponse';\nimport { HttpException } from './httpException';\nimport { HTTP } from '../platform/constants';\nclass Executor {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.client = client;\n }\n\n execute(timeout, worker) {\n\n let httpWorker = null;\n if (this.client && this.client.hasService('HttpWorker')) {\n httpWorker = this.client.getService('HttpWorker');\n }\n\n const useWorker = httpWorker !== null && (worker === true || timeout === true);\n let timeoutToUse = 0;\n if (timeout !== true && timeout !== false) {\n timeoutToUse = timeout;\n }\n\n let requestInterceptors = [];\n if (this.client) {\n requestInterceptors = this.client.getService('HttpClientInterceptor').getRequestInterceptors();\n Executor.LOGGER.trace('Request interceptors found:', requestInterceptors);\n }\n\n let responseInterceptors = [];\n if (this.client) {\n responseInterceptors = this.client.getService('HttpClientInterceptor').getResponseInterceptors();\n Executor.LOGGER.trace('Response interceptors found:', responseInterceptors);\n }\n\n let directCall = (resolve, reject) => {\n\n const self = this;\n const httpRequest = new XMLHttpRequest();\n const async = true;\n \n httpRequest.open(this.configuration.method, this.configuration.url, async);\n httpRequest.url = this.configuration.url;\n httpRequest.method = this.configuration.method;\n httpRequest.withCredentials = true;\n\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n requestInterceptor.handleRequest(httpRequest);\n }\n\n if (this.configuration.headers && this.configuration.headers.length > 0) {\n for (let i = 0; i < this.configuration.headers.length; i++) {\n const header = this.configuration.headers[i];\n httpRequest.setRequestHeader(header.name, header.value);\n }\n }\n\n httpRequest.timeout = timeoutToUse;\n\n if (this.configuration.responseType) {\n httpRequest.responseType = this.configuration.responseType;\n }\n\n httpRequest.ontimeout = function () {\n const message = this.statusText || 'Timeout occurred';\n const httpException = new HttpException(message, this.status, true);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onerror = function () {\n let message = this.statusText || 'Unspecified error occured';\n const httpException = new HttpException(message, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE) {\n Executor.LOGGER.trace('Request to ', self.configuration.url, 'finished with', this.status);\n }\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 200 && this.status < 300) {\n // https://www.w3.org/TR/cors/#simple-response-header\n const httpResponse = new HttpResponse(this.url, this.status, this.response, this.getAllResponseHeaders());\n \n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 300) {\n const httpException = new HttpException(this.statusText, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n }\n\n httpRequest.send(this.configuration.requestBody);\n\n }\n directCall = directCall.bind(this);\n\n let workerCall = (resolve, reject) => {\n \n const collectedRequestHeaders = [];\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n \n requestInterceptor.handleRequest({\n url: this.configuration.url,\n setRequestHeader: (name, value) => {\n const header = {name, value};\n collectedRequestHeaders.push(header);\n }\n });\n }\n\n const worker = httpWorker.createWorker();\n try {\n worker.onmessage = function(event) {\n worker.terminate();\n Executor.LOGGER.trace('Message form Worker', event);\n const msg = event.data;\n if (msg.error) {\n const httpException = new HttpException(msg.message, msg.status, msg.timedout);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n } else {\n const httpResponse = new HttpResponse(msg.url, msg.status, msg.response, msg.responseHeaders);\n\n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n }\n }\n worker.onerror = function(event) {\n const httpException = new HttpException(event.data, 0, false);\n reject(httpException);\n }\n worker.postMessage({conf: this.configuration, timeout: timeoutToUse, requestHeaders: collectedRequestHeaders});\n } catch (error) {\n const httpException = new HttpException(error, 0, false);\n reject(httpException);\n }\n\n }\n\n workerCall = workerCall.bind(this);\n\n return new Promise((resolve, reject) => {\n if (useWorker && this.client && this.client.hasService('HttpWorker')) {\n workerCall(resolve, reject);\n } else {\n directCall(resolve, reject);\n }\n });\n \n }\n\n}\n\nExecutor.LOGGER = LoggerFactory.getLogger('Executor');\n\nexport { Executor }","import { Executor } from './executor';\nimport { RESPONSE_TYPE } from '../platform/constants';\nclass ResponseBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.executor = new Executor(configuration, client);\n }\n\n readBytes() {\n this.configuration.responseType = RESPONSE_TYPE.ARRAY_BUFFER;\n return this.executor;\n }\n\n readString() {\n this.configuration.responseType = RESPONSE_TYPE.TEXT;\n return this.executor;\n }\n\n readObject() {\n this.configuration.responseType = RESPONSE_TYPE.JSON;\n return this.executor;\n }\n\n withoutResult() {\n return this.executor;\n }\n}\n\nexport { ResponseBuilder }","import { ResponseBuilder } from './reponseBuilder';\nimport { exists } from '../utils';\nclass RequestBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.reponseBuilder = new ResponseBuilder(configuration, client);\n }\n\n withHeader(name, value) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n this.configuration.headers.push({ name, value });\n return this;\n }\n\n withHeadersInfo(headersInfo) {\n if (exists(headersInfo)) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n for (let name in headersInfo) {\n if (headersInfo.hasOwnProperty(name)) {\n const value = headersInfo[name];\n this.configuration.headers.push({ name, value });\n }\n }\n }\n return this;\n }\n\n withContent(data) {\n this.configuration.requestBody = data;\n return this.reponseBuilder;\n }\n\n withoutContent() {\n return this.reponseBuilder;\n }\n}\n\nexport { RequestBuilder }","import { RequestBuilder } from './requestBuilder';\nimport { HTTP } from '../platform/constants';\nclass HttpClient {\n\n constructor(client) {\n this.client = client;\n }\n\n request(url, method) {\n const configuration = {\n url, method\n }\n this.requestBuilder = new RequestBuilder(configuration, this.client);\n return this.requestBuilder;\n }\n\n get(url) {\n return this.request(url, HTTP.METHOD.GET);\n }\n\n post(url) {\n return this.request(url, HTTP.METHOD.POST);\n }\n\n put(url) {\n return this.request(url, HTTP.METHOD.PUT);\n }\n\n delete(url) {\n return this.request(url, HTTP.METHOD.DELETE);\n }\n}\n\nexport { HttpClient }","class HttpClientInterceptor {\n\n constructor() {\n this.requestHandlers = new Set();\n this.responseHandlers = new Set();\n }\n\n addRequestInterceptor(handler) {\n this.requestHandlers.add(handler);\n }\n\n getRequestInterceptors() {\n let list = [];\n this.requestHandlers.forEach(handler => list.push(handler));\n return list;\n }\n\n addResponseInterceptor(handler) {\n this.responseHandlers.add(handler);\n }\n\n getResponseInterceptors() {\n let list = [];\n this.responseHandlers.forEach(handler => list.push(handler));\n return list;\n }\n}\n\nexport { HttpClientInterceptor }","import { HttpClient } from './httpClient';\nimport { HttpClientInterceptor } from './httpClientInterceptor';\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const httpClientProvider = new ServiceProvider(HttpClient, 'HttpClient', client);\n const httpClientInterceptorProvider = new ServiceProvider(HttpClientInterceptor, 'HttpClientInterceptor', client);\n \n client.registerServiceProvider(httpClientProvider);\n client.registerServiceProvider(httpClientInterceptorProvider);\n }\n}\n\nexport { register }","import { checkMethod, checkParam, parseUrl, exists } from '../utils';\nimport { ServiceProvider } from './serviceProvider';\nimport { LoggerFactory } from '../logging';\nimport { HTTP } from './constants';\n\nclass ClientScope {\n\n constructor() {\n this.clientIds = new Map();\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n const clientId = this.getClientId(httpRequest.url);\n if (exists(clientId)) {\n ClientScope.LOGGER.trace('Using ClientId', clientId);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID, clientId);\n }\n }\n\n handleResponse(httpResponse) {\n checkMethod('handleResponse');\n checkParam(httpResponse, 'httpResponse');\n const clientId = this.getClientId(httpResponse.url);\n const newClientId = httpResponse.getHeaderByName(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID);\n if (exists(clientId) && exists(newClientId) && clientId !== newClientId) {\n throw new Error('Client Id does not match!');\n }\n if (!exists(clientId) && exists(newClientId)) {\n ClientScope.LOGGER.debug('New ClientId found', newClientId);\n this.setClientId(httpResponse.url, newClientId);\n }\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this);\n client.getService('HttpClientInterceptor').addResponseInterceptor(this);\n }\n\n getClientId(url) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n return this.clientIds.get(key);\n }\n\n setClientId(url, clientId) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n this.clientIds.set(key, clientId);\n ClientScope.LOGGER.trace('Setting ClientId', clientId, 'for', url, 'with key', key);\n }\n\n}\n\nClientScope.calcKey = function(hostname, port) {\n return hostname + port;\n}\n\nClientScope.LOGGER = LoggerFactory.getLogger('ClientScope');\n\nfunction register(client) {\n if (exists(client)) {\n const clientScopeProvider = new ServiceProvider(ClientScope, 'ClientScope');\n\n client.registerServiceProvider(clientScopeProvider);\n }\n}\n\nexport { register }","export const ATTRIBUTE_METADATA_CHANGED_COMMAND_ID = 'AttributeMetadataChanged';\nexport const CALL_ACTION_COMMAND_ID = 'CallAction';\nexport const CHANGE_ATTRIBUTE_METADATA_COMMAND_ID = 'ChangeAttributeMetadata';\nexport const CREATE_CONTEXT_COMMAND_ID = 'CreateContext';\nexport const CREATE_CONTROLLER_COMMAND_ID = 'CreateController';\nexport const CREATE_PRESENTATION_MODEL_COMMAND_ID = 'CreatePresentationModel';\nexport const DELETE_PRESENTATION_MODEL_COMMAND_ID = 'DeletePresentationModel';\nexport const DESTROY_CONTEXT_COMMAND_ID = 'DestroyContext';\nexport const DESTROY_CONTROLLER_COMMAND_ID = 'DestroyController';\nexport const INTERRUPT_LONG_POLL_COMMAND_ID = 'InterruptLongPoll';\nexport const PRESENTATION_MODEL_DELETED_COMMAND_ID = 'PresentationModelDeleted';\nexport const START_LONG_POLL_COMMAND_ID = 'StartLongPoll';\nexport const VALUE_CHANGED_COMMAND_ID = 'ValueChanged';\n\nexport const ID = \"id\";\nexport const ATTRIBUTE_ID = \"a_id\";\nexport const PM_ID = \"p_id\";\nexport const CONTROLLER_ID = \"c_id\";\nexport const PM_TYPE = \"t\";\nexport const NAME = \"n\";\nexport const VALUE = \"v\";\nexport const PARAMS = \"p\";\nexport const PM_ATTRIBUTES = \"a\";","import {VALUE_CHANGED_COMMAND_ID, PRESENTATION_MODEL_DELETED_COMMAND_ID} from './commands/commandConstants';\n\nexport default class BlindCommandBatcher {\n constructor(folding = true, maxBatchSize = 50) {\n this.folding = folding;\n this.maxBatchSize = maxBatchSize;\n }\n batch(queue) {\n let batch = [];\n let batchLength = 0;\n while(queue[batchLength] && batchLength <= this.maxBatchSize) {\n const element = queue[batchLength];\n batchLength++;\n if(this.folding) {\n if(element.command.id == VALUE_CHANGED_COMMAND_ID &&\n batch.length > 0 &&\n batch[batch.length - 1].command.id == VALUE_CHANGED_COMMAND_ID &&\n element.command.attributeId == batch[batch.length - 1].command.attributeId) {\n //merge ValueChange for same value\n batch[batch.length - 1].command.newValue = element.command.newValue;\n } else if(element.command.id == PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n //We do not need it...\n } else {\n batch.push(element);\n }\n } else {\n batch.push(element);\n }\n if(element.handler) {\n break;\n }\n }\n queue.splice(0, batchLength);\n return batch;\n }\n}","export const JS_STRING_TYPE = 'string';\n\nexport const REMOTING_BEAN = 0;\nexport const BYTE = 1;\nexport const SHORT = 2;\nexport const INT = 3;\nexport const LONG = 4;\nexport const FLOAT = 5;\nexport const DOUBLE = 6;\nexport const BOOLEAN = 7;\nexport const STRING = 8;\nexport const DATE = 9;\nexport const ENUM = 10;\nexport const CALENDAR = 11;\nexport const LOCAL_DATE_FIELD_TYPE = 55;\nexport const LOCAL_DATE_TIME_FIELD_TYPE = 52;\nexport const ZONED_DATE_TIME_FIELD_TYPE = 54;\n\n\nexport const ADDED_TYPE = \"ADDED\";\nexport const REMOVED_TYPE = \"REMOVED\";\n","import {VALUE_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ValueChangedCommand {\n\n constructor() {\n this.id = VALUE_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, newValue) {\n checkMethod('ValueChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n\n this.attributeId = attributeId;\n this.newValue = newValue;\n }\n}","import {ATTRIBUTE_METADATA_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class AttributeMetadataChangedCommand {\n\n constructor() {\n this.id = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('AttributeMetadataChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CALL_ACTION_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CallActionCommand {\n \n constructor() {\n this.id = CALL_ACTION_COMMAND_ID;\n }\n\n init(controllerid, actionName, params) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerid, 'controllerid');\n checkParam(actionName, 'actionName');\n\n this.controllerid = controllerid;\n this.actionName = actionName;\n this.params = params;\n }\n\n}","import {CHANGE_ATTRIBUTE_METADATA_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ChangeAttributeMetadataCommand {\n\n constructor() {\n this.id = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('ChangeAttributeMetadataCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CREATE_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class CreateContextCommand {\n\n constructor() {\n this.id = CREATE_CONTEXT_COMMAND_ID;\n }\n\n}","import {CREATE_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreateControllerCommand {\n\n constructor() {\n this.id = CREATE_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerName, parentControllerId) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerName, 'controllerName');\n\n this.controllerName = controllerName;\n this.parentControllerId = parentControllerId;\n }\n\n}","import {CREATE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreatePresentationModelCommand {\n\n constructor() {\n this.id = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(presentationModel) {\n checkMethod('CreatePresentationModelCommand.init()');\n checkParam(presentationModel, 'presentationModel');\n\n this.attributes = [];\n this.clientSideOnly = false;\n this.pmId = presentationModel.id;\n this.pmType = presentationModel.presentationModelType;\n var command = this;\n presentationModel.getAttributes().forEach(function (attr) {\n command.attributes.push({\n propertyName: attr.propertyName,\n id: attr.id,\n value: attr.getValue()\n });\n });\n }\n}","import {DELETE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DeletePresentationModelCommand {\n\n constructor() {\n this.id = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('DeletePresentationModelCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}\n","import {DESTROY_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class DestroyContextCommand {\n\n constructor() {\n this.id = DESTROY_CONTEXT_COMMAND_ID;\n }\n\n}","import {DESTROY_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DestroyControllerCommand {\n\n constructor() {\n this.id = DESTROY_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerId) {\n checkMethod('DestroyControllerCommand.init()');\n checkParam(controllerId, 'controllerId');\n\n this.controllerId = controllerId;\n }\n\n}","import {INTERRUPT_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class InterruptLongPollCommand {\n\n constructor() {\n this.id = INTERRUPT_LONG_POLL_COMMAND_ID;\n }\n}","import {PRESENTATION_MODEL_DELETED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class PresentationModelDeletedCommand {\n\n constructor() {\n this.id = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('PresentationModelDeletedCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}","import {START_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class StartLongPollCommand {\n\n constructor() {\n this.id = START_LONG_POLL_COMMAND_ID;\n }\n}\n","export default class CodecError extends Error {\n constructor(message) {\n super(message);\n }\n}","import {exists, checkMethod, checkParam} from '../../utils';\nimport {JS_STRING_TYPE} from '../constants';\nimport {\n CREATE_PRESENTATION_MODEL_COMMAND_ID,\n VALUE_CHANGED_COMMAND_ID,\n ATTRIBUTE_METADATA_CHANGED_COMMAND_ID,\n CALL_ACTION_COMMAND_ID,\n CHANGE_ATTRIBUTE_METADATA_COMMAND_ID,\n CREATE_CONTEXT_COMMAND_ID,\n CREATE_CONTROLLER_COMMAND_ID,\n DELETE_PRESENTATION_MODEL_COMMAND_ID,\n DESTROY_CONTEXT_COMMAND_ID,\n DESTROY_CONTROLLER_COMMAND_ID,\n INTERRUPT_LONG_POLL_COMMAND_ID,\n PRESENTATION_MODEL_DELETED_COMMAND_ID,\n START_LONG_POLL_COMMAND_ID\n} from './commandConstants';\nimport {ID, PM_ID, PM_TYPE, PM_ATTRIBUTES, NAME, ATTRIBUTE_ID, VALUE, CONTROLLER_ID, PARAMS} from './commandConstants';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport CodecError from './codecError';\n\n\nexport default class Codec {\n\n static _encodeAttributeMetadataChangedCommand(command) {\n checkMethod(\"Codec.encodeAttributeMetadataChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeAttributeMetadataChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeAttributeMetadataChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new AttributeMetadataChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCallActionCommand(command) {\n checkMethod(\"Codec.encodeCallActionCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerid, \"command.controllerid\");\n checkParam(command.actionName, \"command.actionName\");\n checkParam(command.params, \"command.params\");\n\n\n let jsonCommand = {};\n jsonCommand[ID] = CALL_ACTION_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerid;\n jsonCommand[NAME] = command.actionName;\n jsonCommand[PARAMS] = command.params.map((param) => {\n let result = {};\n result[NAME] = param.name;\n if (exists(param.value)) {\n result[VALUE] = param.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCallActionCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCallActionCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[PARAMS], \"jsonCommand[PARAMS]\");\n\n let command = new CallActionCommand();\n command.controllerid = jsonCommand[CONTROLLER_ID];\n command.actionName = jsonCommand[NAME];\n //TODO: Für die Params sollten wir eine Klasse bereitstellen\n command.params = jsonCommand[PARAMS].map((param) => {\n return {\n 'name': param[NAME],\n 'value': exists(param[VALUE]) ? param[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeChangeAttributeMetadataCommand(command) {\n checkMethod(\"Codec.encodeChangeAttributeMetadataCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeChangeAttributeMetadataCommand(jsonCommand) {\n checkMethod(\"Codec.decodeChangeAttributeMetadataCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new ChangeAttributeMetadataCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCreateContextCommand(command) {\n checkMethod(\"Codec.encodeCreateContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeCreateContextCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreateContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new CreateContextCommand();\n return command;\n }\n\n static _encodeCreateControllerCommand(command) {\n checkMethod(\"Codec._encodeCreateControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerName, \"command.controllerName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTROLLER_COMMAND_ID;\n jsonCommand[NAME] = command.controllerName;\n jsonCommand[CONTROLLER_ID] = command.parentControllerId;\n return jsonCommand;\n }\n\n static _decodeCreateControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeCreateControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new CreateControllerCommand();\n command.controllerName = jsonCommand[NAME];\n command.parentControllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeCreatePresentationModelCommand(command) {\n checkMethod(\"Codec.encodeCreatePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n checkParam(command.pmType, \"command.pmType\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n jsonCommand[PM_TYPE] = command.pmType;\n jsonCommand[PM_ATTRIBUTES] = command.attributes.map((attribute) => {\n let result = {};\n result[NAME] = attribute.propertyName;\n result[ATTRIBUTE_ID] = attribute.id;\n if (exists(attribute.value)) {\n result[VALUE] = attribute.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCreatePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreatePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n checkParam(jsonCommand[PM_TYPE], \"jsonCommand[PM_TYPE]\");\n\n let command = new CreatePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n command.pmType = jsonCommand[PM_TYPE];\n\n //TODO: Für die Attribute sollten wir eine Klasse bereitstellen\n command.attributes = jsonCommand[PM_ATTRIBUTES].map((attribute) => {\n return {\n 'propertyName': attribute[NAME],\n 'id': attribute[ATTRIBUTE_ID],\n 'value': exists(attribute[VALUE]) ? attribute[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeDeletePresentationModelCommand(command) {\n checkMethod(\"Codec._encodeDeletePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodeDeletePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDeletePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n\n let command = new DeletePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeDestroyContextCommand(command) {\n checkMethod(\"Codec._encodeDestroyContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeDestroyContextCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new DestroyContextCommand();\n return command;\n }\n\n static _encodeDestroyControllerCommand(command) {\n checkMethod(\"Codec._encodeDestroyControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerId, \"command.controllerId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTROLLER_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerId;\n return jsonCommand;\n }\n\n static _decodeDestroyControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new DestroyControllerCommand();\n command.controllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeInterruptLongPollCommand(command) {\n checkMethod(\"Codec._encodeInterruptLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = INTERRUPT_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeInterruptLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeInterruptLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new InterruptLongPollCommand();\n return command;\n }\n\n static _encodePresentationModelDeletedCommand(command) {\n checkMethod(\"Codec._encodePresentationModelDeletedCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodePresentationModelDeletedCommand(jsonCommand) {\n checkMethod(\"Codec._decodePresentationModelDeletedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n let command = new PresentationModelDeletedCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeStartLongPollCommand(command) {\n checkMethod(\"Codec._encodeStartLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = START_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeStartLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeStartLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new StartLongPollCommand();\n return command;\n }\n\n static _encodeValueChangedCommand(command) {\n checkMethod(\"Codec.encodeValueChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = VALUE_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n if (exists(command.newValue)) {\n jsonCommand[VALUE] = command.newValue;\n }\n return jsonCommand;\n }\n\n static _decodeValueChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeValueChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n\n let command = new ValueChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n if (exists(jsonCommand[VALUE])) {\n command.newValue = jsonCommand[VALUE];\n } else {\n command.newValue = null;\n }\n return command;\n }\n\n static encode(commands) {\n checkMethod(\"Codec.encode\");\n checkParam(commands, \"commands\");\n\n let self = this;\n return JSON.stringify(commands.map((command) => {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._encodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._encodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._encodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._encodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._encodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._encodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._encodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._encodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._encodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._encodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._encodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n }));\n }\n\n static decode(transmitted) {\n checkMethod(\"Codec.decode\");\n checkParam(transmitted, \"transmitted\");\n\n if (typeof transmitted === JS_STRING_TYPE) {\n let self = this;\n return JSON.parse(transmitted).map(function (command) {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._decodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._decodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._decodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._decodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._decodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._decodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._decodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._decodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._decodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._decodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._decodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n });\n } else {\n throw new CodecError('Can not decode data that is not of type string');\n }\n }\n}","export default class EventBus {\n\n constructor() {\n this.eventHandlers = [];\n }\n\n onEvent(eventHandler) {\n this.eventHandlers.push(eventHandler);\n }\n\n trigger(event) {\n this.eventHandlers.forEach(handle => handle(event));\n }\n}","import EventBus from './eventBus'\n\nvar presentationModelInstanceCount = 0; // todo dk: consider making this static in class\n\nexport default class ClientPresentationModel {\n constructor(id, presentationModelType) {\n this.id = id;\n this.presentationModelType = presentationModelType;\n this.attributes = [];\n this.clientSideOnly = false;\n this.dirty = false;\n if (typeof id !== 'undefined' && id != null) {\n this.id = id;\n }\n else {\n this.id = (presentationModelInstanceCount++).toString();\n }\n this.invalidBus = new EventBus();\n this.dirtyValueChangeBus = new EventBus();\n }\n // todo dk: align with Java version: move to ClientDolphin and auto-add to model store\n /** a copy constructor for anything but IDs. Per default, copies are client side only, no automatic update applies. */\n copy() {\n var result = new ClientPresentationModel(null, this.presentationModelType);\n result.clientSideOnly = true;\n this.getAttributes().forEach((attribute) => {\n var attributeCopy = attribute.copy();\n result.addAttribute(attributeCopy);\n });\n return result;\n }\n //add array of attributes\n addAttributes(attributes) {\n if (!attributes || attributes.length < 1)\n return;\n attributes.forEach(attr => {\n this.addAttribute(attr);\n });\n }\n addAttribute(attribute) {\n if (!attribute || (this.attributes.indexOf(attribute) > -1)) {\n return;\n }\n if (this.findAttributeByPropertyName(attribute.propertyName)) {\n throw new Error(\"There already is an attribute with property name: \" + attribute.propertyName\n + \" in presentation model with id: \" + this.id);\n }\n if (attribute.getQualifier() && this.findAttributeByQualifier(attribute.getQualifier())) {\n throw new Error(\"There already is an attribute with qualifier: \" + attribute.getQualifier()\n + \" in presentation model with id: \" + this.id);\n }\n attribute.setPresentationModel(this);\n this.attributes.push(attribute);\n attribute.onValueChange(() => {\n this.invalidBus.trigger({ source: this });\n });\n }\n onInvalidated(handleInvalidate) {\n this.invalidBus.onEvent(handleInvalidate);\n }\n /** returns a copy of the internal state */\n getAttributes() {\n return this.attributes.slice(0);\n }\n getAt(propertyName) {\n return this.findAttributeByPropertyName(propertyName);\n }\n findAllAttributesByPropertyName(propertyName) {\n var result = [];\n if (!propertyName)\n return null;\n this.attributes.forEach((attribute) => {\n if (attribute.propertyName == propertyName) {\n result.push(attribute);\n }\n });\n return result;\n }\n findAttributeByPropertyName(propertyName) {\n if (!propertyName)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if ((this.attributes[i].propertyName == propertyName)) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeByQualifier(qualifier) {\n if (!qualifier)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].getQualifier() == qualifier) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeById(id) {\n if (!id)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].id == id) {\n return this.attributes[i];\n }\n }\n return null;\n }\n syncWith(sourcePresentationModel) {\n this.attributes.forEach((targetAttribute) => {\n var sourceAttribute = sourcePresentationModel.getAt(targetAttribute.propertyName);\n if (sourceAttribute) {\n targetAttribute.syncWith(sourceAttribute);\n }\n });\n }\n}\n","import BlindCommandBatcher from './commandBatcher';\nimport Codec from './commands/codec';\nimport ClientPresentationModel from './clientPresentationModel'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientConnector {\n\n constructor(transmitter, clientDolphin, slackMS = 0, maxBatchSize = 50) {\n\n this.commandQueue = [];\n this.currentlySending = false;\n this.pushEnabled = false;\n this.waiting = false;\n this.transmitter = transmitter;\n this.clientDolphin = clientDolphin;\n this.slackMS = slackMS;\n this.codec = new Codec();\n this.commandBatcher = new BlindCommandBatcher(true, maxBatchSize);\n }\n\n setCommandBatcher(newBatcher) {\n this.commandBatcher = newBatcher;\n }\n\n setPushEnabled(enabled) {\n this.pushEnabled = enabled;\n }\n\n setPushListener(newListener) {\n this.pushListener = newListener;\n }\n\n setReleaseCommand(newCommand) {\n this.releaseCommand = newCommand;\n }\n\n send(command, onFinished) {\n this.commandQueue.push({ command: command, handler: onFinished });\n if (this.currentlySending) {\n this.release(); // there is not point in releasing if we do not send atm\n return;\n }\n this.doSendNext();\n }\n\n doSendNext() {\n if (this.commandQueue.length < 1) {\n if (this.pushEnabled) {\n this.enqueuePushCommand();\n }\n else {\n this.currentlySending = false;\n return;\n }\n }\n this.currentlySending = true;\n let cmdsAndHandlers = this.commandBatcher.batch(this.commandQueue);\n\n if(cmdsAndHandlers.length > 0) {\n let callback = cmdsAndHandlers[cmdsAndHandlers.length - 1].handler;\n let commands = cmdsAndHandlers.map(cah => { return cah.command; });\n this.transmitter.transmit(commands, (response) => {\n let touchedPMs = [];\n response.forEach((command) => {\n let touched = this.handle(command);\n if (touched)\n touchedPMs.push(touched);\n });\n if (callback) {\n callback.onFinished(touchedPMs); // todo: make them unique?\n }\n setTimeout(() => this.doSendNext(), this.slackMS);\n }, (error) => {\n callback.onError(error);\n });\n } else {\n setTimeout(() => this.doSendNext(), this.slackMS);\n }\n }\n\n handle(command) {\n if (command.id === \"DeletePresentationModel\") {\n return this.handleDeletePresentationModelCommand(command);\n }\n else if (command.id === \"CreatePresentationModel\") {\n return this.handleCreatePresentationModelCommand(command);\n }\n else if (command.id === \"ValueChanged\") {\n return this.handleValueChangedCommand(command);\n }\n else if (command.id === \"AttributeMetadataChanged\") {\n return this.handleAttributeMetadataChangedCommand(command);\n }\n else {\n ClientConnector.LOGGER.error(\"Cannot handle, unknown command \" + command);\n }\n return null;\n }\n\n handleDeletePresentationModelCommand(serverCommand) {\n let model = this.clientDolphin.findPresentationModelById(serverCommand.pmId);\n if (!model)\n return null;\n this.clientDolphin.getClientModelStore().deletePresentationModel(model, true);\n return model;\n }\n\n handleCreatePresentationModelCommand(serverCommand) {\n if (this.clientDolphin.getClientModelStore().containsPresentationModel(serverCommand.pmId)) {\n throw new Error(\"There already is a presentation model with id \" + serverCommand.pmId + \" known to the client.\");\n }\n let attributes = [];\n serverCommand.attributes.forEach((attr) => {\n let clientAttribute = this.clientDolphin.attribute(attr.propertyName, attr.qualifier, attr.value);\n if (attr.id && attr.id.match(\".*S$\")) {\n clientAttribute.id = attr.id;\n }\n attributes.push(clientAttribute);\n });\n let clientPm = new ClientPresentationModel(serverCommand.pmId, serverCommand.pmType);\n clientPm.addAttributes(attributes);\n if (serverCommand.clientSideOnly) {\n clientPm.clientSideOnly = true;\n }\n this.clientDolphin.getClientModelStore().add(clientPm, false);\n this.clientDolphin.updatePresentationModelQualifier(clientPm);\n return clientPm;\n }\n\n handleValueChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute) {\n ClientConnector.LOGGER.error(\"attribute with id \" + serverCommand.attributeId + \" not found, cannot update to new value \" + serverCommand.newValue);\n return null;\n }\n if (clientAttribute.getValue() === serverCommand.newValue) {\n return null;\n }\n clientAttribute.setValueFromServer(serverCommand.newValue);\n return null;\n }\n\n handleAttributeMetadataChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute)\n return null;\n clientAttribute[serverCommand.metadataName] = serverCommand.value;\n return null;\n }\n\n listen() {\n if (!this.pushEnabled)\n return;\n if (this.waiting)\n return;\n // todo: how to issue a warning if no pushListener is set?\n if (!this.currentlySending) {\n this.doSendNext();\n }\n }\n\n enqueuePushCommand() {\n let me = this;\n this.waiting = true;\n this.commandQueue.push({\n command: this.pushListener,\n handler: {\n onFinished: function () { me.waiting = false; },\n onFinishedData: null\n }\n });\n }\n\n release() {\n if (!this.waiting)\n return;\n this.waiting = false;\n // todo: how to issue a warning if no releaseCommand is set?\n this.transmitter.signal(this.releaseCommand);\n }\n}\n\nClientConnector.LOGGER = LoggerFactory.getLogger('ClientConnector');","import EventBus from './eventBus';\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientAttribute {\n\n constructor(propertyName, qualifier, value) {\n\n this.propertyName = propertyName;\n this.id = \"\" + (ClientAttribute.clientAttributeInstanceCount++) + \"C\";\n this.valueChangeBus = new EventBus();\n this.qualifierChangeBus = new EventBus();\n this.setValue(value);\n this.setQualifier(qualifier);\n }\n\n copy() {\n let result = new ClientAttribute(this.propertyName, this.getQualifier(), this.getValue());\n return result;\n }\n\n setPresentationModel(presentationModel) {\n if (this.presentationModel) {\n throw new Error(\"You can not set a presentation model for an attribute that is already bound.\");\n }\n this.presentationModel = presentationModel;\n }\n\n getPresentationModel() {\n return this.presentationModel;\n }\n\n getValue() {\n return this.value;\n }\n\n setValueFromServer(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': false });\n }\n\n setValue(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': true });\n }\n\n setQualifier(newQualifier) {\n if (this.qualifier === newQualifier)\n return;\n let oldQualifier = this.qualifier;\n this.qualifier = newQualifier;\n this.qualifierChangeBus.trigger({ 'oldValue': oldQualifier, 'newValue': newQualifier });\n this.valueChangeBus.trigger({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n getQualifier() {\n return this.qualifier;\n }\n\n onValueChange(eventHandler) {\n this.valueChangeBus.onEvent(eventHandler);\n eventHandler({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n onQualifierChange(eventHandler) {\n this.qualifierChangeBus.onEvent(eventHandler);\n }\n\n syncWith(sourceAttribute) {\n if (sourceAttribute) {\n this.setQualifier(sourceAttribute.getQualifier()); // sequence is important\n this.setValue(sourceAttribute.value);\n }\n }\n\n static checkValue(value) {\n if (value == null || typeof value === 'undefined') {\n return null;\n }\n let result = value;\n if (result instanceof String || result instanceof Boolean || result instanceof Number) {\n result = value.valueOf();\n }\n if (result instanceof ClientAttribute) {\n ClientAttribute.LOGGER.warn(\"An Attribute may not itself contain an attribute as a value. Assuming you forgot to call value.\");\n result = this.checkValue(value.value);\n }\n let ok = false;\n if (this.SUPPORTED_VALUE_TYPES.indexOf(typeof result) > -1 || result instanceof Date) {\n ok = true;\n }\n if (!ok) {\n throw new Error(\"Attribute values of this type are not allowed: \" + typeof value);\n }\n return result;\n }\n\n}\n\nClientAttribute.LOGGER = LoggerFactory.getLogger('ClientAttribute');\nClientAttribute.SUPPORTED_VALUE_TYPES = [\"string\", \"number\", \"boolean\"];\nClientAttribute.clientAttributeInstanceCount = 0;\n","import ClientAttribute from './clientAttribute'\nimport ClientPresentationModel from './clientPresentationModel'\n\nexport default class ClientDolphin {\n\n constructor() {\n }\n\n setClientConnector(clientConnector) {\n this.clientConnector = clientConnector;\n }\n\n getClientConnector() {\n return this.clientConnector;\n }\n\n send(command, onFinished) {\n this.clientConnector.send(command, onFinished);\n }\n\n attribute(propertyName, qualifier, value) {\n return new ClientAttribute(propertyName, qualifier, value);\n }\n\n presentationModel(id, type, ...attributes) {\n const model = new ClientPresentationModel(id, type);\n if (attributes && attributes.length > 0) {\n attributes.forEach((attribute) => {\n model.addAttribute(attribute);\n });\n }\n this.getClientModelStore().add(model, true);\n return model;\n }\n\n setClientModelStore(clientModelStore) {\n this.clientModelStore = clientModelStore;\n }\n\n getClientModelStore() {\n return this.clientModelStore;\n }\n\n listPresentationModelIds() {\n return this.getClientModelStore().listPresentationModelIds();\n }\n\n listPresentationModels() {\n return this.getClientModelStore().listPresentationModels();\n }\n\n findAllPresentationModelByType(presentationModelType) {\n return this.getClientModelStore().findAllPresentationModelByType(presentationModelType);\n }\n\n getAt(id) {\n return this.findPresentationModelById(id);\n }\n\n findPresentationModelById(id) {\n return this.getClientModelStore().findPresentationModelById(id);\n }\n\n deletePresentationModel(modelToDelete) {\n this.getClientModelStore().deletePresentationModel(modelToDelete, true);\n }\n\n updatePresentationModelQualifier(presentationModel) {\n presentationModel.getAttributes().forEach(sourceAttribute => {\n this.updateAttributeQualifier(sourceAttribute);\n });\n }\n\n updateAttributeQualifier(sourceAttribute) {\n if (!sourceAttribute.getQualifier())\n return;\n const attributes = this.getClientModelStore().findAllAttributesByQualifier(sourceAttribute.getQualifier());\n attributes.forEach(targetAttribute => {\n targetAttribute.setValue(sourceAttribute.getValue()); // should always have the same value\n });\n }\n\n startPushListening(pushCommand, releaseCommand) {\n this.clientConnector.setPushListener(pushCommand);\n this.clientConnector.setReleaseCommand(releaseCommand);\n this.clientConnector.setPushEnabled(true);\n\n setTimeout(() => {\n this.clientConnector.listen();\n }, 0);\n }\n\n stopPushListening() {\n this.clientConnector.setPushEnabled(false);\n }\n}","\nexport default class Attribute {\n}\n\nAttribute.QUALIFIER_PROPERTY = \"qualifier\";\nAttribute.VALUE = \"value\";\n","import CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\n\nexport default class CommandFactory {\n\n static createCreateContextCommand() {\n return new CreateContextCommand();\n }\n\n static createCreateControllerCommand(controllerName, parentControllerId) {\n const command = new CreateControllerCommand();\n command.init(controllerName, parentControllerId);\n return command;\n }\n\n static createCallActionCommand(controllerid, actionName, params) {\n const command = new CallActionCommand();\n command.init(controllerid, actionName, params);\n return command;\n }\n\n static createDestroyControllerCommand(controllerId) {\n const command = new DestroyControllerCommand();\n command.init(controllerId);\n return command;\n }\n\n static createDestroyContextCommand() {\n return new DestroyContextCommand();\n }\n\n static createStartLongPollCommand() {\n return new StartLongPollCommand();\n }\n\n static createInterruptLongPollCommand() {\n return new InterruptLongPollCommand();\n }\n\n static createCreatePresentationModelCommand(presentationModel) {\n const command = new CreatePresentationModelCommand();\n command.init(presentationModel);\n return command;\n }\n\n static createDeletePresentationModelCommand(pmId) {\n const command = new DeletePresentationModelCommand();\n command.init(pmId);\n return command;\n }\n\n static createPresentationModelDeletedCommand(pmId) {\n let command = new PresentationModelDeletedCommand();\n command.init(pmId);\n return command;\n }\n\n static createValueChangedCommand(attributeId, newValue) {\n let command = new ValueChangedCommand();\n command.init(attributeId, newValue);\n return command;\n }\n\n static createChangeAttributeMetadataCommand(attributeId, metadataName, value) {\n let command = new ChangeAttributeMetadataCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n\n static createAttributeMetadataChangedCommand(attributeId, metadataName, value) {\n let command = new AttributeMetadataChangedCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n}","import Attribute from './attribute'\nimport EventBus from './eventBus'\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientModelStore {\n\n constructor(clientDolphin) {\n\n this.clientDolphin = clientDolphin;\n this.presentationModels = new Map();\n this.presentationModelsPerType = new Map();\n this.attributesPerId = new Map();\n this.attributesPerQualifier = new Map();\n this.modelStoreChangeBus = new EventBus();\n }\n\n getClientDolphin() {\n return this.clientDolphin;\n }\n\n registerAttribute(attribute) {\n this.addAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.addAttributeByQualifier(attribute);\n }\n // whenever an attribute changes its value, the server needs to be notified\n // and all other attributes with the same qualifier are given the same value\n attribute.onValueChange((evt) => {\n if(evt.newValue !== evt.oldValue && evt.sendToServer === true) {\n const command = CommandFactory.createValueChangedCommand(attribute.id, evt.newValue);\n this.clientDolphin.getClientConnector().send(command, null);\n }\n\n if (attribute.getQualifier()) {\n let attrs = this.findAttributesByFilter((attr) => {\n return attr !== attribute && attr.getQualifier() === attribute.getQualifier();\n });\n attrs.forEach((attr) => {\n attr.setValue(attribute.getValue());\n });\n }\n\n });\n attribute.onQualifierChange((evt) => {\n this.clientDolphin.getClientConnector().send(CommandFactory.createChangeAttributeMetadataCommand(attribute.id, Attribute.QUALIFIER_PROPERTY, evt.newValue), null);\n });\n }\n\n add(model, sendToServer = true) {\n if (!model) {\n return false;\n }\n if (this.presentationModels.has(model.id)) {\n ClientModelStore.LOGGER.error(\"There already is a PM with id \" + model.id);\n }\n let added = false;\n if (!this.presentationModels.has(model.id)) {\n this.presentationModels.set(model.id, model);\n this.addPresentationModelByType(model);\n\n if(sendToServer) {\n let connector = this.clientDolphin.getClientConnector();\n connector.send(CommandFactory.createCreatePresentationModelCommand(model), null);\n }\n\n model.getAttributes().forEach(attribute => {\n this.registerAttribute(attribute);\n });\n this.modelStoreChangeBus.trigger({ 'eventType': ADDED_TYPE, 'clientPresentationModel': model });\n added = true;\n }\n return added;\n }\n\n remove(model) {\n if (!model) {\n return false;\n }\n let removed = false;\n if (this.presentationModels.has(model.id)) {\n this.removePresentationModelByType(model);\n this.presentationModels.delete(model.id);\n model.getAttributes().forEach((attribute) => {\n this.removeAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.removeAttributeByQualifier(attribute);\n }\n });\n this.modelStoreChangeBus.trigger({ 'eventType': REMOVED_TYPE, 'clientPresentationModel': model });\n removed = true;\n }\n return removed;\n }\n\n findAttributesByFilter(filter) {\n let matches = [];\n this.presentationModels.forEach((model) => {\n model.getAttributes().forEach((attr) => {\n if (filter(attr)) {\n matches.push(attr);\n }\n });\n });\n return matches;\n }\n\n addPresentationModelByType(model) {\n if (!model) {\n return;\n }\n let type = model.presentationModelType;\n if (!type) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(type);\n if (!presentationModels) {\n presentationModels = [];\n this.presentationModelsPerType.set(type, presentationModels);\n }\n if (!(presentationModels.indexOf(model) > -1)) {\n presentationModels.push(model);\n }\n }\n\n removePresentationModelByType(model) {\n if (!model || !(model.presentationModelType)) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(model.presentationModelType);\n if (!presentationModels) {\n return;\n }\n if (presentationModels.length > -1) {\n presentationModels.splice(presentationModels.indexOf(model), 1);\n }\n if (presentationModels.length === 0) {\n this.presentationModelsPerType.delete(model.presentationModelType);\n }\n }\n\n listPresentationModelIds() {\n let result = [];\n let iter = this.presentationModels.keys();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n listPresentationModels() {\n let result = [];\n let iter = this.presentationModels.values();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n findPresentationModelById(id) {\n return this.presentationModels.get(id);\n }\n\n findAllPresentationModelByType(type) {\n if (!type || !this.presentationModelsPerType.has(type)) {\n return [];\n }\n return this.presentationModelsPerType.get(type).slice(0); // slice is used to clone the array\n }\n\n deletePresentationModel(model, notify) {\n if (!model) {\n return;\n }\n if (this.containsPresentationModel(model.id)) {\n this.remove(model);\n if (!notify || model.clientSideOnly) {\n return;\n }\n this.clientDolphin.getClientConnector().send(CommandFactory.createPresentationModelDeletedCommand(model.id), null);\n }\n }\n\n containsPresentationModel(id) {\n return this.presentationModels.has(id);\n }\n\n addAttributeById(attribute) {\n if (!attribute || this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.set(attribute.id, attribute);\n }\n\n removeAttributeById(attribute) {\n if (!attribute || !this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.delete(attribute.id);\n }\n\n findAttributeById(id) {\n return this.attributesPerId.get(id);\n }\n\n addAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n attributes = [];\n this.attributesPerQualifier.set(attribute.getQualifier(), attributes);\n }\n if (!(attributes.indexOf(attribute) > -1)) {\n attributes.push(attribute);\n }\n }\n\n removeAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n return;\n }\n if (attributes.length > -1) {\n attributes.splice(attributes.indexOf(attribute), 1);\n }\n if (attributes.length === 0) {\n this.attributesPerQualifier.delete(attribute.getQualifier());\n }\n }\n\n findAllAttributesByQualifier(qualifier) {\n if (!qualifier || !this.attributesPerQualifier.has(qualifier)) {\n return [];\n }\n return this.attributesPerQualifier.get(qualifier).slice(0); // slice is used to clone the array\n }\n\n onModelStoreChange(eventHandler) {\n this.modelStoreChangeBus.onEvent(eventHandler);\n }\n\n onModelStoreChangeForType(presentationModelType, eventHandler) {\n this.modelStoreChangeBus.onEvent(pmStoreEvent => {\n if (pmStoreEvent.clientPresentationModel.presentationModelType == presentationModelType) {\n eventHandler(pmStoreEvent);\n }\n });\n }\n}\n\nClientModelStore.LOGGER = LoggerFactory.getLogger('ClientModelStore');\n\n","export default class NoTransmitter {\n\n transmit(commands, onDone) {\n // do nothing special\n onDone([]);\n }\n\n signal() {\n // do nothing\n }\n\n reset() {\n // do nothing\n }\n}","import ClientConnector from './clientConnector'\nimport ClientDolphin from './clientDolphin'\nimport ClientModelStore from './clientModelStore'\nimport NoTransmitter from './noTransmitter'\nimport { LoggerFactory } from '../logging';\n\n\nclass DolphinBuilder {\n\n constructor() {\n this.slackMS = 300;\n this.maxBatchSize = 50;\n this.transmitter = null;\n }\n\n withSlackMS(slackMS) {\n this.slackMS = slackMS;\n return this;\n }\n\n withMaxBatchSize(maxBatchSize) {\n this.maxBatchSize = maxBatchSize;\n return this;\n }\n\n withTransmitter(transmitter) {\n this.transmitter = transmitter;\n return this;\n }\n\n build() {\n const clientDolphin = new ClientDolphin();\n let transmitter;\n if (this.transmitter) {\n transmitter = this.transmitter;\n } else {\n transmitter = new NoTransmitter();\n }\n clientDolphin.setClientConnector(new ClientConnector(transmitter, clientDolphin, this.slackMS, this.maxBatchSize));\n clientDolphin.setClientModelStore(new ClientModelStore(clientDolphin));\n DolphinBuilder.LOGGER.debug(\"Remoting client initialized\", clientDolphin, transmitter);\n return clientDolphin;\n }\n}\n\nDolphinBuilder.LOGGER = LoggerFactory.getLogger('DolphinBuilder');\n\nconst dolphinBuilder = new DolphinBuilder();\n\nexport { dolphinBuilder }","import {exists, checkMethod, checkParam} from '../utils';\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants';\n\n\nconst DOLPHIN_BEAN = '@@@ R_BEAN @@@';\nconst ACTION_CALL_BEAN = '@@@ CONTROLLER_ACTION_CALL_BEAN @@@';\nconst HIGHLANDER_BEAN = '@@@ HIGHLANDER_BEAN @@@';\nconst DOLPHIN_LIST_SPLICE = '@R:LS@';\nconst SOURCE_SYSTEM = '@@@ SOURCE_SYSTEM @@@';\nconst SOURCE_SYSTEM_CLIENT = 'client';\nconst SOURCE_SYSTEM_SERVER = 'server';\n\nexport default class Connector{\n\n constructor(url, dolphin, classRepository, config) {\n checkMethod('Connector(url, dolphin, classRepository, config)');\n checkParam(url, 'url');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n\n let self = this;\n this.dolphin = dolphin;\n this.config = config;\n this.classRepository = classRepository;\n this.highlanderPMResolver = function() {};\n this.highlanderPMPromise = new Promise((resolve) => {\n self.highlanderPMResolver = resolve;\n });\n\n dolphin.getClientModelStore().onModelStoreChange((event) => {\n let model = event.clientPresentationModel;\n let sourceSystem = model.findAttributeByPropertyName(SOURCE_SYSTEM);\n if (exists(sourceSystem) && sourceSystem.value === SOURCE_SYSTEM_SERVER) {\n if (event.eventType === ADDED_TYPE) {\n self.onModelAdded(model);\n } else if (event.eventType === REMOVED_TYPE) {\n self.onModelRemoved(model);\n }\n }\n });\n }\n connect() {\n let that = this;\n that.dolphin.startPushListening(CommandFactory.createStartLongPollCommand(), CommandFactory.createInterruptLongPollCommand());\n }\n\n onModelAdded(model) {\n checkMethod('Connector.onModelAdded(model)');\n checkParam(model, 'model');\n\n var type = model.presentationModelType;\n switch (type) {\n case ACTION_CALL_BEAN:\n // ignore\n break;\n case DOLPHIN_BEAN:\n this.classRepository.registerClass(model);\n break;\n case HIGHLANDER_BEAN:\n this.highlanderPMResolver(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n this.classRepository.spliceListEntry(model);\n this.dolphin.deletePresentationModel(model);\n break;\n default:\n this.classRepository.load(model);\n break;\n }\n }\n\n onModelRemoved(model) {\n checkMethod('Connector.onModelRemoved(model)');\n checkParam(model, 'model');\n let type = model.presentationModelType;\n switch (type) {\n case DOLPHIN_BEAN:\n this.classRepository.unregisterClass(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n // do nothing\n break;\n default:\n this.classRepository.unload(model);\n break;\n }\n }\n\n invoke(command) {\n checkMethod('Connector.invoke(command)');\n checkParam(command, 'command');\n\n var dolphin = this.dolphin;\n return new Promise((resolve, reject) => {\n dolphin.send(command, {\n onFinished: (params) => {\n resolve(params);\n },\n onError: (reason) => {\n reject(reason);\n } \n });\n });\n }\n\n getHighlanderPM() {\n return this.highlanderPMPromise;\n }\n}\n\nexport { SOURCE_SYSTEM, SOURCE_SYSTEM_CLIENT, SOURCE_SYSTEM_SERVER, ACTION_CALL_BEAN };\n","import {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class BeanManager {\n\n constructor(classRepository) {\n checkMethod('BeanManager(classRepository)');\n checkParam(classRepository, 'classRepository');\n\n this.classRepository = classRepository;\n this.addedHandlers = new Map();\n this.removedHandlers = new Map();\n this.updatedHandlers = new Map();\n this.arrayUpdatedHandlers = new Map();\n this.allAddedHandlers = [];\n this.allRemovedHandlers = [];\n this.allUpdatedHandlers = [];\n this.allArrayUpdatedHandlers = [];\n\n this._handleBeanAdded = this._handleBeanAdded.bind(this);\n this._handleBeanRemoved = this._handleBeanRemoved.bind(this);\n this._handleBeanUpdate = this._handleBeanUpdate.bind(this);\n this._handleArrayUpdate = this._handleArrayUpdate.bind(this);\n\n this.classRepository.onBeanAdded(this._handleBeanAdded);\n this.classRepository.onBeanRemoved(this._handleBeanRemoved);\n this.classRepository.onBeanUpdate(this._handleBeanUpdate);\n this.classRepository.onArrayUpdate(this._handleArrayUpdate);\n }\n\n _handleBeanAdded(type, bean) {\n const handlerList = this.addedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanAdded-handler for type', type, e);\n }\n });\n }\n this.allAddedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanAdded-handler', e);\n }\n });\n }\n\n _handleBeanRemoved(type, bean) {\n const handlerList = this.removedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler for type', type, e);\n }\n });\n }\n this.allRemovedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanRemoved-handler', e);\n }\n });\n }\n\n _handleArrayUpdate(type, bean, propertyName, index, count, newElements) {\n const handlerList = this.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler for type', type, e);\n }\n });\n }\n this.allArrayUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onArrayUpdate-handler', e);\n }\n });\n }\n\n _handleBeanUpdate(type, bean, propertyName, newValue, oldValue) {\n const handlerList = this.updatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler for type', type, e);\n }\n });\n }\n this.allUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanUpdate-handler', e);\n }\n });\n }\n\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('BeanManager.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n return this.classRepository.notifyBeanChange(bean, propertyName, newValue);\n }\n\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('BeanManager.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n this.classRepository.notifyArrayChange(bean, propertyName, index, count, removedElements);\n }\n\n\n isManaged(bean) {\n checkMethod('BeanManager.isManaged(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.isManaged() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n create(type) {\n checkMethod('BeanManager.create(type)');\n checkParam(type, 'type');\n\n // TODO: Implement dolphin.create() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n add(type, bean) {\n checkMethod('BeanManager.add(type, bean)');\n checkParam(type, 'type');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.add() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n addAll(type, collection) {\n checkMethod('BeanManager.addAll(type, collection)');\n checkParam(type, 'type');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.addAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n remove(bean) {\n checkMethod('BeanManager.remove(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.remove() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeAll(collection) {\n checkMethod('BeanManager.removeAll(collection)');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.removeAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeIf(predicate) {\n checkMethod('BeanManager.removeIf(predicate)');\n checkParam(predicate, 'predicate');\n\n // TODO: Implement dolphin.removeIf() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n onAdded(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onAdded(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allAddedHandlers = this.allAddedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allAddedHandlers = self.allAddedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onAdded(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.addedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.addedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.addedHandlers.get(type);\n if (exists(handlerList)) { \n self.addedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onRemoved(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onRemoved(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allRemovedHandlers = this.allRemovedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allRemovedHandlers = self.allRemovedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onRemoved(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.removedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.removedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.removedHandlers.get(type);\n if (exists(handlerList)) {\n self.removedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onBeanUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onBeanUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allUpdatedHandlers = this.allUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allUpdatedHandlers = self.allUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onBeanUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.updatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.updatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.updatedHandlers.get(type);\n if (exists(handlerList)) {\n self.updatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n onArrayUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onArrayUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allArrayUpdatedHandlers = this.allArrayUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allArrayUpdatedHandlers = self.allArrayUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onArrayUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.arrayUpdatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.arrayUpdatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n self.arrayUpdatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n}\n\nBeanManager.LOGGER = LoggerFactory.getLogger('BeanManager');\n","import * as consts from './constants';\nimport {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass ClassRepository {\n\n constructor(dolphin) {\n checkMethod('ClassRepository(dolphin)');\n checkParam(dolphin, 'dolphin');\n\n this.dolphin = dolphin;\n this.classes = new Map();\n this.beanFromDolphin = new Map();\n this.beanToDolphin = new Map();\n this.classInfos = new Map();\n this.beanAddedHandlers = [];\n this.beanRemovedHandlers = [];\n this.propertyUpdateHandlers = [];\n this.arrayUpdateHandlers = [];\n this.blocked = null;\n }\n\n sendListSplice(classRepository, modelId, propertyName, from, to, newElements) {\n let dolphin = classRepository.dolphin;\n let model = dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = classRepository.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n if (exists(type)) {\n\n let attributes = [\n dolphin.attribute('@@@ SOURCE_SYSTEM @@@', null, 'client'),\n dolphin.attribute('source', null, modelId),\n dolphin.attribute('attribute', null, propertyName),\n dolphin.attribute('from', null, from),\n dolphin.attribute('to', null, to),\n dolphin.attribute('count', null, newElements.length)\n ];\n newElements.forEach(function (element, index) {\n attributes.push(dolphin.attribute(index.toString(), null, ClassRepository.toDolphin(classRepository, type, element)));\n });\n dolphin.presentationModel.apply(dolphin, [null, '@DP:LS@'].concat(attributes));\n }\n }\n }\n\n validateList(classRepository, type, bean, propertyName) {\n let list = bean[propertyName];\n if (!exists(list)) {\n classRepository.propertyUpdateHandlers.forEach(function (handler) {\n try {\n handler(type, bean, propertyName, [], undefined);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n }\n\n block(bean, propertyName) {\n if (exists(this.blocked)) {\n throw new Error('Trying to create a block while another block exists');\n }\n this.blocked = {\n bean: bean,\n propertyName: propertyName\n };\n }\n\n isBlocked(bean, propertyName) {\n return exists(this.blocked) && this.blocked.bean === bean && this.blocked.propertyName === propertyName;\n }\n\n unblock() {\n this.blocked = null;\n }\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('ClassRepository.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n let modelId = this.beanToDolphin.get(bean);\n if (exists(modelId)) {\n let model = this.dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = this.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n let attribute = model.findAttributeByPropertyName(propertyName);\n if (exists(type) && exists(attribute)) {\n let oldValue = attribute.getValue();\n attribute.setValue(ClassRepository.toDolphin(this, type, newValue));\n return ClassRepository.fromDolphin(this, type, oldValue);\n }\n }\n }\n }\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('ClassRepository.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n if (this.isBlocked(bean, propertyName)) {\n return;\n }\n let modelId = this.beanToDolphin.get(bean);\n let array = bean[propertyName];\n if (exists(modelId) && exists(array)) {\n let removedElementsCount = Array.isArray(removedElements) ? removedElements.length : 0;\n this.sendListSplice(this, modelId, propertyName, index, index + removedElementsCount, array.slice(index, index + count));\n }\n }\n\n onBeanAdded(handler) {\n checkMethod('ClassRepository.onBeanAdded(handler)');\n checkParam(handler, 'handler');\n this.beanAddedHandlers.push(handler);\n }\n\n onBeanRemoved(handler) {\n checkMethod('ClassRepository.onBeanRemoved(handler)');\n checkParam(handler, 'handler');\n this.beanRemovedHandlers.push(handler);\n }\n\n onBeanUpdate(handler) {\n checkMethod('ClassRepository.onBeanUpdate(handler)');\n checkParam(handler, 'handler');\n this.propertyUpdateHandlers.push(handler);\n }\n\n onArrayUpdate(handler) {\n checkMethod('ClassRepository.onArrayUpdate(handler)');\n checkParam(handler, 'handler');\n this.arrayUpdateHandlers.push(handler);\n }\n\n registerClass(model) {\n checkMethod('ClassRepository.registerClass(model)');\n checkParam(model, 'model');\n\n if (this.classes.has(model.id)) {\n return;\n }\n\n let classInfo = {};\n model.attributes.filter(function (attribute) {\n return attribute.propertyName.search(/^@/) < 0;\n }).forEach(function (attribute) {\n classInfo[attribute.propertyName] = attribute.value;\n });\n this.classes.set(model.id, classInfo);\n }\n\n unregisterClass(model) {\n checkMethod('ClassRepository.unregisterClass(model)');\n checkParam(model, 'model');\n this.classes['delete'](model.id);\n }\n\n load(model) {\n checkMethod('ClassRepository.load(model)');\n checkParam(model, 'model');\n\n let self = this;\n let classInfo = this.classes.get(model.presentationModelType);\n let bean = {};\n model.attributes.filter(function (attribute) {\n return (attribute.propertyName.search(/^@/) < 0);\n }).forEach(function (attribute) {\n bean[attribute.propertyName] = null;\n attribute.onValueChange(function (event) {\n if (event.oldValue !== event.newValue) {\n let oldValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.oldValue);\n let newValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.newValue);\n self.propertyUpdateHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean, attribute.propertyName, newValue, oldValue);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n });\n });\n this.beanFromDolphin.set(model.id, bean);\n this.beanToDolphin.set(bean, model.id);\n this.classInfos.set(model.id, classInfo);\n this.beanAddedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanAdded-handler', e);\n }\n });\n return bean;\n }\n\n unload(model) {\n checkMethod('ClassRepository.unload(model)');\n checkParam(model, 'model');\n\n let bean = this.beanFromDolphin.get(model.id);\n this.beanFromDolphin['delete'](model.id);\n this.beanToDolphin['delete'](bean);\n this.classInfos['delete'](model.id);\n if (exists(bean)) {\n this.beanRemovedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler', e);\n }\n });\n }\n return bean;\n }\n\n spliceListEntry(model) {\n checkMethod('ClassRepository.spliceListEntry(model)');\n checkParam(model, 'model');\n\n let source = model.findAttributeByPropertyName('source');\n let attribute = model.findAttributeByPropertyName('attribute');\n let from = model.findAttributeByPropertyName('from');\n let to = model.findAttributeByPropertyName('to');\n let count = model.findAttributeByPropertyName('count');\n\n if (exists(source) && exists(attribute) && exists(from) && exists(to) && exists(count)) {\n let classInfo = this.classInfos.get(source.value);\n let bean = this.beanFromDolphin.get(source.value);\n if (exists(bean) && exists(classInfo)) {\n let type = model.presentationModelType;\n //var entry = fromDolphin(this, classInfo[attribute.value], element.value);\n this.validateList(this, type, bean, attribute.value);\n let newElements = [],\n element = null;\n for (let i = 0; i < count.value; i++) {\n element = model.findAttributeByPropertyName(i.toString());\n if (!exists(element)) {\n throw new Error(\"Invalid list modification update received\");\n }\n newElements.push(ClassRepository.fromDolphin(this, classInfo[attribute.value], element.value));\n }\n try {\n this.block(bean, attribute.value);\n this.arrayUpdateHandlers.forEach((handler) => {\n try {\n handler(type, bean, attribute.value, from.value, to.value - from.value, newElements);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler', e);\n }\n });\n } finally {\n this.unblock();\n }\n } else {\n throw new Error(\"Invalid list modification update received. Source bean unknown.\");\n }\n } else {\n throw new Error(\"Invalid list modification update received\");\n }\n }\n\n mapParamToDolphin(param) {\n if (!exists(param)) {\n return param;\n }\n let type = typeof param;\n if (type === 'object') {\n if (param instanceof Date) {\n return param.toISOString();\n } else {\n let value = this.beanToDolphin.get(param);\n if (exists(value)) {\n return value;\n }\n throw new TypeError(\"Only managed remoting beans can be used\");\n }\n }\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return param;\n }\n throw new TypeError(\"Only managed remoting beans and primitive types can be used\");\n }\n\n mapDolphinToBean(value) {\n return ClassRepository.fromDolphin(this, consts.REMOTING_BEAN, value);\n }\n}\n\nClassRepository.fixType = function(type, value) {\n switch (type) {\n case consts.BYTE:\n case consts.SHORT:\n case consts.INT:\n case consts.LONG:\n return parseInt(value);\n case consts.FLOAT:\n case consts.DOUBLE:\n return parseFloat(value);\n case consts.BOOLEAN:\n return 'true' === String(value).toLowerCase();\n case consts.STRING:\n case consts.ENUM:\n return String(value);\n default:\n return value;\n }\n};\n\nClassRepository.fromDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanFromDolphin.get(String(value));\n case consts.DATE:\n return new Date(String(value));\n case consts.CALENDAR:\n return new Date(String(value));\n case consts.LOCAL_DATE_FIELD_TYPE:\n return new Date(String(value));\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.toDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanToDolphin.get(value);\n case consts.DATE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.CALENDAR:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.LOGGER = LoggerFactory.getLogger('ClassRepository');\n\nexport default ClassRepository;\n","import {checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class ControllerProxy {\n\n constructor(controllerId, model, manager){\n checkMethod('ControllerProxy(controllerId, model, manager)');\n checkParam(controllerId, 'controllerId');\n checkParam(model, 'model');\n checkParam(manager, 'manager');\n\n this.controllerId = controllerId;\n this.model = model;\n this.manager = manager;\n this.destroyed = false;\n this.onDestroyedHandlers = new Set();\n }\n\n getModel() {\n return this.model;\n }\n\n getId() {\n return this.controllerId;\n }\n\n invoke(name, params){\n checkMethod('ControllerProxy.invoke(name, params)');\n checkParam(name, 'name');\n\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n return this.manager.invokeAction(this.controllerId, name, params);\n }\n\n createController(name) {\n return this.manager._createController(name, this.getId());\n }\n\n destroy(){\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n this.destroyed = true;\n this.onDestroyedHandlers.forEach((handler) => {\n try {\n handler(this);\n } catch(e) {\n ControllerProxy.LOGGER.error('An exception occurred while calling an onDestroyed-handler', e);\n }\n }, this);\n return this.manager.destroyController(this);\n }\n\n onDestroyed(handler){\n checkMethod('ControllerProxy.onDestroyed(handler)');\n checkParam(handler, 'handler');\n\n let self = this;\n this.onDestroyedHandlers.add(handler);\n return {\n unsubscribe: () => {\n self.onDestroyedHandlers.delete(handler);\n }\n };\n }\n}\n\nControllerProxy.LOGGER = LoggerFactory.getLogger('ControllerProxy');\n","import {exists, checkMethod, checkParam} from '../utils';\n\nimport ControllerProxy from './controllerProxy.js';\n\nimport CommandFactory from './commands/commandFactory.js';\n\n\nimport { SOURCE_SYSTEM } from './connector.js';\nimport { SOURCE_SYSTEM_CLIENT } from './connector.js';\nimport { ACTION_CALL_BEAN } from './connector.js';\n\nconst CONTROLLER_ID = 'controllerId';\nconst MODEL = 'model';\nconst ERROR_CODE = 'errorCode';\n\nexport default class ControllerManager {\n\n constructor(dolphin, classRepository, connector) {\n checkMethod('ControllerManager(dolphin, classRepository, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.classRepository = classRepository;\n this.connector = connector;\n this.controllers = new Set();\n }\n\n createController(name) {\n return this._createController(name, null);\n }\n\n _createController(name, parentControllerId) {\n checkMethod('ControllerManager.createController(name)');\n checkParam(name, 'name');\n\n let self = this;\n\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n const MSG_ERROR_CREATING_CONTROLLER = 'Error creating controller: ';\n\n self.connector.invoke(CommandFactory.createCreateControllerCommand(name, parentControllerId)).then(() => {\n let controllerId;\n\n self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).getValue(),\n 'Could not get an controllerID from highlanderPM.'\n ).then((ctrlId) => {\n controllerId = ctrlId;\n return self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(MODEL).getValue(),\n 'Could not get an modelID from highlanderPM.'\n );\n })\n .then((modelId) => {\n return self.getValueWithRetry(\n () => self.classRepository.mapDolphinToBean(modelId),\n 'Could not get an model from classRepository for ID: ' + modelId\n );\n })\n .then((model) => {\n try {\n const controller = new ControllerProxy(controllerId, model, self);\n self.controllers.add(controller);\n resolve(controller);\n } catch (e) {\n reject(MSG_ERROR_CREATING_CONTROLLER + e);\n }\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n });\n });\n }\n\n\n getValueWithRetry(getValueCall, errorMessage) {\n return new Promise((resolve, reject) => {\n const RETRIES = 1000;\n const RETRY_TIME = 5;\n let i = 0;\n const intervalID = setInterval(() => {\n let value = getValueCall();\n \n if (!(typeof value !== 'undefined' && value !== null)) {\n i++;\n if (i >= RETRIES) {\n clearInterval(intervalID);\n reject(errorMessage + \" after \" + i + \" retries.\");\n }\n } else {\n clearInterval(intervalID);\n resolve(value);\n }\n }, RETRY_TIME);\n });\n }\n\n invokeAction(controllerId, actionName, params) {\n checkMethod('ControllerManager.invokeAction(controllerId, actionName, params)');\n checkParam(controllerId, 'controllerId');\n checkParam(actionName, 'actionName');\n\n let self = this;\n return new Promise((resolve, reject) => {\n\n let attributes = [\n self.dolphin.attribute(SOURCE_SYSTEM, null, SOURCE_SYSTEM_CLIENT),\n self.dolphin.attribute(ERROR_CODE)\n ];\n\n let pm = self.dolphin.presentationModel.apply(self.dolphin, [null, ACTION_CALL_BEAN].concat(attributes));\n\n let actionParams = [];\n if (exists(params)) {\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n let value = self.classRepository.mapParamToDolphin(params[param]);\n actionParams.push({\n name: param,\n value: value\n });\n }\n }\n }\n\n self.connector.invoke(CommandFactory.createCallActionCommand(controllerId, actionName, actionParams)).then(() => {\n let isError = pm.findAttributeByPropertyName(ERROR_CODE).getValue();\n if (isError) {\n reject(new Error(\"Server side ControllerAction \" + actionName + \" caused an error. Please see server log for details.\"));\n } else {\n resolve();\n }\n self.dolphin.deletePresentationModel(pm);\n }).catch(reject);\n });\n }\n\n destroyController(controller) {\n checkMethod('ControllerManager.destroyController(controller)');\n checkParam(controller, 'controller');\n\n let self = this;\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n self.controllers.delete(controller);\n highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).setValue(controller.controllerId);\n self.connector.invoke(CommandFactory.createDestroyControllerCommand(controller.getId())).then(resolve).catch(reject);\n });\n });\n }\n\n destroy() {\n let controllersCopy = this.controllers;\n let promises = [];\n this.controllers = new Set();\n controllersCopy.forEach((controller) => {\n try {\n promises.push(controller.destroy());\n } catch (e) {\n // ignore\n }\n });\n return Promise.all(promises);\n }\n}\n","import Emitter from 'emitter-component';\nimport CommandFactory from './commands/commandFactory';\nimport {exists, checkMethod, checkParam} from '../utils';\n\nexport default class ClientContext{\n\n constructor(dolphin, beanManager, controllerManager, connector){\n checkMethod('ClientContext(dolphin, beanManager, controllerManager, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(beanManager, 'beanManager');\n checkParam(controllerManager, 'controllerManager');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.beanManager = beanManager;\n this._controllerManager = controllerManager;\n this._connector = connector;\n this.connectionPromise = null;\n this.isConnected = false;\n }\n\n connect(){\n let self = this;\n this.connectionPromise = new Promise((resolve, reject) => {\n self._connector.connect();\n self._connector.invoke(CommandFactory.createCreateContextCommand()).then(() => {\n self.isConnected = true;\n resolve();\n }).catch(reject);\n });\n return this.connectionPromise;\n }\n\n onConnect(){\n if(exists(this.connectionPromise)){\n if(!this.isConnected){\n return this.connectionPromise;\n }else{\n return new Promise((resolve) => {\n resolve();\n });\n }\n }else{\n return this.connect();\n }\n }\n\n createController(name){\n checkMethod('ClientContext.createController(name)');\n checkParam(name, 'name');\n\n return this._controllerManager.createController(name);\n }\n\n disconnect(){\n let self = this;\n this.dolphin.stopPushListening();\n return new Promise((resolve) => {\n self._controllerManager.destroy().then(() => {\n self._connector.invoke(CommandFactory.createDestroyContextCommand());\n self.dolphin = null;\n self.beanManager = null;\n self._controllerManager = null;\n self._connector = null;\n resolve();\n });\n });\n }\n}\n\nEmitter(ClientContext.prototype);","export class DolphinRemotingError extends Error {\n constructor(message = 'Remoting Error', detail) {\n super(message);\n this.detail = detail || undefined;\n }\n}\n\nexport class DolphinSessionError extends Error {\n constructor(message = 'Session Error') {\n super(message);\n }\n}\n\nexport class HttpResponseError extends Error {\n constructor(message = 'Http Response Error') {\n super(message);\n }\n}\n\nexport class HttpNetworkError extends Error {\n constructor(message = 'Http Network Error') {\n super(message);\n }\n}","import { LoggerFactory } from '../logging';\n\nexport default class RemotingErrorHandler {\n\n onError(error) {\n RemotingErrorHandler.LOGGER.error(error);\n }\n\n}\n\nRemotingErrorHandler.LOGGER = LoggerFactory.getLogger('RemotingErrorHandler');","import Emitter from 'emitter-component';\n\n\nimport { exists } from '../utils';\nimport { DolphinRemotingError, DolphinSessionError } from './errors';\nimport Codec from './commands/codec';\nimport RemotingErrorHandler from './remotingErrorHandler';\nimport { LoggerFactory, LogLevel } from '../logging';\nimport {VALUE_CHANGED_COMMAND_ID, START_LONG_POLL_COMMAND_ID} from './commands/commandConstants';\n\nconst DOLPHIN_SESSION_TIMEOUT = 408;\n\nexport default class PlatformHttpTransmitter {\n\n constructor(url, config, client) {\n this.url = url;\n this.config = config;\n this.client = client;\n this.headersInfo = exists(config) ? config.headersInfo : null;\n this.failed_attempt = 0;\n\n const connectionConfig = this._connectionConfig();\n this.maxRetry = exists(connectionConfig) && exists(connectionConfig.maxRetry)?connectionConfig.maxRetry: 3;\n this.timeout = exists(connectionConfig) && exists(connectionConfig.timeout)?connectionConfig.timeout: 5000;\n }\n\n _connectionConfig() {\n return exists(this.config) ? this.config.connection : null;\n }\n\n _handleError(reject, error) {\n const connectionConfig = this._connectionConfig();\n let errorHandlers = exists(connectionConfig) && exists(connectionConfig.errorHandlers)?connectionConfig.errorHandlers: [new RemotingErrorHandler()];\n errorHandlers.forEach(function(handler) {\n handler.onError(error);\n });\n reject(error);\n }\n\n _send(commands) {\n const self = this;\n return new Promise((resolve, reject) => {\n if (this.client) {\n const encodedCommands = Codec.encode(commands);\n\n if (PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.DEBUG) && !PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.TRACE)) {\n for (let i = 0; i < commands.length; i++) {\n let command = commands[i];\n if (command.id === VALUE_CHANGED_COMMAND_ID) {\n PlatformHttpTransmitter.LOGGER.debug('send', command, encodedCommands);\n }\n }\n }\n\n const useWorker = commands.length === 1 && commands[0].id === START_LONG_POLL_COMMAND_ID;\n const httpClient = this.client.getService('HttpClient');\n if (httpClient && self.failed_attempt <= self.maxRetry) {\n httpClient.post(self.url)\n .withHeadersInfo(this.headersInfo)\n .withContent(encodedCommands)\n .readString()\n .execute(useWorker)\n .then((response) => {\n resolve(response.content);\n })\n .catch((exception) => {\n const status = exception.getStatus();\n self.failed_attempt += 1;\n if (status === DOLPHIN_SESSION_TIMEOUT) {\n self._handleError(reject, new DolphinSessionError('PlatformHttpTransmitter: Session Timeout'));\n } else {\n self._handleError(reject, exception);\n }\n });\n } else {\n //TODO handle failure\n PlatformHttpTransmitter.LOGGER.error('Cannot reach the sever');\n }\n } else {\n PlatformHttpTransmitter.LOGGER.error('No Rico client found!');\n }\n });\n }\n\n transmit(commands, onDone, onError) {\n this._send(commands)\n .then(responseText => {\n if (responseText.trim().length > 0) {\n try {\n const responseCommands = Codec.decode(responseText);\n onDone(responseCommands);\n } catch (err) {\n const errorMsg = 'PlatformHttpTransmitter: Parse error: (Incorrect response = ' + responseText + ')';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n } else {\n const errorMsg = 'PlatformHttpTransmitter: Empty response';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n })\n .catch(error => {\n this.emit('error', error);\n onError(error);\n });\n }\n\n signal(command) {\n this._send([command])\n .catch(error => this.emit('error', error));\n }\n}\n\nPlatformHttpTransmitter.LOGGER = LoggerFactory.getLogger('PlatformHttpTransmitter');\n\nEmitter(PlatformHttpTransmitter.prototype);\n","import { dolphinBuilder } from './dolphinBuilder';\nimport { checkMethod, checkParam } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport Connector from './connector';\nimport BeanManager from './beanManager';\nimport ClassRepository from './classRepository';\nimport ControllerManager from './controllerManager';\nimport ClientContext from './clientContext';\nimport PlatformHttpTransmitter from './platformHttpTransmitter';\n\nclass ClientContextFactory {\n\n constructor(client) {\n this.client = client;\n if (!client && ClientContextFactory.legecyClientSupport) {\n ClientContextFactory.LOGGER.warn('Legecy support used.');\n this.client = ClientContextFactory.legecyClientSupport;\n }\n }\n\n create(url, config){\n checkMethod('connect(url, config)');\n checkParam(url, 'url');\n ClientContextFactory.LOGGER.debug('Creating client context', url, config);\n\n const transmitter = new PlatformHttpTransmitter(url, config, this.client);\n transmitter.on('error', function (error) {\n clientContext.emit('error', error);\n });\n\n const dolphin = dolphinBuilder\n .withTransmitter(transmitter)\n .withSlackMS(4)\n .withMaxBatchSize(Number.MAX_SAFE_INTEGER)\n .build();\n\n\n const classRepository = new ClassRepository(dolphin);\n const beanManager = new BeanManager(classRepository);\n const connector = new Connector(url, dolphin, classRepository, config);\n const controllerManager = new ControllerManager(dolphin, classRepository, connector);\n\n const clientContext = new ClientContext(dolphin, beanManager, controllerManager, connector);\n\n ClientContextFactory.LOGGER.debug('clientContext created with', clientContext);\n\n return clientContext;\n }\n}\n\nClientContextFactory.LOGGER = LoggerFactory.getLogger('ClientContextFactory');\nClientContextFactory.legecyClientSupport = false;\n\nlet createClientContext = (client) => new ClientContextFactory(client).create;\n\nexport { createClientContext, ClientContextFactory };","import { ClientContextFactory } from './clientContextFactory'\nimport { ServiceProvider } from '../platform/serviceProvider'\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const clientContextFactoryProvider = new ServiceProvider(ClientContextFactory, 'ClientContextFactory', client);\n\n client.registerServiceProvider(clientContextFactoryProvider);\n }\n}\n\nexport { register };","import { checkMethod, checkParam, exists } from '../utils';\nimport { HTTP, RESPONSE_TYPE } from '../platform/constants'\n\nclass KeycloakConnection {\n\n constructor() {\n }\n\n createDirectConnection(authEndpoint, realmName) {\n checkMethod('createDirectConnection');\n checkParam(authEndpoint, 'authEndpoint');\n checkParam(realmName, 'realmName');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint + '/auth/realms/' + realmName + '/protocol/openid-connect/token', true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.APPLICATION_X_WWW_FORM_URLENCODED);\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n createServerProxyConnection(authEndpoint, realmName) {\n checkMethod('createServerProxyConnection');\n checkParam(authEndpoint, 'authEndpoint');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint, true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.TEXT_PLAIN);\n if (exists(realmName)) {\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, realmName);\n }\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n}\n\nexport { KeycloakConnection }","import { HTTP } from '../platform/constants'\nimport { exists } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport { KeycloakConnection } from './keycloakConnection';\n\nclass KeycloakFunctions {\n\n constructor() {\n this.connection = new KeycloakConnection();\n }\n\n createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password) {\n let connection;\n let content;\n\n const encodedUser = encodeURIComponent(user);\n const encodedPassword = encodeURIComponent(password);\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint,realmName);\n content = 'client_id=' + encodedAppName + '&username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n }\n\n return { connection, content };\n }\n\n createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken) {\n let connection;\n let content;\n\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken + '&client_id=' + encodedAppName;\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken;\n }\n\n return { connection, content };\n }\n\n receiveToken(httpRequest, body) {\n return new Promise((resolve, reject) => {\n httpRequest.ontimeout = function (error) {\n reject(error);\n }\n\n httpRequest.onerror = function (error) {\n reject(error);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status === HTTP.STATUS.OK) {\n resolve(this.response);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status !== HTTP.STATUS.OK) {\n reject(this.status);\n }\n }\n \n KeycloakFunctions.LOGGER.trace('Receiving token');\n httpRequest.send(body);\n });\n }\n\n refreshToken(directConnection, authEndpoint, realmName, appName, refreshToken) {\n const { connection, content } = this.createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken);\n return this.receiveToken(connection, content);\n }\n \n}\n\nKeycloakFunctions.LOGGER = LoggerFactory.getLogger('KeycloakFunctions');\n\nexport { KeycloakFunctions }","import { checkMethod, checkParam, exists } from '../utils'\nimport { LoggerFactory } from '../logging'\nimport { HTTP } from '../platform/constants'\n\nclass SecurityHttpClientInterceptor {\n\n constructor() {\n this.token = null;\n this.appName = null;\n this.realm = null;\n }\n\n setToken(token) {\n this.token = token;\n }\n\n setAppName(appName) {\n this.appName = appName;\n }\n\n setRealm(realm) {\n this.realm = realm;\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n\n if (exists(this.token)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using token', this.token);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.AUTHORIZATION, 'Bearer ' + this.token);\n }\n\n if (exists(this.appName)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using appName', this.appName);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_APPLICATION, this.appName);\n }\n\n if (exists(this.realm)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using realm', this.realm);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, this.realm);\n }\n\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_BEARER_ONLY, 'true');\n \n }\n}\n\nSecurityHttpClientInterceptor.LOGGER = LoggerFactory.getLogger('SecurityHttpClientInterceptor');\n\nexport { SecurityHttpClientInterceptor };","import { LoggerFactory } from '../logging';\nimport { exists, checkMethod, checkParam } from '../utils';\nimport { KeycloakFunctions } from './keycloakFunctions';\nimport { SecurityHttpClientInterceptor } from './securityHttpClientInterceptor';\nimport { SECURITY } from '../platform/constants'\n\nclass KeycloakSecurity {\n\n constructor() {\n this.functions = new KeycloakFunctions();\n this.interceptor = new SecurityHttpClientInterceptor();\n this.intervall = null;\n\n this.configuration = {\n directConnection: false,\n authEndpoint: SECURITY.AUTH_ENDPOINT,\n appName: null,\n realmName: null\n }\n \n }\n\n login(user, password, configuration) {\n if (this.isAuthorized()) {\n throw new Error('Already logged in!');\n }\n\n if (configuration) {\n this.configuration.directConnection = configuration.directConnection || this.configuration.directConnection;\n this.configuration.authEndpoint = configuration.authEndpoint || this.configuration.authEndpoint;\n this.configuration.appName = configuration.appName || this.configuration.appName;\n this.configuration.realmName = configuration.realmName || this.configuration.realmName;\n }\n\n const { directConnection, authEndpoint, appName, realmName } = this.configuration;\n\n const { connection, content } = this.functions.createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password);\n const self = this;\n return new Promise((resolve, reject) => {\n KeycloakSecurity.LOGGER.debug('Receiving access token');\n this.functions.receiveToken(connection, content)\n .then((result) => {\n if (result && result.access_token) {\n self.token = result;\n this.interceptor.setToken(result.access_token);\n this.interceptor.setRealm(realmName);\n this.interceptor.setAppName(appName);\n const expires = result.expires_in || KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN;\n const sleepTime = Math.max(KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN, expires - KeycloakSecurity.TOKEN_EXPIRES_DELTA);\n self.intervall = setInterval(() => {\n KeycloakSecurity.LOGGER.debug('Refreshing access token');\n self.functions.refreshToken(directConnection, authEndpoint, realmName, appName, result.refresh_token).then((result) => {\n self.token = result;\n self.interceptor.setToken(result.access_token);\n });\n }, sleepTime);\n resolve(result.access_token);\n } else {\n reject('No access token found');\n }\n })\n .catch((error) => reject(error));\n });\n }\n\n logout() {\n const self = this;\n KeycloakSecurity.LOGGER.debug('Logout');\n return new Promise((resolve) => {\n delete self.token;\n self.interceptor.setToken(null);\n if (exists(this.intervall)) {\n clearInterval(this.intervall);\n this.intervall = null;\n }\n resolve();\n });\n }\n\n isAuthorized() {\n return exists(this.token);\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this.interceptor);\n }\n}\n\nKeycloakSecurity.TOKEN_EXPIRES_DELTA = 10000;\nKeycloakSecurity.MIN_TOKEN_EXPIRES_RUN = 30000;\n\nKeycloakSecurity.LOGGER = LoggerFactory.getLogger('KeycloakSecurity');\n\nexport { KeycloakSecurity };\n","\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\nimport { KeycloakSecurity } from './keycloakSecurity';\n\nfunction register(client) {\n if (exists(client)) {\n const securityProvider = new ServiceProvider(KeycloakSecurity, 'Security', client);\n client.registerServiceProvider(securityProvider);\n }\n}\n\nexport { register }","import { LoggerFactory, LogLevel } from './logging';\nimport { Client } from './platform/client';\nimport { ServiceProvider } from './platform/serviceProvider';\nimport { HTTP } from './platform/constants';\nimport { register as registerHttp } from './http';\nimport { register as registerClientScope } from './platform/clientScope';\nimport { register as registerRemotingScope } from './remoting'\nimport { register as registerSecurity } from './security'\n\nregisterHttp(Client);\nregisterClientScope(Client);\nregisterRemotingScope(Client);\nregisterSecurity(Client);\nClient.init();\n\nconst getService = Client.getService;\nconst hasService = Client.hasService;\nconst registerServiceProvider = Client.registerServiceProvider;\n\n/* eslint-disable */\nClient.LOGGER.info('Rico Version:' , RICO_VERSION);\n/* eslint-enable */\n\nexport { LoggerFactory, LogLevel, getService, hasService, registerServiceProvider, HTTP }\n\nif (window.Worker && window.Blob && window.URL && URL.createObjectURL) {\n Client.LOGGER.debug('Creating Worker');\n class HttpWorker {\n constructor() {\n /* eslint-disable */\n this.blob = new Blob([RICO_WORKER], {type: \"application/javascript\"});\n /* eslint-enable */\n }\n\n createWorker() {\n return new Worker(URL.createObjectURL(this.blob));\n }\n }\n\n const httpWorkerProvider = new ServiceProvider(HttpWorker, 'HttpWorker');\n Client.registerServiceProvider(httpWorkerProvider);\n}\n\n/* \n * Provide dependencies as global dolphin object for backward compatibility.\n * The code below this comment is deprecated and should be removed in a feature version.\n */\nimport { createClientContext, ClientContextFactory } from './remoting/clientContextFactory'\n\nconst LOGGER = LoggerFactory.getLogger('Deprecated:');\nlet showWarning = true;\nfunction warn() {\n if (showWarning) {\n LOGGER.warn('Please do not use \"dolphin\" anymore, it may be removed in the next version! Use the new API instead!');\n showWarning = false;\n }\n}\n\nif (window) {\n window.dolphin = { // TODO remove in next major release\n get ClientContextFactory() {\n warn();\n ClientContextFactory.legecyClientSupport = Client;\n return ClientContextFactory;\n },\n get createClientContext() {\n warn();\n return createClientContext(Client);\n },\n get LoggerFactory() {\n warn();\n return LoggerFactory;\n },\n get LogLevel() {\n warn();\n return LogLevel;\n }\n };\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ricojs/webpack/universalModuleDefinition","webpack://ricojs/webpack/bootstrap","webpack://ricojs/./node_modules/emitter-component/index.js","webpack://ricojs/./src/logging/constants.js","webpack://ricojs/./src/utils/index.js","webpack://ricojs/./src/logging/logger.js","webpack://ricojs/./src/logging/loggerfactory.js","webpack://ricojs/./src/logging/index.js","webpack://ricojs/./src/platform/client.js","webpack://ricojs/./src/platform/serviceProvider.js","webpack://ricojs/./src/platform/constants.js","webpack://ricojs/./src/http/httpResponse.js","webpack://ricojs/./src/http/httpException.js","webpack://ricojs/./src/http/executor.js","webpack://ricojs/./src/http/reponseBuilder.js","webpack://ricojs/./src/http/requestBuilder.js","webpack://ricojs/./src/http/httpClient.js","webpack://ricojs/./src/http/httpClientInterceptor.js","webpack://ricojs/./src/http/index.js","webpack://ricojs/./src/platform/clientScope.js","webpack://ricojs/./src/remoting/commands/commandConstants.js","webpack://ricojs/./src/remoting/commandBatcher.js","webpack://ricojs/./src/remoting/constants.js","webpack://ricojs/./src/remoting/commands/impl/valueChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/attributeMetadataChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/callActionCommand.js","webpack://ricojs/./src/remoting/commands/impl/changeAttributeMetadataCommand.js","webpack://ricojs/./src/remoting/commands/impl/createContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/createControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/createPresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/deletePresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/interruptLongPollCommand.js","webpack://ricojs/./src/remoting/commands/impl/presentationModelDeletedCommand.js","webpack://ricojs/./src/remoting/commands/impl/startLongPollCommand.js","webpack://ricojs/./src/remoting/commands/codecError.js","webpack://ricojs/./src/remoting/commands/codec.js","webpack://ricojs/./src/remoting/eventBus.js","webpack://ricojs/./src/remoting/clientPresentationModel.js","webpack://ricojs/./src/remoting/clientConnector.js","webpack://ricojs/./src/remoting/clientAttribute.js","webpack://ricojs/./src/remoting/clientDolphin.js","webpack://ricojs/./src/remoting/attribute.js","webpack://ricojs/./src/remoting/commands/commandFactory.js","webpack://ricojs/./src/remoting/clientModelStore.js","webpack://ricojs/./src/remoting/noTransmitter.js","webpack://ricojs/./src/remoting/dolphinBuilder.js","webpack://ricojs/./src/remoting/connector.js","webpack://ricojs/./src/remoting/beanManager.js","webpack://ricojs/./src/remoting/classRepository.js","webpack://ricojs/./src/remoting/controllerProxy.js","webpack://ricojs/./src/remoting/controllerManager.js","webpack://ricojs/./src/remoting/clientContext.js","webpack://ricojs/./src/remoting/errors.js","webpack://ricojs/./src/remoting/remotingErrorHandler.js","webpack://ricojs/./src/remoting/platformHttpTransmitter.js","webpack://ricojs/./src/remoting/clientContextFactory.js","webpack://ricojs/./src/remoting/index.js","webpack://ricojs/./src/security/keycloakConnection.js","webpack://ricojs/./src/security/keycloakFunctions.js","webpack://ricojs/./src/security/securityHttpClientInterceptor.js","webpack://ricojs/./src/security/keycloakSecurity.js","webpack://ricojs/./src/security/index.js","webpack://ricojs/./src/index.js"],"names":["LogLevel","NONE","name","text","level","ALL","TRACE","DEBUG","INFO","WARN","ERROR","_checkMethodName","exists","object","checkMethod","checkParam","param","parameterName","Error","parseUrl","url","pattern","matches","match","scheme","length","substring","path","query","hashes","split","reduce","params","hash","key","val","Object","assign","fragment","hostname","port","window","location","protocol","indexOf","parseInt","user","password","LOCALS","pad","size","result","internalLog","args","Array","from","arguments","func","shift","context","logLevel","date","Date","dateString","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getCookie","document","cookie","value","parts","pop","Logger","rootLogger","cookieLogLevel","console","isLogLevel","log","warn","error","getLogLevel","levelName","ROOT_LOGGER","loggers","Map","LoggerFactory","existingLogger","get","logger","set","Client","LOGGER","getLogger","services","serviceProviders","configuration","getService","service","provider","hasService","getAllServiceTypes","forEach","serviceProvider","push","registerServiceProvider","getName","current","debug","init","trace","initServiceProvider","ServiceProvider","serviceClass","client","serviceInstance","RESPONSE_TYPE","ARRAY_BUFFER","TEXT","JSON","HTTP","METHOD","GET","POST","PUT","DELETE","STATUS","ACCEPTED","BAD_GATEWAY","BAD_REQUEST","CONFLICT","CONTINUE","CREATED","EXPECTATION_FAILED","FAILED_DEPENDENCY","FORBIDDEN","GATEWAY_TIMEOUT","GONE","HTTP_VERSION_NOT_SUPPORTED","IM_A_TEAPOT","INSUFFICIENT_SPACE_ON_RESOURCE","INSUFFICIENT_STORAGE","INTERNAL_SERVER_ERROR","LENGTH_REQUIRED","LOCKED","METHOD_FAILURE","METHOD_NOT_ALLOWED","MOVED_PERMANENTLY","MOVED_TEMPORARILY","MULTI_STATUS","MULTIPLE_CHOICES","NETWORK_AUTHENTICATION_REQUIRED","NO_CONTENT","NON_AUTHORITATIVE_INFORMATION","NOT_ACCEPTABLE","NOT_FOUND","NOT_IMPLEMENTED","NOT_MODIFIED","OK","PARTIAL_CONTENT","PAYMENT_REQUIRED","PERMANENT_REDIRECT","PRECONDITION_FAILED","PRECONDITION_REQUIRED","PROCESSING","PROXY_AUTHENTICATION_REQUIRED","REQUEST_HEADER_FIELDS_TOO_LARGE","REQUEST_TIMEOUT","REQUEST_TOO_LONG","REQUEST_URI_TOO_LONG","REQUESTED_RANGE_NOT_SATISFIABLE","RESET_CONTENT","SEE_OTHER","SERVICE_UNAVAILABLE","SWITCHING_PROTOCOLS","TEMPORARY_REDIRECT","TOO_MANY_REQUESTS","UNAUTHORIZED","UNPROCESSABLE_ENTITY","UNSUPPORTED_MEDIA_TYPE","USE_PROXY","HEADER_NAME","ACCEPT","ACCEPT_CHARSET","ACCEPT_ENCODING","ACCEPT_LANGUAGE","ACCEPT_DATETIME","AUTHORIZATION","CACHE_CONTROL","CONNECTION","COOKIE","CONTENT_LENGTH","CONTENT_MD5","CONTENT_TYPE","DATE","EXPECT","FORWARDED","FROM","HOST","IF_MATCH","IF_MODIFIED_SINCE","IF_NONE_MATCH","IF_RANGE","MAX_FORWARDS","PRAGMA","PROXY_AUTHORIZATION","REFERER","TE","USER_AGENT","X_CLIENT_ID","X_CLIENT_SESSION_ID","X_PLATFORM_SECURITY_REALM","X_PLATFORM_SECURITY_BEARER_ONLY","X_PLATFORM_SECURITY_APPLICATION","APPLICATION_JSON","APPLICATION_X_WWW_FORM_URLENCODED","TEXT_HTML","TEXT_PLAIN","XMLHTTPREQUEST_READYSTATE","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","SECURITY","AUTH_ENDPOINT","HttpResponse","status","content","headers","headerArray","trim","i","line","header","toLowerCase","join","HttpException","message","timedout","Executor","timeout","worker","httpWorker","useWorker","timeoutToUse","requestInterceptors","getRequestInterceptors","responseInterceptors","getResponseInterceptors","directCall","resolve","reject","self","httpRequest","XMLHttpRequest","async","open","method","withCredentials","requestInterceptor","handleRequest","setRequestHeader","responseType","ontimeout","statusText","httpException","onerror","onreadystatechange","readyState","httpResponse","response","getAllResponseHeaders","responseInterceptor","handleResponse","send","requestBody","bind","workerCall","collectedRequestHeaders","createWorker","onmessage","event","terminate","msg","data","responseHeaders","postMessage","conf","requestHeaders","Promise","ResponseBuilder","executor","RequestBuilder","reponseBuilder","headersInfo","hasOwnProperty","HttpClient","requestBuilder","request","HttpClientInterceptor","requestHandlers","Set","responseHandlers","handler","add","list","register","httpClientProvider","httpClientInterceptorProvider","ClientScope","clientIds","clientId","getClientId","newClientId","getHeaderByName","setClientId","addRequestInterceptor","addResponseInterceptor","calcKey","clientScopeProvider","ATTRIBUTE_METADATA_CHANGED_COMMAND_ID","CALL_ACTION_COMMAND_ID","CHANGE_ATTRIBUTE_METADATA_COMMAND_ID","CREATE_CONTEXT_COMMAND_ID","CREATE_CONTROLLER_COMMAND_ID","CREATE_PRESENTATION_MODEL_COMMAND_ID","DELETE_PRESENTATION_MODEL_COMMAND_ID","DESTROY_CONTEXT_COMMAND_ID","DESTROY_CONTROLLER_COMMAND_ID","INTERRUPT_LONG_POLL_COMMAND_ID","PRESENTATION_MODEL_DELETED_COMMAND_ID","START_LONG_POLL_COMMAND_ID","VALUE_CHANGED_COMMAND_ID","ID","ATTRIBUTE_ID","PM_ID","CONTROLLER_ID","PM_TYPE","NAME","VALUE","PARAMS","PM_ATTRIBUTES","BlindCommandBatcher","folding","maxBatchSize","queue","batch","batchLength","element","command","id","attributeId","newValue","splice","JS_STRING_TYPE","REMOTING_BEAN","BYTE","SHORT","INT","LONG","FLOAT","DOUBLE","BOOLEAN","STRING","ENUM","CALENDAR","LOCAL_DATE_FIELD_TYPE","LOCAL_DATE_TIME_FIELD_TYPE","ZONED_DATE_TIME_FIELD_TYPE","ADDED_TYPE","REMOVED_TYPE","ValueChangedCommand","AttributeMetadataChangedCommand","metadataName","CallActionCommand","controllerid","actionName","ChangeAttributeMetadataCommand","CreateContextCommand","CreateControllerCommand","controllerName","parentControllerId","CreatePresentationModelCommand","presentationModel","attributes","clientSideOnly","pmId","pmType","presentationModelType","getAttributes","attr","propertyName","getValue","DeletePresentationModelCommand","DestroyContextCommand","DestroyControllerCommand","controllerId","InterruptLongPollCommand","PresentationModelDeletedCommand","StartLongPollCommand","CodecError","Codec","jsonCommand","map","attribute","commands","stringify","_encodeAttributeMetadataChangedCommand","_encodeCallActionCommand","_encodeChangeAttributeMetadataCommand","_encodeCreateContextCommand","_encodeCreateControllerCommand","_encodeCreatePresentationModelCommand","_encodeDeletePresentationModelCommand","_encodeDestroyContextCommand","_encodeDestroyControllerCommand","_encodeInterruptLongPollCommand","_encodePresentationModelDeletedCommand","_encodeStartLongPollCommand","_encodeValueChangedCommand","transmitted","parse","_decodeAttributeMetadataChangedCommand","_decodeCallActionCommand","_decodeChangeAttributeMetadataCommand","_decodeCreateContextCommand","_decodeCreateControllerCommand","_decodeCreatePresentationModelCommand","_decodeDeletePresentationModelCommand","_decodeDestroyContextCommand","_decodeDestroyControllerCommand","_decodeInterruptLongPollCommand","_decodePresentationModelDeletedCommand","_decodeStartLongPollCommand","_decodeValueChangedCommand","EventBus","eventHandlers","eventHandler","handle","presentationModelInstanceCount","ClientPresentationModel","dirty","toString","invalidBus","dirtyValueChangeBus","attributeCopy","copy","addAttribute","findAttributeByPropertyName","getQualifier","findAttributeByQualifier","setPresentationModel","onValueChange","trigger","source","handleInvalidate","onEvent","slice","qualifier","sourcePresentationModel","targetAttribute","sourceAttribute","getAt","syncWith","ClientConnector","transmitter","clientDolphin","slackMS","commandQueue","currentlySending","pushEnabled","waiting","codec","commandBatcher","newBatcher","enabled","newListener","pushListener","newCommand","releaseCommand","onFinished","release","doSendNext","enqueuePushCommand","cmdsAndHandlers","callback","cah","transmit","touchedPMs","touched","setTimeout","onError","handleDeletePresentationModelCommand","handleCreatePresentationModelCommand","handleValueChangedCommand","handleAttributeMetadataChangedCommand","serverCommand","model","findPresentationModelById","getClientModelStore","deletePresentationModel","containsPresentationModel","clientAttribute","clientPm","addAttributes","updatePresentationModelQualifier","findAttributeById","setValueFromServer","me","onFinishedData","signal","ClientAttribute","clientAttributeInstanceCount","valueChangeBus","qualifierChangeBus","setValue","setQualifier","verifiedValue","checkValue","oldValue","newQualifier","oldQualifier","String","Boolean","Number","valueOf","ok","SUPPORTED_VALUE_TYPES","ClientDolphin","clientConnector","type","clientModelStore","listPresentationModelIds","listPresentationModels","findAllPresentationModelByType","modelToDelete","updateAttributeQualifier","findAllAttributesByQualifier","pushCommand","setPushListener","setReleaseCommand","setPushEnabled","listen","Attribute","QUALIFIER_PROPERTY","CommandFactory","ClientModelStore","presentationModels","presentationModelsPerType","attributesPerId","attributesPerQualifier","modelStoreChangeBus","addAttributeById","addAttributeByQualifier","evt","sendToServer","createValueChangedCommand","getClientConnector","attrs","findAttributesByFilter","onQualifierChange","createChangeAttributeMetadataCommand","has","added","addPresentationModelByType","connector","createCreatePresentationModelCommand","registerAttribute","removed","removePresentationModelByType","removeAttributeById","removeAttributeByQualifier","filter","iter","keys","next","done","values","notify","remove","createPresentationModelDeletedCommand","pmStoreEvent","clientPresentationModel","NoTransmitter","onDone","DolphinBuilder","setClientConnector","setClientModelStore","dolphinBuilder","DOLPHIN_BEAN","ACTION_CALL_BEAN","HIGHLANDER_BEAN","DOLPHIN_LIST_SPLICE","SOURCE_SYSTEM","SOURCE_SYSTEM_CLIENT","SOURCE_SYSTEM_SERVER","Connector","dolphin","classRepository","config","highlanderPMResolver","highlanderPMPromise","onModelStoreChange","sourceSystem","eventType","onModelAdded","onModelRemoved","that","startPushListening","createStartLongPollCommand","createInterruptLongPollCommand","registerClass","spliceListEntry","load","unregisterClass","unload","reason","BeanManager","addedHandlers","removedHandlers","updatedHandlers","arrayUpdatedHandlers","allAddedHandlers","allRemovedHandlers","allUpdatedHandlers","allArrayUpdatedHandlers","_handleBeanAdded","_handleBeanRemoved","_handleBeanUpdate","_handleArrayUpdate","onBeanAdded","onBeanRemoved","onBeanUpdate","onArrayUpdate","bean","handlerList","e","index","count","newElements","notifyBeanChange","removedElements","notifyArrayChange","collection","predicate","concat","unsubscribe","ClassRepository","classes","beanFromDolphin","beanToDolphin","classInfos","beanAddedHandlers","beanRemovedHandlers","propertyUpdateHandlers","arrayUpdateHandlers","blocked","modelId","to","classInfo","toDolphin","apply","undefined","fromDolphin","isBlocked","array","removedElementsCount","isArray","sendListSplice","search","validateList","block","unblock","toISOString","TypeError","consts","fixType","parseFloat","ControllerProxy","manager","destroyed","onDestroyedHandlers","invokeAction","_createController","getId","destroyController","MODEL","ERROR_CODE","ControllerManager","controllers","getHighlanderPM","then","highlanderPM","MSG_ERROR_CREATING_CONTROLLER","invoke","createCreateControllerCommand","getValueWithRetry","ctrlId","mapDolphinToBean","controller","getValueCall","errorMessage","RETRIES","RETRY_TIME","intervalID","setInterval","clearInterval","pm","actionParams","mapParamToDolphin","createCallActionCommand","isError","createDestroyControllerCommand","controllersCopy","promises","destroy","all","ClientContext","beanManager","controllerManager","_controllerManager","_connector","connectionPromise","isConnected","connect","createCreateContextCommand","createController","stopPushListening","createDestroyContextCommand","Emitter","prototype","DolphinRemotingError","detail","DolphinSessionError","HttpResponseError","HttpNetworkError","RemotingErrorHandler","DOLPHIN_SESSION_TIMEOUT","PlatformHttpTransmitter","failed_attempt","connectionConfig","_connectionConfig","maxRetry","connection","errorHandlers","encodedCommands","encode","isLogLevelUseable","httpClient","post","withHeadersInfo","withContent","readString","execute","exception","getStatus","_handleError","_send","responseText","responseCommands","decode","err","errorMsg","emit","ClientContextFactory","legecyClientSupport","on","clientContext","withTransmitter","withSlackMS","withMaxBatchSize","MAX_SAFE_INTEGER","build","createClientContext","create","clientContextFactoryProvider","KeycloakConnection","authEndpoint","realmName","KeycloakFunctions","directConnection","appName","encodedUser","encodeURIComponent","encodedPassword","encodedAppName","createDirectConnection","createServerProxyConnection","refreshToken","body","createRefreshConnection","receiveToken","SecurityHttpClientInterceptor","token","realm","KeycloakSecurity","functions","interceptor","intervall","isAuthorized","createLoginConnection","access_token","setToken","setRealm","setAppName","expires","expires_in","MIN_TOKEN_EXPIRES_RUN","sleepTime","Math","max","TOKEN_EXPIRES_DELTA","refresh_token","securityProvider","registerHttp","registerClientScope","registerRemotingScope","registerSecurity","info","RICO_VERSION","Worker","Blob","URL","createObjectURL","HttpWorker","blob","RICO_WORKER","httpWorkerProvider","showWarning"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;ACjFA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAC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","file":"rico.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ricojs\"] = factory();\n\telse\n\t\troot[\"ricojs\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const LogLevel = {\n NONE: { name: 'NONE', text: '[NONE ]', level: 0 },\n ALL: { name: 'ALL', text: '[ALL ]', level: 100 },\n TRACE: { name: 'TRACE', text: '[TRACE]', level: 5 },\n DEBUG: { name: 'DEBUG', text: '[DEBUG]', level: 4 },\n INFO: { name: 'INFO', text: '[INFO ]', level: 3 },\n WARN: { name: 'WARN', text: '[WARN ]', level: 2 },\n ERROR: { name: 'ERROR', text: '[ERROR]', level: 1 },\n};\n\nexport { LogLevel };","var _checkMethodName;\n\nexport function exists(object) {\n return typeof object !== 'undefined' && object !== null;\n}\n\nexport function checkMethod(name) {\n _checkMethodName = name;\n}\n\nexport function checkParam(param, parameterName) {\n if(!exists(param)) {\n throw new Error('The parameter ' + parameterName + ' is mandatory in ' + _checkMethodName);\n }\n}\n\nexport function parseUrl(url) {\n //https://jsperf.com/url-parsing\n const pattern = /^(((([^:\\/#\\?]+:)?(?:(\\/\\/)((?:(([^:@\\/#\\?]+)(?:\\:([^:@\\/#\\?]+))?)@)?(([^:\\/#\\?\\]\\[]+|\\[[^\\/\\]@#?]+\\])(?:\\:([0-9]+))?))?)?)?((\\/?(?:[^\\/\\?#]+\\/+)*)([^\\?#]*)))?(\\?[^#]+)?)(#.*)?/\n const matches = url.match(pattern);\n\n let scheme;\n if (matches[4] && matches[4].length > 1) {\n scheme = matches[4].substring(0, matches[4].length-1);\n }\n\n let path = matches[13];\n\n let query;\n if (matches[16] && matches[16].length > 1) {\n query = matches[16].substring(1, matches[16].length);\n const hashes = query.split('&');\n query = hashes.reduce((params, hash) => {\n let [key, val] = hash.split('=')\n return Object.assign(params, {[key]: val})\n }, {});\n }\n\n let fragment;\n if (matches[17] && matches[17].length > 1) {\n fragment = matches[17].substring(1, matches[17].length);\n }\n\n let hostname = matches[11];\n let port = matches[12];\n if (hostname && !port && scheme === 'http') {\n port = 80;\n } else if (hostname && !port && scheme === 'https') {\n port = 443;\n }\n\n //relative url? get hostname and port from the browser\n if (!hostname && !port && !scheme) {\n \n if (window && window.location && window.location.hostname) {\n hostname = window.location.hostname;\n }\n if (window && window.location && window.location.port) {\n port = window.location.port;\n }\n if (window && window.location && window.location.protocol) {\n scheme = window.location.protocol.substring(0, window.location.protocol.length-1) ;\n }\n // strip '.' from relative path\n if (path.indexOf('.') === 0) {\n path = path.substring(1, path.length);\n }\n }\n\n // port should be a number, always\n if (port) {\n port = parseInt(port);\n }\n\n return {\n scheme: scheme,\n user: matches[8],\n password: matches[9],\n hostname: hostname,\n port: port,\n path: path,\n query: query,\n fragment: fragment\n };\n \n}\n\n","import {checkParam, exists} from '../utils'\nimport { LogLevel } from \"./constants\";\n\n// private methods\nconst LOCALS = {\n pad (text, size) {\n let result = '' + text;\n while (result.length < size) {\n result = '0' + result;\n }\n return result;\n },\n internalLog () {\n const args = Array.from(arguments);\n const func = args.shift();\n const context = args.shift();\n const logLevel = args.shift();\n const date = new Date();\n const dateString = date.getFullYear() + '-' + LOCALS.pad(date.getMonth() + 1, 2) + '-' + LOCALS.pad(date.getDate(), 2) + ' ' + LOCALS.pad(date.getHours(), 2) + ':' + LOCALS.pad(date.getMinutes(), 2) + ':' + LOCALS.pad(date.getSeconds(), 2) + '.' + LOCALS.pad(date.getMilliseconds(), 3);\n func(dateString, logLevel.text, context, ...args);\n\n },\n getCookie (name) {\n if (exists(window) && exists(window.document) && exists(window.document.cookie)) { \n const value = '; ' + window.document.cookie;\n const parts = value.split('; ' + name + '=');\n if ( parts.length === 2 ) {\n return parts.pop().split(';').shift();\n }\n }\n }\n};\n\n\n// public\nclass Logger {\n\n constructor(context, rootLogger) {\n this.context = context;\n this.rootLogger = rootLogger;\n const cookieLogLevel = LOCALS.getCookie('RICO_LOGGER_' + this.context);\n switch (cookieLogLevel) {\n case 'NONE':\n this.logLevel = LogLevel.NONE;\n break;\n case 'ALL':\n this.logLevel = LogLevel.ALL;\n break;\n case 'TRACE':\n this.logLevel = LogLevel.TRACE;\n break;\n case 'DEBUG':\n this.logLevel = LogLevel.DEBUG;\n break;\n case 'INFO':\n this.logLevel = LogLevel.INFO;\n break;\n case 'WARN':\n this.logLevel = LogLevel.WARN;\n break;\n case 'ERROR':\n this.logLevel = LogLevel.ERROR;\n break;\n }\n\n }\n\n trace() {\n if (exists(console) && this.isLogLevel(LogLevel.TRACE)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.TRACE, ...arguments);\n }\n }\n\n debug() {\n if (exists(console) && this.isLogLevel(LogLevel.DEBUG)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.DEBUG, ...arguments);\n }\n }\n\n info() {\n if (exists(console) && this.isLogLevel(LogLevel.INFO)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.INFO, ...arguments);\n }\n }\n\n warn() {\n if (exists(console) && this.isLogLevel(LogLevel.WARN)) {\n LOCALS.internalLog(console.warn, this.context, LogLevel.WARN, ...arguments);\n }\n }\n\n error() {\n if (exists(console) && this.isLogLevel(LogLevel.ERROR)) {\n LOCALS.internalLog(console.error, this.context, LogLevel.ERROR, ...arguments);\n }\n }\n\n getLogLevel() {\n if (exists(this.logLevel)) {\n return this.logLevel;\n } else if (exists(this.rootLogger)) {\n return this.rootLogger.getLogLevel();\n } else {\n return LogLevel.INFO;\n }\n }\n\n setLogLevel(level) {\n this.logLevel = level;\n }\n\n setLogLevelByName(levelName) {\n if (exists(LogLevel[levelName])) {\n this.logLevel = LogLevel[levelName];\n }\n }\n\n isLogLevel(level) {\n if (this.getLogLevel() === LogLevel.NONE) {\n return false;\n }\n if (this.getLogLevel() === LogLevel.ALL) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.DEBUG && level !== LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.INFO && level !== LogLevel.TRACE && level !== LogLevel.DEBUG) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.WARN && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.ERROR && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO && level !== LogLevel.WARN) {\n return true;\n }\n return false;\n }\n\n isLogLevelUseable(level) {\n checkParam(level, 'level');\n if (level.level) {\n return this.getLogLevel().level >= level.level;\n } else {\n return false;\n }\n }\n}\n\nexport { Logger };","import { exists } from \"../utils\";\nimport { Logger } from \"./logger\";\n\nconst ROOT_LOGGER = new Logger('ROOT');\n\n// private methods\nconst LOCALS = {\n loggers: new Map()\n};\n\n\n// public\nclass LoggerFactory {\n\n static getLogger(context) {\n if (!exists(context) || context === 'ROOT') {\n return ROOT_LOGGER;\n }\n const existingLogger = LOCALS.loggers.get(context);\n if (existingLogger) {\n return existingLogger;\n }\n\n const logger = new Logger(context, ROOT_LOGGER);\n LOCALS.loggers.set(context, logger);\n return logger;\n }\n}\n\nexport { LoggerFactory }","import { LogLevel } from \"./constants\";\nimport { LoggerFactory } from \"./loggerfactory\";\n\nexport { LogLevel, LoggerFactory };","import {exists} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass Client {\n\n}\n\nClient.LOGGER = LoggerFactory.getLogger('Client');\n\nClient.services = new Map();\nClient.serviceProviders = new Map();\nClient.configuration = {};\n\nClient.getService = function(name) {\n let service = Client.services.get(name);\n if (!exists(service)) {\n let provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n throw new Error('No service provider found for ' + name);\n } else {\n service = provider.getService(Client.configuration);\n Client.services.set(name, service);\n }\n }\n return service;\n};\n\nClient.hasService = function(name) {\n const provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n return false;\n } else {\n return true;\n }\n};\n\nClient.getAllServiceTypes = function() {\n let result = [];\n Client.serviceProviders.forEach((serviceProvider) => result.push(serviceProvider));\n return result;\n};\n\n\nClient.registerServiceProvider = function(serviceProvider) {\n if (serviceProvider === null || typeof serviceProvider === 'undefined') {\n throw new Error('Cannot register empty service provider');\n }\n \n if (typeof serviceProvider.getName === 'function' && typeof serviceProvider.getService === 'function') {\n const current = Client.serviceProviders.get(serviceProvider.getName());\n if (!current) {\n Client.serviceProviders.set(serviceProvider.getName(), serviceProvider);\n Client.LOGGER.debug('Service provider registered with name', serviceProvider.getName());\n } else {\n throw new Error('Cannot register another service provider. Name already in use.');\n }\n } else {\n throw new Error('Cannot register service provider without getName() and getService() methods');\n }\n};\n\nClient.init = function() {\n Client.serviceProviders.forEach((serviceProvider) => {\n const service = serviceProvider.getService();\n Client.LOGGER.trace('Initializing service for service provider', serviceProvider.getName());\n if (typeof service.initServiceProvider === 'function') {\n Client.LOGGER.debug('Initializing service', service);\n service.initServiceProvider(Client);\n }\n });\n}\n\nexport { Client }","import { checkMethod, checkParam } from '../utils'\nclass ServiceProvider {\n\n constructor(serviceClass, name, client) {\n checkMethod('constructor');\n checkParam(serviceClass, 'serviceClass');\n checkParam(name, 'name');\n \n this.serviceInstance = new serviceClass(client);\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getService() {\n return this.serviceInstance;\n }\n}\n\nexport { ServiceProvider }","// Reponse type\nexport const RESPONSE_TYPE = {\n ARRAY_BUFFER: 'arraybuffer',\n TEXT: 'text',\n JSON: 'json'\n}\n\n// HTTP methods and status codes\nexport const HTTP = {\n METHOD: {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE'\n },\n STATUS: {\n ACCEPTED: 202,\n BAD_GATEWAY: 502,\n BAD_REQUEST: 400,\n CONFLICT: 409,\n CONTINUE: 100,\n CREATED: 201,\n EXPECTATION_FAILED: 417,\n FAILED_DEPENDENCY : 424,\n FORBIDDEN: 403,\n GATEWAY_TIMEOUT: 504,\n GONE: 410,\n HTTP_VERSION_NOT_SUPPORTED: 505,\n IM_A_TEAPOT: 418,\n INSUFFICIENT_SPACE_ON_RESOURCE: 419,\n INSUFFICIENT_STORAGE: 507,\n INTERNAL_SERVER_ERROR: 500,\n LENGTH_REQUIRED: 411,\n LOCKED: 423,\n METHOD_FAILURE: 420,\n METHOD_NOT_ALLOWED: 405,\n MOVED_PERMANENTLY: 301,\n MOVED_TEMPORARILY: 302,\n MULTI_STATUS: 207,\n MULTIPLE_CHOICES: 300,\n NETWORK_AUTHENTICATION_REQUIRED: 511,\n NO_CONTENT: 204,\n NON_AUTHORITATIVE_INFORMATION: 203,\n NOT_ACCEPTABLE: 406,\n NOT_FOUND: 404,\n NOT_IMPLEMENTED: 501,\n NOT_MODIFIED: 304,\n OK: 200,\n PARTIAL_CONTENT: 206,\n PAYMENT_REQUIRED: 402,\n PERMANENT_REDIRECT: 308,\n PRECONDITION_FAILED: 412,\n PRECONDITION_REQUIRED: 428,\n PROCESSING: 102,\n PROXY_AUTHENTICATION_REQUIRED: 407,\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n REQUEST_TIMEOUT: 408,\n REQUEST_TOO_LONG: 413,\n REQUEST_URI_TOO_LONG: 414,\n REQUESTED_RANGE_NOT_SATISFIABLE: 416,\n RESET_CONTENT: 205,\n SEE_OTHER: 303,\n SERVICE_UNAVAILABLE: 503,\n SWITCHING_PROTOCOLS: 101,\n TEMPORARY_REDIRECT: 307,\n TOO_MANY_REQUESTS: 429,\n UNAUTHORIZED: 401,\n UNPROCESSABLE_ENTITY: 422,\n UNSUPPORTED_MEDIA_TYPE: 415,\n USE_PROXY: 305\n },\n HEADER_NAME: {\n ACCEPT: 'Accept',\n ACCEPT_CHARSET: 'Accept-Charset', \n ACCEPT_ENCODING: 'Accept-Encoding', \n ACCEPT_LANGUAGE: 'Accept-Language',\n ACCEPT_DATETIME: 'Accept-Datetime',\n AUTHORIZATION: 'Authorization',\n CACHE_CONTROL: 'Cache-Control',\n CONNECTION: 'Connection',\n COOKIE: 'Cookie',\n CONTENT_LENGTH: 'Content-Length',\n CONTENT_MD5: 'Content-MD5',\n CONTENT_TYPE: 'Content-Type',\n DATE: 'Date',\n EXPECT: 'Expect',\n FORWARDED: 'Forwarded',\n FROM: 'From',\n HOST: 'Host', \n IF_MATCH: 'If-Match', \n IF_MODIFIED_SINCE: 'If-Modified_Since',\n IF_NONE_MATCH: 'If-None_Match',\n IF_RANGE: 'If-Range',\n MAX_FORWARDS: 'Max-Forwards',\n PRAGMA: 'Pragma', \n PROXY_AUTHORIZATION: 'Proxy-Authorization',\n REFERER: 'Referer',\n TE: 'TE',\n USER_AGENT: 'User-Agent',\n X_CLIENT_ID: 'X-Client-Id',\n X_CLIENT_SESSION_ID: 'X-Client-Session-Id',\n X_PLATFORM_SECURITY_REALM: 'X-platform-security-realm',\n X_PLATFORM_SECURITY_BEARER_ONLY: 'X-platform-security-bearer-only',\n X_PLATFORM_SECURITY_APPLICATION: 'X-platform-security-application'\n },\n CONTENT_TYPE: {\n APPLICATION_JSON: 'application/json',\n APPLICATION_X_WWW_FORM_URLENCODED: 'application/x-www-form-urlencoded',\n TEXT_HTML: 'text/html',\n TEXT_PLAIN: 'text/plain'\n },\n XMLHTTPREQUEST_READYSTATE: {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE:4\n }\n}\n\n// Security\nexport const SECURITY = {\n AUTH_ENDPOINT: '/openid-connect'\n}","import { exists, checkMethod, checkParam } from '../utils';\nclass HttpResponse {\n\n constructor(url, status, content, headers) {\n this.url = url;\n this.status = status;\n this.content = content;\n this.headers = {};\n if (exists(headers) && typeof headers === 'string') {\n const headerArray = headers.trim().split(/[\\r\\n]+/);\n for (let i = 0; i < headerArray.length; i++) {\n const line = headerArray[i];\n const parts = line.split(': ');\n if (parts.length === 2) {\n const header = parts.shift().toLowerCase();\n const value = parts.join(': ');\n this.headers[header] = value;\n }\n }\n }\n }\n\n getUrl() {\n return this.url;\n }\n\n getContent() {\n return this.content;\n }\n\n getStatus() {\n return this.status;\n }\n\n getHeaders() {\n return this.headers;\n }\n\n getHeaderByName(name) {\n checkMethod('getHeaderByName');\n checkParam(name, 'name');\n \n return this.headers[name.toLowerCase()];\n }\n\n}\n\nexport { HttpResponse }","class HttpException {\n\n constructor(message, status, timedout) {\n this.message = message;\n this.status = status || 0;\n this.timedout = timedout || false;\n }\n\n getMessage() {\n return this.message;\n }\n\n getStatus() {\n return this.status;\n }\n\n isTimedout() {\n return this.timedout;\n }\n\n}\n\nexport { HttpException }","import { LoggerFactory } from '../logging';\nimport { HttpResponse } from './httpResponse';\nimport { HttpException } from './httpException';\nimport { HTTP } from '../platform/constants';\nclass Executor {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.client = client;\n }\n\n execute(timeout, worker) {\n\n let httpWorker = null;\n if (this.client && this.client.hasService('HttpWorker')) {\n httpWorker = this.client.getService('HttpWorker');\n }\n\n const useWorker = httpWorker !== null && (worker === true || timeout === true);\n let timeoutToUse = 0;\n if (timeout !== true && timeout !== false) {\n timeoutToUse = timeout;\n }\n\n let requestInterceptors = [];\n if (this.client) {\n requestInterceptors = this.client.getService('HttpClientInterceptor').getRequestInterceptors();\n Executor.LOGGER.trace('Request interceptors found:', requestInterceptors);\n }\n\n let responseInterceptors = [];\n if (this.client) {\n responseInterceptors = this.client.getService('HttpClientInterceptor').getResponseInterceptors();\n Executor.LOGGER.trace('Response interceptors found:', responseInterceptors);\n }\n\n let directCall = (resolve, reject) => {\n\n const self = this;\n const httpRequest = new XMLHttpRequest();\n const async = true;\n \n httpRequest.open(this.configuration.method, this.configuration.url, async);\n httpRequest.url = this.configuration.url;\n httpRequest.method = this.configuration.method;\n httpRequest.withCredentials = true;\n\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n requestInterceptor.handleRequest(httpRequest);\n }\n\n if (this.configuration.headers && this.configuration.headers.length > 0) {\n for (let i = 0; i < this.configuration.headers.length; i++) {\n const header = this.configuration.headers[i];\n httpRequest.setRequestHeader(header.name, header.value);\n }\n }\n\n httpRequest.timeout = timeoutToUse;\n\n if (this.configuration.responseType) {\n httpRequest.responseType = this.configuration.responseType;\n }\n\n httpRequest.ontimeout = function () {\n const message = this.statusText || 'Timeout occurred';\n const httpException = new HttpException(message, this.status, true);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onerror = function () {\n let message = this.statusText || 'Unspecified error occured';\n const httpException = new HttpException(message, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE) {\n Executor.LOGGER.trace('Request to ', self.configuration.url, 'finished with', this.status);\n }\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 200 && this.status < 300) {\n // https://www.w3.org/TR/cors/#simple-response-header\n const httpResponse = new HttpResponse(this.url, this.status, this.response, this.getAllResponseHeaders());\n \n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 300) {\n const httpException = new HttpException(this.statusText, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n }\n\n httpRequest.send(this.configuration.requestBody);\n\n }\n directCall = directCall.bind(this);\n\n let workerCall = (resolve, reject) => {\n \n const collectedRequestHeaders = [];\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n \n requestInterceptor.handleRequest({\n url: this.configuration.url,\n setRequestHeader: (name, value) => {\n const header = {name, value};\n collectedRequestHeaders.push(header);\n }\n });\n }\n\n const worker = httpWorker.createWorker();\n try {\n worker.onmessage = function(event) {\n worker.terminate();\n Executor.LOGGER.trace('Message form Worker', event);\n const msg = event.data;\n if (msg.error) {\n const httpException = new HttpException(msg.message, msg.status, msg.timedout);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n } else {\n const httpResponse = new HttpResponse(msg.url, msg.status, msg.response, msg.responseHeaders);\n\n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n }\n }\n worker.onerror = function(event) {\n const httpException = new HttpException(event.data, 0, false);\n reject(httpException);\n }\n worker.postMessage({conf: this.configuration, timeout: timeoutToUse, requestHeaders: collectedRequestHeaders});\n } catch (error) {\n const httpException = new HttpException(error, 0, false);\n reject(httpException);\n }\n\n }\n\n workerCall = workerCall.bind(this);\n\n return new Promise((resolve, reject) => {\n if (useWorker && this.client && this.client.hasService('HttpWorker')) {\n workerCall(resolve, reject);\n } else {\n directCall(resolve, reject);\n }\n });\n \n }\n\n}\n\nExecutor.LOGGER = LoggerFactory.getLogger('Executor');\n\nexport { Executor }","import { Executor } from './executor';\nimport { RESPONSE_TYPE } from '../platform/constants';\nclass ResponseBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.executor = new Executor(configuration, client);\n }\n\n readBytes() {\n this.configuration.responseType = RESPONSE_TYPE.ARRAY_BUFFER;\n return this.executor;\n }\n\n readString() {\n this.configuration.responseType = RESPONSE_TYPE.TEXT;\n return this.executor;\n }\n\n readObject() {\n this.configuration.responseType = RESPONSE_TYPE.JSON;\n return this.executor;\n }\n\n withoutResult() {\n return this.executor;\n }\n}\n\nexport { ResponseBuilder }","import { ResponseBuilder } from './reponseBuilder';\nimport { exists } from '../utils';\nclass RequestBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.reponseBuilder = new ResponseBuilder(configuration, client);\n }\n\n withHeader(name, value) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n this.configuration.headers.push({ name, value });\n return this;\n }\n\n withHeadersInfo(headersInfo) {\n if (exists(headersInfo)) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n for (let name in headersInfo) {\n if (headersInfo.hasOwnProperty(name)) {\n const value = headersInfo[name];\n this.configuration.headers.push({ name, value });\n }\n }\n }\n return this;\n }\n\n withContent(data) {\n this.configuration.requestBody = data;\n return this.reponseBuilder;\n }\n\n withoutContent() {\n return this.reponseBuilder;\n }\n}\n\nexport { RequestBuilder }","import { RequestBuilder } from './requestBuilder';\nimport { HTTP } from '../platform/constants';\nclass HttpClient {\n\n constructor(client) {\n this.client = client;\n }\n\n request(url, method) {\n const configuration = {\n url, method\n }\n this.requestBuilder = new RequestBuilder(configuration, this.client);\n return this.requestBuilder;\n }\n\n get(url) {\n return this.request(url, HTTP.METHOD.GET);\n }\n\n post(url) {\n return this.request(url, HTTP.METHOD.POST);\n }\n\n put(url) {\n return this.request(url, HTTP.METHOD.PUT);\n }\n\n delete(url) {\n return this.request(url, HTTP.METHOD.DELETE);\n }\n}\n\nexport { HttpClient }","class HttpClientInterceptor {\n\n constructor() {\n this.requestHandlers = new Set();\n this.responseHandlers = new Set();\n }\n\n addRequestInterceptor(handler) {\n this.requestHandlers.add(handler);\n }\n\n getRequestInterceptors() {\n let list = [];\n this.requestHandlers.forEach(handler => list.push(handler));\n return list;\n }\n\n addResponseInterceptor(handler) {\n this.responseHandlers.add(handler);\n }\n\n getResponseInterceptors() {\n let list = [];\n this.responseHandlers.forEach(handler => list.push(handler));\n return list;\n }\n}\n\nexport { HttpClientInterceptor }","import { HttpClient } from './httpClient';\nimport { HttpClientInterceptor } from './httpClientInterceptor';\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const httpClientProvider = new ServiceProvider(HttpClient, 'HttpClient', client);\n const httpClientInterceptorProvider = new ServiceProvider(HttpClientInterceptor, 'HttpClientInterceptor', client);\n \n client.registerServiceProvider(httpClientProvider);\n client.registerServiceProvider(httpClientInterceptorProvider);\n }\n}\n\nexport { register }","import { checkMethod, checkParam, parseUrl, exists } from '../utils';\nimport { ServiceProvider } from './serviceProvider';\nimport { LoggerFactory } from '../logging';\nimport { HTTP } from './constants';\n\nclass ClientScope {\n\n constructor() {\n this.clientIds = new Map();\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n const clientId = this.getClientId(httpRequest.url);\n if (exists(clientId)) {\n ClientScope.LOGGER.trace('Using ClientId', clientId);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID, clientId);\n }\n }\n\n handleResponse(httpResponse) {\n checkMethod('handleResponse');\n checkParam(httpResponse, 'httpResponse');\n const clientId = this.getClientId(httpResponse.url);\n const newClientId = httpResponse.getHeaderByName(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID);\n if (exists(clientId) && exists(newClientId) && clientId !== newClientId) {\n throw new Error('Client Id does not match!');\n }\n if (!exists(clientId) && exists(newClientId)) {\n ClientScope.LOGGER.debug('New ClientId found', newClientId);\n this.setClientId(httpResponse.url, newClientId);\n }\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this);\n client.getService('HttpClientInterceptor').addResponseInterceptor(this);\n }\n\n getClientId(url) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n return this.clientIds.get(key);\n }\n\n setClientId(url, clientId) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n this.clientIds.set(key, clientId);\n ClientScope.LOGGER.trace('Setting ClientId', clientId, 'for', url, 'with key', key);\n }\n\n}\n\nClientScope.calcKey = function(hostname, port) {\n return hostname + port;\n}\n\nClientScope.LOGGER = LoggerFactory.getLogger('ClientScope');\n\nfunction register(client) {\n if (exists(client)) {\n const clientScopeProvider = new ServiceProvider(ClientScope, 'ClientScope');\n\n client.registerServiceProvider(clientScopeProvider);\n }\n}\n\nexport { register }","export const ATTRIBUTE_METADATA_CHANGED_COMMAND_ID = 'AttributeMetadataChanged';\nexport const CALL_ACTION_COMMAND_ID = 'CallAction';\nexport const CHANGE_ATTRIBUTE_METADATA_COMMAND_ID = 'ChangeAttributeMetadata';\nexport const CREATE_CONTEXT_COMMAND_ID = 'CreateContext';\nexport const CREATE_CONTROLLER_COMMAND_ID = 'CreateController';\nexport const CREATE_PRESENTATION_MODEL_COMMAND_ID = 'CreatePresentationModel';\nexport const DELETE_PRESENTATION_MODEL_COMMAND_ID = 'DeletePresentationModel';\nexport const DESTROY_CONTEXT_COMMAND_ID = 'DestroyContext';\nexport const DESTROY_CONTROLLER_COMMAND_ID = 'DestroyController';\nexport const INTERRUPT_LONG_POLL_COMMAND_ID = 'InterruptLongPoll';\nexport const PRESENTATION_MODEL_DELETED_COMMAND_ID = 'PresentationModelDeleted';\nexport const START_LONG_POLL_COMMAND_ID = 'StartLongPoll';\nexport const VALUE_CHANGED_COMMAND_ID = 'ValueChanged';\n\nexport const ID = \"id\";\nexport const ATTRIBUTE_ID = \"a_id\";\nexport const PM_ID = \"p_id\";\nexport const CONTROLLER_ID = \"c_id\";\nexport const PM_TYPE = \"t\";\nexport const NAME = \"n\";\nexport const VALUE = \"v\";\nexport const PARAMS = \"p\";\nexport const PM_ATTRIBUTES = \"a\";","import {VALUE_CHANGED_COMMAND_ID, PRESENTATION_MODEL_DELETED_COMMAND_ID} from './commands/commandConstants';\n\nexport default class BlindCommandBatcher {\n constructor(folding = true, maxBatchSize = 50) {\n this.folding = folding;\n this.maxBatchSize = maxBatchSize;\n }\n batch(queue) {\n let batch = [];\n let batchLength = 0;\n while(queue[batchLength] && batchLength <= this.maxBatchSize) {\n const element = queue[batchLength];\n batchLength++;\n if(this.folding) {\n if(element.command.id == VALUE_CHANGED_COMMAND_ID &&\n batch.length > 0 &&\n batch[batch.length - 1].command.id == VALUE_CHANGED_COMMAND_ID &&\n element.command.attributeId == batch[batch.length - 1].command.attributeId) {\n //merge ValueChange for same value\n batch[batch.length - 1].command.newValue = element.command.newValue;\n } else if(element.command.id == PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n //We do not need it...\n } else {\n batch.push(element);\n }\n } else {\n batch.push(element);\n }\n if(element.handler) {\n break;\n }\n }\n queue.splice(0, batchLength);\n return batch;\n }\n}","export const JS_STRING_TYPE = 'string';\n\nexport const REMOTING_BEAN = 0;\nexport const BYTE = 1;\nexport const SHORT = 2;\nexport const INT = 3;\nexport const LONG = 4;\nexport const FLOAT = 5;\nexport const DOUBLE = 6;\nexport const BOOLEAN = 7;\nexport const STRING = 8;\nexport const DATE = 9;\nexport const ENUM = 10;\nexport const CALENDAR = 11;\nexport const LOCAL_DATE_FIELD_TYPE = 55;\nexport const LOCAL_DATE_TIME_FIELD_TYPE = 52;\nexport const ZONED_DATE_TIME_FIELD_TYPE = 54;\n\n\nexport const ADDED_TYPE = \"ADDED\";\nexport const REMOVED_TYPE = \"REMOVED\";\n","import {VALUE_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ValueChangedCommand {\n\n constructor() {\n this.id = VALUE_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, newValue) {\n checkMethod('ValueChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n\n this.attributeId = attributeId;\n this.newValue = newValue;\n }\n}","import {ATTRIBUTE_METADATA_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class AttributeMetadataChangedCommand {\n\n constructor() {\n this.id = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('AttributeMetadataChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CALL_ACTION_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CallActionCommand {\n \n constructor() {\n this.id = CALL_ACTION_COMMAND_ID;\n }\n\n init(controllerid, actionName, params) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerid, 'controllerid');\n checkParam(actionName, 'actionName');\n\n this.controllerid = controllerid;\n this.actionName = actionName;\n this.params = params;\n }\n\n}","import {CHANGE_ATTRIBUTE_METADATA_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ChangeAttributeMetadataCommand {\n\n constructor() {\n this.id = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('ChangeAttributeMetadataCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CREATE_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class CreateContextCommand {\n\n constructor() {\n this.id = CREATE_CONTEXT_COMMAND_ID;\n }\n\n}","import {CREATE_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreateControllerCommand {\n\n constructor() {\n this.id = CREATE_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerName, parentControllerId) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerName, 'controllerName');\n\n this.controllerName = controllerName;\n this.parentControllerId = parentControllerId;\n }\n\n}","import {CREATE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreatePresentationModelCommand {\n\n constructor() {\n this.id = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(presentationModel) {\n checkMethod('CreatePresentationModelCommand.init()');\n checkParam(presentationModel, 'presentationModel');\n\n this.attributes = [];\n this.clientSideOnly = false;\n this.pmId = presentationModel.id;\n this.pmType = presentationModel.presentationModelType;\n var command = this;\n presentationModel.getAttributes().forEach(function (attr) {\n command.attributes.push({\n propertyName: attr.propertyName,\n id: attr.id,\n value: attr.getValue()\n });\n });\n }\n}","import {DELETE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DeletePresentationModelCommand {\n\n constructor() {\n this.id = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('DeletePresentationModelCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}\n","import {DESTROY_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class DestroyContextCommand {\n\n constructor() {\n this.id = DESTROY_CONTEXT_COMMAND_ID;\n }\n\n}","import {DESTROY_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DestroyControllerCommand {\n\n constructor() {\n this.id = DESTROY_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerId) {\n checkMethod('DestroyControllerCommand.init()');\n checkParam(controllerId, 'controllerId');\n\n this.controllerId = controllerId;\n }\n\n}","import {INTERRUPT_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class InterruptLongPollCommand {\n\n constructor() {\n this.id = INTERRUPT_LONG_POLL_COMMAND_ID;\n }\n}","import {PRESENTATION_MODEL_DELETED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class PresentationModelDeletedCommand {\n\n constructor() {\n this.id = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('PresentationModelDeletedCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}","import {START_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class StartLongPollCommand {\n\n constructor() {\n this.id = START_LONG_POLL_COMMAND_ID;\n }\n}\n","export default class CodecError extends Error {\n constructor(message) {\n super(message);\n }\n}","import {exists, checkMethod, checkParam} from '../../utils';\nimport {JS_STRING_TYPE} from '../constants';\nimport {\n CREATE_PRESENTATION_MODEL_COMMAND_ID,\n VALUE_CHANGED_COMMAND_ID,\n ATTRIBUTE_METADATA_CHANGED_COMMAND_ID,\n CALL_ACTION_COMMAND_ID,\n CHANGE_ATTRIBUTE_METADATA_COMMAND_ID,\n CREATE_CONTEXT_COMMAND_ID,\n CREATE_CONTROLLER_COMMAND_ID,\n DELETE_PRESENTATION_MODEL_COMMAND_ID,\n DESTROY_CONTEXT_COMMAND_ID,\n DESTROY_CONTROLLER_COMMAND_ID,\n INTERRUPT_LONG_POLL_COMMAND_ID,\n PRESENTATION_MODEL_DELETED_COMMAND_ID,\n START_LONG_POLL_COMMAND_ID\n} from './commandConstants';\nimport {ID, PM_ID, PM_TYPE, PM_ATTRIBUTES, NAME, ATTRIBUTE_ID, VALUE, CONTROLLER_ID, PARAMS} from './commandConstants';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport CodecError from './codecError';\n\n\nexport default class Codec {\n\n static _encodeAttributeMetadataChangedCommand(command) {\n checkMethod(\"Codec.encodeAttributeMetadataChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeAttributeMetadataChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeAttributeMetadataChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new AttributeMetadataChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCallActionCommand(command) {\n checkMethod(\"Codec.encodeCallActionCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerid, \"command.controllerid\");\n checkParam(command.actionName, \"command.actionName\");\n checkParam(command.params, \"command.params\");\n\n\n let jsonCommand = {};\n jsonCommand[ID] = CALL_ACTION_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerid;\n jsonCommand[NAME] = command.actionName;\n jsonCommand[PARAMS] = command.params.map((param) => {\n let result = {};\n result[NAME] = param.name;\n if (exists(param.value)) {\n result[VALUE] = param.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCallActionCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCallActionCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[PARAMS], \"jsonCommand[PARAMS]\");\n\n let command = new CallActionCommand();\n command.controllerid = jsonCommand[CONTROLLER_ID];\n command.actionName = jsonCommand[NAME];\n //TODO: Für die Params sollten wir eine Klasse bereitstellen\n command.params = jsonCommand[PARAMS].map((param) => {\n return {\n 'name': param[NAME],\n 'value': exists(param[VALUE]) ? param[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeChangeAttributeMetadataCommand(command) {\n checkMethod(\"Codec.encodeChangeAttributeMetadataCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeChangeAttributeMetadataCommand(jsonCommand) {\n checkMethod(\"Codec.decodeChangeAttributeMetadataCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new ChangeAttributeMetadataCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCreateContextCommand(command) {\n checkMethod(\"Codec.encodeCreateContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeCreateContextCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreateContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new CreateContextCommand();\n return command;\n }\n\n static _encodeCreateControllerCommand(command) {\n checkMethod(\"Codec._encodeCreateControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerName, \"command.controllerName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTROLLER_COMMAND_ID;\n jsonCommand[NAME] = command.controllerName;\n jsonCommand[CONTROLLER_ID] = command.parentControllerId;\n return jsonCommand;\n }\n\n static _decodeCreateControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeCreateControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new CreateControllerCommand();\n command.controllerName = jsonCommand[NAME];\n command.parentControllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeCreatePresentationModelCommand(command) {\n checkMethod(\"Codec.encodeCreatePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n checkParam(command.pmType, \"command.pmType\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n jsonCommand[PM_TYPE] = command.pmType;\n jsonCommand[PM_ATTRIBUTES] = command.attributes.map((attribute) => {\n let result = {};\n result[NAME] = attribute.propertyName;\n result[ATTRIBUTE_ID] = attribute.id;\n if (exists(attribute.value)) {\n result[VALUE] = attribute.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCreatePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreatePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n checkParam(jsonCommand[PM_TYPE], \"jsonCommand[PM_TYPE]\");\n\n let command = new CreatePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n command.pmType = jsonCommand[PM_TYPE];\n\n //TODO: Für die Attribute sollten wir eine Klasse bereitstellen\n command.attributes = jsonCommand[PM_ATTRIBUTES].map((attribute) => {\n return {\n 'propertyName': attribute[NAME],\n 'id': attribute[ATTRIBUTE_ID],\n 'value': exists(attribute[VALUE]) ? attribute[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeDeletePresentationModelCommand(command) {\n checkMethod(\"Codec._encodeDeletePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodeDeletePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDeletePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n\n let command = new DeletePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeDestroyContextCommand(command) {\n checkMethod(\"Codec._encodeDestroyContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeDestroyContextCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new DestroyContextCommand();\n return command;\n }\n\n static _encodeDestroyControllerCommand(command) {\n checkMethod(\"Codec._encodeDestroyControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerId, \"command.controllerId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTROLLER_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerId;\n return jsonCommand;\n }\n\n static _decodeDestroyControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new DestroyControllerCommand();\n command.controllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeInterruptLongPollCommand(command) {\n checkMethod(\"Codec._encodeInterruptLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = INTERRUPT_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeInterruptLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeInterruptLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new InterruptLongPollCommand();\n return command;\n }\n\n static _encodePresentationModelDeletedCommand(command) {\n checkMethod(\"Codec._encodePresentationModelDeletedCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodePresentationModelDeletedCommand(jsonCommand) {\n checkMethod(\"Codec._decodePresentationModelDeletedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n let command = new PresentationModelDeletedCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeStartLongPollCommand(command) {\n checkMethod(\"Codec._encodeStartLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = START_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeStartLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeStartLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new StartLongPollCommand();\n return command;\n }\n\n static _encodeValueChangedCommand(command) {\n checkMethod(\"Codec.encodeValueChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = VALUE_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n if (exists(command.newValue)) {\n jsonCommand[VALUE] = command.newValue;\n }\n return jsonCommand;\n }\n\n static _decodeValueChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeValueChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n\n let command = new ValueChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n if (exists(jsonCommand[VALUE])) {\n command.newValue = jsonCommand[VALUE];\n } else {\n command.newValue = null;\n }\n return command;\n }\n\n static encode(commands) {\n checkMethod(\"Codec.encode\");\n checkParam(commands, \"commands\");\n\n let self = this;\n return JSON.stringify(commands.map((command) => {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._encodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._encodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._encodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._encodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._encodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._encodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._encodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._encodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._encodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._encodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._encodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n }));\n }\n\n static decode(transmitted) {\n checkMethod(\"Codec.decode\");\n checkParam(transmitted, \"transmitted\");\n\n if (typeof transmitted === JS_STRING_TYPE) {\n let self = this;\n return JSON.parse(transmitted).map(function (command) {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._decodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._decodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._decodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._decodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._decodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._decodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._decodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._decodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._decodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._decodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._decodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n });\n } else {\n throw new CodecError('Can not decode data that is not of type string');\n }\n }\n}","export default class EventBus {\n\n constructor() {\n this.eventHandlers = [];\n }\n\n onEvent(eventHandler) {\n this.eventHandlers.push(eventHandler);\n }\n\n trigger(event) {\n this.eventHandlers.forEach(handle => handle(event));\n }\n}","import EventBus from './eventBus'\n\nvar presentationModelInstanceCount = 0; // todo dk: consider making this static in class\n\nexport default class ClientPresentationModel {\n constructor(id, presentationModelType) {\n this.id = id;\n this.presentationModelType = presentationModelType;\n this.attributes = [];\n this.clientSideOnly = false;\n this.dirty = false;\n if (typeof id !== 'undefined' && id != null) {\n this.id = id;\n }\n else {\n this.id = (presentationModelInstanceCount++).toString();\n }\n this.invalidBus = new EventBus();\n this.dirtyValueChangeBus = new EventBus();\n }\n // todo dk: align with Java version: move to ClientDolphin and auto-add to model store\n /** a copy constructor for anything but IDs. Per default, copies are client side only, no automatic update applies. */\n copy() {\n var result = new ClientPresentationModel(null, this.presentationModelType);\n result.clientSideOnly = true;\n this.getAttributes().forEach((attribute) => {\n var attributeCopy = attribute.copy();\n result.addAttribute(attributeCopy);\n });\n return result;\n }\n //add array of attributes\n addAttributes(attributes) {\n if (!attributes || attributes.length < 1)\n return;\n attributes.forEach(attr => {\n this.addAttribute(attr);\n });\n }\n addAttribute(attribute) {\n if (!attribute || (this.attributes.indexOf(attribute) > -1)) {\n return;\n }\n if (this.findAttributeByPropertyName(attribute.propertyName)) {\n throw new Error(\"There already is an attribute with property name: \" + attribute.propertyName\n + \" in presentation model with id: \" + this.id);\n }\n if (attribute.getQualifier() && this.findAttributeByQualifier(attribute.getQualifier())) {\n throw new Error(\"There already is an attribute with qualifier: \" + attribute.getQualifier()\n + \" in presentation model with id: \" + this.id);\n }\n attribute.setPresentationModel(this);\n this.attributes.push(attribute);\n attribute.onValueChange(() => {\n this.invalidBus.trigger({ source: this });\n });\n }\n onInvalidated(handleInvalidate) {\n this.invalidBus.onEvent(handleInvalidate);\n }\n /** returns a copy of the internal state */\n getAttributes() {\n return this.attributes.slice(0);\n }\n getAt(propertyName) {\n return this.findAttributeByPropertyName(propertyName);\n }\n findAllAttributesByPropertyName(propertyName) {\n var result = [];\n if (!propertyName)\n return null;\n this.attributes.forEach((attribute) => {\n if (attribute.propertyName == propertyName) {\n result.push(attribute);\n }\n });\n return result;\n }\n findAttributeByPropertyName(propertyName) {\n if (!propertyName)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if ((this.attributes[i].propertyName == propertyName)) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeByQualifier(qualifier) {\n if (!qualifier)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].getQualifier() == qualifier) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeById(id) {\n if (!id)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].id == id) {\n return this.attributes[i];\n }\n }\n return null;\n }\n syncWith(sourcePresentationModel) {\n this.attributes.forEach((targetAttribute) => {\n var sourceAttribute = sourcePresentationModel.getAt(targetAttribute.propertyName);\n if (sourceAttribute) {\n targetAttribute.syncWith(sourceAttribute);\n }\n });\n }\n}\n","import BlindCommandBatcher from './commandBatcher';\nimport Codec from './commands/codec';\nimport ClientPresentationModel from './clientPresentationModel'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientConnector {\n\n constructor(transmitter, clientDolphin, slackMS = 0, maxBatchSize = 50) {\n\n this.commandQueue = [];\n this.currentlySending = false;\n this.pushEnabled = false;\n this.waiting = false;\n this.transmitter = transmitter;\n this.clientDolphin = clientDolphin;\n this.slackMS = slackMS;\n this.codec = new Codec();\n this.commandBatcher = new BlindCommandBatcher(true, maxBatchSize);\n }\n\n setCommandBatcher(newBatcher) {\n this.commandBatcher = newBatcher;\n }\n\n setPushEnabled(enabled) {\n this.pushEnabled = enabled;\n }\n\n setPushListener(newListener) {\n this.pushListener = newListener;\n }\n\n setReleaseCommand(newCommand) {\n this.releaseCommand = newCommand;\n }\n\n send(command, onFinished) {\n this.commandQueue.push({ command: command, handler: onFinished });\n if (this.currentlySending) {\n this.release(); // there is not point in releasing if we do not send atm\n return;\n }\n this.doSendNext();\n }\n\n doSendNext() {\n if (this.commandQueue.length < 1) {\n if (this.pushEnabled) {\n this.enqueuePushCommand();\n }\n else {\n this.currentlySending = false;\n return;\n }\n }\n this.currentlySending = true;\n let cmdsAndHandlers = this.commandBatcher.batch(this.commandQueue);\n\n if(cmdsAndHandlers.length > 0) {\n let callback = cmdsAndHandlers[cmdsAndHandlers.length - 1].handler;\n let commands = cmdsAndHandlers.map(cah => { return cah.command; });\n this.transmitter.transmit(commands, (response) => {\n let touchedPMs = [];\n response.forEach((command) => {\n let touched = this.handle(command);\n if (touched)\n touchedPMs.push(touched);\n });\n if (callback) {\n callback.onFinished(touchedPMs); // todo: make them unique?\n }\n setTimeout(() => this.doSendNext(), this.slackMS);\n }, (error) => {\n callback.onError(error);\n });\n } else {\n setTimeout(() => this.doSendNext(), this.slackMS);\n }\n }\n\n handle(command) {\n if (command.id === \"DeletePresentationModel\") {\n return this.handleDeletePresentationModelCommand(command);\n }\n else if (command.id === \"CreatePresentationModel\") {\n return this.handleCreatePresentationModelCommand(command);\n }\n else if (command.id === \"ValueChanged\") {\n return this.handleValueChangedCommand(command);\n }\n else if (command.id === \"AttributeMetadataChanged\") {\n return this.handleAttributeMetadataChangedCommand(command);\n }\n else {\n ClientConnector.LOGGER.error(\"Cannot handle, unknown command \" + command);\n }\n return null;\n }\n\n handleDeletePresentationModelCommand(serverCommand) {\n let model = this.clientDolphin.findPresentationModelById(serverCommand.pmId);\n if (!model)\n return null;\n this.clientDolphin.getClientModelStore().deletePresentationModel(model, true);\n return model;\n }\n\n handleCreatePresentationModelCommand(serverCommand) {\n if (this.clientDolphin.getClientModelStore().containsPresentationModel(serverCommand.pmId)) {\n throw new Error(\"There already is a presentation model with id \" + serverCommand.pmId + \" known to the client.\");\n }\n let attributes = [];\n serverCommand.attributes.forEach((attr) => {\n let clientAttribute = this.clientDolphin.attribute(attr.propertyName, attr.qualifier, attr.value);\n if (attr.id && attr.id.match(\".*S$\")) {\n clientAttribute.id = attr.id;\n }\n attributes.push(clientAttribute);\n });\n let clientPm = new ClientPresentationModel(serverCommand.pmId, serverCommand.pmType);\n clientPm.addAttributes(attributes);\n if (serverCommand.clientSideOnly) {\n clientPm.clientSideOnly = true;\n }\n this.clientDolphin.getClientModelStore().add(clientPm, false);\n this.clientDolphin.updatePresentationModelQualifier(clientPm);\n return clientPm;\n }\n\n handleValueChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute) {\n ClientConnector.LOGGER.error(\"attribute with id \" + serverCommand.attributeId + \" not found, cannot update to new value \" + serverCommand.newValue);\n return null;\n }\n if (clientAttribute.getValue() === serverCommand.newValue) {\n return null;\n }\n clientAttribute.setValueFromServer(serverCommand.newValue);\n return null;\n }\n\n handleAttributeMetadataChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute)\n return null;\n clientAttribute[serverCommand.metadataName] = serverCommand.value;\n return null;\n }\n\n listen() {\n if (!this.pushEnabled)\n return;\n if (this.waiting)\n return;\n // todo: how to issue a warning if no pushListener is set?\n if (!this.currentlySending) {\n this.doSendNext();\n }\n }\n\n enqueuePushCommand() {\n let me = this;\n this.waiting = true;\n this.commandQueue.push({\n command: this.pushListener,\n handler: {\n onFinished: function () { me.waiting = false; },\n onFinishedData: null\n }\n });\n }\n\n release() {\n if (!this.waiting)\n return;\n this.waiting = false;\n // todo: how to issue a warning if no releaseCommand is set?\n this.transmitter.signal(this.releaseCommand);\n }\n}\n\nClientConnector.LOGGER = LoggerFactory.getLogger('ClientConnector');","import EventBus from './eventBus';\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientAttribute {\n\n constructor(propertyName, qualifier, value) {\n\n this.propertyName = propertyName;\n this.id = \"\" + (ClientAttribute.clientAttributeInstanceCount++) + \"C\";\n this.valueChangeBus = new EventBus();\n this.qualifierChangeBus = new EventBus();\n this.setValue(value);\n this.setQualifier(qualifier);\n }\n\n copy() {\n let result = new ClientAttribute(this.propertyName, this.getQualifier(), this.getValue());\n return result;\n }\n\n setPresentationModel(presentationModel) {\n if (this.presentationModel) {\n throw new Error(\"You can not set a presentation model for an attribute that is already bound.\");\n }\n this.presentationModel = presentationModel;\n }\n\n getPresentationModel() {\n return this.presentationModel;\n }\n\n getValue() {\n return this.value;\n }\n\n setValueFromServer(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': false });\n }\n\n setValue(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': true });\n }\n\n setQualifier(newQualifier) {\n if (this.qualifier === newQualifier)\n return;\n let oldQualifier = this.qualifier;\n this.qualifier = newQualifier;\n this.qualifierChangeBus.trigger({ 'oldValue': oldQualifier, 'newValue': newQualifier });\n this.valueChangeBus.trigger({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n getQualifier() {\n return this.qualifier;\n }\n\n onValueChange(eventHandler) {\n this.valueChangeBus.onEvent(eventHandler);\n eventHandler({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n onQualifierChange(eventHandler) {\n this.qualifierChangeBus.onEvent(eventHandler);\n }\n\n syncWith(sourceAttribute) {\n if (sourceAttribute) {\n this.setQualifier(sourceAttribute.getQualifier()); // sequence is important\n this.setValue(sourceAttribute.value);\n }\n }\n\n static checkValue(value) {\n if (value == null || typeof value === 'undefined') {\n return null;\n }\n let result = value;\n if (result instanceof String || result instanceof Boolean || result instanceof Number) {\n result = value.valueOf();\n }\n if (result instanceof ClientAttribute) {\n ClientAttribute.LOGGER.warn(\"An Attribute may not itself contain an attribute as a value. Assuming you forgot to call value.\");\n result = this.checkValue(value.value);\n }\n let ok = false;\n if (this.SUPPORTED_VALUE_TYPES.indexOf(typeof result) > -1 || result instanceof Date) {\n ok = true;\n }\n if (!ok) {\n throw new Error(\"Attribute values of this type are not allowed: \" + typeof value);\n }\n return result;\n }\n\n}\n\nClientAttribute.LOGGER = LoggerFactory.getLogger('ClientAttribute');\nClientAttribute.SUPPORTED_VALUE_TYPES = [\"string\", \"number\", \"boolean\"];\nClientAttribute.clientAttributeInstanceCount = 0;\n","import ClientAttribute from './clientAttribute'\nimport ClientPresentationModel from './clientPresentationModel'\n\nexport default class ClientDolphin {\n\n constructor() {\n }\n\n setClientConnector(clientConnector) {\n this.clientConnector = clientConnector;\n }\n\n getClientConnector() {\n return this.clientConnector;\n }\n\n send(command, onFinished) {\n this.clientConnector.send(command, onFinished);\n }\n\n attribute(propertyName, qualifier, value) {\n return new ClientAttribute(propertyName, qualifier, value);\n }\n\n presentationModel(id, type, ...attributes) {\n const model = new ClientPresentationModel(id, type);\n if (attributes && attributes.length > 0) {\n attributes.forEach((attribute) => {\n model.addAttribute(attribute);\n });\n }\n this.getClientModelStore().add(model, true);\n return model;\n }\n\n setClientModelStore(clientModelStore) {\n this.clientModelStore = clientModelStore;\n }\n\n getClientModelStore() {\n return this.clientModelStore;\n }\n\n listPresentationModelIds() {\n return this.getClientModelStore().listPresentationModelIds();\n }\n\n listPresentationModels() {\n return this.getClientModelStore().listPresentationModels();\n }\n\n findAllPresentationModelByType(presentationModelType) {\n return this.getClientModelStore().findAllPresentationModelByType(presentationModelType);\n }\n\n getAt(id) {\n return this.findPresentationModelById(id);\n }\n\n findPresentationModelById(id) {\n return this.getClientModelStore().findPresentationModelById(id);\n }\n\n deletePresentationModel(modelToDelete) {\n this.getClientModelStore().deletePresentationModel(modelToDelete, true);\n }\n\n updatePresentationModelQualifier(presentationModel) {\n presentationModel.getAttributes().forEach(sourceAttribute => {\n this.updateAttributeQualifier(sourceAttribute);\n });\n }\n\n updateAttributeQualifier(sourceAttribute) {\n if (!sourceAttribute.getQualifier())\n return;\n const attributes = this.getClientModelStore().findAllAttributesByQualifier(sourceAttribute.getQualifier());\n attributes.forEach(targetAttribute => {\n targetAttribute.setValue(sourceAttribute.getValue()); // should always have the same value\n });\n }\n\n startPushListening(pushCommand, releaseCommand) {\n this.clientConnector.setPushListener(pushCommand);\n this.clientConnector.setReleaseCommand(releaseCommand);\n this.clientConnector.setPushEnabled(true);\n\n setTimeout(() => {\n this.clientConnector.listen();\n }, 0);\n }\n\n stopPushListening() {\n this.clientConnector.setPushEnabled(false);\n }\n}","\nexport default class Attribute {\n}\n\nAttribute.QUALIFIER_PROPERTY = \"qualifier\";\nAttribute.VALUE = \"value\";\n","import CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\n\nexport default class CommandFactory {\n\n static createCreateContextCommand() {\n return new CreateContextCommand();\n }\n\n static createCreateControllerCommand(controllerName, parentControllerId) {\n const command = new CreateControllerCommand();\n command.init(controllerName, parentControllerId);\n return command;\n }\n\n static createCallActionCommand(controllerid, actionName, params) {\n const command = new CallActionCommand();\n command.init(controllerid, actionName, params);\n return command;\n }\n\n static createDestroyControllerCommand(controllerId) {\n const command = new DestroyControllerCommand();\n command.init(controllerId);\n return command;\n }\n\n static createDestroyContextCommand() {\n return new DestroyContextCommand();\n }\n\n static createStartLongPollCommand() {\n return new StartLongPollCommand();\n }\n\n static createInterruptLongPollCommand() {\n return new InterruptLongPollCommand();\n }\n\n static createCreatePresentationModelCommand(presentationModel) {\n const command = new CreatePresentationModelCommand();\n command.init(presentationModel);\n return command;\n }\n\n static createDeletePresentationModelCommand(pmId) {\n const command = new DeletePresentationModelCommand();\n command.init(pmId);\n return command;\n }\n\n static createPresentationModelDeletedCommand(pmId) {\n let command = new PresentationModelDeletedCommand();\n command.init(pmId);\n return command;\n }\n\n static createValueChangedCommand(attributeId, newValue) {\n let command = new ValueChangedCommand();\n command.init(attributeId, newValue);\n return command;\n }\n\n static createChangeAttributeMetadataCommand(attributeId, metadataName, value) {\n let command = new ChangeAttributeMetadataCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n\n static createAttributeMetadataChangedCommand(attributeId, metadataName, value) {\n let command = new AttributeMetadataChangedCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n}","import Attribute from './attribute'\nimport EventBus from './eventBus'\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientModelStore {\n\n constructor(clientDolphin) {\n\n this.clientDolphin = clientDolphin;\n this.presentationModels = new Map();\n this.presentationModelsPerType = new Map();\n this.attributesPerId = new Map();\n this.attributesPerQualifier = new Map();\n this.modelStoreChangeBus = new EventBus();\n }\n\n getClientDolphin() {\n return this.clientDolphin;\n }\n\n registerAttribute(attribute) {\n this.addAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.addAttributeByQualifier(attribute);\n }\n // whenever an attribute changes its value, the server needs to be notified\n // and all other attributes with the same qualifier are given the same value\n attribute.onValueChange((evt) => {\n if(evt.newValue !== evt.oldValue && evt.sendToServer === true) {\n const command = CommandFactory.createValueChangedCommand(attribute.id, evt.newValue);\n this.clientDolphin.getClientConnector().send(command, null);\n }\n\n if (attribute.getQualifier()) {\n let attrs = this.findAttributesByFilter((attr) => {\n return attr !== attribute && attr.getQualifier() === attribute.getQualifier();\n });\n attrs.forEach((attr) => {\n attr.setValue(attribute.getValue());\n });\n }\n\n });\n attribute.onQualifierChange((evt) => {\n this.clientDolphin.getClientConnector().send(CommandFactory.createChangeAttributeMetadataCommand(attribute.id, Attribute.QUALIFIER_PROPERTY, evt.newValue), null);\n });\n }\n\n add(model, sendToServer = true) {\n if (!model) {\n return false;\n }\n if (this.presentationModels.has(model.id)) {\n ClientModelStore.LOGGER.error(\"There already is a PM with id \" + model.id);\n }\n let added = false;\n if (!this.presentationModels.has(model.id)) {\n this.presentationModels.set(model.id, model);\n this.addPresentationModelByType(model);\n\n if(sendToServer) {\n let connector = this.clientDolphin.getClientConnector();\n connector.send(CommandFactory.createCreatePresentationModelCommand(model), null);\n }\n\n model.getAttributes().forEach(attribute => {\n this.registerAttribute(attribute);\n });\n this.modelStoreChangeBus.trigger({ 'eventType': ADDED_TYPE, 'clientPresentationModel': model });\n added = true;\n }\n return added;\n }\n\n remove(model) {\n if (!model) {\n return false;\n }\n let removed = false;\n if (this.presentationModels.has(model.id)) {\n this.removePresentationModelByType(model);\n this.presentationModels.delete(model.id);\n model.getAttributes().forEach((attribute) => {\n this.removeAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.removeAttributeByQualifier(attribute);\n }\n });\n this.modelStoreChangeBus.trigger({ 'eventType': REMOVED_TYPE, 'clientPresentationModel': model });\n removed = true;\n }\n return removed;\n }\n\n findAttributesByFilter(filter) {\n let matches = [];\n this.presentationModels.forEach((model) => {\n model.getAttributes().forEach((attr) => {\n if (filter(attr)) {\n matches.push(attr);\n }\n });\n });\n return matches;\n }\n\n addPresentationModelByType(model) {\n if (!model) {\n return;\n }\n let type = model.presentationModelType;\n if (!type) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(type);\n if (!presentationModels) {\n presentationModels = [];\n this.presentationModelsPerType.set(type, presentationModels);\n }\n if (!(presentationModels.indexOf(model) > -1)) {\n presentationModels.push(model);\n }\n }\n\n removePresentationModelByType(model) {\n if (!model || !(model.presentationModelType)) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(model.presentationModelType);\n if (!presentationModels) {\n return;\n }\n if (presentationModels.length > -1) {\n presentationModels.splice(presentationModels.indexOf(model), 1);\n }\n if (presentationModels.length === 0) {\n this.presentationModelsPerType.delete(model.presentationModelType);\n }\n }\n\n listPresentationModelIds() {\n let result = [];\n let iter = this.presentationModels.keys();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n listPresentationModels() {\n let result = [];\n let iter = this.presentationModels.values();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n findPresentationModelById(id) {\n return this.presentationModels.get(id);\n }\n\n findAllPresentationModelByType(type) {\n if (!type || !this.presentationModelsPerType.has(type)) {\n return [];\n }\n return this.presentationModelsPerType.get(type).slice(0); // slice is used to clone the array\n }\n\n deletePresentationModel(model, notify) {\n if (!model) {\n return;\n }\n if (this.containsPresentationModel(model.id)) {\n this.remove(model);\n if (!notify || model.clientSideOnly) {\n return;\n }\n this.clientDolphin.getClientConnector().send(CommandFactory.createPresentationModelDeletedCommand(model.id), null);\n }\n }\n\n containsPresentationModel(id) {\n return this.presentationModels.has(id);\n }\n\n addAttributeById(attribute) {\n if (!attribute || this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.set(attribute.id, attribute);\n }\n\n removeAttributeById(attribute) {\n if (!attribute || !this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.delete(attribute.id);\n }\n\n findAttributeById(id) {\n return this.attributesPerId.get(id);\n }\n\n addAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n attributes = [];\n this.attributesPerQualifier.set(attribute.getQualifier(), attributes);\n }\n if (!(attributes.indexOf(attribute) > -1)) {\n attributes.push(attribute);\n }\n }\n\n removeAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n return;\n }\n if (attributes.length > -1) {\n attributes.splice(attributes.indexOf(attribute), 1);\n }\n if (attributes.length === 0) {\n this.attributesPerQualifier.delete(attribute.getQualifier());\n }\n }\n\n findAllAttributesByQualifier(qualifier) {\n if (!qualifier || !this.attributesPerQualifier.has(qualifier)) {\n return [];\n }\n return this.attributesPerQualifier.get(qualifier).slice(0); // slice is used to clone the array\n }\n\n onModelStoreChange(eventHandler) {\n this.modelStoreChangeBus.onEvent(eventHandler);\n }\n\n onModelStoreChangeForType(presentationModelType, eventHandler) {\n this.modelStoreChangeBus.onEvent(pmStoreEvent => {\n if (pmStoreEvent.clientPresentationModel.presentationModelType == presentationModelType) {\n eventHandler(pmStoreEvent);\n }\n });\n }\n}\n\nClientModelStore.LOGGER = LoggerFactory.getLogger('ClientModelStore');\n\n","export default class NoTransmitter {\n\n transmit(commands, onDone) {\n // do nothing special\n onDone([]);\n }\n\n signal() {\n // do nothing\n }\n\n reset() {\n // do nothing\n }\n}","import ClientConnector from './clientConnector'\nimport ClientDolphin from './clientDolphin'\nimport ClientModelStore from './clientModelStore'\nimport NoTransmitter from './noTransmitter'\nimport { LoggerFactory } from '../logging';\n\n\nclass DolphinBuilder {\n\n constructor() {\n this.slackMS = 300;\n this.maxBatchSize = 50;\n this.transmitter = null;\n }\n\n withSlackMS(slackMS) {\n this.slackMS = slackMS;\n return this;\n }\n\n withMaxBatchSize(maxBatchSize) {\n this.maxBatchSize = maxBatchSize;\n return this;\n }\n\n withTransmitter(transmitter) {\n this.transmitter = transmitter;\n return this;\n }\n\n build() {\n const clientDolphin = new ClientDolphin();\n let transmitter;\n if (this.transmitter) {\n transmitter = this.transmitter;\n } else {\n transmitter = new NoTransmitter();\n }\n clientDolphin.setClientConnector(new ClientConnector(transmitter, clientDolphin, this.slackMS, this.maxBatchSize));\n clientDolphin.setClientModelStore(new ClientModelStore(clientDolphin));\n DolphinBuilder.LOGGER.debug(\"Remoting client initialized\", clientDolphin, transmitter);\n return clientDolphin;\n }\n}\n\nDolphinBuilder.LOGGER = LoggerFactory.getLogger('DolphinBuilder');\n\nconst dolphinBuilder = new DolphinBuilder();\n\nexport { dolphinBuilder }","import {exists, checkMethod, checkParam} from '../utils';\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants';\n\n\nconst DOLPHIN_BEAN = '@@@ R_BEAN @@@';\nconst ACTION_CALL_BEAN = '@@@ CONTROLLER_ACTION_CALL_BEAN @@@';\nconst HIGHLANDER_BEAN = '@@@ HIGHLANDER_BEAN @@@';\nconst DOLPHIN_LIST_SPLICE = '@R:LS@';\nconst SOURCE_SYSTEM = '@@@ SOURCE_SYSTEM @@@';\nconst SOURCE_SYSTEM_CLIENT = 'client';\nconst SOURCE_SYSTEM_SERVER = 'server';\n\nexport default class Connector{\n\n constructor(url, dolphin, classRepository, config) {\n checkMethod('Connector(url, dolphin, classRepository, config)');\n checkParam(url, 'url');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n\n let self = this;\n this.dolphin = dolphin;\n this.config = config;\n this.classRepository = classRepository;\n this.highlanderPMResolver = function() {};\n this.highlanderPMPromise = new Promise((resolve) => {\n self.highlanderPMResolver = resolve;\n });\n\n dolphin.getClientModelStore().onModelStoreChange((event) => {\n let model = event.clientPresentationModel;\n let sourceSystem = model.findAttributeByPropertyName(SOURCE_SYSTEM);\n if (exists(sourceSystem) && sourceSystem.value === SOURCE_SYSTEM_SERVER) {\n if (event.eventType === ADDED_TYPE) {\n self.onModelAdded(model);\n } else if (event.eventType === REMOVED_TYPE) {\n self.onModelRemoved(model);\n }\n }\n });\n }\n connect() {\n let that = this;\n that.dolphin.startPushListening(CommandFactory.createStartLongPollCommand(), CommandFactory.createInterruptLongPollCommand());\n }\n\n onModelAdded(model) {\n checkMethod('Connector.onModelAdded(model)');\n checkParam(model, 'model');\n\n var type = model.presentationModelType;\n switch (type) {\n case ACTION_CALL_BEAN:\n // ignore\n break;\n case DOLPHIN_BEAN:\n this.classRepository.registerClass(model);\n break;\n case HIGHLANDER_BEAN:\n this.highlanderPMResolver(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n this.classRepository.spliceListEntry(model);\n this.dolphin.deletePresentationModel(model);\n break;\n default:\n this.classRepository.load(model);\n break;\n }\n }\n\n onModelRemoved(model) {\n checkMethod('Connector.onModelRemoved(model)');\n checkParam(model, 'model');\n let type = model.presentationModelType;\n switch (type) {\n case DOLPHIN_BEAN:\n this.classRepository.unregisterClass(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n // do nothing\n break;\n default:\n this.classRepository.unload(model);\n break;\n }\n }\n\n invoke(command) {\n checkMethod('Connector.invoke(command)');\n checkParam(command, 'command');\n\n var dolphin = this.dolphin;\n return new Promise((resolve, reject) => {\n dolphin.send(command, {\n onFinished: (params) => {\n resolve(params);\n },\n onError: (reason) => {\n reject(reason);\n } \n });\n });\n }\n\n getHighlanderPM() {\n return this.highlanderPMPromise;\n }\n}\n\nexport { SOURCE_SYSTEM, SOURCE_SYSTEM_CLIENT, SOURCE_SYSTEM_SERVER, ACTION_CALL_BEAN };\n","import {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class BeanManager {\n\n constructor(classRepository) {\n checkMethod('BeanManager(classRepository)');\n checkParam(classRepository, 'classRepository');\n\n this.classRepository = classRepository;\n this.addedHandlers = new Map();\n this.removedHandlers = new Map();\n this.updatedHandlers = new Map();\n this.arrayUpdatedHandlers = new Map();\n this.allAddedHandlers = [];\n this.allRemovedHandlers = [];\n this.allUpdatedHandlers = [];\n this.allArrayUpdatedHandlers = [];\n\n this._handleBeanAdded = this._handleBeanAdded.bind(this);\n this._handleBeanRemoved = this._handleBeanRemoved.bind(this);\n this._handleBeanUpdate = this._handleBeanUpdate.bind(this);\n this._handleArrayUpdate = this._handleArrayUpdate.bind(this);\n\n this.classRepository.onBeanAdded(this._handleBeanAdded);\n this.classRepository.onBeanRemoved(this._handleBeanRemoved);\n this.classRepository.onBeanUpdate(this._handleBeanUpdate);\n this.classRepository.onArrayUpdate(this._handleArrayUpdate);\n }\n\n _handleBeanAdded(type, bean) {\n const handlerList = this.addedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanAdded-handler for type', type, e);\n }\n });\n }\n this.allAddedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanAdded-handler', e);\n }\n });\n }\n\n _handleBeanRemoved(type, bean) {\n const handlerList = this.removedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler for type', type, e);\n }\n });\n }\n this.allRemovedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanRemoved-handler', e);\n }\n });\n }\n\n _handleArrayUpdate(type, bean, propertyName, index, count, newElements) {\n const handlerList = this.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler for type', type, e);\n }\n });\n }\n this.allArrayUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onArrayUpdate-handler', e);\n }\n });\n }\n\n _handleBeanUpdate(type, bean, propertyName, newValue, oldValue) {\n const handlerList = this.updatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler for type', type, e);\n }\n });\n }\n this.allUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanUpdate-handler', e);\n }\n });\n }\n\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('BeanManager.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n return this.classRepository.notifyBeanChange(bean, propertyName, newValue);\n }\n\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('BeanManager.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n this.classRepository.notifyArrayChange(bean, propertyName, index, count, removedElements);\n }\n\n\n isManaged(bean) {\n checkMethod('BeanManager.isManaged(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.isManaged() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n create(type) {\n checkMethod('BeanManager.create(type)');\n checkParam(type, 'type');\n\n // TODO: Implement dolphin.create() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n add(type, bean) {\n checkMethod('BeanManager.add(type, bean)');\n checkParam(type, 'type');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.add() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n addAll(type, collection) {\n checkMethod('BeanManager.addAll(type, collection)');\n checkParam(type, 'type');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.addAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n remove(bean) {\n checkMethod('BeanManager.remove(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.remove() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeAll(collection) {\n checkMethod('BeanManager.removeAll(collection)');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.removeAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeIf(predicate) {\n checkMethod('BeanManager.removeIf(predicate)');\n checkParam(predicate, 'predicate');\n\n // TODO: Implement dolphin.removeIf() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n onAdded(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onAdded(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allAddedHandlers = this.allAddedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allAddedHandlers = self.allAddedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onAdded(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.addedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.addedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.addedHandlers.get(type);\n if (exists(handlerList)) { \n self.addedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onRemoved(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onRemoved(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allRemovedHandlers = this.allRemovedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allRemovedHandlers = self.allRemovedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onRemoved(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.removedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.removedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.removedHandlers.get(type);\n if (exists(handlerList)) {\n self.removedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onBeanUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onBeanUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allUpdatedHandlers = this.allUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allUpdatedHandlers = self.allUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onBeanUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.updatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.updatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.updatedHandlers.get(type);\n if (exists(handlerList)) {\n self.updatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n onArrayUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onArrayUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allArrayUpdatedHandlers = this.allArrayUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allArrayUpdatedHandlers = self.allArrayUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onArrayUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.arrayUpdatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.arrayUpdatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n self.arrayUpdatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n}\n\nBeanManager.LOGGER = LoggerFactory.getLogger('BeanManager');\n","import * as consts from './constants';\nimport {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass ClassRepository {\n\n constructor(dolphin) {\n checkMethod('ClassRepository(dolphin)');\n checkParam(dolphin, 'dolphin');\n\n this.dolphin = dolphin;\n this.classes = new Map();\n this.beanFromDolphin = new Map();\n this.beanToDolphin = new Map();\n this.classInfos = new Map();\n this.beanAddedHandlers = [];\n this.beanRemovedHandlers = [];\n this.propertyUpdateHandlers = [];\n this.arrayUpdateHandlers = [];\n this.blocked = null;\n }\n\n sendListSplice(classRepository, modelId, propertyName, from, to, newElements) {\n let dolphin = classRepository.dolphin;\n let model = dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = classRepository.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n if (exists(type)) {\n\n let attributes = [\n dolphin.attribute('@@@ SOURCE_SYSTEM @@@', null, 'client'),\n dolphin.attribute('source', null, modelId),\n dolphin.attribute('attribute', null, propertyName),\n dolphin.attribute('from', null, from),\n dolphin.attribute('to', null, to),\n dolphin.attribute('count', null, newElements.length)\n ];\n newElements.forEach(function (element, index) {\n attributes.push(dolphin.attribute(index.toString(), null, ClassRepository.toDolphin(classRepository, type, element)));\n });\n dolphin.presentationModel.apply(dolphin, [null, '@DP:LS@'].concat(attributes));\n }\n }\n }\n\n validateList(classRepository, type, bean, propertyName) {\n let list = bean[propertyName];\n if (!exists(list)) {\n classRepository.propertyUpdateHandlers.forEach(function (handler) {\n try {\n handler(type, bean, propertyName, [], undefined);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n }\n\n block(bean, propertyName) {\n if (exists(this.blocked)) {\n throw new Error('Trying to create a block while another block exists');\n }\n this.blocked = {\n bean: bean,\n propertyName: propertyName\n };\n }\n\n isBlocked(bean, propertyName) {\n return exists(this.blocked) && this.blocked.bean === bean && this.blocked.propertyName === propertyName;\n }\n\n unblock() {\n this.blocked = null;\n }\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('ClassRepository.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n let modelId = this.beanToDolphin.get(bean);\n if (exists(modelId)) {\n let model = this.dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = this.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n let attribute = model.findAttributeByPropertyName(propertyName);\n if (exists(type) && exists(attribute)) {\n let oldValue = attribute.getValue();\n attribute.setValue(ClassRepository.toDolphin(this, type, newValue));\n return ClassRepository.fromDolphin(this, type, oldValue);\n }\n }\n }\n }\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('ClassRepository.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n if (this.isBlocked(bean, propertyName)) {\n return;\n }\n let modelId = this.beanToDolphin.get(bean);\n let array = bean[propertyName];\n if (exists(modelId) && exists(array)) {\n let removedElementsCount = Array.isArray(removedElements) ? removedElements.length : 0;\n this.sendListSplice(this, modelId, propertyName, index, index + removedElementsCount, array.slice(index, index + count));\n }\n }\n\n onBeanAdded(handler) {\n checkMethod('ClassRepository.onBeanAdded(handler)');\n checkParam(handler, 'handler');\n this.beanAddedHandlers.push(handler);\n }\n\n onBeanRemoved(handler) {\n checkMethod('ClassRepository.onBeanRemoved(handler)');\n checkParam(handler, 'handler');\n this.beanRemovedHandlers.push(handler);\n }\n\n onBeanUpdate(handler) {\n checkMethod('ClassRepository.onBeanUpdate(handler)');\n checkParam(handler, 'handler');\n this.propertyUpdateHandlers.push(handler);\n }\n\n onArrayUpdate(handler) {\n checkMethod('ClassRepository.onArrayUpdate(handler)');\n checkParam(handler, 'handler');\n this.arrayUpdateHandlers.push(handler);\n }\n\n registerClass(model) {\n checkMethod('ClassRepository.registerClass(model)');\n checkParam(model, 'model');\n\n if (this.classes.has(model.id)) {\n return;\n }\n\n let classInfo = {};\n model.attributes.filter(function (attribute) {\n return attribute.propertyName.search(/^@/) < 0;\n }).forEach(function (attribute) {\n classInfo[attribute.propertyName] = attribute.value;\n });\n this.classes.set(model.id, classInfo);\n }\n\n unregisterClass(model) {\n checkMethod('ClassRepository.unregisterClass(model)');\n checkParam(model, 'model');\n this.classes['delete'](model.id);\n }\n\n load(model) {\n checkMethod('ClassRepository.load(model)');\n checkParam(model, 'model');\n\n let self = this;\n let classInfo = this.classes.get(model.presentationModelType);\n let bean = {};\n model.attributes.filter(function (attribute) {\n return (attribute.propertyName.search(/^@/) < 0);\n }).forEach(function (attribute) {\n bean[attribute.propertyName] = null;\n attribute.onValueChange(function (event) {\n if (event.oldValue !== event.newValue) {\n let oldValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.oldValue);\n let newValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.newValue);\n self.propertyUpdateHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean, attribute.propertyName, newValue, oldValue);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n });\n });\n this.beanFromDolphin.set(model.id, bean);\n this.beanToDolphin.set(bean, model.id);\n this.classInfos.set(model.id, classInfo);\n this.beanAddedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanAdded-handler', e);\n }\n });\n return bean;\n }\n\n unload(model) {\n checkMethod('ClassRepository.unload(model)');\n checkParam(model, 'model');\n\n let bean = this.beanFromDolphin.get(model.id);\n this.beanFromDolphin['delete'](model.id);\n this.beanToDolphin['delete'](bean);\n this.classInfos['delete'](model.id);\n if (exists(bean)) {\n this.beanRemovedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler', e);\n }\n });\n }\n return bean;\n }\n\n spliceListEntry(model) {\n checkMethod('ClassRepository.spliceListEntry(model)');\n checkParam(model, 'model');\n\n let source = model.findAttributeByPropertyName('source');\n let attribute = model.findAttributeByPropertyName('attribute');\n let from = model.findAttributeByPropertyName('from');\n let to = model.findAttributeByPropertyName('to');\n let count = model.findAttributeByPropertyName('count');\n\n if (exists(source) && exists(attribute) && exists(from) && exists(to) && exists(count)) {\n let classInfo = this.classInfos.get(source.value);\n let bean = this.beanFromDolphin.get(source.value);\n if (exists(bean) && exists(classInfo)) {\n let type = model.presentationModelType;\n //var entry = fromDolphin(this, classInfo[attribute.value], element.value);\n this.validateList(this, type, bean, attribute.value);\n let newElements = [],\n element = null;\n for (let i = 0; i < count.value; i++) {\n element = model.findAttributeByPropertyName(i.toString());\n if (!exists(element)) {\n throw new Error(\"Invalid list modification update received\");\n }\n newElements.push(ClassRepository.fromDolphin(this, classInfo[attribute.value], element.value));\n }\n try {\n this.block(bean, attribute.value);\n this.arrayUpdateHandlers.forEach((handler) => {\n try {\n handler(type, bean, attribute.value, from.value, to.value - from.value, newElements);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler', e);\n }\n });\n } finally {\n this.unblock();\n }\n } else {\n throw new Error(\"Invalid list modification update received. Source bean unknown.\");\n }\n } else {\n throw new Error(\"Invalid list modification update received\");\n }\n }\n\n mapParamToDolphin(param) {\n if (!exists(param)) {\n return param;\n }\n let type = typeof param;\n if (type === 'object') {\n if (param instanceof Date) {\n return param.toISOString();\n } else {\n let value = this.beanToDolphin.get(param);\n if (exists(value)) {\n return value;\n }\n throw new TypeError(\"Only managed remoting beans can be used\");\n }\n }\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return param;\n }\n throw new TypeError(\"Only managed remoting beans and primitive types can be used\");\n }\n\n mapDolphinToBean(value) {\n return ClassRepository.fromDolphin(this, consts.REMOTING_BEAN, value);\n }\n}\n\nClassRepository.fixType = function(type, value) {\n switch (type) {\n case consts.BYTE:\n case consts.SHORT:\n case consts.INT:\n case consts.LONG:\n return parseInt(value);\n case consts.FLOAT:\n case consts.DOUBLE:\n return parseFloat(value);\n case consts.BOOLEAN:\n return 'true' === String(value).toLowerCase();\n case consts.STRING:\n case consts.ENUM:\n return String(value);\n default:\n return value;\n }\n};\n\nClassRepository.fromDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanFromDolphin.get(String(value));\n case consts.DATE:\n return new Date(String(value));\n case consts.CALENDAR:\n return new Date(String(value));\n case consts.LOCAL_DATE_FIELD_TYPE:\n return new Date(String(value));\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.toDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanToDolphin.get(value);\n case consts.DATE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.CALENDAR:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.LOGGER = LoggerFactory.getLogger('ClassRepository');\n\nexport default ClassRepository;\n","import {checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class ControllerProxy {\n\n constructor(controllerId, model, manager){\n checkMethod('ControllerProxy(controllerId, model, manager)');\n checkParam(controllerId, 'controllerId');\n checkParam(model, 'model');\n checkParam(manager, 'manager');\n\n this.controllerId = controllerId;\n this.model = model;\n this.manager = manager;\n this.destroyed = false;\n this.onDestroyedHandlers = new Set();\n }\n\n getModel() {\n return this.model;\n }\n\n getId() {\n return this.controllerId;\n }\n\n invoke(name, params){\n checkMethod('ControllerProxy.invoke(name, params)');\n checkParam(name, 'name');\n\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n return this.manager.invokeAction(this.controllerId, name, params);\n }\n\n createController(name) {\n return this.manager._createController(name, this.getId());\n }\n\n destroy(){\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n this.destroyed = true;\n this.onDestroyedHandlers.forEach((handler) => {\n try {\n handler(this);\n } catch(e) {\n ControllerProxy.LOGGER.error('An exception occurred while calling an onDestroyed-handler', e);\n }\n }, this);\n return this.manager.destroyController(this);\n }\n\n onDestroyed(handler){\n checkMethod('ControllerProxy.onDestroyed(handler)');\n checkParam(handler, 'handler');\n\n let self = this;\n this.onDestroyedHandlers.add(handler);\n return {\n unsubscribe: () => {\n self.onDestroyedHandlers.delete(handler);\n }\n };\n }\n}\n\nControllerProxy.LOGGER = LoggerFactory.getLogger('ControllerProxy');\n","import {exists, checkMethod, checkParam} from '../utils';\n\nimport ControllerProxy from './controllerProxy.js';\n\nimport CommandFactory from './commands/commandFactory.js';\n\n\nimport { SOURCE_SYSTEM } from './connector.js';\nimport { SOURCE_SYSTEM_CLIENT } from './connector.js';\nimport { ACTION_CALL_BEAN } from './connector.js';\n\nconst CONTROLLER_ID = 'controllerId';\nconst MODEL = 'model';\nconst ERROR_CODE = 'errorCode';\n\nexport default class ControllerManager {\n\n constructor(dolphin, classRepository, connector) {\n checkMethod('ControllerManager(dolphin, classRepository, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.classRepository = classRepository;\n this.connector = connector;\n this.controllers = new Set();\n }\n\n createController(name) {\n return this._createController(name, null);\n }\n\n _createController(name, parentControllerId) {\n checkMethod('ControllerManager.createController(name)');\n checkParam(name, 'name');\n\n let self = this;\n\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n const MSG_ERROR_CREATING_CONTROLLER = 'Error creating controller: ';\n\n self.connector.invoke(CommandFactory.createCreateControllerCommand(name, parentControllerId)).then(() => {\n let controllerId;\n\n self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).getValue(),\n 'Could not get an controllerID from highlanderPM.'\n ).then((ctrlId) => {\n controllerId = ctrlId;\n return self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(MODEL).getValue(),\n 'Could not get an modelID from highlanderPM.'\n );\n })\n .then((modelId) => {\n return self.getValueWithRetry(\n () => self.classRepository.mapDolphinToBean(modelId),\n 'Could not get an model from classRepository for ID: ' + modelId\n );\n })\n .then((model) => {\n try {\n const controller = new ControllerProxy(controllerId, model, self);\n self.controllers.add(controller);\n resolve(controller);\n } catch (e) {\n reject(MSG_ERROR_CREATING_CONTROLLER + e);\n }\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n });\n });\n }\n\n\n getValueWithRetry(getValueCall, errorMessage) {\n return new Promise((resolve, reject) => {\n const RETRIES = 1000;\n const RETRY_TIME = 5;\n let i = 0;\n const intervalID = setInterval(() => {\n let value = getValueCall();\n \n if (!(typeof value !== 'undefined' && value !== null)) {\n i++;\n if (i >= RETRIES) {\n clearInterval(intervalID);\n reject(errorMessage + \" after \" + i + \" retries.\");\n }\n } else {\n clearInterval(intervalID);\n resolve(value);\n }\n }, RETRY_TIME);\n });\n }\n\n invokeAction(controllerId, actionName, params) {\n checkMethod('ControllerManager.invokeAction(controllerId, actionName, params)');\n checkParam(controllerId, 'controllerId');\n checkParam(actionName, 'actionName');\n\n let self = this;\n return new Promise((resolve, reject) => {\n\n let attributes = [\n self.dolphin.attribute(SOURCE_SYSTEM, null, SOURCE_SYSTEM_CLIENT),\n self.dolphin.attribute(ERROR_CODE)\n ];\n\n let pm = self.dolphin.presentationModel.apply(self.dolphin, [null, ACTION_CALL_BEAN].concat(attributes));\n\n let actionParams = [];\n if (exists(params)) {\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n let value = self.classRepository.mapParamToDolphin(params[param]);\n actionParams.push({\n name: param,\n value: value\n });\n }\n }\n }\n\n self.connector.invoke(CommandFactory.createCallActionCommand(controllerId, actionName, actionParams)).then(() => {\n let isError = pm.findAttributeByPropertyName(ERROR_CODE).getValue();\n if (isError) {\n reject(new Error(\"Server side ControllerAction \" + actionName + \" caused an error. Please see server log for details.\"));\n } else {\n resolve();\n }\n self.dolphin.deletePresentationModel(pm);\n }).catch(reject);\n });\n }\n\n destroyController(controller) {\n checkMethod('ControllerManager.destroyController(controller)');\n checkParam(controller, 'controller');\n\n let self = this;\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n self.controllers.delete(controller);\n highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).setValue(controller.controllerId);\n self.connector.invoke(CommandFactory.createDestroyControllerCommand(controller.getId())).then(resolve).catch(reject);\n });\n });\n }\n\n destroy() {\n let controllersCopy = this.controllers;\n let promises = [];\n this.controllers = new Set();\n controllersCopy.forEach((controller) => {\n try {\n promises.push(controller.destroy());\n } catch (e) {\n // ignore\n }\n });\n return Promise.all(promises);\n }\n}\n","import Emitter from 'emitter-component';\nimport CommandFactory from './commands/commandFactory';\nimport {exists, checkMethod, checkParam} from '../utils';\n\nexport default class ClientContext{\n\n constructor(dolphin, beanManager, controllerManager, connector){\n checkMethod('ClientContext(dolphin, beanManager, controllerManager, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(beanManager, 'beanManager');\n checkParam(controllerManager, 'controllerManager');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.beanManager = beanManager;\n this._controllerManager = controllerManager;\n this._connector = connector;\n this.connectionPromise = null;\n this.isConnected = false;\n }\n\n connect(){\n let self = this;\n this.connectionPromise = new Promise((resolve, reject) => {\n self._connector.connect();\n self._connector.invoke(CommandFactory.createCreateContextCommand()).then(() => {\n self.isConnected = true;\n resolve();\n }).catch(reject);\n });\n return this.connectionPromise;\n }\n\n onConnect(){\n if(exists(this.connectionPromise)){\n if(!this.isConnected){\n return this.connectionPromise;\n }else{\n return new Promise((resolve) => {\n resolve();\n });\n }\n }else{\n return this.connect();\n }\n }\n\n createController(name){\n checkMethod('ClientContext.createController(name)');\n checkParam(name, 'name');\n\n return this._controllerManager.createController(name);\n }\n\n disconnect(){\n let self = this;\n this.dolphin.stopPushListening();\n return new Promise((resolve) => {\n self._controllerManager.destroy().then(() => {\n self._connector.invoke(CommandFactory.createDestroyContextCommand());\n self.dolphin = null;\n self.beanManager = null;\n self._controllerManager = null;\n self._connector = null;\n resolve();\n });\n });\n }\n}\n\nEmitter(ClientContext.prototype);","export class DolphinRemotingError extends Error {\n constructor(message = 'Remoting Error', detail) {\n super(message);\n this.detail = detail || undefined;\n }\n}\n\nexport class DolphinSessionError extends Error {\n constructor(message = 'Session Error') {\n super(message);\n }\n}\n\nexport class HttpResponseError extends Error {\n constructor(message = 'Http Response Error') {\n super(message);\n }\n}\n\nexport class HttpNetworkError extends Error {\n constructor(message = 'Http Network Error') {\n super(message);\n }\n}","import { LoggerFactory } from '../logging';\n\nexport default class RemotingErrorHandler {\n\n onError(error) {\n RemotingErrorHandler.LOGGER.error(error);\n }\n\n}\n\nRemotingErrorHandler.LOGGER = LoggerFactory.getLogger('RemotingErrorHandler');","import Emitter from 'emitter-component';\n\n\nimport { exists } from '../utils';\nimport { DolphinRemotingError, DolphinSessionError } from './errors';\nimport Codec from './commands/codec';\nimport RemotingErrorHandler from './remotingErrorHandler';\nimport { LoggerFactory, LogLevel } from '../logging';\nimport {VALUE_CHANGED_COMMAND_ID, START_LONG_POLL_COMMAND_ID} from './commands/commandConstants';\n\nconst DOLPHIN_SESSION_TIMEOUT = 408;\n\nexport default class PlatformHttpTransmitter {\n\n constructor(url, config, client) {\n this.url = url;\n this.config = config;\n this.client = client;\n this.headersInfo = exists(config) ? config.headersInfo : null;\n this.failed_attempt = 0;\n\n const connectionConfig = this._connectionConfig();\n this.maxRetry = exists(connectionConfig) && exists(connectionConfig.maxRetry)?connectionConfig.maxRetry: 3;\n this.timeout = exists(connectionConfig) && exists(connectionConfig.timeout)?connectionConfig.timeout: 5000;\n }\n\n _connectionConfig() {\n return exists(this.config) ? this.config.connection : null;\n }\n\n _handleError(reject, error) {\n const connectionConfig = this._connectionConfig();\n let errorHandlers = exists(connectionConfig) && exists(connectionConfig.errorHandlers)?connectionConfig.errorHandlers: [new RemotingErrorHandler()];\n errorHandlers.forEach(function(handler) {\n handler.onError(error);\n });\n reject(error);\n }\n\n _send(commands) {\n const self = this;\n return new Promise((resolve, reject) => {\n if (this.client) {\n const encodedCommands = Codec.encode(commands);\n\n if (PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.DEBUG) && !PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.TRACE)) {\n for (let i = 0; i < commands.length; i++) {\n let command = commands[i];\n if (command.id === VALUE_CHANGED_COMMAND_ID) {\n PlatformHttpTransmitter.LOGGER.debug('send', command, encodedCommands);\n }\n }\n }\n\n const useWorker = commands.length === 1 && commands[0].id === START_LONG_POLL_COMMAND_ID;\n const httpClient = this.client.getService('HttpClient');\n if (httpClient && self.failed_attempt <= self.maxRetry) {\n httpClient.post(self.url)\n .withHeadersInfo(this.headersInfo)\n .withContent(encodedCommands)\n .readString()\n .execute(useWorker)\n .then((response) => {\n resolve(response.content);\n })\n .catch((exception) => {\n const status = exception.getStatus();\n self.failed_attempt += 1;\n if (status === DOLPHIN_SESSION_TIMEOUT) {\n self._handleError(reject, new DolphinSessionError('PlatformHttpTransmitter: Session Timeout'));\n } else {\n self._handleError(reject, exception);\n }\n });\n } else {\n //TODO handle failure\n PlatformHttpTransmitter.LOGGER.error('Cannot reach the sever');\n }\n } else {\n PlatformHttpTransmitter.LOGGER.error('No Rico client found!');\n }\n });\n }\n\n transmit(commands, onDone, onError) {\n this._send(commands)\n .then(responseText => {\n if (responseText.trim().length > 0) {\n try {\n const responseCommands = Codec.decode(responseText);\n onDone(responseCommands);\n } catch (err) {\n const errorMsg = 'PlatformHttpTransmitter: Parse error: (Incorrect response = ' + responseText + ')';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n } else {\n const errorMsg = 'PlatformHttpTransmitter: Empty response';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n })\n .catch(error => {\n this.emit('error', error);\n onError(error);\n });\n }\n\n signal(command) {\n this._send([command])\n .catch(error => this.emit('error', error));\n }\n}\n\nPlatformHttpTransmitter.LOGGER = LoggerFactory.getLogger('PlatformHttpTransmitter');\n\nEmitter(PlatformHttpTransmitter.prototype);\n","import { dolphinBuilder } from './dolphinBuilder';\nimport { checkMethod, checkParam } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport Connector from './connector';\nimport BeanManager from './beanManager';\nimport ClassRepository from './classRepository';\nimport ControllerManager from './controllerManager';\nimport ClientContext from './clientContext';\nimport PlatformHttpTransmitter from './platformHttpTransmitter';\n\nclass ClientContextFactory {\n\n constructor(client) {\n this.client = client;\n if (!client && ClientContextFactory.legecyClientSupport) {\n ClientContextFactory.LOGGER.warn('Legecy support used.');\n this.client = ClientContextFactory.legecyClientSupport;\n }\n }\n\n create(url, config){\n checkMethod('connect(url, config)');\n checkParam(url, 'url');\n ClientContextFactory.LOGGER.debug('Creating client context', url, config);\n\n const transmitter = new PlatformHttpTransmitter(url, config, this.client);\n transmitter.on('error', function (error) {\n clientContext.emit('error', error);\n });\n\n const dolphin = dolphinBuilder\n .withTransmitter(transmitter)\n .withSlackMS(4)\n .withMaxBatchSize(Number.MAX_SAFE_INTEGER)\n .build();\n\n\n const classRepository = new ClassRepository(dolphin);\n const beanManager = new BeanManager(classRepository);\n const connector = new Connector(url, dolphin, classRepository, config);\n const controllerManager = new ControllerManager(dolphin, classRepository, connector);\n\n const clientContext = new ClientContext(dolphin, beanManager, controllerManager, connector);\n\n ClientContextFactory.LOGGER.debug('clientContext created with', clientContext);\n\n return clientContext;\n }\n}\n\nClientContextFactory.LOGGER = LoggerFactory.getLogger('ClientContextFactory');\nClientContextFactory.legecyClientSupport = false;\n\nlet createClientContext = (client) => new ClientContextFactory(client).create;\n\nexport { createClientContext, ClientContextFactory };","import { ClientContextFactory } from './clientContextFactory'\nimport { ServiceProvider } from '../platform/serviceProvider'\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const clientContextFactoryProvider = new ServiceProvider(ClientContextFactory, 'ClientContextFactory', client);\n\n client.registerServiceProvider(clientContextFactoryProvider);\n }\n}\n\nexport { register };","import { checkMethod, checkParam, exists } from '../utils';\nimport { HTTP, RESPONSE_TYPE } from '../platform/constants'\n\nclass KeycloakConnection {\n\n constructor() {\n }\n\n createDirectConnection(authEndpoint, realmName) {\n checkMethod('createDirectConnection');\n checkParam(authEndpoint, 'authEndpoint');\n checkParam(realmName, 'realmName');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint + '/auth/realms/' + realmName + '/protocol/openid-connect/token', true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.APPLICATION_X_WWW_FORM_URLENCODED);\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n createServerProxyConnection(authEndpoint, realmName) {\n checkMethod('createServerProxyConnection');\n checkParam(authEndpoint, 'authEndpoint');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint, true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.TEXT_PLAIN);\n if (exists(realmName)) {\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, realmName);\n }\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n}\n\nexport { KeycloakConnection }","import { HTTP } from '../platform/constants'\nimport { exists } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport { KeycloakConnection } from './keycloakConnection';\n\nclass KeycloakFunctions {\n\n constructor() {\n this.connection = new KeycloakConnection();\n }\n\n createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password) {\n let connection;\n let content;\n\n const encodedUser = encodeURIComponent(user);\n const encodedPassword = encodeURIComponent(password);\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint,realmName);\n content = 'client_id=' + encodedAppName + '&username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n }\n\n return { connection, content };\n }\n\n createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken) {\n let connection;\n let content;\n\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken + '&client_id=' + encodedAppName;\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken;\n }\n\n return { connection, content };\n }\n\n receiveToken(httpRequest, body) {\n return new Promise((resolve, reject) => {\n httpRequest.ontimeout = function (error) {\n reject(error);\n }\n\n httpRequest.onerror = function (error) {\n reject(error);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status === HTTP.STATUS.OK) {\n resolve(this.response);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status !== HTTP.STATUS.OK) {\n reject(this.status);\n }\n }\n \n KeycloakFunctions.LOGGER.trace('Receiving token');\n httpRequest.send(body);\n });\n }\n\n refreshToken(directConnection, authEndpoint, realmName, appName, refreshToken) {\n const { connection, content } = this.createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken);\n return this.receiveToken(connection, content);\n }\n \n}\n\nKeycloakFunctions.LOGGER = LoggerFactory.getLogger('KeycloakFunctions');\n\nexport { KeycloakFunctions }","import { checkMethod, checkParam, exists } from '../utils'\nimport { LoggerFactory } from '../logging'\nimport { HTTP } from '../platform/constants'\n\nclass SecurityHttpClientInterceptor {\n\n constructor() {\n this.token = null;\n this.appName = null;\n this.realm = null;\n }\n\n setToken(token) {\n this.token = token;\n }\n\n setAppName(appName) {\n this.appName = appName;\n }\n\n setRealm(realm) {\n this.realm = realm;\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n\n if (exists(this.token)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using token', this.token);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.AUTHORIZATION, 'Bearer ' + this.token);\n }\n\n if (exists(this.appName)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using appName', this.appName);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_APPLICATION, this.appName);\n }\n\n if (exists(this.realm)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using realm', this.realm);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, this.realm);\n }\n\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_BEARER_ONLY, 'true');\n \n }\n}\n\nSecurityHttpClientInterceptor.LOGGER = LoggerFactory.getLogger('SecurityHttpClientInterceptor');\n\nexport { SecurityHttpClientInterceptor };","import { LoggerFactory } from '../logging';\nimport { exists, checkMethod, checkParam } from '../utils';\nimport { KeycloakFunctions } from './keycloakFunctions';\nimport { SecurityHttpClientInterceptor } from './securityHttpClientInterceptor';\nimport { SECURITY } from '../platform/constants'\n\nclass KeycloakSecurity {\n\n constructor() {\n this.functions = new KeycloakFunctions();\n this.interceptor = new SecurityHttpClientInterceptor();\n this.intervall = null;\n\n this.configuration = {\n directConnection: false,\n authEndpoint: SECURITY.AUTH_ENDPOINT,\n appName: null,\n realmName: null\n }\n \n }\n\n login(user, password, configuration) {\n if (this.isAuthorized()) {\n throw new Error('Already logged in!');\n }\n\n if (configuration) {\n this.configuration.directConnection = configuration.directConnection || this.configuration.directConnection;\n this.configuration.authEndpoint = configuration.authEndpoint || this.configuration.authEndpoint;\n this.configuration.appName = configuration.appName || this.configuration.appName;\n this.configuration.realmName = configuration.realmName || this.configuration.realmName;\n }\n\n const { directConnection, authEndpoint, appName, realmName } = this.configuration;\n\n const { connection, content } = this.functions.createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password);\n const self = this;\n return new Promise((resolve, reject) => {\n KeycloakSecurity.LOGGER.debug('Receiving access token');\n this.functions.receiveToken(connection, content)\n .then((result) => {\n if (result && result.access_token) {\n self.token = result;\n this.interceptor.setToken(result.access_token);\n this.interceptor.setRealm(realmName);\n this.interceptor.setAppName(appName);\n const expires = result.expires_in || KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN;\n const sleepTime = Math.max(KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN, expires - KeycloakSecurity.TOKEN_EXPIRES_DELTA);\n self.intervall = setInterval(() => {\n KeycloakSecurity.LOGGER.debug('Refreshing access token');\n self.functions.refreshToken(directConnection, authEndpoint, realmName, appName, result.refresh_token).then((result) => {\n self.token = result;\n self.interceptor.setToken(result.access_token);\n });\n }, sleepTime);\n resolve(result.access_token);\n } else {\n reject('No access token found');\n }\n })\n .catch((error) => reject(error));\n });\n }\n\n logout() {\n const self = this;\n KeycloakSecurity.LOGGER.debug('Logout');\n return new Promise((resolve) => {\n delete self.token;\n self.interceptor.setToken(null);\n if (exists(this.intervall)) {\n clearInterval(this.intervall);\n this.intervall = null;\n }\n resolve();\n });\n }\n\n isAuthorized() {\n return exists(this.token);\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this.interceptor);\n }\n}\n\nKeycloakSecurity.TOKEN_EXPIRES_DELTA = 10000;\nKeycloakSecurity.MIN_TOKEN_EXPIRES_RUN = 30000;\n\nKeycloakSecurity.LOGGER = LoggerFactory.getLogger('KeycloakSecurity');\n\nexport { KeycloakSecurity };\n","\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\nimport { KeycloakSecurity } from './keycloakSecurity';\n\nfunction register(client) {\n if (exists(client)) {\n const securityProvider = new ServiceProvider(KeycloakSecurity, 'Security', client);\n client.registerServiceProvider(securityProvider);\n }\n}\n\nexport { register }","import { LoggerFactory, LogLevel } from './logging';\nimport { Client } from './platform/client';\nimport { ServiceProvider } from './platform/serviceProvider';\nimport { HTTP } from './platform/constants';\nimport { register as registerHttp } from './http';\nimport { register as registerClientScope } from './platform/clientScope';\nimport { register as registerRemotingScope } from './remoting'\nimport { register as registerSecurity } from './security'\n\nregisterHttp(Client);\nregisterClientScope(Client);\nregisterRemotingScope(Client);\nregisterSecurity(Client);\nClient.init();\n\nconst getService = Client.getService;\nconst hasService = Client.hasService;\nconst registerServiceProvider = Client.registerServiceProvider;\n\n/* eslint-disable */\nClient.LOGGER.info('Rico Version:' , RICO_VERSION);\n/* eslint-enable */\n\nexport { LoggerFactory, LogLevel, getService, hasService, registerServiceProvider, HTTP }\n\nif (window.Worker && window.Blob && window.URL && URL.createObjectURL) {\n Client.LOGGER.debug('Creating Worker');\n class HttpWorker {\n constructor() {\n /* eslint-disable */\n this.blob = new Blob([RICO_WORKER], {type: \"application/javascript\"});\n /* eslint-enable */\n }\n\n createWorker() {\n return new Worker(URL.createObjectURL(this.blob));\n }\n }\n\n const httpWorkerProvider = new ServiceProvider(HttpWorker, 'HttpWorker');\n Client.registerServiceProvider(httpWorkerProvider);\n}\n\n/* \n * Provide dependencies as global dolphin object for backward compatibility.\n * The code below this comment is deprecated and should be removed in a feature version.\n */\nimport { createClientContext, ClientContextFactory } from './remoting/clientContextFactory'\n\nconst LOGGER = LoggerFactory.getLogger('Deprecated:');\nlet showWarning = true;\nfunction warn() {\n if (showWarning) {\n LOGGER.warn('Please do not use \"dolphin\" anymore, it may be removed in the next version! Use the new API instead!');\n showWarning = false;\n }\n}\n\nif (window) {\n window.dolphin = { // TODO remove in next major release\n get ClientContextFactory() {\n warn();\n ClientContextFactory.legecyClientSupport = Client;\n return ClientContextFactory;\n },\n get createClientContext() {\n warn();\n return createClientContext(Client);\n },\n get LoggerFactory() {\n warn();\n return LoggerFactory;\n },\n get LogLevel() {\n warn();\n return LogLevel;\n }\n };\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/rico.min.js b/dist/rico.min.js index eb443ad..556b517 100644 --- a/dist/rico.min.js +++ b/dist/rico.min.js @@ -13,5 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ricojs=t():e.ricojs=t()}(window,function(){return function(n){var r={};function o(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=n,o.c=r,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)}([function(e,t){function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}(e.exports=n).prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[e]=this._callbacks[e]||[]).push(t),this},n.prototype.once=function(e,t){var n=this;function r(){n.off(e,r),t.apply(this,arguments)}return this._callbacks=this._callbacks||{},r.fn=t,this.on(e,r),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks[e];if(!r)return this;if(1==arguments.length)return delete this._callbacks[e],this;for(var o=0;o=e.level}}])&&o(e.prototype,t),r&&o(e,r),n}();function c(e,t){for(var n=0;n= 200 && this.status < 300) { const workerMessage = {error: false, response: this.response, status: this.status, url: this.url, responseHeaders: this.getAllResponseHeaders()}; self.postMessage(workerMessage); } else if (this.readyState === 4 && this.status >= 300) { const workerMessage = {error: true, message: this.statusText, status: this.status, timedout: false}; self.postMessage(workerMessage); }};self.addEventListener('message', function(event) { const timeout = event.data.timeout || 0; const configuration = event.data.conf || {}; const requestHeaders = event.data.requestHeaders || []; const httpRequest = new XMLHttpRequest(); const async = true; httpRequest.open(configuration.method, configuration.url, async); httpRequest.url = configuration.url; httpRequest.method = configuration.method; httpRequest.withCredentials = true; for (let i = 0; i < requestHeaders.length; i++) { const header = requestHeaders[i]; httpRequest.setRequestHeader(header.name, header.value); } if (configuration.headers && configuration.headers.length > 0) { for (let i = 0; i < configuration.headers.length; i++) { const header = configuration.headers[i]; httpRequest.setRequestHeader(header.name, header.value); } } httpRequest.timeout = timeout; if (configuration.responseType) { httpRequest.responseType = configuration.responseType; } httpRequest.ontimeout = self.handleTimeout.bind(httpRequest); httpRequest.onerror = self.handleError.bind(httpRequest); httpRequest.onreadystatechange = self.handleStateChange.bind(httpRequest); httpRequest.send(configuration.requestBody);});"],{type:"application/javascript"})}var t,n,r;return t=e,(n=[{key:"createWorker",value:function(){return new Worker(URL.createObjectURL(this.blob))}}])&&Jt(t.prototype,n),r&&Jt(t,r),e}(),rn=new b(nn,"HttpWorker");g.registerServiceProvider(rn)}var on=m.getLogger("Deprecated:"),an=!0;function ln(){an&&(on.warn('Please do not use "dolphin" anymore, it may be removed in the next version! Use the new API instead!'),an=!1)}window&&(window.dolphin={get ClientContextFactory(){return ln(),qt.legecyClientSupport=g,qt},get createClientContext(){return ln(),new qt(g).create},get LoggerFactory(){return ln(),m},get LogLevel(){return ln(),d}})}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ricojs=t():e.ricojs=t()}(window,function(){return r={},o.m=n=[function(e,t){function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}(e.exports=n).prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[e]=this._callbacks[e]||[]).push(t),this},n.prototype.once=function(e,t){var n=this;function r(){n.off(e,r),t.apply(this,arguments)}return this._callbacks=this._callbacks||{},r.fn=t,this.on(e,r),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks[e];if(!r)return this;if(1==arguments.length)return delete this._callbacks[e],this;for(var o=0;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.level}}]),v&&i(d,v),g);function g(e,t){switch(!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,g),this.context=e,this.rootLogger=t,y.getCookie("RICO_LOGGER_"+this.context)){case"NONE":this.logLevel=c.NONE;break;case"ALL":this.logLevel=c.ALL;break;case"TRACE":this.logLevel=c.TRACE;break;case"DEBUG":this.logLevel=c.DEBUG;break;case"INFO":this.logLevel=c.INFO;break;case"WARN":this.logLevel=c.WARN;break;case"ERROR":this.logLevel=c.ERROR}}function C(e,t){for(var n=0;n= 200 && this.status < 300) { const workerMessage = {error: false, response: this.response, status: this.status, url: this.url, responseHeaders: this.getAllResponseHeaders()}; self.postMessage(workerMessage); } else if (this.readyState === 4 && this.status >= 300) { const workerMessage = {error: true, message: this.statusText, status: this.status, timedout: false}; self.postMessage(workerMessage); }};self.addEventListener('message', function(event) { const timeout = event.data.timeout || 0; const configuration = event.data.conf || {}; const requestHeaders = event.data.requestHeaders || []; const httpRequest = new XMLHttpRequest(); const async = true; httpRequest.open(configuration.method, configuration.url, async); httpRequest.url = configuration.url; httpRequest.method = configuration.method; httpRequest.withCredentials = true; for (let i = 0; i < requestHeaders.length; i++) { const header = requestHeaders[i]; httpRequest.setRequestHeader(header.name, header.value); } if (configuration.headers && configuration.headers.length > 0) { for (let i = 0; i < configuration.headers.length; i++) { const header = configuration.headers[i]; httpRequest.setRequestHeader(header.name, header.value); } } httpRequest.timeout = timeout; if (configuration.responseType) { httpRequest.responseType = configuration.responseType; } httpRequest.ontimeout = self.handleTimeout.bind(httpRequest); httpRequest.onerror = self.handleError.bind(httpRequest); httpRequest.onreadystatechange = self.handleStateChange.bind(httpRequest); httpRequest.send(configuration.requestBody);});"],{type:"application/javascript"})}var $o=T.getLogger("Deprecated:"),ea=!0;function ta(){ea&&($o.warn('Please do not use "dolphin" anymore, it may be removed in the next version! Use the new API instead!'),ea=!1)}window&&(window.dolphin={get ClientContextFactory(){return ta(),Co.legecyClientSupport=A,Co},get createClientContext(){return ta(),new Co(A).create},get LoggerFactory(){return ta(),T},get LogLevel(){return ta(),c}})}],o.c=r,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1);function o(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}var n,r}); //# sourceMappingURL=rico.min.js.map \ No newline at end of file diff --git a/dist/rico.min.js.map b/dist/rico.min.js.map index 4779d09..fd879c8 100644 --- a/dist/rico.min.js.map +++ b/dist/rico.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ricojs/webpack/universalModuleDefinition","webpack://ricojs/webpack/bootstrap","webpack://ricojs/./node_modules/emitter-component/index.js","webpack://ricojs/./src/logging/constants.js","webpack://ricojs/./src/utils/index.js","webpack://ricojs/./src/logging/logger.js","webpack://ricojs/./src/logging/loggerfactory.js","webpack://ricojs/./src/platform/client.js","webpack://ricojs/./src/platform/serviceProvider.js","webpack://ricojs/./src/platform/constants.js","webpack://ricojs/./src/http/httpResponse.js","webpack://ricojs/./src/http/httpException.js","webpack://ricojs/./src/http/executor.js","webpack://ricojs/./src/http/reponseBuilder.js","webpack://ricojs/./src/http/requestBuilder.js","webpack://ricojs/./src/http/httpClient.js","webpack://ricojs/./src/http/httpClientInterceptor.js","webpack://ricojs/./src/platform/clientScope.js","webpack://ricojs/./src/remoting/commands/commandConstants.js","webpack://ricojs/./src/remoting/commandBatcher.js","webpack://ricojs/./src/remoting/constants.js","webpack://ricojs/./src/remoting/commands/impl/valueChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/attributeMetadataChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/callActionCommand.js","webpack://ricojs/./src/remoting/commands/impl/changeAttributeMetadataCommand.js","webpack://ricojs/./src/remoting/commands/impl/createContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/createControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/createPresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/deletePresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/interruptLongPollCommand.js","webpack://ricojs/./src/remoting/commands/impl/presentationModelDeletedCommand.js","webpack://ricojs/./src/remoting/commands/impl/startLongPollCommand.js","webpack://ricojs/./src/remoting/commands/codecError.js","webpack://ricojs/./src/remoting/commands/codec.js","webpack://ricojs/./src/remoting/eventBus.js","webpack://ricojs/./src/remoting/clientPresentationModel.js","webpack://ricojs/./src/remoting/clientConnector.js","webpack://ricojs/./src/remoting/clientAttribute.js","webpack://ricojs/./src/remoting/clientDolphin.js","webpack://ricojs/./src/remoting/attribute.js","webpack://ricojs/./src/remoting/commands/commandFactory.js","webpack://ricojs/./src/remoting/clientModelStore.js","webpack://ricojs/./src/remoting/noTransmitter.js","webpack://ricojs/./src/remoting/dolphinBuilder.js","webpack://ricojs/./src/remoting/connector.js","webpack://ricojs/./src/remoting/beanManager.js","webpack://ricojs/./src/remoting/classRepository.js","webpack://ricojs/./src/remoting/controllerProxy.js","webpack://ricojs/./src/remoting/controllerManager.js","webpack://ricojs/./src/remoting/clientContext.js","webpack://ricojs/./src/remoting/errors.js","webpack://ricojs/./src/remoting/remotingErrorHandler.js","webpack://ricojs/./src/remoting/platformHttpTransmitter.js","webpack://ricojs/./src/remoting/clientContextFactory.js","webpack://ricojs/./src/security/keycloakConnection.js","webpack://ricojs/./src/security/keycloakFunctions.js","webpack://ricojs/./src/security/securityHttpClientInterceptor.js","webpack://ricojs/./src/security/keycloakSecurity.js","webpack://ricojs/./src/http/index.js","webpack://ricojs/./src/index.js","webpack://ricojs/./src/remoting/index.js","webpack://ricojs/./src/security/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Emitter","obj","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","self","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","splice","emit","args","slice","len","listeners","hasListeners","_checkMethodName","LogLevel","NONE","text","level","ALL","TRACE","DEBUG","INFO","WARN","ERROR","exists","checkMethod","checkParam","param","parameterName","Error","parseUrl","url","scheme","matches","match","substring","query","fragment","path","split","reduce","params","hash","_hash$split2","_slicedToArray","val","assign","hostname","port","location","protocol","indexOf","parseInt","user","password","LOCALS","pad","size","result","internalLog","Array","from","func","shift","context","logLevel","date","Date","dateString","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","concat","_toConsumableArray","getCookie","document","cookie","parts","pop","Logger","rootLogger","_classCallCheck","console","isLogLevel","log","warn","error","getLogLevel","levelName","ROOT_LOGGER","loggers","Map","LoggerFactory","existingLogger","logger","set","Client","LOGGER","getLogger","services","serviceProviders","configuration","getService","service","provider","hasService","getAllServiceTypes","forEach","serviceProvider","registerServiceProvider","getName","debug","init","trace","initServiceProvider","ServiceProvider","serviceClass","client","serviceProvider_classCallCheck","serviceInstance","RESPONSE_TYPE","HTTP","METHOD","GET","POST","PUT","DELETE","STATUS","ACCEPTED","BAD_GATEWAY","BAD_REQUEST","CONFLICT","CONTINUE","CREATED","EXPECTATION_FAILED","FAILED_DEPENDENCY","FORBIDDEN","GATEWAY_TIMEOUT","GONE","HTTP_VERSION_NOT_SUPPORTED","IM_A_TEAPOT","INSUFFICIENT_SPACE_ON_RESOURCE","INSUFFICIENT_STORAGE","INTERNAL_SERVER_ERROR","LENGTH_REQUIRED","LOCKED","METHOD_FAILURE","METHOD_NOT_ALLOWED","MOVED_PERMANENTLY","MOVED_TEMPORARILY","MULTI_STATUS","MULTIPLE_CHOICES","NETWORK_AUTHENTICATION_REQUIRED","NO_CONTENT","NON_AUTHORITATIVE_INFORMATION","NOT_ACCEPTABLE","NOT_FOUND","NOT_IMPLEMENTED","NOT_MODIFIED","OK","PARTIAL_CONTENT","PAYMENT_REQUIRED","PERMANENT_REDIRECT","PRECONDITION_FAILED","PRECONDITION_REQUIRED","PROCESSING","PROXY_AUTHENTICATION_REQUIRED","REQUEST_HEADER_FIELDS_TOO_LARGE","REQUEST_TIMEOUT","REQUEST_TOO_LONG","REQUEST_URI_TOO_LONG","REQUESTED_RANGE_NOT_SATISFIABLE","RESET_CONTENT","SEE_OTHER","SERVICE_UNAVAILABLE","SWITCHING_PROTOCOLS","TEMPORARY_REDIRECT","TOO_MANY_REQUESTS","UNAUTHORIZED","UNPROCESSABLE_ENTITY","UNSUPPORTED_MEDIA_TYPE","USE_PROXY","HEADER_NAME","ACCEPT","ACCEPT_CHARSET","ACCEPT_ENCODING","ACCEPT_LANGUAGE","ACCEPT_DATETIME","AUTHORIZATION","CACHE_CONTROL","CONNECTION","COOKIE","CONTENT_LENGTH","CONTENT_MD5","CONTENT_TYPE","DATE","EXPECT","FORWARDED","FROM","HOST","IF_MATCH","IF_MODIFIED_SINCE","IF_NONE_MATCH","IF_RANGE","MAX_FORWARDS","PRAGMA","PROXY_AUTHORIZATION","REFERER","TE","USER_AGENT","X_CLIENT_ID","X_CLIENT_SESSION_ID","X_PLATFORM_SECURITY_REALM","X_PLATFORM_SECURITY_BEARER_ONLY","X_PLATFORM_SECURITY_APPLICATION","APPLICATION_JSON","APPLICATION_X_WWW_FORM_URLENCODED","TEXT_HTML","TEXT_PLAIN","XMLHTTPREQUEST_READYSTATE","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","SECURITY","HttpResponse","status","content","headers","httpResponse_classCallCheck","headerArray","trim","header","toLowerCase","join","HttpException","message","timedout","httpException_classCallCheck","Executor","executor_classCallCheck","timeout","worker","_this","httpWorker","useWorker","timeoutToUse","requestInterceptors","getRequestInterceptors","responseInterceptors","getResponseInterceptors","directCall","resolve","reject","httpRequest","XMLHttpRequest","open","method","withCredentials","handleRequest","setRequestHeader","responseType","ontimeout","statusText","httpException","onerror","onreadystatechange","readyState","httpResponse","response","getAllResponseHeaders","handleResponse","send","requestBody","workerCall","collectedRequestHeaders","createWorker","onmessage","terminate","msg","data","responseHeaders","postMessage","conf","requestHeaders","Promise","ResponseBuilder","reponseBuilder_classCallCheck","executor","RequestBuilder","requestBuilder_classCallCheck","reponseBuilder","headersInfo","HttpClient","httpClient_classCallCheck","requestBuilder","request","HttpClientInterceptor","httpClientInterceptor_classCallCheck","requestHandlers","Set","responseHandlers","handler","add","list","ClientScope","clientScope_classCallCheck","clientIds","clientId","getClientId","newClientId","getHeaderByName","setClientId","addRequestInterceptor","addResponseInterceptor","calcKey","ATTRIBUTE_METADATA_CHANGED_COMMAND_ID","CALL_ACTION_COMMAND_ID","CHANGE_ATTRIBUTE_METADATA_COMMAND_ID","CREATE_CONTEXT_COMMAND_ID","CREATE_CONTROLLER_COMMAND_ID","CREATE_PRESENTATION_MODEL_COMMAND_ID","DELETE_PRESENTATION_MODEL_COMMAND_ID","DESTROY_CONTEXT_COMMAND_ID","DESTROY_CONTROLLER_COMMAND_ID","INTERRUPT_LONG_POLL_COMMAND_ID","PRESENTATION_MODEL_DELETED_COMMAND_ID","START_LONG_POLL_COMMAND_ID","VALUE_CHANGED_COMMAND_ID","ATTRIBUTE_ID","PM_ID","CONTROLLER_ID","BlindCommandBatcher","folding","undefined","maxBatchSize","commandBatcher_classCallCheck","queue","batch","batchLength","element","command","id","attributeId","newValue","REMOVED_TYPE","ValueChangedCommand","valueChangedCommand_classCallCheck","AttributeMetadataChangedCommand","attributeMetadataChangedCommand_classCallCheck","metadataName","CallActionCommand","callActionCommand_classCallCheck","controllerid","actionName","ChangeAttributeMetadataCommand","changeAttributeMetadataCommand_classCallCheck","CreateContextCommand","createContextCommand_classCallCheck","CreateControllerCommand","createControllerCommand_classCallCheck","controllerName","parentControllerId","CreatePresentationModelCommand","createPresentationModelCommand_classCallCheck","presentationModel","attributes","clientSideOnly","pmId","pmType","presentationModelType","getAttributes","attr","propertyName","getValue","DeletePresentationModelCommand","deletePresentationModelCommand_classCallCheck","DestroyContextCommand","destroyContextCommand_classCallCheck","DestroyControllerCommand","destroyControllerCommand_classCallCheck","controllerId","InterruptLongPollCommand","interruptLongPollCommand_classCallCheck","PresentationModelDeletedCommand","presentationModelDeletedCommand_classCallCheck","StartLongPollCommand","startLongPollCommand_classCallCheck","CodecError","codecError_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","Codec","jsonCommand","map","attribute","commands","JSON","stringify","_encodeAttributeMetadataChangedCommand","_encodeCallActionCommand","_encodeChangeAttributeMetadataCommand","_encodeCreateContextCommand","_encodeCreateControllerCommand","_encodeCreatePresentationModelCommand","_encodeDeletePresentationModelCommand","_encodeDestroyContextCommand","_encodeDestroyControllerCommand","_encodeInterruptLongPollCommand","_encodePresentationModelDeletedCommand","_encodeStartLongPollCommand","_encodeValueChangedCommand","transmitted","codec_typeof","parse","_decodeAttributeMetadataChangedCommand","_decodeCallActionCommand","_decodeChangeAttributeMetadataCommand","_decodeCreateContextCommand","_decodeCreateControllerCommand","_decodeCreatePresentationModelCommand","_decodeDeletePresentationModelCommand","_decodeDestroyContextCommand","_decodeDestroyControllerCommand","_decodeInterruptLongPollCommand","_decodePresentationModelDeletedCommand","_decodeStartLongPollCommand","_decodeValueChangedCommand","EventBus","eventBus_classCallCheck","eventHandlers","eventHandler","handle","presentationModelInstanceCount","ClientPresentationModel","clientPresentationModel_classCallCheck","dirty","toString","invalidBus","dirtyValueChangeBus","attributeCopy","copy","addAttribute","_this2","findAttributeByPropertyName","getQualifier","findAttributeByQualifier","setPresentationModel","onValueChange","trigger","source","handleInvalidate","onEvent","qualifier","sourcePresentationModel","targetAttribute","sourceAttribute","getAt","syncWith","ClientConnector","transmitter","clientDolphin","slackMS","clientConnector_classCallCheck","commandQueue","currentlySending","pushEnabled","waiting","codec","commandBatcher","newBatcher","enabled","newListener","pushListener","newCommand","releaseCommand","onFinished","release","doSendNext","enqueuePushCommand","cmdsAndHandlers","callback","cah","transmit","touchedPMs","touched","setTimeout","onError","handleDeletePresentationModelCommand","handleCreatePresentationModelCommand","handleValueChangedCommand","handleAttributeMetadataChangedCommand","serverCommand","model","findPresentationModelById","getClientModelStore","deletePresentationModel","containsPresentationModel","clientAttribute","clientPm","addAttributes","updatePresentationModelQualifier","findAttributeById","setValueFromServer","me","onFinishedData","signal","ClientAttribute","clientAttribute_classCallCheck","clientAttributeInstanceCount","valueChangeBus","qualifierChangeBus","setValue","setQualifier","String","Boolean","Number","valueOf","checkValue","ok","SUPPORTED_VALUE_TYPES","clientAttribute_typeof","verifiedValue","oldValue","sendToServer","newQualifier","oldQualifier","ClientDolphin","clientDolphin_classCallCheck","clientConnector","type","_len","_key","clientModelStore","listPresentationModelIds","listPresentationModels","findAllPresentationModelByType","modelToDelete","updateAttributeQualifier","findAllAttributesByQualifier","pushCommand","setPushListener","setReleaseCommand","setPushEnabled","listen","Attribute","QUALIFIER_PROPERTY","VALUE","CommandFactory","ClientModelStore","clientModelStore_classCallCheck","presentationModels","presentationModelsPerType","attributesPerId","attributesPerQualifier","modelStoreChangeBus","addAttributeById","addAttributeByQualifier","evt","createValueChangedCommand","getClientConnector","findAttributesByFilter","onQualifierChange","createChangeAttributeMetadataCommand","has","added","addPresentationModelByType","createCreatePresentationModelCommand","registerAttribute","eventType","clientPresentationModel","_this3","removed","removePresentationModelByType","delete","removeAttributeById","removeAttributeByQualifier","filter","iter","keys","next","done","values","notify","remove","createPresentationModelDeletedCommand","pmStoreEvent","NoTransmitter","onDone","DolphinBuilder","dolphinBuilder_classCallCheck","setClientConnector","setClientModelStore","dolphinBuilder","DOLPHIN_BEAN","ACTION_CALL_BEAN","SOURCE_SYSTEM","Connector","dolphin","classRepository","config","connector_classCallCheck","highlanderPMResolver","highlanderPMPromise","onModelStoreChange","sourceSystem","onModelAdded","onModelRemoved","startPushListening","createStartLongPollCommand","createInterruptLongPollCommand","registerClass","spliceListEntry","load","unregisterClass","unload","reason","BeanManager","beanManager_classCallCheck","addedHandlers","removedHandlers","updatedHandlers","arrayUpdatedHandlers","allAddedHandlers","allRemovedHandlers","allUpdatedHandlers","allArrayUpdatedHandlers","_handleBeanAdded","_handleBeanRemoved","_handleBeanUpdate","_handleArrayUpdate","onBeanAdded","onBeanRemoved","onBeanUpdate","onArrayUpdate","bean","handlerList","e","index","count","newElements","notifyBeanChange","removedElements","notifyArrayChange","collection","predicate","unsubscribe","ClassRepository","classRepository_classCallCheck","classes","beanFromDolphin","beanToDolphin","classInfos","beanAddedHandlers","beanRemovedHandlers","propertyUpdateHandlers","arrayUpdateHandlers","blocked","modelId","to","toDolphin","fromDolphin","isBlocked","array","removedElementsCount","isArray","sendListSplice","classInfo","search","validateList","block","unblock","classRepository_typeof","toISOString","TypeError","fixType","parseFloat","ControllerProxy","manager","controllerProxy_classCallCheck","destroyed","onDestroyedHandlers","invokeAction","_createController","getId","destroyController","ERROR_CODE","ControllerManager","connector","controllerManager_classCallCheck","controllers","getHighlanderPM","then","highlanderPM","MSG_ERROR_CREATING_CONTROLLER","invoke","createCreateControllerCommand","getValueWithRetry","ctrlId","mapDolphinToBean","controller","catch","getValueCall","errorMessage","intervalID","setInterval","clearInterval","pm","actionParams","mapParamToDolphin","createCallActionCommand","createDestroyControllerCommand","controllersCopy","promises","destroy","all","ClientContext","beanManager","controllerManager","clientContext_classCallCheck","_controllerManager","_connector","connectionPromise","isConnected","connect","createCreateContextCommand","createController","stopPushListening","createDestroyContextCommand","DolphinRemotingError","_Error","detail","errors_classCallCheck","errors_possibleConstructorReturn","errors_getPrototypeOf","errors_inherits","errors_wrapNativeSuper","DolphinSessionError","_Error2","_Error3","HttpResponseError","_Error4","HttpNetworkError","RemotingErrorHandler","PlatformHttpTransmitter","platformHttpTransmitter_classCallCheck","failed_attempt","connectionConfig","_connectionConfig","maxRetry","connection","errorHandlers","encodedCommands","encode","isLogLevelUseable","httpClient","post","withHeadersInfo","withContent","readString","execute","exception","getStatus","_handleError","_send","responseText","responseCommands","decode","err","errorMsg","ClientContextFactory","clientContextFactory_classCallCheck","legecyClientSupport","clientContext","withTransmitter","withSlackMS","withMaxBatchSize","MAX_SAFE_INTEGER","build","KeycloakConnection","keycloakConnection_classCallCheck","authEndpoint","realmName","KeycloakFunctions","keycloakFunctions_classCallCheck","directConnection","appName","encodedUser","encodeURIComponent","encodedPassword","encodedAppName","createDirectConnection","createServerProxyConnection","refreshToken","body","_this$createRefreshCo","createRefreshConnection","receiveToken","SecurityHttpClientInterceptor","securityHttpClientInterceptor_classCallCheck","token","realm","KeycloakSecurity","keycloakSecurity_classCallCheck","functions","interceptor","intervall","isAuthorized","_this$configuration","_this$functions$creat","createLoginConnection","access_token","setToken","setRealm","setAppName","expires","expires_in","MIN_TOKEN_EXPIRES_RUN","sleepTime","Math","max","TOKEN_EXPIRES_DELTA","refresh_token","httpClientProvider","httpClientInterceptorProvider","registerHttp","clientScopeProvider","registerClientScope","clientContextFactoryProvider","registerRemotingScope","securityProvider","registerSecurity","info","RICO_VERSION","Worker","Blob","URL","createObjectURL","HttpWorker","src_classCallCheck","blob","RICO_WORKER","httpWorkerProvider","showWarning","createClientContext"],"mappings":"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","file":"rico.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ricojs\"] = factory();\n\telse\n\t\troot[\"ricojs\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const LogLevel = {\n NONE: { name: 'NONE', text: '[NONE ]', level: 0 },\n ALL: { name: 'ALL', text: '[ALL ]', level: 100 },\n TRACE: { name: 'TRACE', text: '[TRACE]', level: 5 },\n DEBUG: { name: 'DEBUG', text: '[DEBUG]', level: 4 },\n INFO: { name: 'INFO', text: '[INFO ]', level: 3 },\n WARN: { name: 'WARN', text: '[WARN ]', level: 2 },\n ERROR: { name: 'ERROR', text: '[ERROR]', level: 1 },\n};\n\nexport { LogLevel };","var _checkMethodName;\n\nexport function exists(object) {\n return typeof object !== 'undefined' && object !== null;\n}\n\nexport function checkMethod(name) {\n _checkMethodName = name;\n}\n\nexport function checkParam(param, parameterName) {\n if(!exists(param)) {\n throw new Error('The parameter ' + parameterName + ' is mandatory in ' + _checkMethodName);\n }\n}\n\nexport function parseUrl(url) {\n //https://jsperf.com/url-parsing\n const pattern = /^(((([^:\\/#\\?]+:)?(?:(\\/\\/)((?:(([^:@\\/#\\?]+)(?:\\:([^:@\\/#\\?]+))?)@)?(([^:\\/#\\?\\]\\[]+|\\[[^\\/\\]@#?]+\\])(?:\\:([0-9]+))?))?)?)?((\\/?(?:[^\\/\\?#]+\\/+)*)([^\\?#]*)))?(\\?[^#]+)?)(#.*)?/\n const matches = url.match(pattern);\n\n let scheme;\n if (matches[4] && matches[4].length > 1) {\n scheme = matches[4].substring(0, matches[4].length-1);\n }\n\n let path = matches[13];\n\n let query;\n if (matches[16] && matches[16].length > 1) {\n query = matches[16].substring(1, matches[16].length);\n const hashes = query.split('&');\n query = hashes.reduce((params, hash) => {\n let [key, val] = hash.split('=')\n return Object.assign(params, {[key]: val})\n }, {});\n }\n\n let fragment;\n if (matches[17] && matches[17].length > 1) {\n fragment = matches[17].substring(1, matches[17].length);\n }\n\n let hostname = matches[11];\n let port = matches[12];\n if (hostname && !port && scheme === 'http') {\n port = 80;\n } else if (hostname && !port && scheme === 'https') {\n port = 443;\n }\n\n //relative url? get hostname and port from the browser\n if (!hostname && !port && !scheme) {\n \n if (window && window.location && window.location.hostname) {\n hostname = window.location.hostname;\n }\n if (window && window.location && window.location.port) {\n port = window.location.port;\n }\n if (window && window.location && window.location.protocol) {\n scheme = window.location.protocol.substring(0, window.location.protocol.length-1) ;\n }\n // strip '.' from relative path\n if (path.indexOf('.') === 0) {\n path = path.substring(1, path.length);\n }\n }\n\n // port should be a number, always\n if (port) {\n port = parseInt(port);\n }\n\n return {\n scheme: scheme,\n user: matches[8],\n password: matches[9],\n hostname: hostname,\n port: port,\n path: path,\n query: query,\n fragment: fragment\n };\n \n}\n\n","import {checkParam, exists} from '../utils'\nimport { LogLevel } from \"./constants\";\n\n// private methods\nconst LOCALS = {\n pad (text, size) {\n let result = '' + text;\n while (result.length < size) {\n result = '0' + result;\n }\n return result;\n },\n internalLog () {\n const args = Array.from(arguments);\n const func = args.shift();\n const context = args.shift();\n const logLevel = args.shift();\n const date = new Date();\n const dateString = date.getFullYear() + '-' + LOCALS.pad(date.getMonth() + 1, 2) + '-' + LOCALS.pad(date.getDate(), 2) + ' ' + LOCALS.pad(date.getHours(), 2) + ':' + LOCALS.pad(date.getMinutes(), 2) + ':' + LOCALS.pad(date.getSeconds(), 2) + '.' + LOCALS.pad(date.getMilliseconds(), 3);\n func(dateString, logLevel.text, context, ...args);\n\n },\n getCookie (name) {\n if (exists(window) && exists(window.document) && exists(window.document.cookie)) { \n const value = '; ' + window.document.cookie;\n const parts = value.split('; ' + name + '=');\n if ( parts.length === 2 ) {\n return parts.pop().split(';').shift();\n }\n }\n }\n};\n\n\n// public\nclass Logger {\n\n constructor(context, rootLogger) {\n this.context = context;\n this.rootLogger = rootLogger;\n const cookieLogLevel = LOCALS.getCookie('RICO_LOGGER_' + this.context);\n switch (cookieLogLevel) {\n case 'NONE':\n this.logLevel = LogLevel.NONE;\n break;\n case 'ALL':\n this.logLevel = LogLevel.ALL;\n break;\n case 'TRACE':\n this.logLevel = LogLevel.TRACE;\n break;\n case 'DEBUG':\n this.logLevel = LogLevel.DEBUG;\n break;\n case 'INFO':\n this.logLevel = LogLevel.INFO;\n break;\n case 'WARN':\n this.logLevel = LogLevel.WARN;\n break;\n case 'ERROR':\n this.logLevel = LogLevel.ERROR;\n break;\n }\n\n }\n\n trace() {\n if (exists(console) && this.isLogLevel(LogLevel.TRACE)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.TRACE, ...arguments);\n }\n }\n\n debug() {\n if (exists(console) && this.isLogLevel(LogLevel.DEBUG)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.DEBUG, ...arguments);\n }\n }\n\n info() {\n if (exists(console) && this.isLogLevel(LogLevel.INFO)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.INFO, ...arguments);\n }\n }\n\n warn() {\n if (exists(console) && this.isLogLevel(LogLevel.WARN)) {\n LOCALS.internalLog(console.warn, this.context, LogLevel.WARN, ...arguments);\n }\n }\n\n error() {\n if (exists(console) && this.isLogLevel(LogLevel.ERROR)) {\n LOCALS.internalLog(console.error, this.context, LogLevel.ERROR, ...arguments);\n }\n }\n\n getLogLevel() {\n if (exists(this.logLevel)) {\n return this.logLevel;\n } else if (exists(this.rootLogger)) {\n return this.rootLogger.getLogLevel();\n } else {\n return LogLevel.INFO;\n }\n }\n\n setLogLevel(level) {\n this.logLevel = level;\n }\n\n setLogLevelByName(levelName) {\n if (exists(LogLevel[levelName])) {\n this.logLevel = LogLevel[levelName];\n }\n }\n\n isLogLevel(level) {\n if (this.getLogLevel() === LogLevel.NONE) {\n return false;\n }\n if (this.getLogLevel() === LogLevel.ALL) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.DEBUG && level !== LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.INFO && level !== LogLevel.TRACE && level !== LogLevel.DEBUG) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.WARN && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.ERROR && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO && level !== LogLevel.WARN) {\n return true;\n }\n return false;\n }\n\n isLogLevelUseable(level) {\n checkParam(level, 'level');\n if (level.level) {\n return this.getLogLevel().level >= level.level;\n } else {\n return false;\n }\n }\n}\n\nexport { Logger };","import { exists } from \"../utils\";\nimport { Logger } from \"./logger\";\n\nconst ROOT_LOGGER = new Logger('ROOT');\n\n// private methods\nconst LOCALS = {\n loggers: new Map()\n};\n\n\n// public\nclass LoggerFactory {\n\n static getLogger(context) {\n if (!exists(context) || context === 'ROOT') {\n return ROOT_LOGGER;\n }\n const existingLogger = LOCALS.loggers.get(context);\n if (existingLogger) {\n return existingLogger;\n }\n\n const logger = new Logger(context, ROOT_LOGGER);\n LOCALS.loggers.set(context, logger);\n return logger;\n }\n}\n\nexport { LoggerFactory }","import {exists} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass Client {\n\n}\n\nClient.LOGGER = LoggerFactory.getLogger('Client');\n\nClient.services = new Map();\nClient.serviceProviders = new Map();\nClient.configuration = {};\n\nClient.getService = function(name) {\n let service = Client.services.get(name);\n if (!exists(service)) {\n let provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n throw new Error('No service provider found for ' + name);\n } else {\n service = provider.getService(Client.configuration);\n Client.services.set(name, service);\n }\n }\n return service;\n};\n\nClient.hasService = function(name) {\n const provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n return false;\n } else {\n return true;\n }\n};\n\nClient.getAllServiceTypes = function() {\n let result = [];\n Client.serviceProviders.forEach((serviceProvider) => result.push(serviceProvider));\n return result;\n};\n\n\nClient.registerServiceProvider = function(serviceProvider) {\n if (serviceProvider === null || typeof serviceProvider === 'undefined') {\n throw new Error('Cannot register empty service provider');\n }\n \n if (typeof serviceProvider.getName === 'function' && typeof serviceProvider.getService === 'function') {\n const current = Client.serviceProviders.get(serviceProvider.getName());\n if (!current) {\n Client.serviceProviders.set(serviceProvider.getName(), serviceProvider);\n Client.LOGGER.debug('Service provider registered with name', serviceProvider.getName());\n } else {\n throw new Error('Cannot register another service provider. Name already in use.');\n }\n } else {\n throw new Error('Cannot register service provider without getName() and getService() methods');\n }\n};\n\nClient.init = function() {\n Client.serviceProviders.forEach((serviceProvider) => {\n const service = serviceProvider.getService();\n Client.LOGGER.trace('Initializing service for service provider', serviceProvider.getName());\n if (typeof service.initServiceProvider === 'function') {\n Client.LOGGER.debug('Initializing service', service);\n service.initServiceProvider(Client);\n }\n });\n}\n\nexport { Client }","import { checkMethod, checkParam } from '../utils'\nclass ServiceProvider {\n\n constructor(serviceClass, name, client) {\n checkMethod('constructor');\n checkParam(serviceClass, 'serviceClass');\n checkParam(name, 'name');\n \n this.serviceInstance = new serviceClass(client);\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getService() {\n return this.serviceInstance;\n }\n}\n\nexport { ServiceProvider }","// Reponse type\nexport const RESPONSE_TYPE = {\n ARRAY_BUFFER: 'arraybuffer',\n TEXT: 'text',\n JSON: 'json'\n}\n\n// HTTP methods and status codes\nexport const HTTP = {\n METHOD: {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE'\n },\n STATUS: {\n ACCEPTED: 202,\n BAD_GATEWAY: 502,\n BAD_REQUEST: 400,\n CONFLICT: 409,\n CONTINUE: 100,\n CREATED: 201,\n EXPECTATION_FAILED: 417,\n FAILED_DEPENDENCY : 424,\n FORBIDDEN: 403,\n GATEWAY_TIMEOUT: 504,\n GONE: 410,\n HTTP_VERSION_NOT_SUPPORTED: 505,\n IM_A_TEAPOT: 418,\n INSUFFICIENT_SPACE_ON_RESOURCE: 419,\n INSUFFICIENT_STORAGE: 507,\n INTERNAL_SERVER_ERROR: 500,\n LENGTH_REQUIRED: 411,\n LOCKED: 423,\n METHOD_FAILURE: 420,\n METHOD_NOT_ALLOWED: 405,\n MOVED_PERMANENTLY: 301,\n MOVED_TEMPORARILY: 302,\n MULTI_STATUS: 207,\n MULTIPLE_CHOICES: 300,\n NETWORK_AUTHENTICATION_REQUIRED: 511,\n NO_CONTENT: 204,\n NON_AUTHORITATIVE_INFORMATION: 203,\n NOT_ACCEPTABLE: 406,\n NOT_FOUND: 404,\n NOT_IMPLEMENTED: 501,\n NOT_MODIFIED: 304,\n OK: 200,\n PARTIAL_CONTENT: 206,\n PAYMENT_REQUIRED: 402,\n PERMANENT_REDIRECT: 308,\n PRECONDITION_FAILED: 412,\n PRECONDITION_REQUIRED: 428,\n PROCESSING: 102,\n PROXY_AUTHENTICATION_REQUIRED: 407,\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n REQUEST_TIMEOUT: 408,\n REQUEST_TOO_LONG: 413,\n REQUEST_URI_TOO_LONG: 414,\n REQUESTED_RANGE_NOT_SATISFIABLE: 416,\n RESET_CONTENT: 205,\n SEE_OTHER: 303,\n SERVICE_UNAVAILABLE: 503,\n SWITCHING_PROTOCOLS: 101,\n TEMPORARY_REDIRECT: 307,\n TOO_MANY_REQUESTS: 429,\n UNAUTHORIZED: 401,\n UNPROCESSABLE_ENTITY: 422,\n UNSUPPORTED_MEDIA_TYPE: 415,\n USE_PROXY: 305\n },\n HEADER_NAME: {\n ACCEPT: 'Accept',\n ACCEPT_CHARSET: 'Accept-Charset', \n ACCEPT_ENCODING: 'Accept-Encoding', \n ACCEPT_LANGUAGE: 'Accept-Language',\n ACCEPT_DATETIME: 'Accept-Datetime',\n AUTHORIZATION: 'Authorization',\n CACHE_CONTROL: 'Cache-Control',\n CONNECTION: 'Connection',\n COOKIE: 'Cookie',\n CONTENT_LENGTH: 'Content-Length',\n CONTENT_MD5: 'Content-MD5',\n CONTENT_TYPE: 'Content-Type',\n DATE: 'Date',\n EXPECT: 'Expect',\n FORWARDED: 'Forwarded',\n FROM: 'From',\n HOST: 'Host', \n IF_MATCH: 'If-Match', \n IF_MODIFIED_SINCE: 'If-Modified_Since',\n IF_NONE_MATCH: 'If-None_Match',\n IF_RANGE: 'If-Range',\n MAX_FORWARDS: 'Max-Forwards',\n PRAGMA: 'Pragma', \n PROXY_AUTHORIZATION: 'Proxy-Authorization',\n REFERER: 'Referer',\n TE: 'TE',\n USER_AGENT: 'User-Agent',\n X_CLIENT_ID: 'X-Client-Id',\n X_CLIENT_SESSION_ID: 'X-Client-Session-Id',\n X_PLATFORM_SECURITY_REALM: 'X-platform-security-realm',\n X_PLATFORM_SECURITY_BEARER_ONLY: 'X-platform-security-bearer-only',\n X_PLATFORM_SECURITY_APPLICATION: 'X-platform-security-application'\n },\n CONTENT_TYPE: {\n APPLICATION_JSON: 'application/json',\n APPLICATION_X_WWW_FORM_URLENCODED: 'application/x-www-form-urlencoded',\n TEXT_HTML: 'text/html',\n TEXT_PLAIN: 'text/plain'\n },\n XMLHTTPREQUEST_READYSTATE: {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE:4\n }\n}\n\n// Security\nexport const SECURITY = {\n AUTH_ENDPOINT: '/openid-connect'\n}","import { exists, checkMethod, checkParam } from '../utils';\nclass HttpResponse {\n\n constructor(url, status, content, headers) {\n this.url = url;\n this.status = status;\n this.content = content;\n this.headers = {};\n if (exists(headers) && typeof headers === 'string') {\n const headerArray = headers.trim().split(/[\\r\\n]+/);\n for (let i = 0; i < headerArray.length; i++) {\n const line = headerArray[i];\n const parts = line.split(': ');\n if (parts.length === 2) {\n const header = parts.shift().toLowerCase();\n const value = parts.join(': ');\n this.headers[header] = value;\n }\n }\n }\n }\n\n getUrl() {\n return this.url;\n }\n\n getContent() {\n return this.content;\n }\n\n getStatus() {\n return this.status;\n }\n\n getHeaders() {\n return this.headers;\n }\n\n getHeaderByName(name) {\n checkMethod('getHeaderByName');\n checkParam(name, 'name');\n \n return this.headers[name.toLowerCase()];\n }\n\n}\n\nexport { HttpResponse }","class HttpException {\n\n constructor(message, status, timedout) {\n this.message = message;\n this.status = status || 0;\n this.timedout = timedout || false;\n }\n\n getMessage() {\n return this.message;\n }\n\n getStatus() {\n return this.status;\n }\n\n isTimedout() {\n return this.timedout;\n }\n\n}\n\nexport { HttpException }","import { LoggerFactory } from '../logging';\nimport { HttpResponse } from './httpResponse';\nimport { HttpException } from './httpException';\nimport { HTTP } from '../platform/constants';\nclass Executor {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.client = client;\n }\n\n execute(timeout, worker) {\n\n let httpWorker = null;\n if (this.client && this.client.hasService('HttpWorker')) {\n httpWorker = this.client.getService('HttpWorker');\n }\n\n const useWorker = httpWorker !== null && (worker === true || timeout === true);\n let timeoutToUse = 0;\n if (timeout !== true && timeout !== false) {\n timeoutToUse = timeout;\n }\n\n let requestInterceptors = [];\n if (this.client) {\n requestInterceptors = this.client.getService('HttpClientInterceptor').getRequestInterceptors();\n Executor.LOGGER.trace('Request interceptors found:', requestInterceptors);\n }\n\n let responseInterceptors = [];\n if (this.client) {\n responseInterceptors = this.client.getService('HttpClientInterceptor').getResponseInterceptors();\n Executor.LOGGER.trace('Response interceptors found:', responseInterceptors);\n }\n\n let directCall = (resolve, reject) => {\n\n const self = this;\n const httpRequest = new XMLHttpRequest();\n const async = true;\n \n httpRequest.open(this.configuration.method, this.configuration.url, async);\n httpRequest.url = this.configuration.url;\n httpRequest.method = this.configuration.method;\n httpRequest.withCredentials = true;\n\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n requestInterceptor.handleRequest(httpRequest);\n }\n\n if (this.configuration.headers && this.configuration.headers.length > 0) {\n for (let i = 0; i < this.configuration.headers.length; i++) {\n const header = this.configuration.headers[i];\n httpRequest.setRequestHeader(header.name, header.value);\n }\n }\n\n httpRequest.timeout = timeoutToUse;\n\n if (this.configuration.responseType) {\n httpRequest.responseType = this.configuration.responseType;\n }\n\n httpRequest.ontimeout = function () {\n const message = this.statusText || 'Timeout occurred';\n const httpException = new HttpException(message, this.status, true);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onerror = function () {\n let message = this.statusText || 'Unspecified error occured';\n const httpException = new HttpException(message, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE) {\n Executor.LOGGER.trace('Request to ', self.configuration.url, 'finished with', this.status);\n }\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 200 && this.status < 300) {\n // https://www.w3.org/TR/cors/#simple-response-header\n const httpResponse = new HttpResponse(this.url, this.status, this.response, this.getAllResponseHeaders());\n \n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 300) {\n const httpException = new HttpException(this.statusText, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n }\n\n httpRequest.send(this.configuration.requestBody);\n\n }\n directCall = directCall.bind(this);\n\n let workerCall = (resolve, reject) => {\n \n const collectedRequestHeaders = [];\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n \n requestInterceptor.handleRequest({\n url: this.configuration.url,\n setRequestHeader: (name, value) => {\n const header = {name, value};\n collectedRequestHeaders.push(header);\n }\n });\n }\n\n const worker = httpWorker.createWorker();\n try {\n worker.onmessage = function(event) {\n worker.terminate();\n Executor.LOGGER.trace('Message form Worker', event);\n const msg = event.data;\n if (msg.error) {\n const httpException = new HttpException(msg.message, msg.status, msg.timedout);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n } else {\n const httpResponse = new HttpResponse(msg.url, msg.status, msg.response, msg.responseHeaders);\n\n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n }\n }\n worker.onerror = function(event) {\n const httpException = new HttpException(event.data, 0, false);\n reject(httpException);\n }\n worker.postMessage({conf: this.configuration, timeout: timeoutToUse, requestHeaders: collectedRequestHeaders});\n } catch (error) {\n const httpException = new HttpException(error, 0, false);\n reject(httpException);\n }\n\n }\n\n workerCall = workerCall.bind(this);\n\n return new Promise((resolve, reject) => {\n if (useWorker && this.client && this.client.hasService('HttpWorker')) {\n workerCall(resolve, reject);\n } else {\n directCall(resolve, reject);\n }\n });\n \n }\n\n}\n\nExecutor.LOGGER = LoggerFactory.getLogger('Executor');\n\nexport { Executor }","import { Executor } from './executor';\nimport { RESPONSE_TYPE } from '../platform/constants';\nclass ResponseBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.executor = new Executor(configuration, client);\n }\n\n readBytes() {\n this.configuration.responseType = RESPONSE_TYPE.ARRAY_BUFFER;\n return this.executor;\n }\n\n readString() {\n this.configuration.responseType = RESPONSE_TYPE.TEXT;\n return this.executor;\n }\n\n readObject() {\n this.configuration.responseType = RESPONSE_TYPE.JSON;\n return this.executor;\n }\n\n withoutResult() {\n return this.executor;\n }\n}\n\nexport { ResponseBuilder }","import { ResponseBuilder } from './reponseBuilder';\nimport { exists } from '../utils';\nclass RequestBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.reponseBuilder = new ResponseBuilder(configuration, client);\n }\n\n withHeader(name, value) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n this.configuration.headers.push({ name, value });\n return this;\n }\n\n withHeadersInfo(headersInfo) {\n if (exists(headersInfo)) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n for (let name in headersInfo) {\n if (headersInfo.hasOwnProperty(name)) {\n const value = headersInfo[name];\n this.configuration.headers.push({ name, value });\n }\n }\n }\n return this;\n }\n\n withContent(data) {\n this.configuration.requestBody = data;\n return this.reponseBuilder;\n }\n\n withoutContent() {\n return this.reponseBuilder;\n }\n}\n\nexport { RequestBuilder }","import { RequestBuilder } from './requestBuilder';\nimport { HTTP } from '../platform/constants';\nclass HttpClient {\n\n constructor(client) {\n this.client = client;\n }\n\n request(url, method) {\n const configuration = {\n url, method\n }\n this.requestBuilder = new RequestBuilder(configuration, this.client);\n return this.requestBuilder;\n }\n\n get(url) {\n return this.request(url, HTTP.METHOD.GET);\n }\n\n post(url) {\n return this.request(url, HTTP.METHOD.POST);\n }\n\n put(url) {\n return this.request(url, HTTP.METHOD.PUT);\n }\n\n delete(url) {\n return this.request(url, HTTP.METHOD.DELETE);\n }\n}\n\nexport { HttpClient }","class HttpClientInterceptor {\n\n constructor() {\n this.requestHandlers = new Set();\n this.responseHandlers = new Set();\n }\n\n addRequestInterceptor(handler) {\n this.requestHandlers.add(handler);\n }\n\n getRequestInterceptors() {\n let list = [];\n this.requestHandlers.forEach(handler => list.push(handler));\n return list;\n }\n\n addResponseInterceptor(handler) {\n this.responseHandlers.add(handler);\n }\n\n getResponseInterceptors() {\n let list = [];\n this.responseHandlers.forEach(handler => list.push(handler));\n return list;\n }\n}\n\nexport { HttpClientInterceptor }","import { checkMethod, checkParam, parseUrl, exists } from '../utils';\nimport { ServiceProvider } from './serviceProvider';\nimport { LoggerFactory } from '../logging';\nimport { HTTP } from './constants';\n\nclass ClientScope {\n\n constructor() {\n this.clientIds = new Map();\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n const clientId = this.getClientId(httpRequest.url);\n if (exists(clientId)) {\n ClientScope.LOGGER.trace('Using ClientId', clientId);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID, clientId);\n }\n }\n\n handleResponse(httpResponse) {\n checkMethod('handleResponse');\n checkParam(httpResponse, 'httpResponse');\n const clientId = this.getClientId(httpResponse.url);\n const newClientId = httpResponse.getHeaderByName(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID);\n if (exists(clientId) && exists(newClientId) && clientId !== newClientId) {\n throw new Error('Client Id does not match!');\n }\n if (!exists(clientId) && exists(newClientId)) {\n ClientScope.LOGGER.debug('New ClientId found', newClientId);\n this.setClientId(httpResponse.url, newClientId);\n }\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this);\n client.getService('HttpClientInterceptor').addResponseInterceptor(this);\n }\n\n getClientId(url) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n return this.clientIds.get(key);\n }\n\n setClientId(url, clientId) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n this.clientIds.set(key, clientId);\n ClientScope.LOGGER.trace('Setting ClientId', clientId, 'for', url, 'with key', key);\n }\n\n}\n\nClientScope.calcKey = function(hostname, port) {\n return hostname + port;\n}\n\nClientScope.LOGGER = LoggerFactory.getLogger('ClientScope');\n\nfunction register(client) {\n if (exists(client)) {\n const clientScopeProvider = new ServiceProvider(ClientScope, 'ClientScope');\n\n client.registerServiceProvider(clientScopeProvider);\n }\n}\n\nexport { register }","export const ATTRIBUTE_METADATA_CHANGED_COMMAND_ID = 'AttributeMetadataChanged';\nexport const CALL_ACTION_COMMAND_ID = 'CallAction';\nexport const CHANGE_ATTRIBUTE_METADATA_COMMAND_ID = 'ChangeAttributeMetadata';\nexport const CREATE_CONTEXT_COMMAND_ID = 'CreateContext';\nexport const CREATE_CONTROLLER_COMMAND_ID = 'CreateController';\nexport const CREATE_PRESENTATION_MODEL_COMMAND_ID = 'CreatePresentationModel';\nexport const DELETE_PRESENTATION_MODEL_COMMAND_ID = 'DeletePresentationModel';\nexport const DESTROY_CONTEXT_COMMAND_ID = 'DestroyContext';\nexport const DESTROY_CONTROLLER_COMMAND_ID = 'DestroyController';\nexport const INTERRUPT_LONG_POLL_COMMAND_ID = 'InterruptLongPoll';\nexport const PRESENTATION_MODEL_DELETED_COMMAND_ID = 'PresentationModelDeleted';\nexport const START_LONG_POLL_COMMAND_ID = 'StartLongPoll';\nexport const VALUE_CHANGED_COMMAND_ID = 'ValueChanged';\n\nexport const ID = \"id\";\nexport const ATTRIBUTE_ID = \"a_id\";\nexport const PM_ID = \"p_id\";\nexport const CONTROLLER_ID = \"c_id\";\nexport const PM_TYPE = \"t\";\nexport const NAME = \"n\";\nexport const VALUE = \"v\";\nexport const PARAMS = \"p\";\nexport const PM_ATTRIBUTES = \"a\";","import {VALUE_CHANGED_COMMAND_ID, PRESENTATION_MODEL_DELETED_COMMAND_ID} from './commands/commandConstants';\n\nexport default class BlindCommandBatcher {\n constructor(folding = true, maxBatchSize = 50) {\n this.folding = folding;\n this.maxBatchSize = maxBatchSize;\n }\n batch(queue) {\n let batch = [];\n let batchLength = 0;\n while(queue[batchLength] && batchLength <= this.maxBatchSize) {\n const element = queue[batchLength];\n batchLength++;\n if(this.folding) {\n if(element.command.id == VALUE_CHANGED_COMMAND_ID &&\n batch.length > 0 &&\n batch[batch.length - 1].command.id == VALUE_CHANGED_COMMAND_ID &&\n element.command.attributeId == batch[batch.length - 1].command.attributeId) {\n //merge ValueChange for same value\n batch[batch.length - 1].command.newValue = element.command.newValue;\n } else if(element.command.id == PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n //We do not need it...\n } else {\n batch.push(element);\n }\n } else {\n batch.push(element);\n }\n if(element.handler) {\n break;\n }\n }\n queue.splice(0, batchLength);\n return batch;\n }\n}","export const JS_STRING_TYPE = 'string';\n\nexport const REMOTING_BEAN = 0;\nexport const BYTE = 1;\nexport const SHORT = 2;\nexport const INT = 3;\nexport const LONG = 4;\nexport const FLOAT = 5;\nexport const DOUBLE = 6;\nexport const BOOLEAN = 7;\nexport const STRING = 8;\nexport const DATE = 9;\nexport const ENUM = 10;\nexport const CALENDAR = 11;\nexport const LOCAL_DATE_FIELD_TYPE = 55;\nexport const LOCAL_DATE_TIME_FIELD_TYPE = 52;\nexport const ZONED_DATE_TIME_FIELD_TYPE = 54;\n\n\nexport const ADDED_TYPE = \"ADDED\";\nexport const REMOVED_TYPE = \"REMOVED\";\n","import {VALUE_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ValueChangedCommand {\n\n constructor() {\n this.id = VALUE_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, newValue) {\n checkMethod('ValueChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n\n this.attributeId = attributeId;\n this.newValue = newValue;\n }\n}","import {ATTRIBUTE_METADATA_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class AttributeMetadataChangedCommand {\n\n constructor() {\n this.id = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('AttributeMetadataChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CALL_ACTION_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CallActionCommand {\n \n constructor() {\n this.id = CALL_ACTION_COMMAND_ID;\n }\n\n init(controllerid, actionName, params) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerid, 'controllerid');\n checkParam(actionName, 'actionName');\n\n this.controllerid = controllerid;\n this.actionName = actionName;\n this.params = params;\n }\n\n}","import {CHANGE_ATTRIBUTE_METADATA_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ChangeAttributeMetadataCommand {\n\n constructor() {\n this.id = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('ChangeAttributeMetadataCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CREATE_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class CreateContextCommand {\n\n constructor() {\n this.id = CREATE_CONTEXT_COMMAND_ID;\n }\n\n}","import {CREATE_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreateControllerCommand {\n\n constructor() {\n this.id = CREATE_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerName, parentControllerId) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerName, 'controllerName');\n\n this.controllerName = controllerName;\n this.parentControllerId = parentControllerId;\n }\n\n}","import {CREATE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreatePresentationModelCommand {\n\n constructor() {\n this.id = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(presentationModel) {\n checkMethod('CreatePresentationModelCommand.init()');\n checkParam(presentationModel, 'presentationModel');\n\n this.attributes = [];\n this.clientSideOnly = false;\n this.pmId = presentationModel.id;\n this.pmType = presentationModel.presentationModelType;\n var command = this;\n presentationModel.getAttributes().forEach(function (attr) {\n command.attributes.push({\n propertyName: attr.propertyName,\n id: attr.id,\n value: attr.getValue()\n });\n });\n }\n}","import {DELETE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DeletePresentationModelCommand {\n\n constructor() {\n this.id = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('DeletePresentationModelCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}\n","import {DESTROY_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class DestroyContextCommand {\n\n constructor() {\n this.id = DESTROY_CONTEXT_COMMAND_ID;\n }\n\n}","import {DESTROY_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DestroyControllerCommand {\n\n constructor() {\n this.id = DESTROY_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerId) {\n checkMethod('DestroyControllerCommand.init()');\n checkParam(controllerId, 'controllerId');\n\n this.controllerId = controllerId;\n }\n\n}","import {INTERRUPT_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class InterruptLongPollCommand {\n\n constructor() {\n this.id = INTERRUPT_LONG_POLL_COMMAND_ID;\n }\n}","import {PRESENTATION_MODEL_DELETED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class PresentationModelDeletedCommand {\n\n constructor() {\n this.id = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('PresentationModelDeletedCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}","import {START_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class StartLongPollCommand {\n\n constructor() {\n this.id = START_LONG_POLL_COMMAND_ID;\n }\n}\n","export default class CodecError extends Error {\n constructor(message) {\n super(message);\n }\n}","import {exists, checkMethod, checkParam} from '../../utils';\nimport {JS_STRING_TYPE} from '../constants';\nimport {\n CREATE_PRESENTATION_MODEL_COMMAND_ID,\n VALUE_CHANGED_COMMAND_ID,\n ATTRIBUTE_METADATA_CHANGED_COMMAND_ID,\n CALL_ACTION_COMMAND_ID,\n CHANGE_ATTRIBUTE_METADATA_COMMAND_ID,\n CREATE_CONTEXT_COMMAND_ID,\n CREATE_CONTROLLER_COMMAND_ID,\n DELETE_PRESENTATION_MODEL_COMMAND_ID,\n DESTROY_CONTEXT_COMMAND_ID,\n DESTROY_CONTROLLER_COMMAND_ID,\n INTERRUPT_LONG_POLL_COMMAND_ID,\n PRESENTATION_MODEL_DELETED_COMMAND_ID,\n START_LONG_POLL_COMMAND_ID\n} from './commandConstants';\nimport {ID, PM_ID, PM_TYPE, PM_ATTRIBUTES, NAME, ATTRIBUTE_ID, VALUE, CONTROLLER_ID, PARAMS} from './commandConstants';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport CodecError from './codecError';\n\n\nexport default class Codec {\n\n static _encodeAttributeMetadataChangedCommand(command) {\n checkMethod(\"Codec.encodeAttributeMetadataChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeAttributeMetadataChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeAttributeMetadataChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new AttributeMetadataChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCallActionCommand(command) {\n checkMethod(\"Codec.encodeCallActionCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerid, \"command.controllerid\");\n checkParam(command.actionName, \"command.actionName\");\n checkParam(command.params, \"command.params\");\n\n\n let jsonCommand = {};\n jsonCommand[ID] = CALL_ACTION_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerid;\n jsonCommand[NAME] = command.actionName;\n jsonCommand[PARAMS] = command.params.map((param) => {\n let result = {};\n result[NAME] = param.name;\n if (exists(param.value)) {\n result[VALUE] = param.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCallActionCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCallActionCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[PARAMS], \"jsonCommand[PARAMS]\");\n\n let command = new CallActionCommand();\n command.controllerid = jsonCommand[CONTROLLER_ID];\n command.actionName = jsonCommand[NAME];\n //TODO: Für die Params sollten wir eine Klasse bereitstellen\n command.params = jsonCommand[PARAMS].map((param) => {\n return {\n 'name': param[NAME],\n 'value': exists(param[VALUE]) ? param[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeChangeAttributeMetadataCommand(command) {\n checkMethod(\"Codec.encodeChangeAttributeMetadataCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeChangeAttributeMetadataCommand(jsonCommand) {\n checkMethod(\"Codec.decodeChangeAttributeMetadataCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new ChangeAttributeMetadataCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCreateContextCommand(command) {\n checkMethod(\"Codec.encodeCreateContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeCreateContextCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreateContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new CreateContextCommand();\n return command;\n }\n\n static _encodeCreateControllerCommand(command) {\n checkMethod(\"Codec._encodeCreateControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerName, \"command.controllerName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTROLLER_COMMAND_ID;\n jsonCommand[NAME] = command.controllerName;\n jsonCommand[CONTROLLER_ID] = command.parentControllerId;\n return jsonCommand;\n }\n\n static _decodeCreateControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeCreateControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new CreateControllerCommand();\n command.controllerName = jsonCommand[NAME];\n command.parentControllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeCreatePresentationModelCommand(command) {\n checkMethod(\"Codec.encodeCreatePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n checkParam(command.pmType, \"command.pmType\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n jsonCommand[PM_TYPE] = command.pmType;\n jsonCommand[PM_ATTRIBUTES] = command.attributes.map((attribute) => {\n let result = {};\n result[NAME] = attribute.propertyName;\n result[ATTRIBUTE_ID] = attribute.id;\n if (exists(attribute.value)) {\n result[VALUE] = attribute.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCreatePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreatePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n checkParam(jsonCommand[PM_TYPE], \"jsonCommand[PM_TYPE]\");\n\n let command = new CreatePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n command.pmType = jsonCommand[PM_TYPE];\n\n //TODO: Für die Attribute sollten wir eine Klasse bereitstellen\n command.attributes = jsonCommand[PM_ATTRIBUTES].map((attribute) => {\n return {\n 'propertyName': attribute[NAME],\n 'id': attribute[ATTRIBUTE_ID],\n 'value': exists(attribute[VALUE]) ? attribute[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeDeletePresentationModelCommand(command) {\n checkMethod(\"Codec._encodeDeletePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodeDeletePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDeletePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n\n let command = new DeletePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeDestroyContextCommand(command) {\n checkMethod(\"Codec._encodeDestroyContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeDestroyContextCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new DestroyContextCommand();\n return command;\n }\n\n static _encodeDestroyControllerCommand(command) {\n checkMethod(\"Codec._encodeDestroyControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerId, \"command.controllerId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTROLLER_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerId;\n return jsonCommand;\n }\n\n static _decodeDestroyControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new DestroyControllerCommand();\n command.controllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeInterruptLongPollCommand(command) {\n checkMethod(\"Codec._encodeInterruptLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = INTERRUPT_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeInterruptLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeInterruptLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new InterruptLongPollCommand();\n return command;\n }\n\n static _encodePresentationModelDeletedCommand(command) {\n checkMethod(\"Codec._encodePresentationModelDeletedCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodePresentationModelDeletedCommand(jsonCommand) {\n checkMethod(\"Codec._decodePresentationModelDeletedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n let command = new PresentationModelDeletedCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeStartLongPollCommand(command) {\n checkMethod(\"Codec._encodeStartLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = START_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeStartLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeStartLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new StartLongPollCommand();\n return command;\n }\n\n static _encodeValueChangedCommand(command) {\n checkMethod(\"Codec.encodeValueChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = VALUE_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n if (exists(command.newValue)) {\n jsonCommand[VALUE] = command.newValue;\n }\n return jsonCommand;\n }\n\n static _decodeValueChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeValueChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n\n let command = new ValueChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n if (exists(jsonCommand[VALUE])) {\n command.newValue = jsonCommand[VALUE];\n } else {\n command.newValue = null;\n }\n return command;\n }\n\n static encode(commands) {\n checkMethod(\"Codec.encode\");\n checkParam(commands, \"commands\");\n\n let self = this;\n return JSON.stringify(commands.map((command) => {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._encodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._encodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._encodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._encodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._encodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._encodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._encodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._encodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._encodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._encodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._encodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n }));\n }\n\n static decode(transmitted) {\n checkMethod(\"Codec.decode\");\n checkParam(transmitted, \"transmitted\");\n\n if (typeof transmitted === JS_STRING_TYPE) {\n let self = this;\n return JSON.parse(transmitted).map(function (command) {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._decodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._decodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._decodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._decodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._decodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._decodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._decodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._decodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._decodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._decodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._decodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n });\n } else {\n throw new CodecError('Can not decode data that is not of type string');\n }\n }\n}","export default class EventBus {\n\n constructor() {\n this.eventHandlers = [];\n }\n\n onEvent(eventHandler) {\n this.eventHandlers.push(eventHandler);\n }\n\n trigger(event) {\n this.eventHandlers.forEach(handle => handle(event));\n }\n}","import EventBus from './eventBus'\n\nvar presentationModelInstanceCount = 0; // todo dk: consider making this static in class\n\nexport default class ClientPresentationModel {\n constructor(id, presentationModelType) {\n this.id = id;\n this.presentationModelType = presentationModelType;\n this.attributes = [];\n this.clientSideOnly = false;\n this.dirty = false;\n if (typeof id !== 'undefined' && id != null) {\n this.id = id;\n }\n else {\n this.id = (presentationModelInstanceCount++).toString();\n }\n this.invalidBus = new EventBus();\n this.dirtyValueChangeBus = new EventBus();\n }\n // todo dk: align with Java version: move to ClientDolphin and auto-add to model store\n /** a copy constructor for anything but IDs. Per default, copies are client side only, no automatic update applies. */\n copy() {\n var result = new ClientPresentationModel(null, this.presentationModelType);\n result.clientSideOnly = true;\n this.getAttributes().forEach((attribute) => {\n var attributeCopy = attribute.copy();\n result.addAttribute(attributeCopy);\n });\n return result;\n }\n //add array of attributes\n addAttributes(attributes) {\n if (!attributes || attributes.length < 1)\n return;\n attributes.forEach(attr => {\n this.addAttribute(attr);\n });\n }\n addAttribute(attribute) {\n if (!attribute || (this.attributes.indexOf(attribute) > -1)) {\n return;\n }\n if (this.findAttributeByPropertyName(attribute.propertyName)) {\n throw new Error(\"There already is an attribute with property name: \" + attribute.propertyName\n + \" in presentation model with id: \" + this.id);\n }\n if (attribute.getQualifier() && this.findAttributeByQualifier(attribute.getQualifier())) {\n throw new Error(\"There already is an attribute with qualifier: \" + attribute.getQualifier()\n + \" in presentation model with id: \" + this.id);\n }\n attribute.setPresentationModel(this);\n this.attributes.push(attribute);\n attribute.onValueChange(() => {\n this.invalidBus.trigger({ source: this });\n });\n }\n onInvalidated(handleInvalidate) {\n this.invalidBus.onEvent(handleInvalidate);\n }\n /** returns a copy of the internal state */\n getAttributes() {\n return this.attributes.slice(0);\n }\n getAt(propertyName) {\n return this.findAttributeByPropertyName(propertyName);\n }\n findAllAttributesByPropertyName(propertyName) {\n var result = [];\n if (!propertyName)\n return null;\n this.attributes.forEach((attribute) => {\n if (attribute.propertyName == propertyName) {\n result.push(attribute);\n }\n });\n return result;\n }\n findAttributeByPropertyName(propertyName) {\n if (!propertyName)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if ((this.attributes[i].propertyName == propertyName)) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeByQualifier(qualifier) {\n if (!qualifier)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].getQualifier() == qualifier) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeById(id) {\n if (!id)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].id == id) {\n return this.attributes[i];\n }\n }\n return null;\n }\n syncWith(sourcePresentationModel) {\n this.attributes.forEach((targetAttribute) => {\n var sourceAttribute = sourcePresentationModel.getAt(targetAttribute.propertyName);\n if (sourceAttribute) {\n targetAttribute.syncWith(sourceAttribute);\n }\n });\n }\n}\n","import BlindCommandBatcher from './commandBatcher';\nimport Codec from './commands/codec';\nimport ClientPresentationModel from './clientPresentationModel'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientConnector {\n\n constructor(transmitter, clientDolphin, slackMS = 0, maxBatchSize = 50) {\n\n this.commandQueue = [];\n this.currentlySending = false;\n this.pushEnabled = false;\n this.waiting = false;\n this.transmitter = transmitter;\n this.clientDolphin = clientDolphin;\n this.slackMS = slackMS;\n this.codec = new Codec();\n this.commandBatcher = new BlindCommandBatcher(true, maxBatchSize);\n }\n\n setCommandBatcher(newBatcher) {\n this.commandBatcher = newBatcher;\n }\n\n setPushEnabled(enabled) {\n this.pushEnabled = enabled;\n }\n\n setPushListener(newListener) {\n this.pushListener = newListener;\n }\n\n setReleaseCommand(newCommand) {\n this.releaseCommand = newCommand;\n }\n\n send(command, onFinished) {\n this.commandQueue.push({ command: command, handler: onFinished });\n if (this.currentlySending) {\n this.release(); // there is not point in releasing if we do not send atm\n return;\n }\n this.doSendNext();\n }\n\n doSendNext() {\n if (this.commandQueue.length < 1) {\n if (this.pushEnabled) {\n this.enqueuePushCommand();\n }\n else {\n this.currentlySending = false;\n return;\n }\n }\n this.currentlySending = true;\n let cmdsAndHandlers = this.commandBatcher.batch(this.commandQueue);\n\n if(cmdsAndHandlers.length > 0) {\n let callback = cmdsAndHandlers[cmdsAndHandlers.length - 1].handler;\n let commands = cmdsAndHandlers.map(cah => { return cah.command; });\n this.transmitter.transmit(commands, (response) => {\n let touchedPMs = [];\n response.forEach((command) => {\n let touched = this.handle(command);\n if (touched)\n touchedPMs.push(touched);\n });\n if (callback) {\n callback.onFinished(touchedPMs); // todo: make them unique?\n }\n setTimeout(() => this.doSendNext(), this.slackMS);\n }, (error) => {\n callback.onError(error);\n });\n } else {\n setTimeout(() => this.doSendNext(), this.slackMS);\n }\n }\n\n handle(command) {\n if (command.id === \"DeletePresentationModel\") {\n return this.handleDeletePresentationModelCommand(command);\n }\n else if (command.id === \"CreatePresentationModel\") {\n return this.handleCreatePresentationModelCommand(command);\n }\n else if (command.id === \"ValueChanged\") {\n return this.handleValueChangedCommand(command);\n }\n else if (command.id === \"AttributeMetadataChanged\") {\n return this.handleAttributeMetadataChangedCommand(command);\n }\n else {\n ClientConnector.LOGGER.error(\"Cannot handle, unknown command \" + command);\n }\n return null;\n }\n\n handleDeletePresentationModelCommand(serverCommand) {\n let model = this.clientDolphin.findPresentationModelById(serverCommand.pmId);\n if (!model)\n return null;\n this.clientDolphin.getClientModelStore().deletePresentationModel(model, true);\n return model;\n }\n\n handleCreatePresentationModelCommand(serverCommand) {\n if (this.clientDolphin.getClientModelStore().containsPresentationModel(serverCommand.pmId)) {\n throw new Error(\"There already is a presentation model with id \" + serverCommand.pmId + \" known to the client.\");\n }\n let attributes = [];\n serverCommand.attributes.forEach((attr) => {\n let clientAttribute = this.clientDolphin.attribute(attr.propertyName, attr.qualifier, attr.value);\n if (attr.id && attr.id.match(\".*S$\")) {\n clientAttribute.id = attr.id;\n }\n attributes.push(clientAttribute);\n });\n let clientPm = new ClientPresentationModel(serverCommand.pmId, serverCommand.pmType);\n clientPm.addAttributes(attributes);\n if (serverCommand.clientSideOnly) {\n clientPm.clientSideOnly = true;\n }\n this.clientDolphin.getClientModelStore().add(clientPm, false);\n this.clientDolphin.updatePresentationModelQualifier(clientPm);\n return clientPm;\n }\n\n handleValueChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute) {\n ClientConnector.LOGGER.error(\"attribute with id \" + serverCommand.attributeId + \" not found, cannot update to new value \" + serverCommand.newValue);\n return null;\n }\n if (clientAttribute.getValue() === serverCommand.newValue) {\n return null;\n }\n clientAttribute.setValueFromServer(serverCommand.newValue);\n return null;\n }\n\n handleAttributeMetadataChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute)\n return null;\n clientAttribute[serverCommand.metadataName] = serverCommand.value;\n return null;\n }\n\n listen() {\n if (!this.pushEnabled)\n return;\n if (this.waiting)\n return;\n // todo: how to issue a warning if no pushListener is set?\n if (!this.currentlySending) {\n this.doSendNext();\n }\n }\n\n enqueuePushCommand() {\n let me = this;\n this.waiting = true;\n this.commandQueue.push({\n command: this.pushListener,\n handler: {\n onFinished: function () { me.waiting = false; },\n onFinishedData: null\n }\n });\n }\n\n release() {\n if (!this.waiting)\n return;\n this.waiting = false;\n // todo: how to issue a warning if no releaseCommand is set?\n this.transmitter.signal(this.releaseCommand);\n }\n}\n\nClientConnector.LOGGER = LoggerFactory.getLogger('ClientConnector');","import EventBus from './eventBus';\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientAttribute {\n\n constructor(propertyName, qualifier, value) {\n\n this.propertyName = propertyName;\n this.id = \"\" + (ClientAttribute.clientAttributeInstanceCount++) + \"C\";\n this.valueChangeBus = new EventBus();\n this.qualifierChangeBus = new EventBus();\n this.setValue(value);\n this.setQualifier(qualifier);\n }\n\n copy() {\n let result = new ClientAttribute(this.propertyName, this.getQualifier(), this.getValue());\n return result;\n }\n\n setPresentationModel(presentationModel) {\n if (this.presentationModel) {\n throw new Error(\"You can not set a presentation model for an attribute that is already bound.\");\n }\n this.presentationModel = presentationModel;\n }\n\n getPresentationModel() {\n return this.presentationModel;\n }\n\n getValue() {\n return this.value;\n }\n\n setValueFromServer(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': false });\n }\n\n setValue(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': true });\n }\n\n setQualifier(newQualifier) {\n if (this.qualifier === newQualifier)\n return;\n let oldQualifier = this.qualifier;\n this.qualifier = newQualifier;\n this.qualifierChangeBus.trigger({ 'oldValue': oldQualifier, 'newValue': newQualifier });\n this.valueChangeBus.trigger({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n getQualifier() {\n return this.qualifier;\n }\n\n onValueChange(eventHandler) {\n this.valueChangeBus.onEvent(eventHandler);\n eventHandler({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n onQualifierChange(eventHandler) {\n this.qualifierChangeBus.onEvent(eventHandler);\n }\n\n syncWith(sourceAttribute) {\n if (sourceAttribute) {\n this.setQualifier(sourceAttribute.getQualifier()); // sequence is important\n this.setValue(sourceAttribute.value);\n }\n }\n\n static checkValue(value) {\n if (value == null || typeof value === 'undefined') {\n return null;\n }\n let result = value;\n if (result instanceof String || result instanceof Boolean || result instanceof Number) {\n result = value.valueOf();\n }\n if (result instanceof ClientAttribute) {\n ClientAttribute.LOGGER.warn(\"An Attribute may not itself contain an attribute as a value. Assuming you forgot to call value.\");\n result = this.checkValue(value.value);\n }\n let ok = false;\n if (this.SUPPORTED_VALUE_TYPES.indexOf(typeof result) > -1 || result instanceof Date) {\n ok = true;\n }\n if (!ok) {\n throw new Error(\"Attribute values of this type are not allowed: \" + typeof value);\n }\n return result;\n }\n\n}\n\nClientAttribute.LOGGER = LoggerFactory.getLogger('ClientAttribute');\nClientAttribute.SUPPORTED_VALUE_TYPES = [\"string\", \"number\", \"boolean\"];\nClientAttribute.clientAttributeInstanceCount = 0;\n","import ClientAttribute from './clientAttribute'\nimport ClientPresentationModel from './clientPresentationModel'\n\nexport default class ClientDolphin {\n\n constructor() {\n }\n\n setClientConnector(clientConnector) {\n this.clientConnector = clientConnector;\n }\n\n getClientConnector() {\n return this.clientConnector;\n }\n\n send(command, onFinished) {\n this.clientConnector.send(command, onFinished);\n }\n\n attribute(propertyName, qualifier, value) {\n return new ClientAttribute(propertyName, qualifier, value);\n }\n\n presentationModel(id, type, ...attributes) {\n const model = new ClientPresentationModel(id, type);\n if (attributes && attributes.length > 0) {\n attributes.forEach((attribute) => {\n model.addAttribute(attribute);\n });\n }\n this.getClientModelStore().add(model, true);\n return model;\n }\n\n setClientModelStore(clientModelStore) {\n this.clientModelStore = clientModelStore;\n }\n\n getClientModelStore() {\n return this.clientModelStore;\n }\n\n listPresentationModelIds() {\n return this.getClientModelStore().listPresentationModelIds();\n }\n\n listPresentationModels() {\n return this.getClientModelStore().listPresentationModels();\n }\n\n findAllPresentationModelByType(presentationModelType) {\n return this.getClientModelStore().findAllPresentationModelByType(presentationModelType);\n }\n\n getAt(id) {\n return this.findPresentationModelById(id);\n }\n\n findPresentationModelById(id) {\n return this.getClientModelStore().findPresentationModelById(id);\n }\n\n deletePresentationModel(modelToDelete) {\n this.getClientModelStore().deletePresentationModel(modelToDelete, true);\n }\n\n updatePresentationModelQualifier(presentationModel) {\n presentationModel.getAttributes().forEach(sourceAttribute => {\n this.updateAttributeQualifier(sourceAttribute);\n });\n }\n\n updateAttributeQualifier(sourceAttribute) {\n if (!sourceAttribute.getQualifier())\n return;\n const attributes = this.getClientModelStore().findAllAttributesByQualifier(sourceAttribute.getQualifier());\n attributes.forEach(targetAttribute => {\n targetAttribute.setValue(sourceAttribute.getValue()); // should always have the same value\n });\n }\n\n startPushListening(pushCommand, releaseCommand) {\n this.clientConnector.setPushListener(pushCommand);\n this.clientConnector.setReleaseCommand(releaseCommand);\n this.clientConnector.setPushEnabled(true);\n\n setTimeout(() => {\n this.clientConnector.listen();\n }, 0);\n }\n\n stopPushListening() {\n this.clientConnector.setPushEnabled(false);\n }\n}","\nexport default class Attribute {\n}\n\nAttribute.QUALIFIER_PROPERTY = \"qualifier\";\nAttribute.VALUE = \"value\";\n","import CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\n\nexport default class CommandFactory {\n\n static createCreateContextCommand() {\n return new CreateContextCommand();\n }\n\n static createCreateControllerCommand(controllerName, parentControllerId) {\n const command = new CreateControllerCommand();\n command.init(controllerName, parentControllerId);\n return command;\n }\n\n static createCallActionCommand(controllerid, actionName, params) {\n const command = new CallActionCommand();\n command.init(controllerid, actionName, params);\n return command;\n }\n\n static createDestroyControllerCommand(controllerId) {\n const command = new DestroyControllerCommand();\n command.init(controllerId);\n return command;\n }\n\n static createDestroyContextCommand() {\n return new DestroyContextCommand();\n }\n\n static createStartLongPollCommand() {\n return new StartLongPollCommand();\n }\n\n static createInterruptLongPollCommand() {\n return new InterruptLongPollCommand();\n }\n\n static createCreatePresentationModelCommand(presentationModel) {\n const command = new CreatePresentationModelCommand();\n command.init(presentationModel);\n return command;\n }\n\n static createDeletePresentationModelCommand(pmId) {\n const command = new DeletePresentationModelCommand();\n command.init(pmId);\n return command;\n }\n\n static createPresentationModelDeletedCommand(pmId) {\n let command = new PresentationModelDeletedCommand();\n command.init(pmId);\n return command;\n }\n\n static createValueChangedCommand(attributeId, newValue) {\n let command = new ValueChangedCommand();\n command.init(attributeId, newValue);\n return command;\n }\n\n static createChangeAttributeMetadataCommand(attributeId, metadataName, value) {\n let command = new ChangeAttributeMetadataCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n\n static createAttributeMetadataChangedCommand(attributeId, metadataName, value) {\n let command = new AttributeMetadataChangedCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n}","import Attribute from './attribute'\nimport EventBus from './eventBus'\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientModelStore {\n\n constructor(clientDolphin) {\n\n this.clientDolphin = clientDolphin;\n this.presentationModels = new Map();\n this.presentationModelsPerType = new Map();\n this.attributesPerId = new Map();\n this.attributesPerQualifier = new Map();\n this.modelStoreChangeBus = new EventBus();\n }\n\n getClientDolphin() {\n return this.clientDolphin;\n }\n\n registerAttribute(attribute) {\n this.addAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.addAttributeByQualifier(attribute);\n }\n // whenever an attribute changes its value, the server needs to be notified\n // and all other attributes with the same qualifier are given the same value\n attribute.onValueChange((evt) => {\n if(evt.newValue !== evt.oldValue && evt.sendToServer === true) {\n const command = CommandFactory.createValueChangedCommand(attribute.id, evt.newValue);\n this.clientDolphin.getClientConnector().send(command, null);\n }\n\n if (attribute.getQualifier()) {\n let attrs = this.findAttributesByFilter((attr) => {\n return attr !== attribute && attr.getQualifier() === attribute.getQualifier();\n });\n attrs.forEach((attr) => {\n attr.setValue(attribute.getValue());\n });\n }\n\n });\n attribute.onQualifierChange((evt) => {\n this.clientDolphin.getClientConnector().send(CommandFactory.createChangeAttributeMetadataCommand(attribute.id, Attribute.QUALIFIER_PROPERTY, evt.newValue), null);\n });\n }\n\n add(model, sendToServer = true) {\n if (!model) {\n return false;\n }\n if (this.presentationModels.has(model.id)) {\n ClientModelStore.LOGGER.error(\"There already is a PM with id \" + model.id);\n }\n let added = false;\n if (!this.presentationModels.has(model.id)) {\n this.presentationModels.set(model.id, model);\n this.addPresentationModelByType(model);\n\n if(sendToServer) {\n let connector = this.clientDolphin.getClientConnector();\n connector.send(CommandFactory.createCreatePresentationModelCommand(model), null);\n }\n\n model.getAttributes().forEach(attribute => {\n this.registerAttribute(attribute);\n });\n this.modelStoreChangeBus.trigger({ 'eventType': ADDED_TYPE, 'clientPresentationModel': model });\n added = true;\n }\n return added;\n }\n\n remove(model) {\n if (!model) {\n return false;\n }\n let removed = false;\n if (this.presentationModels.has(model.id)) {\n this.removePresentationModelByType(model);\n this.presentationModels.delete(model.id);\n model.getAttributes().forEach((attribute) => {\n this.removeAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.removeAttributeByQualifier(attribute);\n }\n });\n this.modelStoreChangeBus.trigger({ 'eventType': REMOVED_TYPE, 'clientPresentationModel': model });\n removed = true;\n }\n return removed;\n }\n\n findAttributesByFilter(filter) {\n let matches = [];\n this.presentationModels.forEach((model) => {\n model.getAttributes().forEach((attr) => {\n if (filter(attr)) {\n matches.push(attr);\n }\n });\n });\n return matches;\n }\n\n addPresentationModelByType(model) {\n if (!model) {\n return;\n }\n let type = model.presentationModelType;\n if (!type) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(type);\n if (!presentationModels) {\n presentationModels = [];\n this.presentationModelsPerType.set(type, presentationModels);\n }\n if (!(presentationModels.indexOf(model) > -1)) {\n presentationModels.push(model);\n }\n }\n\n removePresentationModelByType(model) {\n if (!model || !(model.presentationModelType)) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(model.presentationModelType);\n if (!presentationModels) {\n return;\n }\n if (presentationModels.length > -1) {\n presentationModels.splice(presentationModels.indexOf(model), 1);\n }\n if (presentationModels.length === 0) {\n this.presentationModelsPerType.delete(model.presentationModelType);\n }\n }\n\n listPresentationModelIds() {\n let result = [];\n let iter = this.presentationModels.keys();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n listPresentationModels() {\n let result = [];\n let iter = this.presentationModels.values();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n findPresentationModelById(id) {\n return this.presentationModels.get(id);\n }\n\n findAllPresentationModelByType(type) {\n if (!type || !this.presentationModelsPerType.has(type)) {\n return [];\n }\n return this.presentationModelsPerType.get(type).slice(0); // slice is used to clone the array\n }\n\n deletePresentationModel(model, notify) {\n if (!model) {\n return;\n }\n if (this.containsPresentationModel(model.id)) {\n this.remove(model);\n if (!notify || model.clientSideOnly) {\n return;\n }\n this.clientDolphin.getClientConnector().send(CommandFactory.createPresentationModelDeletedCommand(model.id), null);\n }\n }\n\n containsPresentationModel(id) {\n return this.presentationModels.has(id);\n }\n\n addAttributeById(attribute) {\n if (!attribute || this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.set(attribute.id, attribute);\n }\n\n removeAttributeById(attribute) {\n if (!attribute || !this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.delete(attribute.id);\n }\n\n findAttributeById(id) {\n return this.attributesPerId.get(id);\n }\n\n addAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n attributes = [];\n this.attributesPerQualifier.set(attribute.getQualifier(), attributes);\n }\n if (!(attributes.indexOf(attribute) > -1)) {\n attributes.push(attribute);\n }\n }\n\n removeAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n return;\n }\n if (attributes.length > -1) {\n attributes.splice(attributes.indexOf(attribute), 1);\n }\n if (attributes.length === 0) {\n this.attributesPerQualifier.delete(attribute.getQualifier());\n }\n }\n\n findAllAttributesByQualifier(qualifier) {\n if (!qualifier || !this.attributesPerQualifier.has(qualifier)) {\n return [];\n }\n return this.attributesPerQualifier.get(qualifier).slice(0); // slice is used to clone the array\n }\n\n onModelStoreChange(eventHandler) {\n this.modelStoreChangeBus.onEvent(eventHandler);\n }\n\n onModelStoreChangeForType(presentationModelType, eventHandler) {\n this.modelStoreChangeBus.onEvent(pmStoreEvent => {\n if (pmStoreEvent.clientPresentationModel.presentationModelType == presentationModelType) {\n eventHandler(pmStoreEvent);\n }\n });\n }\n}\n\nClientModelStore.LOGGER = LoggerFactory.getLogger('ClientModelStore');\n\n","export default class NoTransmitter {\n\n transmit(commands, onDone) {\n // do nothing special\n onDone([]);\n }\n\n signal() {\n // do nothing\n }\n\n reset() {\n // do nothing\n }\n}","import ClientConnector from './clientConnector'\nimport ClientDolphin from './clientDolphin'\nimport ClientModelStore from './clientModelStore'\nimport NoTransmitter from './noTransmitter'\nimport { LoggerFactory } from '../logging';\n\n\nclass DolphinBuilder {\n\n constructor() {\n this.slackMS = 300;\n this.maxBatchSize = 50;\n this.transmitter = null;\n }\n\n withSlackMS(slackMS) {\n this.slackMS = slackMS;\n return this;\n }\n\n withMaxBatchSize(maxBatchSize) {\n this.maxBatchSize = maxBatchSize;\n return this;\n }\n\n withTransmitter(transmitter) {\n this.transmitter = transmitter;\n return this;\n }\n\n build() {\n const clientDolphin = new ClientDolphin();\n let transmitter;\n if (this.transmitter) {\n transmitter = this.transmitter;\n } else {\n transmitter = new NoTransmitter();\n }\n clientDolphin.setClientConnector(new ClientConnector(transmitter, clientDolphin, this.slackMS, this.maxBatchSize));\n clientDolphin.setClientModelStore(new ClientModelStore(clientDolphin));\n DolphinBuilder.LOGGER.debug(\"Remoting client initialized\", clientDolphin, transmitter);\n return clientDolphin;\n }\n}\n\nDolphinBuilder.LOGGER = LoggerFactory.getLogger('DolphinBuilder');\n\nconst dolphinBuilder = new DolphinBuilder();\n\nexport { dolphinBuilder }","import {exists, checkMethod, checkParam} from '../utils';\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants';\n\n\nconst DOLPHIN_BEAN = '@@@ R_BEAN @@@';\nconst ACTION_CALL_BEAN = '@@@ CONTROLLER_ACTION_CALL_BEAN @@@';\nconst HIGHLANDER_BEAN = '@@@ HIGHLANDER_BEAN @@@';\nconst DOLPHIN_LIST_SPLICE = '@R:LS@';\nconst SOURCE_SYSTEM = '@@@ SOURCE_SYSTEM @@@';\nconst SOURCE_SYSTEM_CLIENT = 'client';\nconst SOURCE_SYSTEM_SERVER = 'server';\n\nexport default class Connector{\n\n constructor(url, dolphin, classRepository, config) {\n checkMethod('Connector(url, dolphin, classRepository, config)');\n checkParam(url, 'url');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n\n let self = this;\n this.dolphin = dolphin;\n this.config = config;\n this.classRepository = classRepository;\n this.highlanderPMResolver = function() {};\n this.highlanderPMPromise = new Promise((resolve) => {\n self.highlanderPMResolver = resolve;\n });\n\n dolphin.getClientModelStore().onModelStoreChange((event) => {\n let model = event.clientPresentationModel;\n let sourceSystem = model.findAttributeByPropertyName(SOURCE_SYSTEM);\n if (exists(sourceSystem) && sourceSystem.value === SOURCE_SYSTEM_SERVER) {\n if (event.eventType === ADDED_TYPE) {\n self.onModelAdded(model);\n } else if (event.eventType === REMOVED_TYPE) {\n self.onModelRemoved(model);\n }\n }\n });\n }\n connect() {\n let that = this;\n that.dolphin.startPushListening(CommandFactory.createStartLongPollCommand(), CommandFactory.createInterruptLongPollCommand());\n }\n\n onModelAdded(model) {\n checkMethod('Connector.onModelAdded(model)');\n checkParam(model, 'model');\n\n var type = model.presentationModelType;\n switch (type) {\n case ACTION_CALL_BEAN:\n // ignore\n break;\n case DOLPHIN_BEAN:\n this.classRepository.registerClass(model);\n break;\n case HIGHLANDER_BEAN:\n this.highlanderPMResolver(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n this.classRepository.spliceListEntry(model);\n this.dolphin.deletePresentationModel(model);\n break;\n default:\n this.classRepository.load(model);\n break;\n }\n }\n\n onModelRemoved(model) {\n checkMethod('Connector.onModelRemoved(model)');\n checkParam(model, 'model');\n let type = model.presentationModelType;\n switch (type) {\n case DOLPHIN_BEAN:\n this.classRepository.unregisterClass(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n // do nothing\n break;\n default:\n this.classRepository.unload(model);\n break;\n }\n }\n\n invoke(command) {\n checkMethod('Connector.invoke(command)');\n checkParam(command, 'command');\n\n var dolphin = this.dolphin;\n return new Promise((resolve, reject) => {\n dolphin.send(command, {\n onFinished: (params) => {\n resolve(params);\n },\n onError: (reason) => {\n reject(reason);\n } \n });\n });\n }\n\n getHighlanderPM() {\n return this.highlanderPMPromise;\n }\n}\n\nexport { SOURCE_SYSTEM, SOURCE_SYSTEM_CLIENT, SOURCE_SYSTEM_SERVER, ACTION_CALL_BEAN };\n","import {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class BeanManager {\n\n constructor(classRepository) {\n checkMethod('BeanManager(classRepository)');\n checkParam(classRepository, 'classRepository');\n\n this.classRepository = classRepository;\n this.addedHandlers = new Map();\n this.removedHandlers = new Map();\n this.updatedHandlers = new Map();\n this.arrayUpdatedHandlers = new Map();\n this.allAddedHandlers = [];\n this.allRemovedHandlers = [];\n this.allUpdatedHandlers = [];\n this.allArrayUpdatedHandlers = [];\n\n this._handleBeanAdded = this._handleBeanAdded.bind(this);\n this._handleBeanRemoved = this._handleBeanRemoved.bind(this);\n this._handleBeanUpdate = this._handleBeanUpdate.bind(this);\n this._handleArrayUpdate = this._handleArrayUpdate.bind(this);\n\n this.classRepository.onBeanAdded(this._handleBeanAdded);\n this.classRepository.onBeanRemoved(this._handleBeanRemoved);\n this.classRepository.onBeanUpdate(this._handleBeanUpdate);\n this.classRepository.onArrayUpdate(this._handleArrayUpdate);\n }\n\n _handleBeanAdded(type, bean) {\n const handlerList = this.addedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanAdded-handler for type', type, e);\n }\n });\n }\n this.allAddedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanAdded-handler', e);\n }\n });\n }\n\n _handleBeanRemoved(type, bean) {\n const handlerList = this.removedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler for type', type, e);\n }\n });\n }\n this.allRemovedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanRemoved-handler', e);\n }\n });\n }\n\n _handleArrayUpdate(type, bean, propertyName, index, count, newElements) {\n const handlerList = this.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler for type', type, e);\n }\n });\n }\n this.allArrayUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onArrayUpdate-handler', e);\n }\n });\n }\n\n _handleBeanUpdate(type, bean, propertyName, newValue, oldValue) {\n const handlerList = this.updatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler for type', type, e);\n }\n });\n }\n this.allUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanUpdate-handler', e);\n }\n });\n }\n\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('BeanManager.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n return this.classRepository.notifyBeanChange(bean, propertyName, newValue);\n }\n\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('BeanManager.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n this.classRepository.notifyArrayChange(bean, propertyName, index, count, removedElements);\n }\n\n\n isManaged(bean) {\n checkMethod('BeanManager.isManaged(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.isManaged() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n create(type) {\n checkMethod('BeanManager.create(type)');\n checkParam(type, 'type');\n\n // TODO: Implement dolphin.create() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n add(type, bean) {\n checkMethod('BeanManager.add(type, bean)');\n checkParam(type, 'type');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.add() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n addAll(type, collection) {\n checkMethod('BeanManager.addAll(type, collection)');\n checkParam(type, 'type');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.addAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n remove(bean) {\n checkMethod('BeanManager.remove(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.remove() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeAll(collection) {\n checkMethod('BeanManager.removeAll(collection)');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.removeAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeIf(predicate) {\n checkMethod('BeanManager.removeIf(predicate)');\n checkParam(predicate, 'predicate');\n\n // TODO: Implement dolphin.removeIf() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n onAdded(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onAdded(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allAddedHandlers = this.allAddedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allAddedHandlers = self.allAddedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onAdded(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.addedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.addedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.addedHandlers.get(type);\n if (exists(handlerList)) { \n self.addedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onRemoved(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onRemoved(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allRemovedHandlers = this.allRemovedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allRemovedHandlers = self.allRemovedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onRemoved(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.removedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.removedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.removedHandlers.get(type);\n if (exists(handlerList)) {\n self.removedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onBeanUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onBeanUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allUpdatedHandlers = this.allUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allUpdatedHandlers = self.allUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onBeanUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.updatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.updatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.updatedHandlers.get(type);\n if (exists(handlerList)) {\n self.updatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n onArrayUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onArrayUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allArrayUpdatedHandlers = this.allArrayUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allArrayUpdatedHandlers = self.allArrayUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onArrayUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.arrayUpdatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.arrayUpdatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n self.arrayUpdatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n}\n\nBeanManager.LOGGER = LoggerFactory.getLogger('BeanManager');\n","import * as consts from './constants';\nimport {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass ClassRepository {\n\n constructor(dolphin) {\n checkMethod('ClassRepository(dolphin)');\n checkParam(dolphin, 'dolphin');\n\n this.dolphin = dolphin;\n this.classes = new Map();\n this.beanFromDolphin = new Map();\n this.beanToDolphin = new Map();\n this.classInfos = new Map();\n this.beanAddedHandlers = [];\n this.beanRemovedHandlers = [];\n this.propertyUpdateHandlers = [];\n this.arrayUpdateHandlers = [];\n this.blocked = null;\n }\n\n sendListSplice(classRepository, modelId, propertyName, from, to, newElements) {\n let dolphin = classRepository.dolphin;\n let model = dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = classRepository.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n if (exists(type)) {\n\n let attributes = [\n dolphin.attribute('@@@ SOURCE_SYSTEM @@@', null, 'client'),\n dolphin.attribute('source', null, modelId),\n dolphin.attribute('attribute', null, propertyName),\n dolphin.attribute('from', null, from),\n dolphin.attribute('to', null, to),\n dolphin.attribute('count', null, newElements.length)\n ];\n newElements.forEach(function (element, index) {\n attributes.push(dolphin.attribute(index.toString(), null, ClassRepository.toDolphin(classRepository, type, element)));\n });\n dolphin.presentationModel.apply(dolphin, [null, '@DP:LS@'].concat(attributes));\n }\n }\n }\n\n validateList(classRepository, type, bean, propertyName) {\n let list = bean[propertyName];\n if (!exists(list)) {\n classRepository.propertyUpdateHandlers.forEach(function (handler) {\n try {\n handler(type, bean, propertyName, [], undefined);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n }\n\n block(bean, propertyName) {\n if (exists(this.blocked)) {\n throw new Error('Trying to create a block while another block exists');\n }\n this.blocked = {\n bean: bean,\n propertyName: propertyName\n };\n }\n\n isBlocked(bean, propertyName) {\n return exists(this.blocked) && this.blocked.bean === bean && this.blocked.propertyName === propertyName;\n }\n\n unblock() {\n this.blocked = null;\n }\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('ClassRepository.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n let modelId = this.beanToDolphin.get(bean);\n if (exists(modelId)) {\n let model = this.dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = this.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n let attribute = model.findAttributeByPropertyName(propertyName);\n if (exists(type) && exists(attribute)) {\n let oldValue = attribute.getValue();\n attribute.setValue(ClassRepository.toDolphin(this, type, newValue));\n return ClassRepository.fromDolphin(this, type, oldValue);\n }\n }\n }\n }\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('ClassRepository.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n if (this.isBlocked(bean, propertyName)) {\n return;\n }\n let modelId = this.beanToDolphin.get(bean);\n let array = bean[propertyName];\n if (exists(modelId) && exists(array)) {\n let removedElementsCount = Array.isArray(removedElements) ? removedElements.length : 0;\n this.sendListSplice(this, modelId, propertyName, index, index + removedElementsCount, array.slice(index, index + count));\n }\n }\n\n onBeanAdded(handler) {\n checkMethod('ClassRepository.onBeanAdded(handler)');\n checkParam(handler, 'handler');\n this.beanAddedHandlers.push(handler);\n }\n\n onBeanRemoved(handler) {\n checkMethod('ClassRepository.onBeanRemoved(handler)');\n checkParam(handler, 'handler');\n this.beanRemovedHandlers.push(handler);\n }\n\n onBeanUpdate(handler) {\n checkMethod('ClassRepository.onBeanUpdate(handler)');\n checkParam(handler, 'handler');\n this.propertyUpdateHandlers.push(handler);\n }\n\n onArrayUpdate(handler) {\n checkMethod('ClassRepository.onArrayUpdate(handler)');\n checkParam(handler, 'handler');\n this.arrayUpdateHandlers.push(handler);\n }\n\n registerClass(model) {\n checkMethod('ClassRepository.registerClass(model)');\n checkParam(model, 'model');\n\n if (this.classes.has(model.id)) {\n return;\n }\n\n let classInfo = {};\n model.attributes.filter(function (attribute) {\n return attribute.propertyName.search(/^@/) < 0;\n }).forEach(function (attribute) {\n classInfo[attribute.propertyName] = attribute.value;\n });\n this.classes.set(model.id, classInfo);\n }\n\n unregisterClass(model) {\n checkMethod('ClassRepository.unregisterClass(model)');\n checkParam(model, 'model');\n this.classes['delete'](model.id);\n }\n\n load(model) {\n checkMethod('ClassRepository.load(model)');\n checkParam(model, 'model');\n\n let self = this;\n let classInfo = this.classes.get(model.presentationModelType);\n let bean = {};\n model.attributes.filter(function (attribute) {\n return (attribute.propertyName.search(/^@/) < 0);\n }).forEach(function (attribute) {\n bean[attribute.propertyName] = null;\n attribute.onValueChange(function (event) {\n if (event.oldValue !== event.newValue) {\n let oldValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.oldValue);\n let newValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.newValue);\n self.propertyUpdateHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean, attribute.propertyName, newValue, oldValue);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n });\n });\n this.beanFromDolphin.set(model.id, bean);\n this.beanToDolphin.set(bean, model.id);\n this.classInfos.set(model.id, classInfo);\n this.beanAddedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanAdded-handler', e);\n }\n });\n return bean;\n }\n\n unload(model) {\n checkMethod('ClassRepository.unload(model)');\n checkParam(model, 'model');\n\n let bean = this.beanFromDolphin.get(model.id);\n this.beanFromDolphin['delete'](model.id);\n this.beanToDolphin['delete'](bean);\n this.classInfos['delete'](model.id);\n if (exists(bean)) {\n this.beanRemovedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler', e);\n }\n });\n }\n return bean;\n }\n\n spliceListEntry(model) {\n checkMethod('ClassRepository.spliceListEntry(model)');\n checkParam(model, 'model');\n\n let source = model.findAttributeByPropertyName('source');\n let attribute = model.findAttributeByPropertyName('attribute');\n let from = model.findAttributeByPropertyName('from');\n let to = model.findAttributeByPropertyName('to');\n let count = model.findAttributeByPropertyName('count');\n\n if (exists(source) && exists(attribute) && exists(from) && exists(to) && exists(count)) {\n let classInfo = this.classInfos.get(source.value);\n let bean = this.beanFromDolphin.get(source.value);\n if (exists(bean) && exists(classInfo)) {\n let type = model.presentationModelType;\n //var entry = fromDolphin(this, classInfo[attribute.value], element.value);\n this.validateList(this, type, bean, attribute.value);\n let newElements = [],\n element = null;\n for (let i = 0; i < count.value; i++) {\n element = model.findAttributeByPropertyName(i.toString());\n if (!exists(element)) {\n throw new Error(\"Invalid list modification update received\");\n }\n newElements.push(ClassRepository.fromDolphin(this, classInfo[attribute.value], element.value));\n }\n try {\n this.block(bean, attribute.value);\n this.arrayUpdateHandlers.forEach((handler) => {\n try {\n handler(type, bean, attribute.value, from.value, to.value - from.value, newElements);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler', e);\n }\n });\n } finally {\n this.unblock();\n }\n } else {\n throw new Error(\"Invalid list modification update received. Source bean unknown.\");\n }\n } else {\n throw new Error(\"Invalid list modification update received\");\n }\n }\n\n mapParamToDolphin(param) {\n if (!exists(param)) {\n return param;\n }\n let type = typeof param;\n if (type === 'object') {\n if (param instanceof Date) {\n return param.toISOString();\n } else {\n let value = this.beanToDolphin.get(param);\n if (exists(value)) {\n return value;\n }\n throw new TypeError(\"Only managed remoting beans can be used\");\n }\n }\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return param;\n }\n throw new TypeError(\"Only managed remoting beans and primitive types can be used\");\n }\n\n mapDolphinToBean(value) {\n return ClassRepository.fromDolphin(this, consts.REMOTING_BEAN, value);\n }\n}\n\nClassRepository.fixType = function(type, value) {\n switch (type) {\n case consts.BYTE:\n case consts.SHORT:\n case consts.INT:\n case consts.LONG:\n return parseInt(value);\n case consts.FLOAT:\n case consts.DOUBLE:\n return parseFloat(value);\n case consts.BOOLEAN:\n return 'true' === String(value).toLowerCase();\n case consts.STRING:\n case consts.ENUM:\n return String(value);\n default:\n return value;\n }\n};\n\nClassRepository.fromDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanFromDolphin.get(String(value));\n case consts.DATE:\n return new Date(String(value));\n case consts.CALENDAR:\n return new Date(String(value));\n case consts.LOCAL_DATE_FIELD_TYPE:\n return new Date(String(value));\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.toDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanToDolphin.get(value);\n case consts.DATE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.CALENDAR:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.LOGGER = LoggerFactory.getLogger('ClassRepository');\n\nexport default ClassRepository;\n","import {checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class ControllerProxy {\n\n constructor(controllerId, model, manager){\n checkMethod('ControllerProxy(controllerId, model, manager)');\n checkParam(controllerId, 'controllerId');\n checkParam(model, 'model');\n checkParam(manager, 'manager');\n\n this.controllerId = controllerId;\n this.model = model;\n this.manager = manager;\n this.destroyed = false;\n this.onDestroyedHandlers = new Set();\n }\n\n getModel() {\n return this.model;\n }\n\n getId() {\n return this.controllerId;\n }\n\n invoke(name, params){\n checkMethod('ControllerProxy.invoke(name, params)');\n checkParam(name, 'name');\n\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n return this.manager.invokeAction(this.controllerId, name, params);\n }\n\n createController(name) {\n return this.manager._createController(name, this.getId());\n }\n\n destroy(){\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n this.destroyed = true;\n this.onDestroyedHandlers.forEach((handler) => {\n try {\n handler(this);\n } catch(e) {\n ControllerProxy.LOGGER.error('An exception occurred while calling an onDestroyed-handler', e);\n }\n }, this);\n return this.manager.destroyController(this);\n }\n\n onDestroyed(handler){\n checkMethod('ControllerProxy.onDestroyed(handler)');\n checkParam(handler, 'handler');\n\n let self = this;\n this.onDestroyedHandlers.add(handler);\n return {\n unsubscribe: () => {\n self.onDestroyedHandlers.delete(handler);\n }\n };\n }\n}\n\nControllerProxy.LOGGER = LoggerFactory.getLogger('ControllerProxy');\n","import {exists, checkMethod, checkParam} from '../utils';\n\nimport ControllerProxy from './controllerProxy.js';\n\nimport CommandFactory from './commands/commandFactory.js';\n\n\nimport { SOURCE_SYSTEM } from './connector.js';\nimport { SOURCE_SYSTEM_CLIENT } from './connector.js';\nimport { ACTION_CALL_BEAN } from './connector.js';\n\nconst CONTROLLER_ID = 'controllerId';\nconst MODEL = 'model';\nconst ERROR_CODE = 'errorCode';\n\nexport default class ControllerManager {\n\n constructor(dolphin, classRepository, connector) {\n checkMethod('ControllerManager(dolphin, classRepository, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.classRepository = classRepository;\n this.connector = connector;\n this.controllers = new Set();\n }\n\n createController(name) {\n return this._createController(name, null);\n }\n\n _createController(name, parentControllerId) {\n checkMethod('ControllerManager.createController(name)');\n checkParam(name, 'name');\n\n let self = this;\n\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n const MSG_ERROR_CREATING_CONTROLLER = 'Error creating controller: ';\n\n self.connector.invoke(CommandFactory.createCreateControllerCommand(name, parentControllerId)).then(() => {\n let controllerId;\n\n self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).getValue(),\n 'Could not get an controllerID from highlanderPM.'\n ).then((ctrlId) => {\n controllerId = ctrlId;\n return self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(MODEL).getValue(),\n 'Could not get an modelID from highlanderPM.'\n );\n })\n .then((modelId) => {\n return self.getValueWithRetry(\n () => self.classRepository.mapDolphinToBean(modelId),\n 'Could not get an model from classRepository for ID: ' + modelId\n );\n })\n .then((model) => {\n try {\n const controller = new ControllerProxy(controllerId, model, self);\n self.controllers.add(controller);\n resolve(controller);\n } catch (e) {\n reject(MSG_ERROR_CREATING_CONTROLLER + e);\n }\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n });\n });\n }\n\n\n getValueWithRetry(getValueCall, errorMessage) {\n return new Promise((resolve, reject) => {\n const RETRIES = 1000;\n const RETRY_TIME = 5;\n let i = 0;\n const intervalID = setInterval(() => {\n let value = getValueCall();\n \n if (!(typeof value !== 'undefined' && value !== null)) {\n i++;\n if (i >= RETRIES) {\n clearInterval(intervalID);\n reject(errorMessage + \" after \" + i + \" retries.\");\n }\n } else {\n clearInterval(intervalID);\n resolve(value);\n }\n }, RETRY_TIME);\n });\n }\n\n invokeAction(controllerId, actionName, params) {\n checkMethod('ControllerManager.invokeAction(controllerId, actionName, params)');\n checkParam(controllerId, 'controllerId');\n checkParam(actionName, 'actionName');\n\n let self = this;\n return new Promise((resolve, reject) => {\n\n let attributes = [\n self.dolphin.attribute(SOURCE_SYSTEM, null, SOURCE_SYSTEM_CLIENT),\n self.dolphin.attribute(ERROR_CODE)\n ];\n\n let pm = self.dolphin.presentationModel.apply(self.dolphin, [null, ACTION_CALL_BEAN].concat(attributes));\n\n let actionParams = [];\n if (exists(params)) {\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n let value = self.classRepository.mapParamToDolphin(params[param]);\n actionParams.push({\n name: param,\n value: value\n });\n }\n }\n }\n\n self.connector.invoke(CommandFactory.createCallActionCommand(controllerId, actionName, actionParams)).then(() => {\n let isError = pm.findAttributeByPropertyName(ERROR_CODE).getValue();\n if (isError) {\n reject(new Error(\"Server side ControllerAction \" + actionName + \" caused an error. Please see server log for details.\"));\n } else {\n resolve();\n }\n self.dolphin.deletePresentationModel(pm);\n }).catch(reject);\n });\n }\n\n destroyController(controller) {\n checkMethod('ControllerManager.destroyController(controller)');\n checkParam(controller, 'controller');\n\n let self = this;\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n self.controllers.delete(controller);\n highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).setValue(controller.controllerId);\n self.connector.invoke(CommandFactory.createDestroyControllerCommand(controller.getId())).then(resolve).catch(reject);\n });\n });\n }\n\n destroy() {\n let controllersCopy = this.controllers;\n let promises = [];\n this.controllers = new Set();\n controllersCopy.forEach((controller) => {\n try {\n promises.push(controller.destroy());\n } catch (e) {\n // ignore\n }\n });\n return Promise.all(promises);\n }\n}\n","import Emitter from 'emitter-component';\nimport CommandFactory from './commands/commandFactory';\nimport {exists, checkMethod, checkParam} from '../utils';\n\nexport default class ClientContext{\n\n constructor(dolphin, beanManager, controllerManager, connector){\n checkMethod('ClientContext(dolphin, beanManager, controllerManager, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(beanManager, 'beanManager');\n checkParam(controllerManager, 'controllerManager');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.beanManager = beanManager;\n this._controllerManager = controllerManager;\n this._connector = connector;\n this.connectionPromise = null;\n this.isConnected = false;\n }\n\n connect(){\n let self = this;\n this.connectionPromise = new Promise((resolve, reject) => {\n self._connector.connect();\n self._connector.invoke(CommandFactory.createCreateContextCommand()).then(() => {\n self.isConnected = true;\n resolve();\n }).catch(reject);\n });\n return this.connectionPromise;\n }\n\n onConnect(){\n if(exists(this.connectionPromise)){\n if(!this.isConnected){\n return this.connectionPromise;\n }else{\n return new Promise((resolve) => {\n resolve();\n });\n }\n }else{\n return this.connect();\n }\n }\n\n createController(name){\n checkMethod('ClientContext.createController(name)');\n checkParam(name, 'name');\n\n return this._controllerManager.createController(name);\n }\n\n disconnect(){\n let self = this;\n this.dolphin.stopPushListening();\n return new Promise((resolve) => {\n self._controllerManager.destroy().then(() => {\n self._connector.invoke(CommandFactory.createDestroyContextCommand());\n self.dolphin = null;\n self.beanManager = null;\n self._controllerManager = null;\n self._connector = null;\n resolve();\n });\n });\n }\n}\n\nEmitter(ClientContext.prototype);","export class DolphinRemotingError extends Error {\n constructor(message = 'Remoting Error', detail) {\n super(message);\n this.detail = detail || undefined;\n }\n}\n\nexport class DolphinSessionError extends Error {\n constructor(message = 'Session Error') {\n super(message);\n }\n}\n\nexport class HttpResponseError extends Error {\n constructor(message = 'Http Response Error') {\n super(message);\n }\n}\n\nexport class HttpNetworkError extends Error {\n constructor(message = 'Http Network Error') {\n super(message);\n }\n}","import { LoggerFactory } from '../logging';\n\nexport default class RemotingErrorHandler {\n\n onError(error) {\n RemotingErrorHandler.LOGGER.error(error);\n }\n\n}\n\nRemotingErrorHandler.LOGGER = LoggerFactory.getLogger('RemotingErrorHandler');","import Emitter from 'emitter-component';\n\n\nimport { exists } from '../utils';\nimport { DolphinRemotingError, DolphinSessionError } from './errors';\nimport Codec from './commands/codec';\nimport RemotingErrorHandler from './remotingErrorHandler';\nimport { LoggerFactory, LogLevel } from '../logging';\nimport {VALUE_CHANGED_COMMAND_ID, START_LONG_POLL_COMMAND_ID} from './commands/commandConstants';\n\nconst DOLPHIN_SESSION_TIMEOUT = 408;\n\nexport default class PlatformHttpTransmitter {\n\n constructor(url, config, client) {\n this.url = url;\n this.config = config;\n this.client = client;\n this.headersInfo = exists(config) ? config.headersInfo : null;\n this.failed_attempt = 0;\n\n const connectionConfig = this._connectionConfig();\n this.maxRetry = exists(connectionConfig) && exists(connectionConfig.maxRetry)?connectionConfig.maxRetry: 3;\n this.timeout = exists(connectionConfig) && exists(connectionConfig.timeout)?connectionConfig.timeout: 5000;\n }\n\n _connectionConfig() {\n return exists(this.config) ? this.config.connection : null;\n }\n\n _handleError(reject, error) {\n const connectionConfig = this._connectionConfig();\n let errorHandlers = exists(connectionConfig) && exists(connectionConfig.errorHandlers)?connectionConfig.errorHandlers: [new RemotingErrorHandler()];\n errorHandlers.forEach(function(handler) {\n handler.onError(error);\n });\n reject(error);\n }\n\n _send(commands) {\n const self = this;\n return new Promise((resolve, reject) => {\n if (this.client) {\n const encodedCommands = Codec.encode(commands);\n\n if (PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.DEBUG) && !PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.TRACE)) {\n for (let i = 0; i < commands.length; i++) {\n let command = commands[i];\n if (command.id === VALUE_CHANGED_COMMAND_ID) {\n PlatformHttpTransmitter.LOGGER.debug('send', command, encodedCommands);\n }\n }\n }\n\n const useWorker = commands.length === 1 && commands[0].id === START_LONG_POLL_COMMAND_ID;\n const httpClient = this.client.getService('HttpClient');\n if (httpClient && self.failed_attempt <= self.maxRetry) {\n httpClient.post(self.url)\n .withHeadersInfo(this.headersInfo)\n .withContent(encodedCommands)\n .readString()\n .execute(useWorker)\n .then((response) => {\n resolve(response.content);\n })\n .catch((exception) => {\n const status = exception.getStatus();\n self.failed_attempt += 1;\n if (status === DOLPHIN_SESSION_TIMEOUT) {\n self._handleError(reject, new DolphinSessionError('PlatformHttpTransmitter: Session Timeout'));\n } else {\n self._handleError(reject, exception);\n }\n });\n } else {\n //TODO handle failure\n PlatformHttpTransmitter.LOGGER.error('Cannot reach the sever');\n }\n } else {\n PlatformHttpTransmitter.LOGGER.error('No Rico client found!');\n }\n });\n }\n\n transmit(commands, onDone, onError) {\n this._send(commands)\n .then(responseText => {\n if (responseText.trim().length > 0) {\n try {\n const responseCommands = Codec.decode(responseText);\n onDone(responseCommands);\n } catch (err) {\n const errorMsg = 'PlatformHttpTransmitter: Parse error: (Incorrect response = ' + responseText + ')';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n } else {\n const errorMsg = 'PlatformHttpTransmitter: Empty response';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n })\n .catch(error => {\n this.emit('error', error);\n onError(error);\n });\n }\n\n signal(command) {\n this._send([command])\n .catch(error => this.emit('error', error));\n }\n}\n\nPlatformHttpTransmitter.LOGGER = LoggerFactory.getLogger('PlatformHttpTransmitter');\n\nEmitter(PlatformHttpTransmitter.prototype);\n","import { dolphinBuilder } from './dolphinBuilder';\nimport { checkMethod, checkParam } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport Connector from './connector';\nimport BeanManager from './beanManager';\nimport ClassRepository from './classRepository';\nimport ControllerManager from './controllerManager';\nimport ClientContext from './clientContext';\nimport PlatformHttpTransmitter from './platformHttpTransmitter';\n\nclass ClientContextFactory {\n\n constructor(client) {\n this.client = client;\n if (!client && ClientContextFactory.legecyClientSupport) {\n ClientContextFactory.LOGGER.warn('Legecy support used.');\n this.client = ClientContextFactory.legecyClientSupport;\n }\n }\n\n create(url, config){\n checkMethod('connect(url, config)');\n checkParam(url, 'url');\n ClientContextFactory.LOGGER.debug('Creating client context', url, config);\n\n const transmitter = new PlatformHttpTransmitter(url, config, this.client);\n transmitter.on('error', function (error) {\n clientContext.emit('error', error);\n });\n\n const dolphin = dolphinBuilder\n .withTransmitter(transmitter)\n .withSlackMS(4)\n .withMaxBatchSize(Number.MAX_SAFE_INTEGER)\n .build();\n\n\n const classRepository = new ClassRepository(dolphin);\n const beanManager = new BeanManager(classRepository);\n const connector = new Connector(url, dolphin, classRepository, config);\n const controllerManager = new ControllerManager(dolphin, classRepository, connector);\n\n const clientContext = new ClientContext(dolphin, beanManager, controllerManager, connector);\n\n ClientContextFactory.LOGGER.debug('clientContext created with', clientContext);\n\n return clientContext;\n }\n}\n\nClientContextFactory.LOGGER = LoggerFactory.getLogger('ClientContextFactory');\nClientContextFactory.legecyClientSupport = false;\n\nlet createClientContext = (client) => new ClientContextFactory(client).create;\n\nexport { createClientContext, ClientContextFactory };","import { checkMethod, checkParam, exists } from '../utils';\nimport { HTTP, RESPONSE_TYPE } from '../platform/constants'\n\nclass KeycloakConnection {\n\n constructor() {\n }\n\n createDirectConnection(authEndpoint, realmName) {\n checkMethod('createDirectConnection');\n checkParam(authEndpoint, 'authEndpoint');\n checkParam(realmName, 'realmName');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint + '/auth/realms/' + realmName + '/protocol/openid-connect/token', true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.APPLICATION_X_WWW_FORM_URLENCODED);\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n createServerProxyConnection(authEndpoint, realmName) {\n checkMethod('createServerProxyConnection');\n checkParam(authEndpoint, 'authEndpoint');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint, true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.TEXT_PLAIN);\n if (exists(realmName)) {\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, realmName);\n }\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n}\n\nexport { KeycloakConnection }","import { HTTP } from '../platform/constants'\nimport { exists } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport { KeycloakConnection } from './keycloakConnection';\n\nclass KeycloakFunctions {\n\n constructor() {\n this.connection = new KeycloakConnection();\n }\n\n createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password) {\n let connection;\n let content;\n\n const encodedUser = encodeURIComponent(user);\n const encodedPassword = encodeURIComponent(password);\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint,realmName);\n content = 'client_id=' + encodedAppName + '&username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n }\n\n return { connection, content };\n }\n\n createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken) {\n let connection;\n let content;\n\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken + '&client_id=' + encodedAppName;\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken;\n }\n\n return { connection, content };\n }\n\n receiveToken(httpRequest, body) {\n return new Promise((resolve, reject) => {\n httpRequest.ontimeout = function (error) {\n reject(error);\n }\n\n httpRequest.onerror = function (error) {\n reject(error);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status === HTTP.STATUS.OK) {\n resolve(this.response);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status !== HTTP.STATUS.OK) {\n reject(this.status);\n }\n }\n \n KeycloakFunctions.LOGGER.trace('Receiving token');\n httpRequest.send(body);\n });\n }\n\n refreshToken(directConnection, authEndpoint, realmName, appName, refreshToken) {\n const { connection, content } = this.createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken);\n return this.receiveToken(connection, content);\n }\n \n}\n\nKeycloakFunctions.LOGGER = LoggerFactory.getLogger('KeycloakFunctions');\n\nexport { KeycloakFunctions }","import { checkMethod, checkParam, exists } from '../utils'\nimport { LoggerFactory } from '../logging'\nimport { HTTP } from '../platform/constants'\n\nclass SecurityHttpClientInterceptor {\n\n constructor() {\n this.token = null;\n this.appName = null;\n this.realm = null;\n }\n\n setToken(token) {\n this.token = token;\n }\n\n setAppName(appName) {\n this.appName = appName;\n }\n\n setRealm(realm) {\n this.realm = realm;\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n\n if (exists(this.token)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using token', this.token);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.AUTHORIZATION, 'Bearer ' + this.token);\n }\n\n if (exists(this.appName)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using appName', this.appName);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_APPLICATION, this.appName);\n }\n\n if (exists(this.realm)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using realm', this.realm);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, this.realm);\n }\n\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_BEARER_ONLY, 'true');\n \n }\n}\n\nSecurityHttpClientInterceptor.LOGGER = LoggerFactory.getLogger('SecurityHttpClientInterceptor');\n\nexport { SecurityHttpClientInterceptor };","import { LoggerFactory } from '../logging';\nimport { exists, checkMethod, checkParam } from '../utils';\nimport { KeycloakFunctions } from './keycloakFunctions';\nimport { SecurityHttpClientInterceptor } from './securityHttpClientInterceptor';\nimport { SECURITY } from '../platform/constants'\n\nclass KeycloakSecurity {\n\n constructor() {\n this.functions = new KeycloakFunctions();\n this.interceptor = new SecurityHttpClientInterceptor();\n this.intervall = null;\n\n this.configuration = {\n directConnection: false,\n authEndpoint: SECURITY.AUTH_ENDPOINT,\n appName: null,\n realmName: null\n }\n \n }\n\n login(user, password, configuration) {\n if (this.isAuthorized()) {\n throw new Error('Already logged in!');\n }\n\n if (configuration) {\n this.configuration.directConnection = configuration.directConnection || this.configuration.directConnection;\n this.configuration.authEndpoint = configuration.authEndpoint || this.configuration.authEndpoint;\n this.configuration.appName = configuration.appName || this.configuration.appName;\n this.configuration.realmName = configuration.realmName || this.configuration.realmName;\n }\n\n const { directConnection, authEndpoint, appName, realmName } = this.configuration;\n\n const { connection, content } = this.functions.createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password);\n const self = this;\n return new Promise((resolve, reject) => {\n KeycloakSecurity.LOGGER.debug('Receiving access token');\n this.functions.receiveToken(connection, content)\n .then((result) => {\n if (result && result.access_token) {\n self.token = result;\n this.interceptor.setToken(result.access_token);\n this.interceptor.setRealm(realmName);\n this.interceptor.setAppName(appName);\n const expires = result.expires_in || KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN;\n const sleepTime = Math.max(KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN, expires - KeycloakSecurity.TOKEN_EXPIRES_DELTA);\n self.intervall = setInterval(() => {\n KeycloakSecurity.LOGGER.debug('Refreshing access token');\n self.functions.refreshToken(directConnection, authEndpoint, realmName, appName, result.refresh_token).then((result) => {\n self.token = result;\n self.interceptor.setToken(result.access_token);\n });\n }, sleepTime);\n resolve(result.access_token);\n } else {\n reject('No access token found');\n }\n })\n .catch((error) => reject(error));\n });\n }\n\n logout() {\n const self = this;\n KeycloakSecurity.LOGGER.debug('Logout');\n return new Promise((resolve) => {\n delete self.token;\n self.interceptor.setToken(null);\n if (exists(this.intervall)) {\n clearInterval(this.intervall);\n this.intervall = null;\n }\n resolve();\n });\n }\n\n isAuthorized() {\n return exists(this.token);\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this.interceptor);\n }\n}\n\nKeycloakSecurity.TOKEN_EXPIRES_DELTA = 10000;\nKeycloakSecurity.MIN_TOKEN_EXPIRES_RUN = 30000;\n\nKeycloakSecurity.LOGGER = LoggerFactory.getLogger('KeycloakSecurity');\n\nexport { KeycloakSecurity };\n","import { HttpClient } from './httpClient';\nimport { HttpClientInterceptor } from './httpClientInterceptor';\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const httpClientProvider = new ServiceProvider(HttpClient, 'HttpClient', client);\n const httpClientInterceptorProvider = new ServiceProvider(HttpClientInterceptor, 'HttpClientInterceptor', client);\n \n client.registerServiceProvider(httpClientProvider);\n client.registerServiceProvider(httpClientInterceptorProvider);\n }\n}\n\nexport { register }","import { LoggerFactory, LogLevel } from './logging';\nimport { Client } from './platform/client';\nimport { ServiceProvider } from './platform/serviceProvider';\nimport { HTTP } from './platform/constants';\nimport { register as registerHttp } from './http';\nimport { register as registerClientScope } from './platform/clientScope';\nimport { register as registerRemotingScope } from './remoting'\nimport { register as registerSecurity } from './security'\n\nregisterHttp(Client);\nregisterClientScope(Client);\nregisterRemotingScope(Client);\nregisterSecurity(Client);\nClient.init();\n\nconst getService = Client.getService;\nconst hasService = Client.hasService;\nconst registerServiceProvider = Client.registerServiceProvider;\n\n/* eslint-disable */\nClient.LOGGER.info('Rico Version:' , RICO_VERSION);\n/* eslint-enable */\n\nexport { LoggerFactory, LogLevel, getService, hasService, registerServiceProvider, HTTP }\n\nif (window.Worker && window.Blob && window.URL && URL.createObjectURL) {\n Client.LOGGER.debug('Creating Worker');\n class HttpWorker {\n constructor() {\n /* eslint-disable */\n this.blob = new Blob([RICO_WORKER], {type: \"application/javascript\"});\n /* eslint-enable */\n }\n\n createWorker() {\n return new Worker(URL.createObjectURL(this.blob));\n }\n }\n\n const httpWorkerProvider = new ServiceProvider(HttpWorker, 'HttpWorker');\n Client.registerServiceProvider(httpWorkerProvider);\n}\n\n/* \n * Provide dependencies as global dolphin object for backward compatibility.\n * The code below this comment is deprecated and should be removed in a feature version.\n */\nimport { createClientContext, ClientContextFactory } from './remoting/clientContextFactory'\n\nconst LOGGER = LoggerFactory.getLogger('Deprecated:');\nlet showWarning = true;\nfunction warn() {\n if (showWarning) {\n LOGGER.warn('Please do not use \"dolphin\" anymore, it may be removed in the next version! Use the new API instead!');\n showWarning = false;\n }\n}\n\nif (window) {\n window.dolphin = { // TODO remove in next major release\n get ClientContextFactory() {\n warn();\n ClientContextFactory.legecyClientSupport = Client;\n return ClientContextFactory;\n },\n get createClientContext() {\n warn();\n return createClientContext(Client);\n },\n get LoggerFactory() {\n warn();\n return LoggerFactory;\n },\n get LogLevel() {\n warn();\n return LogLevel;\n }\n };\n}","import { ClientContextFactory } from './clientContextFactory'\nimport { ServiceProvider } from '../platform/serviceProvider'\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const clientContextFactoryProvider = new ServiceProvider(ClientContextFactory, 'ClientContextFactory', client);\n\n client.registerServiceProvider(clientContextFactoryProvider);\n }\n}\n\nexport { register };","\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\nimport { KeycloakSecurity } from './keycloakSecurity';\n\nfunction register(client) {\n if (exists(client)) {\n const securityProvider = new ServiceProvider(KeycloakSecurity, 'Security', client);\n client.registerServiceProvider(securityProvider);\n }\n}\n\nexport { register }"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ricojs/webpack/universalModuleDefinition","webpack://ricojs/webpack/bootstrap","webpack://ricojs/./node_modules/emitter-component/index.js","webpack://ricojs/./src/logging/constants.js","webpack://ricojs/./src/utils/index.js","webpack://ricojs/./src/logging/logger.js","webpack://ricojs/./src/logging/loggerfactory.js","webpack://ricojs/./src/platform/client.js","webpack://ricojs/./src/platform/serviceProvider.js","webpack://ricojs/./src/platform/constants.js","webpack://ricojs/./src/http/httpResponse.js","webpack://ricojs/./src/http/httpException.js","webpack://ricojs/./src/http/executor.js","webpack://ricojs/./src/http/reponseBuilder.js","webpack://ricojs/./src/http/requestBuilder.js","webpack://ricojs/./src/http/httpClient.js","webpack://ricojs/./src/http/httpClientInterceptor.js","webpack://ricojs/./src/platform/clientScope.js","webpack://ricojs/./src/remoting/commands/commandConstants.js","webpack://ricojs/./src/remoting/commandBatcher.js","webpack://ricojs/./src/remoting/constants.js","webpack://ricojs/./src/remoting/commands/impl/valueChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/attributeMetadataChangedCommand.js","webpack://ricojs/./src/remoting/commands/impl/callActionCommand.js","webpack://ricojs/./src/remoting/commands/impl/changeAttributeMetadataCommand.js","webpack://ricojs/./src/remoting/commands/impl/createContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/createControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/createPresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/deletePresentationModelCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyContextCommand.js","webpack://ricojs/./src/remoting/commands/impl/destroyControllerCommand.js","webpack://ricojs/./src/remoting/commands/impl/interruptLongPollCommand.js","webpack://ricojs/./src/remoting/commands/impl/presentationModelDeletedCommand.js","webpack://ricojs/./src/remoting/commands/impl/startLongPollCommand.js","webpack://ricojs/./src/remoting/commands/codecError.js","webpack://ricojs/./src/remoting/commands/codec.js","webpack://ricojs/./src/remoting/eventBus.js","webpack://ricojs/./src/remoting/clientPresentationModel.js","webpack://ricojs/./src/remoting/clientConnector.js","webpack://ricojs/./src/remoting/clientAttribute.js","webpack://ricojs/./src/remoting/clientDolphin.js","webpack://ricojs/./src/remoting/attribute.js","webpack://ricojs/./src/remoting/commands/commandFactory.js","webpack://ricojs/./src/remoting/clientModelStore.js","webpack://ricojs/./src/remoting/noTransmitter.js","webpack://ricojs/./src/remoting/dolphinBuilder.js","webpack://ricojs/./src/remoting/connector.js","webpack://ricojs/./src/remoting/beanManager.js","webpack://ricojs/./src/remoting/classRepository.js","webpack://ricojs/./src/remoting/controllerProxy.js","webpack://ricojs/./src/remoting/controllerManager.js","webpack://ricojs/./src/remoting/clientContext.js","webpack://ricojs/./src/remoting/errors.js","webpack://ricojs/./src/remoting/remotingErrorHandler.js","webpack://ricojs/./src/remoting/platformHttpTransmitter.js","webpack://ricojs/./src/remoting/clientContextFactory.js","webpack://ricojs/./src/security/keycloakConnection.js","webpack://ricojs/./src/security/keycloakFunctions.js","webpack://ricojs/./src/security/securityHttpClientInterceptor.js","webpack://ricojs/./src/security/keycloakSecurity.js","webpack://ricojs/./src/http/index.js","webpack://ricojs/./src/index.js","webpack://ricojs/./src/remoting/index.js","webpack://ricojs/./src/security/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","m","Emitter","obj","key","prototype","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","self","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","i","splice","emit","args","slice","call","len","listeners","hasListeners","_checkMethodName","LogLevel","NONE","name","text","level","ALL","TRACE","DEBUG","INFO","WARN","ERROR","exists","object","checkMethod","checkParam","param","parameterName","Error","parseUrl","url","scheme","matches","match","substring","query","fragment","path","split","reduce","params","hash","val","Object","assign","hostname","port","location","protocol","indexOf","parseInt","user","password","LOCALS","pad","size","result","internalLog","Array","from","func","shift","context","logLevel","date","Date","dateString","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getCookie","document","cookie","parts","pop","Logger","console","isLogLevel","log","warn","error","rootLogger","getLogLevel","levelName","ROOT_LOGGER","loggers","Map","LoggerFactory","existingLogger","get","logger","set","Client","LOGGER","getLogger","services","serviceProviders","configuration","getService","service","provider","hasService","getAllServiceTypes","forEach","serviceProvider","registerServiceProvider","getName","debug","init","trace","initServiceProvider","ServiceProvider","serviceInstance","serviceClass","client","RESPONSE_TYPE","HTTP","METHOD","GET","POST","PUT","DELETE","STATUS","ACCEPTED","BAD_GATEWAY","BAD_REQUEST","CONFLICT","CONTINUE","CREATED","EXPECTATION_FAILED","FAILED_DEPENDENCY","FORBIDDEN","GATEWAY_TIMEOUT","GONE","HTTP_VERSION_NOT_SUPPORTED","IM_A_TEAPOT","INSUFFICIENT_SPACE_ON_RESOURCE","INSUFFICIENT_STORAGE","INTERNAL_SERVER_ERROR","LENGTH_REQUIRED","LOCKED","METHOD_FAILURE","METHOD_NOT_ALLOWED","MOVED_PERMANENTLY","MOVED_TEMPORARILY","MULTI_STATUS","MULTIPLE_CHOICES","NETWORK_AUTHENTICATION_REQUIRED","NO_CONTENT","NON_AUTHORITATIVE_INFORMATION","NOT_ACCEPTABLE","NOT_FOUND","NOT_IMPLEMENTED","NOT_MODIFIED","OK","PARTIAL_CONTENT","PAYMENT_REQUIRED","PERMANENT_REDIRECT","PRECONDITION_FAILED","PRECONDITION_REQUIRED","PROCESSING","PROXY_AUTHENTICATION_REQUIRED","REQUEST_HEADER_FIELDS_TOO_LARGE","REQUEST_TIMEOUT","REQUEST_TOO_LONG","REQUEST_URI_TOO_LONG","REQUESTED_RANGE_NOT_SATISFIABLE","RESET_CONTENT","SEE_OTHER","SERVICE_UNAVAILABLE","SWITCHING_PROTOCOLS","TEMPORARY_REDIRECT","TOO_MANY_REQUESTS","UNAUTHORIZED","UNPROCESSABLE_ENTITY","UNSUPPORTED_MEDIA_TYPE","USE_PROXY","HEADER_NAME","ACCEPT","ACCEPT_CHARSET","ACCEPT_ENCODING","ACCEPT_LANGUAGE","ACCEPT_DATETIME","AUTHORIZATION","CACHE_CONTROL","CONNECTION","COOKIE","CONTENT_LENGTH","CONTENT_MD5","CONTENT_TYPE","DATE","EXPECT","FORWARDED","FROM","HOST","IF_MATCH","IF_MODIFIED_SINCE","IF_NONE_MATCH","IF_RANGE","MAX_FORWARDS","PRAGMA","PROXY_AUTHORIZATION","REFERER","TE","USER_AGENT","X_CLIENT_ID","X_CLIENT_SESSION_ID","X_PLATFORM_SECURITY_REALM","X_PLATFORM_SECURITY_BEARER_ONLY","X_PLATFORM_SECURITY_APPLICATION","APPLICATION_JSON","APPLICATION_X_WWW_FORM_URLENCODED","TEXT_HTML","TEXT_PLAIN","XMLHTTPREQUEST_READYSTATE","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","SECURITY","HttpResponse","content","status","headers","toLowerCase","headerArray","trim","header","value","join","HttpException","message","timedout","Executor","timeout","worker","httpWorker","useWorker","timeoutToUse","requestInterceptors","getRequestInterceptors","responseInterceptors","getResponseInterceptors","directCall","resolve","reject","httpRequest","XMLHttpRequest","open","method","withCredentials","handleRequest","setRequestHeader","responseType","ontimeout","statusText","httpException","onerror","onreadystatechange","readyState","httpResponse","response","getAllResponseHeaders","handleResponse","send","requestBody","bind","workerCall","collectedRequestHeaders","createWorker","onmessage","terminate","msg","data","responseHeaders","postMessage","conf","requestHeaders","Promise","ResponseBuilder","executor","RequestBuilder","headersInfo","hasOwnProperty","reponseBuilder","HttpClient","requestBuilder","request","HttpClientInterceptor","handler","requestHandlers","add","list","responseHandlers","Set","ClientScope","clientId","getClientId","newClientId","getHeaderByName","setClientId","addRequestInterceptor","addResponseInterceptor","calcKey","clientIds","ATTRIBUTE_METADATA_CHANGED_COMMAND_ID","CALL_ACTION_COMMAND_ID","CHANGE_ATTRIBUTE_METADATA_COMMAND_ID","CREATE_CONTEXT_COMMAND_ID","CREATE_CONTROLLER_COMMAND_ID","CREATE_PRESENTATION_MODEL_COMMAND_ID","DELETE_PRESENTATION_MODEL_COMMAND_ID","DESTROY_CONTEXT_COMMAND_ID","DESTROY_CONTROLLER_COMMAND_ID","INTERRUPT_LONG_POLL_COMMAND_ID","PRESENTATION_MODEL_DELETED_COMMAND_ID","START_LONG_POLL_COMMAND_ID","VALUE_CHANGED_COMMAND_ID","ATTRIBUTE_ID","PM_ID","CONTROLLER_ID","BlindCommandBatcher","queue","batch","batchLength","maxBatchSize","element","folding","command","id","attributeId","newValue","REMOVED_TYPE","ValueChangedCommand","AttributeMetadataChangedCommand","metadataName","CallActionCommand","controllerid","actionName","ChangeAttributeMetadataCommand","CreateContextCommand","CreateControllerCommand","controllerName","parentControllerId","CreatePresentationModelCommand","presentationModel","attributes","clientSideOnly","pmId","pmType","presentationModelType","getAttributes","attr","propertyName","getValue","DeletePresentationModelCommand","DestroyContextCommand","DestroyControllerCommand","controllerId","InterruptLongPollCommand","PresentationModelDeletedCommand","StartLongPollCommand","CodecError","Codec","jsonCommand","map","attribute","commands","JSON","stringify","_encodeAttributeMetadataChangedCommand","_encodeCallActionCommand","_encodeChangeAttributeMetadataCommand","_encodeCreateContextCommand","_encodeCreateControllerCommand","_encodeCreatePresentationModelCommand","_encodeDeletePresentationModelCommand","_encodeDestroyContextCommand","_encodeDestroyControllerCommand","_encodeInterruptLongPollCommand","_encodePresentationModelDeletedCommand","_encodeStartLongPollCommand","_encodeValueChangedCommand","transmitted","parse","_decodeAttributeMetadataChangedCommand","_decodeCallActionCommand","_decodeChangeAttributeMetadataCommand","_decodeCreateContextCommand","_decodeCreateControllerCommand","_decodeCreatePresentationModelCommand","_decodeDeletePresentationModelCommand","_decodeDestroyContextCommand","_decodeDestroyControllerCommand","_decodeInterruptLongPollCommand","_decodePresentationModelDeletedCommand","_decodeStartLongPollCommand","_decodeValueChangedCommand","EventBus","eventHandler","eventHandlers","handle","presentationModelInstanceCount","ClientPresentationModel","attributeCopy","copy","addAttribute","findAttributeByPropertyName","getQualifier","findAttributeByQualifier","setPresentationModel","onValueChange","invalidBus","trigger","source","handleInvalidate","onEvent","qualifier","sourcePresentationModel","targetAttribute","sourceAttribute","getAt","syncWith","dirty","toString","dirtyValueChangeBus","ClientConnector","newBatcher","commandBatcher","enabled","pushEnabled","newListener","pushListener","newCommand","releaseCommand","onFinished","commandQueue","currentlySending","release","doSendNext","enqueuePushCommand","cmdsAndHandlers","callback","cah","transmitter","transmit","touchedPMs","touched","setTimeout","slackMS","onError","handleDeletePresentationModelCommand","handleCreatePresentationModelCommand","handleValueChangedCommand","handleAttributeMetadataChangedCommand","serverCommand","model","clientDolphin","findPresentationModelById","getClientModelStore","deletePresentationModel","containsPresentationModel","clientAttribute","clientPm","addAttributes","updatePresentationModelQualifier","findAttributeById","setValueFromServer","waiting","me","onFinishedData","signal","codec","ClientAttribute","String","Boolean","Number","valueOf","checkValue","ok","SUPPORTED_VALUE_TYPES","verifiedValue","oldValue","valueChangeBus","newQualifier","oldQualifier","qualifierChangeBus","setQualifier","setValue","clientAttributeInstanceCount","ClientDolphin","clientConnector","type","clientModelStore","listPresentationModelIds","listPresentationModels","findAllPresentationModelByType","modelToDelete","updateAttributeQualifier","findAllAttributesByQualifier","pushCommand","setPushListener","setReleaseCommand","setPushEnabled","listen","Attribute","QUALIFIER_PROPERTY","VALUE","CommandFactory","ClientModelStore","addAttributeById","addAttributeByQualifier","evt","sendToServer","createValueChangedCommand","getClientConnector","findAttributesByFilter","onQualifierChange","createChangeAttributeMetadataCommand","presentationModels","has","added","addPresentationModelByType","createCreatePresentationModelCommand","registerAttribute","modelStoreChangeBus","removed","removePresentationModelByType","removeAttributeById","removeAttributeByQualifier","filter","presentationModelsPerType","iter","keys","next","done","values","notify","remove","createPresentationModelDeletedCommand","attributesPerId","attributesPerQualifier","pmStoreEvent","clientPresentationModel","NoTransmitter","onDone","DolphinBuilder","setClientConnector","setClientModelStore","dolphinBuilder","DOLPHIN_BEAN","ACTION_CALL_BEAN","SOURCE_SYSTEM","Connector","dolphin","startPushListening","createStartLongPollCommand","createInterruptLongPollCommand","classRepository","registerClass","highlanderPMResolver","spliceListEntry","load","unregisterClass","unload","reason","highlanderPMPromise","config","onModelStoreChange","sourceSystem","eventType","onModelAdded","onModelRemoved","BeanManager","bean","handlerList","addedHandlers","e","allAddedHandlers","removedHandlers","allRemovedHandlers","index","count","newElements","arrayUpdatedHandlers","allArrayUpdatedHandlers","updatedHandlers","allUpdatedHandlers","notifyBeanChange","removedElements","notifyArrayChange","collection","predicate","concat","unsubscribe","_handleBeanAdded","_handleBeanRemoved","_handleBeanUpdate","_handleArrayUpdate","onBeanAdded","onBeanRemoved","onBeanUpdate","onArrayUpdate","ClassRepository","modelId","to","classes","toDolphin","propertyUpdateHandlers","undefined","blocked","beanToDolphin","fromDolphin","isBlocked","array","removedElementsCount","isArray","sendListSplice","beanAddedHandlers","beanRemovedHandlers","arrayUpdateHandlers","classInfo","search","beanFromDolphin","classInfos","validateList","block","unblock","toISOString","TypeError","fixType","parseFloat","ControllerProxy","destroyed","manager","invokeAction","_createController","getId","onDestroyedHandlers","destroyController","ERROR_CODE","ControllerManager","connector","getHighlanderPM","then","highlanderPM","MSG_ERROR_CREATING_CONTROLLER","invoke","createCreateControllerCommand","getValueWithRetry","ctrlId","mapDolphinToBean","controller","controllers","getValueCall","errorMessage","intervalID","setInterval","clearInterval","pm","actionParams","mapParamToDolphin","createCallActionCommand","createDestroyControllerCommand","controllersCopy","promises","destroy","all","ClientContext","connectionPromise","_connector","connect","createCreateContextCommand","isConnected","_controllerManager","createController","stopPushListening","createDestroyContextCommand","beanManager","controllerManager","DolphinRemotingError","detail","DolphinSessionError","RemotingErrorHandler","PlatformHttpTransmitter","connection","connectionConfig","_connectionConfig","errorHandlers","encodedCommands","encode","isLogLevelUseable","httpClient","failed_attempt","maxRetry","post","withHeadersInfo","withContent","readString","execute","exception","getStatus","_handleError","_send","responseText","responseCommands","decode","err","errorMsg","ClientContextFactory","clientContext","withTransmitter","withSlackMS","withMaxBatchSize","MAX_SAFE_INTEGER","build","legecyClientSupport","KeycloakConnection","authEndpoint","realmName","KeycloakFunctions","directConnection","appName","encodedUser","encodeURIComponent","encodedPassword","encodedAppName","createDirectConnection","createServerProxyConnection","refreshToken","body","createRefreshConnection","receiveToken","SecurityHttpClientInterceptor","token","realm","KeycloakSecurity","isAuthorized","functions","createLoginConnection","access_token","interceptor","setToken","setRealm","setAppName","expires","expires_in","MIN_TOKEN_EXPIRES_RUN","sleepTime","Math","max","TOKEN_EXPIRES_DELTA","intervall","refresh_token","httpClientProvider","httpClientInterceptorProvider","registerHttp","clientScopeProvider","registerClientScope","clientContextFactoryProvider","registerRemotingScope","securityProvider","registerSecurity","info","RICO_VERSION","Worker","Blob","URL","createObjectURL","HttpWorker","blob","httpWorkerProvider","RICO_WORKER","showWarning","create","c","d","getter","o","defineProperty","enumerable","r","Symbol","toStringTag","t","mode","__esModule","ns","n","property","p","s","moduleId","l","modules"],"mappings":"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","file":"rico.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ricojs\"] = factory();\n\telse\n\t\troot[\"ricojs\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const LogLevel = {\n NONE: { name: 'NONE', text: '[NONE ]', level: 0 },\n ALL: { name: 'ALL', text: '[ALL ]', level: 100 },\n TRACE: { name: 'TRACE', text: '[TRACE]', level: 5 },\n DEBUG: { name: 'DEBUG', text: '[DEBUG]', level: 4 },\n INFO: { name: 'INFO', text: '[INFO ]', level: 3 },\n WARN: { name: 'WARN', text: '[WARN ]', level: 2 },\n ERROR: { name: 'ERROR', text: '[ERROR]', level: 1 },\n};\n\nexport { LogLevel };","var _checkMethodName;\n\nexport function exists(object) {\n return typeof object !== 'undefined' && object !== null;\n}\n\nexport function checkMethod(name) {\n _checkMethodName = name;\n}\n\nexport function checkParam(param, parameterName) {\n if(!exists(param)) {\n throw new Error('The parameter ' + parameterName + ' is mandatory in ' + _checkMethodName);\n }\n}\n\nexport function parseUrl(url) {\n //https://jsperf.com/url-parsing\n const pattern = /^(((([^:\\/#\\?]+:)?(?:(\\/\\/)((?:(([^:@\\/#\\?]+)(?:\\:([^:@\\/#\\?]+))?)@)?(([^:\\/#\\?\\]\\[]+|\\[[^\\/\\]@#?]+\\])(?:\\:([0-9]+))?))?)?)?((\\/?(?:[^\\/\\?#]+\\/+)*)([^\\?#]*)))?(\\?[^#]+)?)(#.*)?/\n const matches = url.match(pattern);\n\n let scheme;\n if (matches[4] && matches[4].length > 1) {\n scheme = matches[4].substring(0, matches[4].length-1);\n }\n\n let path = matches[13];\n\n let query;\n if (matches[16] && matches[16].length > 1) {\n query = matches[16].substring(1, matches[16].length);\n const hashes = query.split('&');\n query = hashes.reduce((params, hash) => {\n let [key, val] = hash.split('=')\n return Object.assign(params, {[key]: val})\n }, {});\n }\n\n let fragment;\n if (matches[17] && matches[17].length > 1) {\n fragment = matches[17].substring(1, matches[17].length);\n }\n\n let hostname = matches[11];\n let port = matches[12];\n if (hostname && !port && scheme === 'http') {\n port = 80;\n } else if (hostname && !port && scheme === 'https') {\n port = 443;\n }\n\n //relative url? get hostname and port from the browser\n if (!hostname && !port && !scheme) {\n \n if (window && window.location && window.location.hostname) {\n hostname = window.location.hostname;\n }\n if (window && window.location && window.location.port) {\n port = window.location.port;\n }\n if (window && window.location && window.location.protocol) {\n scheme = window.location.protocol.substring(0, window.location.protocol.length-1) ;\n }\n // strip '.' from relative path\n if (path.indexOf('.') === 0) {\n path = path.substring(1, path.length);\n }\n }\n\n // port should be a number, always\n if (port) {\n port = parseInt(port);\n }\n\n return {\n scheme: scheme,\n user: matches[8],\n password: matches[9],\n hostname: hostname,\n port: port,\n path: path,\n query: query,\n fragment: fragment\n };\n \n}\n\n","import {checkParam, exists} from '../utils'\nimport { LogLevel } from \"./constants\";\n\n// private methods\nconst LOCALS = {\n pad (text, size) {\n let result = '' + text;\n while (result.length < size) {\n result = '0' + result;\n }\n return result;\n },\n internalLog () {\n const args = Array.from(arguments);\n const func = args.shift();\n const context = args.shift();\n const logLevel = args.shift();\n const date = new Date();\n const dateString = date.getFullYear() + '-' + LOCALS.pad(date.getMonth() + 1, 2) + '-' + LOCALS.pad(date.getDate(), 2) + ' ' + LOCALS.pad(date.getHours(), 2) + ':' + LOCALS.pad(date.getMinutes(), 2) + ':' + LOCALS.pad(date.getSeconds(), 2) + '.' + LOCALS.pad(date.getMilliseconds(), 3);\n func(dateString, logLevel.text, context, ...args);\n\n },\n getCookie (name) {\n if (exists(window) && exists(window.document) && exists(window.document.cookie)) { \n const value = '; ' + window.document.cookie;\n const parts = value.split('; ' + name + '=');\n if ( parts.length === 2 ) {\n return parts.pop().split(';').shift();\n }\n }\n }\n};\n\n\n// public\nclass Logger {\n\n constructor(context, rootLogger) {\n this.context = context;\n this.rootLogger = rootLogger;\n const cookieLogLevel = LOCALS.getCookie('RICO_LOGGER_' + this.context);\n switch (cookieLogLevel) {\n case 'NONE':\n this.logLevel = LogLevel.NONE;\n break;\n case 'ALL':\n this.logLevel = LogLevel.ALL;\n break;\n case 'TRACE':\n this.logLevel = LogLevel.TRACE;\n break;\n case 'DEBUG':\n this.logLevel = LogLevel.DEBUG;\n break;\n case 'INFO':\n this.logLevel = LogLevel.INFO;\n break;\n case 'WARN':\n this.logLevel = LogLevel.WARN;\n break;\n case 'ERROR':\n this.logLevel = LogLevel.ERROR;\n break;\n }\n\n }\n\n trace() {\n if (exists(console) && this.isLogLevel(LogLevel.TRACE)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.TRACE, ...arguments);\n }\n }\n\n debug() {\n if (exists(console) && this.isLogLevel(LogLevel.DEBUG)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.DEBUG, ...arguments);\n }\n }\n\n info() {\n if (exists(console) && this.isLogLevel(LogLevel.INFO)) {\n LOCALS.internalLog(console.log, this.context, LogLevel.INFO, ...arguments);\n }\n }\n\n warn() {\n if (exists(console) && this.isLogLevel(LogLevel.WARN)) {\n LOCALS.internalLog(console.warn, this.context, LogLevel.WARN, ...arguments);\n }\n }\n\n error() {\n if (exists(console) && this.isLogLevel(LogLevel.ERROR)) {\n LOCALS.internalLog(console.error, this.context, LogLevel.ERROR, ...arguments);\n }\n }\n\n getLogLevel() {\n if (exists(this.logLevel)) {\n return this.logLevel;\n } else if (exists(this.rootLogger)) {\n return this.rootLogger.getLogLevel();\n } else {\n return LogLevel.INFO;\n }\n }\n\n setLogLevel(level) {\n this.logLevel = level;\n }\n\n setLogLevelByName(levelName) {\n if (exists(LogLevel[levelName])) {\n this.logLevel = LogLevel[levelName];\n }\n }\n\n isLogLevel(level) {\n if (this.getLogLevel() === LogLevel.NONE) {\n return false;\n }\n if (this.getLogLevel() === LogLevel.ALL) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.DEBUG && level !== LogLevel.TRACE) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.INFO && level !== LogLevel.TRACE && level !== LogLevel.DEBUG) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.WARN && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO) {\n return true;\n }\n if (this.getLogLevel() === LogLevel.ERROR && level !== LogLevel.TRACE && level !== LogLevel.DEBUG && level !== LogLevel.INFO && level !== LogLevel.WARN) {\n return true;\n }\n return false;\n }\n\n isLogLevelUseable(level) {\n checkParam(level, 'level');\n if (level.level) {\n return this.getLogLevel().level >= level.level;\n } else {\n return false;\n }\n }\n}\n\nexport { Logger };","import { exists } from \"../utils\";\nimport { Logger } from \"./logger\";\n\nconst ROOT_LOGGER = new Logger('ROOT');\n\n// private methods\nconst LOCALS = {\n loggers: new Map()\n};\n\n\n// public\nclass LoggerFactory {\n\n static getLogger(context) {\n if (!exists(context) || context === 'ROOT') {\n return ROOT_LOGGER;\n }\n const existingLogger = LOCALS.loggers.get(context);\n if (existingLogger) {\n return existingLogger;\n }\n\n const logger = new Logger(context, ROOT_LOGGER);\n LOCALS.loggers.set(context, logger);\n return logger;\n }\n}\n\nexport { LoggerFactory }","import {exists} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass Client {\n\n}\n\nClient.LOGGER = LoggerFactory.getLogger('Client');\n\nClient.services = new Map();\nClient.serviceProviders = new Map();\nClient.configuration = {};\n\nClient.getService = function(name) {\n let service = Client.services.get(name);\n if (!exists(service)) {\n let provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n throw new Error('No service provider found for ' + name);\n } else {\n service = provider.getService(Client.configuration);\n Client.services.set(name, service);\n }\n }\n return service;\n};\n\nClient.hasService = function(name) {\n const provider = Client.serviceProviders.get(name);\n if (!exists(provider)) {\n return false;\n } else {\n return true;\n }\n};\n\nClient.getAllServiceTypes = function() {\n let result = [];\n Client.serviceProviders.forEach((serviceProvider) => result.push(serviceProvider));\n return result;\n};\n\n\nClient.registerServiceProvider = function(serviceProvider) {\n if (serviceProvider === null || typeof serviceProvider === 'undefined') {\n throw new Error('Cannot register empty service provider');\n }\n \n if (typeof serviceProvider.getName === 'function' && typeof serviceProvider.getService === 'function') {\n const current = Client.serviceProviders.get(serviceProvider.getName());\n if (!current) {\n Client.serviceProviders.set(serviceProvider.getName(), serviceProvider);\n Client.LOGGER.debug('Service provider registered with name', serviceProvider.getName());\n } else {\n throw new Error('Cannot register another service provider. Name already in use.');\n }\n } else {\n throw new Error('Cannot register service provider without getName() and getService() methods');\n }\n};\n\nClient.init = function() {\n Client.serviceProviders.forEach((serviceProvider) => {\n const service = serviceProvider.getService();\n Client.LOGGER.trace('Initializing service for service provider', serviceProvider.getName());\n if (typeof service.initServiceProvider === 'function') {\n Client.LOGGER.debug('Initializing service', service);\n service.initServiceProvider(Client);\n }\n });\n}\n\nexport { Client }","import { checkMethod, checkParam } from '../utils'\nclass ServiceProvider {\n\n constructor(serviceClass, name, client) {\n checkMethod('constructor');\n checkParam(serviceClass, 'serviceClass');\n checkParam(name, 'name');\n \n this.serviceInstance = new serviceClass(client);\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getService() {\n return this.serviceInstance;\n }\n}\n\nexport { ServiceProvider }","// Reponse type\nexport const RESPONSE_TYPE = {\n ARRAY_BUFFER: 'arraybuffer',\n TEXT: 'text',\n JSON: 'json'\n}\n\n// HTTP methods and status codes\nexport const HTTP = {\n METHOD: {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE'\n },\n STATUS: {\n ACCEPTED: 202,\n BAD_GATEWAY: 502,\n BAD_REQUEST: 400,\n CONFLICT: 409,\n CONTINUE: 100,\n CREATED: 201,\n EXPECTATION_FAILED: 417,\n FAILED_DEPENDENCY : 424,\n FORBIDDEN: 403,\n GATEWAY_TIMEOUT: 504,\n GONE: 410,\n HTTP_VERSION_NOT_SUPPORTED: 505,\n IM_A_TEAPOT: 418,\n INSUFFICIENT_SPACE_ON_RESOURCE: 419,\n INSUFFICIENT_STORAGE: 507,\n INTERNAL_SERVER_ERROR: 500,\n LENGTH_REQUIRED: 411,\n LOCKED: 423,\n METHOD_FAILURE: 420,\n METHOD_NOT_ALLOWED: 405,\n MOVED_PERMANENTLY: 301,\n MOVED_TEMPORARILY: 302,\n MULTI_STATUS: 207,\n MULTIPLE_CHOICES: 300,\n NETWORK_AUTHENTICATION_REQUIRED: 511,\n NO_CONTENT: 204,\n NON_AUTHORITATIVE_INFORMATION: 203,\n NOT_ACCEPTABLE: 406,\n NOT_FOUND: 404,\n NOT_IMPLEMENTED: 501,\n NOT_MODIFIED: 304,\n OK: 200,\n PARTIAL_CONTENT: 206,\n PAYMENT_REQUIRED: 402,\n PERMANENT_REDIRECT: 308,\n PRECONDITION_FAILED: 412,\n PRECONDITION_REQUIRED: 428,\n PROCESSING: 102,\n PROXY_AUTHENTICATION_REQUIRED: 407,\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n REQUEST_TIMEOUT: 408,\n REQUEST_TOO_LONG: 413,\n REQUEST_URI_TOO_LONG: 414,\n REQUESTED_RANGE_NOT_SATISFIABLE: 416,\n RESET_CONTENT: 205,\n SEE_OTHER: 303,\n SERVICE_UNAVAILABLE: 503,\n SWITCHING_PROTOCOLS: 101,\n TEMPORARY_REDIRECT: 307,\n TOO_MANY_REQUESTS: 429,\n UNAUTHORIZED: 401,\n UNPROCESSABLE_ENTITY: 422,\n UNSUPPORTED_MEDIA_TYPE: 415,\n USE_PROXY: 305\n },\n HEADER_NAME: {\n ACCEPT: 'Accept',\n ACCEPT_CHARSET: 'Accept-Charset', \n ACCEPT_ENCODING: 'Accept-Encoding', \n ACCEPT_LANGUAGE: 'Accept-Language',\n ACCEPT_DATETIME: 'Accept-Datetime',\n AUTHORIZATION: 'Authorization',\n CACHE_CONTROL: 'Cache-Control',\n CONNECTION: 'Connection',\n COOKIE: 'Cookie',\n CONTENT_LENGTH: 'Content-Length',\n CONTENT_MD5: 'Content-MD5',\n CONTENT_TYPE: 'Content-Type',\n DATE: 'Date',\n EXPECT: 'Expect',\n FORWARDED: 'Forwarded',\n FROM: 'From',\n HOST: 'Host', \n IF_MATCH: 'If-Match', \n IF_MODIFIED_SINCE: 'If-Modified_Since',\n IF_NONE_MATCH: 'If-None_Match',\n IF_RANGE: 'If-Range',\n MAX_FORWARDS: 'Max-Forwards',\n PRAGMA: 'Pragma', \n PROXY_AUTHORIZATION: 'Proxy-Authorization',\n REFERER: 'Referer',\n TE: 'TE',\n USER_AGENT: 'User-Agent',\n X_CLIENT_ID: 'X-Client-Id',\n X_CLIENT_SESSION_ID: 'X-Client-Session-Id',\n X_PLATFORM_SECURITY_REALM: 'X-platform-security-realm',\n X_PLATFORM_SECURITY_BEARER_ONLY: 'X-platform-security-bearer-only',\n X_PLATFORM_SECURITY_APPLICATION: 'X-platform-security-application'\n },\n CONTENT_TYPE: {\n APPLICATION_JSON: 'application/json',\n APPLICATION_X_WWW_FORM_URLENCODED: 'application/x-www-form-urlencoded',\n TEXT_HTML: 'text/html',\n TEXT_PLAIN: 'text/plain'\n },\n XMLHTTPREQUEST_READYSTATE: {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE:4\n }\n}\n\n// Security\nexport const SECURITY = {\n AUTH_ENDPOINT: '/openid-connect'\n}","import { exists, checkMethod, checkParam } from '../utils';\nclass HttpResponse {\n\n constructor(url, status, content, headers) {\n this.url = url;\n this.status = status;\n this.content = content;\n this.headers = {};\n if (exists(headers) && typeof headers === 'string') {\n const headerArray = headers.trim().split(/[\\r\\n]+/);\n for (let i = 0; i < headerArray.length; i++) {\n const line = headerArray[i];\n const parts = line.split(': ');\n if (parts.length === 2) {\n const header = parts.shift().toLowerCase();\n const value = parts.join(': ');\n this.headers[header] = value;\n }\n }\n }\n }\n\n getUrl() {\n return this.url;\n }\n\n getContent() {\n return this.content;\n }\n\n getStatus() {\n return this.status;\n }\n\n getHeaders() {\n return this.headers;\n }\n\n getHeaderByName(name) {\n checkMethod('getHeaderByName');\n checkParam(name, 'name');\n \n return this.headers[name.toLowerCase()];\n }\n\n}\n\nexport { HttpResponse }","class HttpException {\n\n constructor(message, status, timedout) {\n this.message = message;\n this.status = status || 0;\n this.timedout = timedout || false;\n }\n\n getMessage() {\n return this.message;\n }\n\n getStatus() {\n return this.status;\n }\n\n isTimedout() {\n return this.timedout;\n }\n\n}\n\nexport { HttpException }","import { LoggerFactory } from '../logging';\nimport { HttpResponse } from './httpResponse';\nimport { HttpException } from './httpException';\nimport { HTTP } from '../platform/constants';\nclass Executor {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.client = client;\n }\n\n execute(timeout, worker) {\n\n let httpWorker = null;\n if (this.client && this.client.hasService('HttpWorker')) {\n httpWorker = this.client.getService('HttpWorker');\n }\n\n const useWorker = httpWorker !== null && (worker === true || timeout === true);\n let timeoutToUse = 0;\n if (timeout !== true && timeout !== false) {\n timeoutToUse = timeout;\n }\n\n let requestInterceptors = [];\n if (this.client) {\n requestInterceptors = this.client.getService('HttpClientInterceptor').getRequestInterceptors();\n Executor.LOGGER.trace('Request interceptors found:', requestInterceptors);\n }\n\n let responseInterceptors = [];\n if (this.client) {\n responseInterceptors = this.client.getService('HttpClientInterceptor').getResponseInterceptors();\n Executor.LOGGER.trace('Response interceptors found:', responseInterceptors);\n }\n\n let directCall = (resolve, reject) => {\n\n const self = this;\n const httpRequest = new XMLHttpRequest();\n const async = true;\n \n httpRequest.open(this.configuration.method, this.configuration.url, async);\n httpRequest.url = this.configuration.url;\n httpRequest.method = this.configuration.method;\n httpRequest.withCredentials = true;\n\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n requestInterceptor.handleRequest(httpRequest);\n }\n\n if (this.configuration.headers && this.configuration.headers.length > 0) {\n for (let i = 0; i < this.configuration.headers.length; i++) {\n const header = this.configuration.headers[i];\n httpRequest.setRequestHeader(header.name, header.value);\n }\n }\n\n httpRequest.timeout = timeoutToUse;\n\n if (this.configuration.responseType) {\n httpRequest.responseType = this.configuration.responseType;\n }\n\n httpRequest.ontimeout = function () {\n const message = this.statusText || 'Timeout occurred';\n const httpException = new HttpException(message, this.status, true);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onerror = function () {\n let message = this.statusText || 'Unspecified error occured';\n const httpException = new HttpException(message, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE) {\n Executor.LOGGER.trace('Request to ', self.configuration.url, 'finished with', this.status);\n }\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 200 && this.status < 300) {\n // https://www.w3.org/TR/cors/#simple-response-header\n const httpResponse = new HttpResponse(this.url, this.status, this.response, this.getAllResponseHeaders());\n \n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status >= 300) {\n const httpException = new HttpException(this.statusText, this.status);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n }\n }\n\n httpRequest.send(this.configuration.requestBody);\n\n }\n directCall = directCall.bind(this);\n\n let workerCall = (resolve, reject) => {\n \n const collectedRequestHeaders = [];\n for (let i = 0; i < requestInterceptors.length; i++) {\n const requestInterceptor = requestInterceptors[i];\n \n requestInterceptor.handleRequest({\n url: this.configuration.url,\n setRequestHeader: (name, value) => {\n const header = {name, value};\n collectedRequestHeaders.push(header);\n }\n });\n }\n\n const worker = httpWorker.createWorker();\n try {\n worker.onmessage = function(event) {\n worker.terminate();\n Executor.LOGGER.trace('Message form Worker', event);\n const msg = event.data;\n if (msg.error) {\n const httpException = new HttpException(msg.message, msg.status, msg.timedout);\n Executor.LOGGER.error(httpException);\n reject(httpException);\n } else {\n const httpResponse = new HttpResponse(msg.url, msg.status, msg.response, msg.responseHeaders);\n\n for (let i = 0; i < responseInterceptors.length; i++) {\n const responseInterceptor = responseInterceptors[i];\n responseInterceptor.handleResponse(httpResponse);\n }\n\n resolve(httpResponse);\n }\n }\n worker.onerror = function(event) {\n const httpException = new HttpException(event.data, 0, false);\n reject(httpException);\n }\n worker.postMessage({conf: this.configuration, timeout: timeoutToUse, requestHeaders: collectedRequestHeaders});\n } catch (error) {\n const httpException = new HttpException(error, 0, false);\n reject(httpException);\n }\n\n }\n\n workerCall = workerCall.bind(this);\n\n return new Promise((resolve, reject) => {\n if (useWorker && this.client && this.client.hasService('HttpWorker')) {\n workerCall(resolve, reject);\n } else {\n directCall(resolve, reject);\n }\n });\n \n }\n\n}\n\nExecutor.LOGGER = LoggerFactory.getLogger('Executor');\n\nexport { Executor }","import { Executor } from './executor';\nimport { RESPONSE_TYPE } from '../platform/constants';\nclass ResponseBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.executor = new Executor(configuration, client);\n }\n\n readBytes() {\n this.configuration.responseType = RESPONSE_TYPE.ARRAY_BUFFER;\n return this.executor;\n }\n\n readString() {\n this.configuration.responseType = RESPONSE_TYPE.TEXT;\n return this.executor;\n }\n\n readObject() {\n this.configuration.responseType = RESPONSE_TYPE.JSON;\n return this.executor;\n }\n\n withoutResult() {\n return this.executor;\n }\n}\n\nexport { ResponseBuilder }","import { ResponseBuilder } from './reponseBuilder';\nimport { exists } from '../utils';\nclass RequestBuilder {\n\n constructor(configuration, client) {\n this.configuration = configuration;\n this.reponseBuilder = new ResponseBuilder(configuration, client);\n }\n\n withHeader(name, value) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n this.configuration.headers.push({ name, value });\n return this;\n }\n\n withHeadersInfo(headersInfo) {\n if (exists(headersInfo)) {\n if (!this.configuration.headers) {\n this.configuration.headers = [];\n }\n for (let name in headersInfo) {\n if (headersInfo.hasOwnProperty(name)) {\n const value = headersInfo[name];\n this.configuration.headers.push({ name, value });\n }\n }\n }\n return this;\n }\n\n withContent(data) {\n this.configuration.requestBody = data;\n return this.reponseBuilder;\n }\n\n withoutContent() {\n return this.reponseBuilder;\n }\n}\n\nexport { RequestBuilder }","import { RequestBuilder } from './requestBuilder';\nimport { HTTP } from '../platform/constants';\nclass HttpClient {\n\n constructor(client) {\n this.client = client;\n }\n\n request(url, method) {\n const configuration = {\n url, method\n }\n this.requestBuilder = new RequestBuilder(configuration, this.client);\n return this.requestBuilder;\n }\n\n get(url) {\n return this.request(url, HTTP.METHOD.GET);\n }\n\n post(url) {\n return this.request(url, HTTP.METHOD.POST);\n }\n\n put(url) {\n return this.request(url, HTTP.METHOD.PUT);\n }\n\n delete(url) {\n return this.request(url, HTTP.METHOD.DELETE);\n }\n}\n\nexport { HttpClient }","class HttpClientInterceptor {\n\n constructor() {\n this.requestHandlers = new Set();\n this.responseHandlers = new Set();\n }\n\n addRequestInterceptor(handler) {\n this.requestHandlers.add(handler);\n }\n\n getRequestInterceptors() {\n let list = [];\n this.requestHandlers.forEach(handler => list.push(handler));\n return list;\n }\n\n addResponseInterceptor(handler) {\n this.responseHandlers.add(handler);\n }\n\n getResponseInterceptors() {\n let list = [];\n this.responseHandlers.forEach(handler => list.push(handler));\n return list;\n }\n}\n\nexport { HttpClientInterceptor }","import { checkMethod, checkParam, parseUrl, exists } from '../utils';\nimport { ServiceProvider } from './serviceProvider';\nimport { LoggerFactory } from '../logging';\nimport { HTTP } from './constants';\n\nclass ClientScope {\n\n constructor() {\n this.clientIds = new Map();\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n const clientId = this.getClientId(httpRequest.url);\n if (exists(clientId)) {\n ClientScope.LOGGER.trace('Using ClientId', clientId);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID, clientId);\n }\n }\n\n handleResponse(httpResponse) {\n checkMethod('handleResponse');\n checkParam(httpResponse, 'httpResponse');\n const clientId = this.getClientId(httpResponse.url);\n const newClientId = httpResponse.getHeaderByName(HTTP.HEADER_NAME.X_CLIENT_SESSION_ID);\n if (exists(clientId) && exists(newClientId) && clientId !== newClientId) {\n throw new Error('Client Id does not match!');\n }\n if (!exists(clientId) && exists(newClientId)) {\n ClientScope.LOGGER.debug('New ClientId found', newClientId);\n this.setClientId(httpResponse.url, newClientId);\n }\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this);\n client.getService('HttpClientInterceptor').addResponseInterceptor(this);\n }\n\n getClientId(url) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n return this.clientIds.get(key);\n }\n\n setClientId(url, clientId) {\n const result = parseUrl(url);\n const key = ClientScope.calcKey(result.hostname, result.port)\n this.clientIds.set(key, clientId);\n ClientScope.LOGGER.trace('Setting ClientId', clientId, 'for', url, 'with key', key);\n }\n\n}\n\nClientScope.calcKey = function(hostname, port) {\n return hostname + port;\n}\n\nClientScope.LOGGER = LoggerFactory.getLogger('ClientScope');\n\nfunction register(client) {\n if (exists(client)) {\n const clientScopeProvider = new ServiceProvider(ClientScope, 'ClientScope');\n\n client.registerServiceProvider(clientScopeProvider);\n }\n}\n\nexport { register }","export const ATTRIBUTE_METADATA_CHANGED_COMMAND_ID = 'AttributeMetadataChanged';\nexport const CALL_ACTION_COMMAND_ID = 'CallAction';\nexport const CHANGE_ATTRIBUTE_METADATA_COMMAND_ID = 'ChangeAttributeMetadata';\nexport const CREATE_CONTEXT_COMMAND_ID = 'CreateContext';\nexport const CREATE_CONTROLLER_COMMAND_ID = 'CreateController';\nexport const CREATE_PRESENTATION_MODEL_COMMAND_ID = 'CreatePresentationModel';\nexport const DELETE_PRESENTATION_MODEL_COMMAND_ID = 'DeletePresentationModel';\nexport const DESTROY_CONTEXT_COMMAND_ID = 'DestroyContext';\nexport const DESTROY_CONTROLLER_COMMAND_ID = 'DestroyController';\nexport const INTERRUPT_LONG_POLL_COMMAND_ID = 'InterruptLongPoll';\nexport const PRESENTATION_MODEL_DELETED_COMMAND_ID = 'PresentationModelDeleted';\nexport const START_LONG_POLL_COMMAND_ID = 'StartLongPoll';\nexport const VALUE_CHANGED_COMMAND_ID = 'ValueChanged';\n\nexport const ID = \"id\";\nexport const ATTRIBUTE_ID = \"a_id\";\nexport const PM_ID = \"p_id\";\nexport const CONTROLLER_ID = \"c_id\";\nexport const PM_TYPE = \"t\";\nexport const NAME = \"n\";\nexport const VALUE = \"v\";\nexport const PARAMS = \"p\";\nexport const PM_ATTRIBUTES = \"a\";","import {VALUE_CHANGED_COMMAND_ID, PRESENTATION_MODEL_DELETED_COMMAND_ID} from './commands/commandConstants';\n\nexport default class BlindCommandBatcher {\n constructor(folding = true, maxBatchSize = 50) {\n this.folding = folding;\n this.maxBatchSize = maxBatchSize;\n }\n batch(queue) {\n let batch = [];\n let batchLength = 0;\n while(queue[batchLength] && batchLength <= this.maxBatchSize) {\n const element = queue[batchLength];\n batchLength++;\n if(this.folding) {\n if(element.command.id == VALUE_CHANGED_COMMAND_ID &&\n batch.length > 0 &&\n batch[batch.length - 1].command.id == VALUE_CHANGED_COMMAND_ID &&\n element.command.attributeId == batch[batch.length - 1].command.attributeId) {\n //merge ValueChange for same value\n batch[batch.length - 1].command.newValue = element.command.newValue;\n } else if(element.command.id == PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n //We do not need it...\n } else {\n batch.push(element);\n }\n } else {\n batch.push(element);\n }\n if(element.handler) {\n break;\n }\n }\n queue.splice(0, batchLength);\n return batch;\n }\n}","export const JS_STRING_TYPE = 'string';\n\nexport const REMOTING_BEAN = 0;\nexport const BYTE = 1;\nexport const SHORT = 2;\nexport const INT = 3;\nexport const LONG = 4;\nexport const FLOAT = 5;\nexport const DOUBLE = 6;\nexport const BOOLEAN = 7;\nexport const STRING = 8;\nexport const DATE = 9;\nexport const ENUM = 10;\nexport const CALENDAR = 11;\nexport const LOCAL_DATE_FIELD_TYPE = 55;\nexport const LOCAL_DATE_TIME_FIELD_TYPE = 52;\nexport const ZONED_DATE_TIME_FIELD_TYPE = 54;\n\n\nexport const ADDED_TYPE = \"ADDED\";\nexport const REMOVED_TYPE = \"REMOVED\";\n","import {VALUE_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ValueChangedCommand {\n\n constructor() {\n this.id = VALUE_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, newValue) {\n checkMethod('ValueChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n\n this.attributeId = attributeId;\n this.newValue = newValue;\n }\n}","import {ATTRIBUTE_METADATA_CHANGED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class AttributeMetadataChangedCommand {\n\n constructor() {\n this.id = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('AttributeMetadataChangedCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CALL_ACTION_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CallActionCommand {\n \n constructor() {\n this.id = CALL_ACTION_COMMAND_ID;\n }\n\n init(controllerid, actionName, params) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerid, 'controllerid');\n checkParam(actionName, 'actionName');\n\n this.controllerid = controllerid;\n this.actionName = actionName;\n this.params = params;\n }\n\n}","import {CHANGE_ATTRIBUTE_METADATA_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class ChangeAttributeMetadataCommand {\n\n constructor() {\n this.id = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n }\n\n init(attributeId, metadataName, value) {\n checkMethod('ChangeAttributeMetadataCommand.init()');\n checkParam(attributeId, 'attributeId');\n checkParam(metadataName, 'metadataName');\n\n this.attributeId = attributeId;\n this.metadataName = metadataName;\n this.value = value;\n }\n}","import {CREATE_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class CreateContextCommand {\n\n constructor() {\n this.id = CREATE_CONTEXT_COMMAND_ID;\n }\n\n}","import {CREATE_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreateControllerCommand {\n\n constructor() {\n this.id = CREATE_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerName, parentControllerId) {\n checkMethod('CreateControllerCommand.init()');\n checkParam(controllerName, 'controllerName');\n\n this.controllerName = controllerName;\n this.parentControllerId = parentControllerId;\n }\n\n}","import {CREATE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class CreatePresentationModelCommand {\n\n constructor() {\n this.id = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(presentationModel) {\n checkMethod('CreatePresentationModelCommand.init()');\n checkParam(presentationModel, 'presentationModel');\n\n this.attributes = [];\n this.clientSideOnly = false;\n this.pmId = presentationModel.id;\n this.pmType = presentationModel.presentationModelType;\n var command = this;\n presentationModel.getAttributes().forEach(function (attr) {\n command.attributes.push({\n propertyName: attr.propertyName,\n id: attr.id,\n value: attr.getValue()\n });\n });\n }\n}","import {DELETE_PRESENTATION_MODEL_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DeletePresentationModelCommand {\n\n constructor() {\n this.id = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('DeletePresentationModelCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}\n","import {DESTROY_CONTEXT_COMMAND_ID} from '../commandConstants';\n\nexport default class DestroyContextCommand {\n\n constructor() {\n this.id = DESTROY_CONTEXT_COMMAND_ID;\n }\n\n}","import {DESTROY_CONTROLLER_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class DestroyControllerCommand {\n\n constructor() {\n this.id = DESTROY_CONTROLLER_COMMAND_ID;\n }\n\n init(controllerId) {\n checkMethod('DestroyControllerCommand.init()');\n checkParam(controllerId, 'controllerId');\n\n this.controllerId = controllerId;\n }\n\n}","import {INTERRUPT_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class InterruptLongPollCommand {\n\n constructor() {\n this.id = INTERRUPT_LONG_POLL_COMMAND_ID;\n }\n}","import {PRESENTATION_MODEL_DELETED_COMMAND_ID} from '../commandConstants';\nimport {checkMethod, checkParam} from '../../../utils';\n\nexport default class PresentationModelDeletedCommand {\n\n constructor() {\n this.id = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n }\n\n init(pmId) {\n checkMethod('PresentationModelDeletedCommand.init()');\n checkParam(pmId, 'pmId');\n\n this.pmId = pmId;\n }\n}","import {START_LONG_POLL_COMMAND_ID} from '../commandConstants'\n\nexport default class StartLongPollCommand {\n\n constructor() {\n this.id = START_LONG_POLL_COMMAND_ID;\n }\n}\n","export default class CodecError extends Error {\n constructor(message) {\n super(message);\n }\n}","import {exists, checkMethod, checkParam} from '../../utils';\nimport {JS_STRING_TYPE} from '../constants';\nimport {\n CREATE_PRESENTATION_MODEL_COMMAND_ID,\n VALUE_CHANGED_COMMAND_ID,\n ATTRIBUTE_METADATA_CHANGED_COMMAND_ID,\n CALL_ACTION_COMMAND_ID,\n CHANGE_ATTRIBUTE_METADATA_COMMAND_ID,\n CREATE_CONTEXT_COMMAND_ID,\n CREATE_CONTROLLER_COMMAND_ID,\n DELETE_PRESENTATION_MODEL_COMMAND_ID,\n DESTROY_CONTEXT_COMMAND_ID,\n DESTROY_CONTROLLER_COMMAND_ID,\n INTERRUPT_LONG_POLL_COMMAND_ID,\n PRESENTATION_MODEL_DELETED_COMMAND_ID,\n START_LONG_POLL_COMMAND_ID\n} from './commandConstants';\nimport {ID, PM_ID, PM_TYPE, PM_ATTRIBUTES, NAME, ATTRIBUTE_ID, VALUE, CONTROLLER_ID, PARAMS} from './commandConstants';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport CodecError from './codecError';\n\n\nexport default class Codec {\n\n static _encodeAttributeMetadataChangedCommand(command) {\n checkMethod(\"Codec.encodeAttributeMetadataChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = ATTRIBUTE_METADATA_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeAttributeMetadataChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeAttributeMetadataChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new AttributeMetadataChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCallActionCommand(command) {\n checkMethod(\"Codec.encodeCallActionCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerid, \"command.controllerid\");\n checkParam(command.actionName, \"command.actionName\");\n checkParam(command.params, \"command.params\");\n\n\n let jsonCommand = {};\n jsonCommand[ID] = CALL_ACTION_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerid;\n jsonCommand[NAME] = command.actionName;\n jsonCommand[PARAMS] = command.params.map((param) => {\n let result = {};\n result[NAME] = param.name;\n if (exists(param.value)) {\n result[VALUE] = param.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCallActionCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCallActionCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[PARAMS], \"jsonCommand[PARAMS]\");\n\n let command = new CallActionCommand();\n command.controllerid = jsonCommand[CONTROLLER_ID];\n command.actionName = jsonCommand[NAME];\n //TODO: Für die Params sollten wir eine Klasse bereitstellen\n command.params = jsonCommand[PARAMS].map((param) => {\n return {\n 'name': param[NAME],\n 'value': exists(param[VALUE]) ? param[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeChangeAttributeMetadataCommand(command) {\n checkMethod(\"Codec.encodeChangeAttributeMetadataCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n checkParam(command.metadataName, \"command.metadataName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CHANGE_ATTRIBUTE_METADATA_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n jsonCommand[NAME] = command.metadataName;\n jsonCommand[VALUE] = command.value;\n return jsonCommand;\n }\n\n static _decodeChangeAttributeMetadataCommand(jsonCommand) {\n checkMethod(\"Codec.decodeChangeAttributeMetadataCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n\n let command = new ChangeAttributeMetadataCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n command.metadataName = jsonCommand[NAME];\n command.value = jsonCommand[VALUE];\n return command;\n }\n\n static _encodeCreateContextCommand(command) {\n checkMethod(\"Codec.encodeCreateContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeCreateContextCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreateContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new CreateContextCommand();\n return command;\n }\n\n static _encodeCreateControllerCommand(command) {\n checkMethod(\"Codec._encodeCreateControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerName, \"command.controllerName\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_CONTROLLER_COMMAND_ID;\n jsonCommand[NAME] = command.controllerName;\n jsonCommand[CONTROLLER_ID] = command.parentControllerId;\n return jsonCommand;\n }\n\n static _decodeCreateControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeCreateControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[NAME], \"jsonCommand[NAME]\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new CreateControllerCommand();\n command.controllerName = jsonCommand[NAME];\n command.parentControllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeCreatePresentationModelCommand(command) {\n checkMethod(\"Codec.encodeCreatePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n checkParam(command.pmType, \"command.pmType\");\n\n let jsonCommand = {};\n jsonCommand[ID] = CREATE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n jsonCommand[PM_TYPE] = command.pmType;\n jsonCommand[PM_ATTRIBUTES] = command.attributes.map((attribute) => {\n let result = {};\n result[NAME] = attribute.propertyName;\n result[ATTRIBUTE_ID] = attribute.id;\n if (exists(attribute.value)) {\n result[VALUE] = attribute.value;\n }\n return result;\n });\n return jsonCommand;\n }\n\n static _decodeCreatePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec.decodeCreatePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n checkParam(jsonCommand[PM_TYPE], \"jsonCommand[PM_TYPE]\");\n\n let command = new CreatePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n command.pmType = jsonCommand[PM_TYPE];\n\n //TODO: Für die Attribute sollten wir eine Klasse bereitstellen\n command.attributes = jsonCommand[PM_ATTRIBUTES].map((attribute) => {\n return {\n 'propertyName': attribute[NAME],\n 'id': attribute[ATTRIBUTE_ID],\n 'value': exists(attribute[VALUE]) ? attribute[VALUE] : null\n };\n });\n return command;\n }\n\n static _encodeDeletePresentationModelCommand(command) {\n checkMethod(\"Codec._encodeDeletePresentationModelCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DELETE_PRESENTATION_MODEL_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodeDeletePresentationModelCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDeletePresentationModelCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n\n let command = new DeletePresentationModelCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeDestroyContextCommand(command) {\n checkMethod(\"Codec._encodeDestroyContextCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTEXT_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeDestroyContextCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyContextCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new DestroyContextCommand();\n return command;\n }\n\n static _encodeDestroyControllerCommand(command) {\n checkMethod(\"Codec._encodeDestroyControllerCommand\");\n checkParam(command, \"command\");\n checkParam(command.controllerId, \"command.controllerId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = DESTROY_CONTROLLER_COMMAND_ID;\n jsonCommand[CONTROLLER_ID] = command.controllerId;\n return jsonCommand;\n }\n\n static _decodeDestroyControllerCommand(jsonCommand) {\n checkMethod(\"Codec._decodeDestroyControllerCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[CONTROLLER_ID], \"jsonCommand[CONTROLLER_ID]\");\n\n let command = new DestroyControllerCommand();\n command.controllerId = jsonCommand[CONTROLLER_ID];\n return command;\n }\n\n static _encodeInterruptLongPollCommand(command) {\n checkMethod(\"Codec._encodeInterruptLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = INTERRUPT_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeInterruptLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeInterruptLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new InterruptLongPollCommand();\n return command;\n }\n\n static _encodePresentationModelDeletedCommand(command) {\n checkMethod(\"Codec._encodePresentationModelDeletedCommand\");\n checkParam(command, \"command\");\n checkParam(command.pmId, \"command.pmId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = PRESENTATION_MODEL_DELETED_COMMAND_ID;\n jsonCommand[PM_ID] = command.pmId;\n return jsonCommand;\n }\n\n static _decodePresentationModelDeletedCommand(jsonCommand) {\n checkMethod(\"Codec._decodePresentationModelDeletedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[PM_ID], \"jsonCommand[PM_ID]\");\n\n let command = new PresentationModelDeletedCommand();\n command.pmId = jsonCommand[PM_ID];\n return command;\n }\n\n static _encodeStartLongPollCommand(command) {\n checkMethod(\"Codec._encodeStartLongPollCommand\");\n checkParam(command, \"command\");\n\n let jsonCommand = {};\n jsonCommand[ID] = START_LONG_POLL_COMMAND_ID;\n return jsonCommand;\n }\n\n static _decodeStartLongPollCommand(jsonCommand) {\n checkMethod(\"Codec._decodeStartLongPollCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n\n let command = new StartLongPollCommand();\n return command;\n }\n\n static _encodeValueChangedCommand(command) {\n checkMethod(\"Codec.encodeValueChangedCommand\");\n checkParam(command, \"command\");\n checkParam(command.attributeId, \"command.attributeId\");\n\n let jsonCommand = {};\n jsonCommand[ID] = VALUE_CHANGED_COMMAND_ID;\n jsonCommand[ATTRIBUTE_ID] = command.attributeId;\n if (exists(command.newValue)) {\n jsonCommand[VALUE] = command.newValue;\n }\n return jsonCommand;\n }\n\n static _decodeValueChangedCommand(jsonCommand) {\n checkMethod(\"Codec.decodeValueChangedCommand\");\n checkParam(jsonCommand, \"jsonCommand\");\n checkParam(jsonCommand[ATTRIBUTE_ID], \"jsonCommand[ATTRIBUTE_ID]\");\n\n let command = new ValueChangedCommand();\n command.attributeId = jsonCommand[ATTRIBUTE_ID];\n if (exists(jsonCommand[VALUE])) {\n command.newValue = jsonCommand[VALUE];\n } else {\n command.newValue = null;\n }\n return command;\n }\n\n static encode(commands) {\n checkMethod(\"Codec.encode\");\n checkParam(commands, \"commands\");\n\n let self = this;\n return JSON.stringify(commands.map((command) => {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._encodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._encodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._encodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._encodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._encodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._encodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._encodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._encodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._encodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._encodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._encodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._encodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n }));\n }\n\n static decode(transmitted) {\n checkMethod(\"Codec.decode\");\n checkParam(transmitted, \"transmitted\");\n\n if (typeof transmitted === JS_STRING_TYPE) {\n let self = this;\n return JSON.parse(transmitted).map(function (command) {\n if (command.id === ATTRIBUTE_METADATA_CHANGED_COMMAND_ID) {\n return self._decodeAttributeMetadataChangedCommand(command);\n } else if (command.id === CALL_ACTION_COMMAND_ID) {\n return self._decodeCallActionCommand(command);\n } else if (command.id === CHANGE_ATTRIBUTE_METADATA_COMMAND_ID) {\n return self._decodeChangeAttributeMetadataCommand(command);\n } else if (command.id === CREATE_CONTEXT_COMMAND_ID) {\n return self._decodeCreateContextCommand(command);\n } else if (command.id === CREATE_CONTROLLER_COMMAND_ID) {\n return self._decodeCreateControllerCommand(command);\n } else if (command.id === CREATE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeCreatePresentationModelCommand(command);\n } else if (command.id === DELETE_PRESENTATION_MODEL_COMMAND_ID) {\n return self._decodeDeletePresentationModelCommand(command);\n } else if (command.id === DESTROY_CONTEXT_COMMAND_ID) {\n return self._decodeDestroyContextCommand(command);\n } else if (command.id === DESTROY_CONTROLLER_COMMAND_ID) {\n return self._decodeDestroyControllerCommand(command);\n } else if (command.id === INTERRUPT_LONG_POLL_COMMAND_ID) {\n return self._decodeInterruptLongPollCommand(command);\n } else if (command.id === PRESENTATION_MODEL_DELETED_COMMAND_ID) {\n return self._decodePresentationModelDeletedCommand(command);\n } else if (command.id === START_LONG_POLL_COMMAND_ID) {\n return self._decodeStartLongPollCommand(command);\n } else if (command.id === VALUE_CHANGED_COMMAND_ID) {\n return self._decodeValueChangedCommand(command);\n } else {\n throw new CodecError('Command of type ' + command.id + ' can not be handled');\n }\n });\n } else {\n throw new CodecError('Can not decode data that is not of type string');\n }\n }\n}","export default class EventBus {\n\n constructor() {\n this.eventHandlers = [];\n }\n\n onEvent(eventHandler) {\n this.eventHandlers.push(eventHandler);\n }\n\n trigger(event) {\n this.eventHandlers.forEach(handle => handle(event));\n }\n}","import EventBus from './eventBus'\n\nvar presentationModelInstanceCount = 0; // todo dk: consider making this static in class\n\nexport default class ClientPresentationModel {\n constructor(id, presentationModelType) {\n this.id = id;\n this.presentationModelType = presentationModelType;\n this.attributes = [];\n this.clientSideOnly = false;\n this.dirty = false;\n if (typeof id !== 'undefined' && id != null) {\n this.id = id;\n }\n else {\n this.id = (presentationModelInstanceCount++).toString();\n }\n this.invalidBus = new EventBus();\n this.dirtyValueChangeBus = new EventBus();\n }\n // todo dk: align with Java version: move to ClientDolphin and auto-add to model store\n /** a copy constructor for anything but IDs. Per default, copies are client side only, no automatic update applies. */\n copy() {\n var result = new ClientPresentationModel(null, this.presentationModelType);\n result.clientSideOnly = true;\n this.getAttributes().forEach((attribute) => {\n var attributeCopy = attribute.copy();\n result.addAttribute(attributeCopy);\n });\n return result;\n }\n //add array of attributes\n addAttributes(attributes) {\n if (!attributes || attributes.length < 1)\n return;\n attributes.forEach(attr => {\n this.addAttribute(attr);\n });\n }\n addAttribute(attribute) {\n if (!attribute || (this.attributes.indexOf(attribute) > -1)) {\n return;\n }\n if (this.findAttributeByPropertyName(attribute.propertyName)) {\n throw new Error(\"There already is an attribute with property name: \" + attribute.propertyName\n + \" in presentation model with id: \" + this.id);\n }\n if (attribute.getQualifier() && this.findAttributeByQualifier(attribute.getQualifier())) {\n throw new Error(\"There already is an attribute with qualifier: \" + attribute.getQualifier()\n + \" in presentation model with id: \" + this.id);\n }\n attribute.setPresentationModel(this);\n this.attributes.push(attribute);\n attribute.onValueChange(() => {\n this.invalidBus.trigger({ source: this });\n });\n }\n onInvalidated(handleInvalidate) {\n this.invalidBus.onEvent(handleInvalidate);\n }\n /** returns a copy of the internal state */\n getAttributes() {\n return this.attributes.slice(0);\n }\n getAt(propertyName) {\n return this.findAttributeByPropertyName(propertyName);\n }\n findAllAttributesByPropertyName(propertyName) {\n var result = [];\n if (!propertyName)\n return null;\n this.attributes.forEach((attribute) => {\n if (attribute.propertyName == propertyName) {\n result.push(attribute);\n }\n });\n return result;\n }\n findAttributeByPropertyName(propertyName) {\n if (!propertyName)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if ((this.attributes[i].propertyName == propertyName)) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeByQualifier(qualifier) {\n if (!qualifier)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].getQualifier() == qualifier) {\n return this.attributes[i];\n }\n }\n return null;\n }\n findAttributeById(id) {\n if (!id)\n return null;\n for (var i = 0; i < this.attributes.length; i++) {\n if (this.attributes[i].id == id) {\n return this.attributes[i];\n }\n }\n return null;\n }\n syncWith(sourcePresentationModel) {\n this.attributes.forEach((targetAttribute) => {\n var sourceAttribute = sourcePresentationModel.getAt(targetAttribute.propertyName);\n if (sourceAttribute) {\n targetAttribute.syncWith(sourceAttribute);\n }\n });\n }\n}\n","import BlindCommandBatcher from './commandBatcher';\nimport Codec from './commands/codec';\nimport ClientPresentationModel from './clientPresentationModel'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientConnector {\n\n constructor(transmitter, clientDolphin, slackMS = 0, maxBatchSize = 50) {\n\n this.commandQueue = [];\n this.currentlySending = false;\n this.pushEnabled = false;\n this.waiting = false;\n this.transmitter = transmitter;\n this.clientDolphin = clientDolphin;\n this.slackMS = slackMS;\n this.codec = new Codec();\n this.commandBatcher = new BlindCommandBatcher(true, maxBatchSize);\n }\n\n setCommandBatcher(newBatcher) {\n this.commandBatcher = newBatcher;\n }\n\n setPushEnabled(enabled) {\n this.pushEnabled = enabled;\n }\n\n setPushListener(newListener) {\n this.pushListener = newListener;\n }\n\n setReleaseCommand(newCommand) {\n this.releaseCommand = newCommand;\n }\n\n send(command, onFinished) {\n this.commandQueue.push({ command: command, handler: onFinished });\n if (this.currentlySending) {\n this.release(); // there is not point in releasing if we do not send atm\n return;\n }\n this.doSendNext();\n }\n\n doSendNext() {\n if (this.commandQueue.length < 1) {\n if (this.pushEnabled) {\n this.enqueuePushCommand();\n }\n else {\n this.currentlySending = false;\n return;\n }\n }\n this.currentlySending = true;\n let cmdsAndHandlers = this.commandBatcher.batch(this.commandQueue);\n\n if(cmdsAndHandlers.length > 0) {\n let callback = cmdsAndHandlers[cmdsAndHandlers.length - 1].handler;\n let commands = cmdsAndHandlers.map(cah => { return cah.command; });\n this.transmitter.transmit(commands, (response) => {\n let touchedPMs = [];\n response.forEach((command) => {\n let touched = this.handle(command);\n if (touched)\n touchedPMs.push(touched);\n });\n if (callback) {\n callback.onFinished(touchedPMs); // todo: make them unique?\n }\n setTimeout(() => this.doSendNext(), this.slackMS);\n }, (error) => {\n callback.onError(error);\n });\n } else {\n setTimeout(() => this.doSendNext(), this.slackMS);\n }\n }\n\n handle(command) {\n if (command.id === \"DeletePresentationModel\") {\n return this.handleDeletePresentationModelCommand(command);\n }\n else if (command.id === \"CreatePresentationModel\") {\n return this.handleCreatePresentationModelCommand(command);\n }\n else if (command.id === \"ValueChanged\") {\n return this.handleValueChangedCommand(command);\n }\n else if (command.id === \"AttributeMetadataChanged\") {\n return this.handleAttributeMetadataChangedCommand(command);\n }\n else {\n ClientConnector.LOGGER.error(\"Cannot handle, unknown command \" + command);\n }\n return null;\n }\n\n handleDeletePresentationModelCommand(serverCommand) {\n let model = this.clientDolphin.findPresentationModelById(serverCommand.pmId);\n if (!model)\n return null;\n this.clientDolphin.getClientModelStore().deletePresentationModel(model, true);\n return model;\n }\n\n handleCreatePresentationModelCommand(serverCommand) {\n if (this.clientDolphin.getClientModelStore().containsPresentationModel(serverCommand.pmId)) {\n throw new Error(\"There already is a presentation model with id \" + serverCommand.pmId + \" known to the client.\");\n }\n let attributes = [];\n serverCommand.attributes.forEach((attr) => {\n let clientAttribute = this.clientDolphin.attribute(attr.propertyName, attr.qualifier, attr.value);\n if (attr.id && attr.id.match(\".*S$\")) {\n clientAttribute.id = attr.id;\n }\n attributes.push(clientAttribute);\n });\n let clientPm = new ClientPresentationModel(serverCommand.pmId, serverCommand.pmType);\n clientPm.addAttributes(attributes);\n if (serverCommand.clientSideOnly) {\n clientPm.clientSideOnly = true;\n }\n this.clientDolphin.getClientModelStore().add(clientPm, false);\n this.clientDolphin.updatePresentationModelQualifier(clientPm);\n return clientPm;\n }\n\n handleValueChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute) {\n ClientConnector.LOGGER.error(\"attribute with id \" + serverCommand.attributeId + \" not found, cannot update to new value \" + serverCommand.newValue);\n return null;\n }\n if (clientAttribute.getValue() === serverCommand.newValue) {\n return null;\n }\n clientAttribute.setValueFromServer(serverCommand.newValue);\n return null;\n }\n\n handleAttributeMetadataChangedCommand(serverCommand) {\n let clientAttribute = this.clientDolphin.getClientModelStore().findAttributeById(serverCommand.attributeId);\n if (!clientAttribute)\n return null;\n clientAttribute[serverCommand.metadataName] = serverCommand.value;\n return null;\n }\n\n listen() {\n if (!this.pushEnabled)\n return;\n if (this.waiting)\n return;\n // todo: how to issue a warning if no pushListener is set?\n if (!this.currentlySending) {\n this.doSendNext();\n }\n }\n\n enqueuePushCommand() {\n let me = this;\n this.waiting = true;\n this.commandQueue.push({\n command: this.pushListener,\n handler: {\n onFinished: function () { me.waiting = false; },\n onFinishedData: null\n }\n });\n }\n\n release() {\n if (!this.waiting)\n return;\n this.waiting = false;\n // todo: how to issue a warning if no releaseCommand is set?\n this.transmitter.signal(this.releaseCommand);\n }\n}\n\nClientConnector.LOGGER = LoggerFactory.getLogger('ClientConnector');","import EventBus from './eventBus';\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientAttribute {\n\n constructor(propertyName, qualifier, value) {\n\n this.propertyName = propertyName;\n this.id = \"\" + (ClientAttribute.clientAttributeInstanceCount++) + \"C\";\n this.valueChangeBus = new EventBus();\n this.qualifierChangeBus = new EventBus();\n this.setValue(value);\n this.setQualifier(qualifier);\n }\n\n copy() {\n let result = new ClientAttribute(this.propertyName, this.getQualifier(), this.getValue());\n return result;\n }\n\n setPresentationModel(presentationModel) {\n if (this.presentationModel) {\n throw new Error(\"You can not set a presentation model for an attribute that is already bound.\");\n }\n this.presentationModel = presentationModel;\n }\n\n getPresentationModel() {\n return this.presentationModel;\n }\n\n getValue() {\n return this.value;\n }\n\n setValueFromServer(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': false });\n }\n\n setValue(newValue) {\n let verifiedValue = ClientAttribute.checkValue(newValue);\n if (this.value === verifiedValue)\n return;\n let oldValue = this.value;\n this.value = verifiedValue;\n this.valueChangeBus.trigger({ 'oldValue': oldValue, 'newValue': verifiedValue, 'sendToServer': true });\n }\n\n setQualifier(newQualifier) {\n if (this.qualifier === newQualifier)\n return;\n let oldQualifier = this.qualifier;\n this.qualifier = newQualifier;\n this.qualifierChangeBus.trigger({ 'oldValue': oldQualifier, 'newValue': newQualifier });\n this.valueChangeBus.trigger({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n getQualifier() {\n return this.qualifier;\n }\n\n onValueChange(eventHandler) {\n this.valueChangeBus.onEvent(eventHandler);\n eventHandler({ \"oldValue\": this.value, \"newValue\": this.value, 'sendToServer': false });\n }\n\n onQualifierChange(eventHandler) {\n this.qualifierChangeBus.onEvent(eventHandler);\n }\n\n syncWith(sourceAttribute) {\n if (sourceAttribute) {\n this.setQualifier(sourceAttribute.getQualifier()); // sequence is important\n this.setValue(sourceAttribute.value);\n }\n }\n\n static checkValue(value) {\n if (value == null || typeof value === 'undefined') {\n return null;\n }\n let result = value;\n if (result instanceof String || result instanceof Boolean || result instanceof Number) {\n result = value.valueOf();\n }\n if (result instanceof ClientAttribute) {\n ClientAttribute.LOGGER.warn(\"An Attribute may not itself contain an attribute as a value. Assuming you forgot to call value.\");\n result = this.checkValue(value.value);\n }\n let ok = false;\n if (this.SUPPORTED_VALUE_TYPES.indexOf(typeof result) > -1 || result instanceof Date) {\n ok = true;\n }\n if (!ok) {\n throw new Error(\"Attribute values of this type are not allowed: \" + typeof value);\n }\n return result;\n }\n\n}\n\nClientAttribute.LOGGER = LoggerFactory.getLogger('ClientAttribute');\nClientAttribute.SUPPORTED_VALUE_TYPES = [\"string\", \"number\", \"boolean\"];\nClientAttribute.clientAttributeInstanceCount = 0;\n","import ClientAttribute from './clientAttribute'\nimport ClientPresentationModel from './clientPresentationModel'\n\nexport default class ClientDolphin {\n\n constructor() {\n }\n\n setClientConnector(clientConnector) {\n this.clientConnector = clientConnector;\n }\n\n getClientConnector() {\n return this.clientConnector;\n }\n\n send(command, onFinished) {\n this.clientConnector.send(command, onFinished);\n }\n\n attribute(propertyName, qualifier, value) {\n return new ClientAttribute(propertyName, qualifier, value);\n }\n\n presentationModel(id, type, ...attributes) {\n const model = new ClientPresentationModel(id, type);\n if (attributes && attributes.length > 0) {\n attributes.forEach((attribute) => {\n model.addAttribute(attribute);\n });\n }\n this.getClientModelStore().add(model, true);\n return model;\n }\n\n setClientModelStore(clientModelStore) {\n this.clientModelStore = clientModelStore;\n }\n\n getClientModelStore() {\n return this.clientModelStore;\n }\n\n listPresentationModelIds() {\n return this.getClientModelStore().listPresentationModelIds();\n }\n\n listPresentationModels() {\n return this.getClientModelStore().listPresentationModels();\n }\n\n findAllPresentationModelByType(presentationModelType) {\n return this.getClientModelStore().findAllPresentationModelByType(presentationModelType);\n }\n\n getAt(id) {\n return this.findPresentationModelById(id);\n }\n\n findPresentationModelById(id) {\n return this.getClientModelStore().findPresentationModelById(id);\n }\n\n deletePresentationModel(modelToDelete) {\n this.getClientModelStore().deletePresentationModel(modelToDelete, true);\n }\n\n updatePresentationModelQualifier(presentationModel) {\n presentationModel.getAttributes().forEach(sourceAttribute => {\n this.updateAttributeQualifier(sourceAttribute);\n });\n }\n\n updateAttributeQualifier(sourceAttribute) {\n if (!sourceAttribute.getQualifier())\n return;\n const attributes = this.getClientModelStore().findAllAttributesByQualifier(sourceAttribute.getQualifier());\n attributes.forEach(targetAttribute => {\n targetAttribute.setValue(sourceAttribute.getValue()); // should always have the same value\n });\n }\n\n startPushListening(pushCommand, releaseCommand) {\n this.clientConnector.setPushListener(pushCommand);\n this.clientConnector.setReleaseCommand(releaseCommand);\n this.clientConnector.setPushEnabled(true);\n\n setTimeout(() => {\n this.clientConnector.listen();\n }, 0);\n }\n\n stopPushListening() {\n this.clientConnector.setPushEnabled(false);\n }\n}","\nexport default class Attribute {\n}\n\nAttribute.QUALIFIER_PROPERTY = \"qualifier\";\nAttribute.VALUE = \"value\";\n","import CreateContextCommand from './impl/createContextCommand';\nimport CreateControllerCommand from './impl/createControllerCommand';\nimport CallActionCommand from './impl/callActionCommand';\nimport DestroyControllerCommand from './impl/destroyControllerCommand';\nimport DestroyContextCommand from './impl/destroyContextCommand';\nimport StartLongPollCommand from './impl/startLongPollCommand';\nimport InterruptLongPollCommand from './impl/interruptLongPollCommand';\nimport CreatePresentationModelCommand from './impl/createPresentationModelCommand';\nimport DeletePresentationModelCommand from './impl/deletePresentationModelCommand';\nimport PresentationModelDeletedCommand from './impl/presentationModelDeletedCommand';\nimport ValueChangedCommand from './impl/valueChangedCommand';\nimport ChangeAttributeMetadataCommand from './impl/changeAttributeMetadataCommand';\nimport AttributeMetadataChangedCommand from './impl/attributeMetadataChangedCommand';\n\nexport default class CommandFactory {\n\n static createCreateContextCommand() {\n return new CreateContextCommand();\n }\n\n static createCreateControllerCommand(controllerName, parentControllerId) {\n const command = new CreateControllerCommand();\n command.init(controllerName, parentControllerId);\n return command;\n }\n\n static createCallActionCommand(controllerid, actionName, params) {\n const command = new CallActionCommand();\n command.init(controllerid, actionName, params);\n return command;\n }\n\n static createDestroyControllerCommand(controllerId) {\n const command = new DestroyControllerCommand();\n command.init(controllerId);\n return command;\n }\n\n static createDestroyContextCommand() {\n return new DestroyContextCommand();\n }\n\n static createStartLongPollCommand() {\n return new StartLongPollCommand();\n }\n\n static createInterruptLongPollCommand() {\n return new InterruptLongPollCommand();\n }\n\n static createCreatePresentationModelCommand(presentationModel) {\n const command = new CreatePresentationModelCommand();\n command.init(presentationModel);\n return command;\n }\n\n static createDeletePresentationModelCommand(pmId) {\n const command = new DeletePresentationModelCommand();\n command.init(pmId);\n return command;\n }\n\n static createPresentationModelDeletedCommand(pmId) {\n let command = new PresentationModelDeletedCommand();\n command.init(pmId);\n return command;\n }\n\n static createValueChangedCommand(attributeId, newValue) {\n let command = new ValueChangedCommand();\n command.init(attributeId, newValue);\n return command;\n }\n\n static createChangeAttributeMetadataCommand(attributeId, metadataName, value) {\n let command = new ChangeAttributeMetadataCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n\n static createAttributeMetadataChangedCommand(attributeId, metadataName, value) {\n let command = new AttributeMetadataChangedCommand();\n command.init(attributeId, metadataName, value);\n return command;\n }\n}","import Attribute from './attribute'\nimport EventBus from './eventBus'\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants'\nimport { LoggerFactory } from '../logging';\n\nexport default class ClientModelStore {\n\n constructor(clientDolphin) {\n\n this.clientDolphin = clientDolphin;\n this.presentationModels = new Map();\n this.presentationModelsPerType = new Map();\n this.attributesPerId = new Map();\n this.attributesPerQualifier = new Map();\n this.modelStoreChangeBus = new EventBus();\n }\n\n getClientDolphin() {\n return this.clientDolphin;\n }\n\n registerAttribute(attribute) {\n this.addAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.addAttributeByQualifier(attribute);\n }\n // whenever an attribute changes its value, the server needs to be notified\n // and all other attributes with the same qualifier are given the same value\n attribute.onValueChange((evt) => {\n if(evt.newValue !== evt.oldValue && evt.sendToServer === true) {\n const command = CommandFactory.createValueChangedCommand(attribute.id, evt.newValue);\n this.clientDolphin.getClientConnector().send(command, null);\n }\n\n if (attribute.getQualifier()) {\n let attrs = this.findAttributesByFilter((attr) => {\n return attr !== attribute && attr.getQualifier() === attribute.getQualifier();\n });\n attrs.forEach((attr) => {\n attr.setValue(attribute.getValue());\n });\n }\n\n });\n attribute.onQualifierChange((evt) => {\n this.clientDolphin.getClientConnector().send(CommandFactory.createChangeAttributeMetadataCommand(attribute.id, Attribute.QUALIFIER_PROPERTY, evt.newValue), null);\n });\n }\n\n add(model, sendToServer = true) {\n if (!model) {\n return false;\n }\n if (this.presentationModels.has(model.id)) {\n ClientModelStore.LOGGER.error(\"There already is a PM with id \" + model.id);\n }\n let added = false;\n if (!this.presentationModels.has(model.id)) {\n this.presentationModels.set(model.id, model);\n this.addPresentationModelByType(model);\n\n if(sendToServer) {\n let connector = this.clientDolphin.getClientConnector();\n connector.send(CommandFactory.createCreatePresentationModelCommand(model), null);\n }\n\n model.getAttributes().forEach(attribute => {\n this.registerAttribute(attribute);\n });\n this.modelStoreChangeBus.trigger({ 'eventType': ADDED_TYPE, 'clientPresentationModel': model });\n added = true;\n }\n return added;\n }\n\n remove(model) {\n if (!model) {\n return false;\n }\n let removed = false;\n if (this.presentationModels.has(model.id)) {\n this.removePresentationModelByType(model);\n this.presentationModels.delete(model.id);\n model.getAttributes().forEach((attribute) => {\n this.removeAttributeById(attribute);\n if (attribute.getQualifier()) {\n this.removeAttributeByQualifier(attribute);\n }\n });\n this.modelStoreChangeBus.trigger({ 'eventType': REMOVED_TYPE, 'clientPresentationModel': model });\n removed = true;\n }\n return removed;\n }\n\n findAttributesByFilter(filter) {\n let matches = [];\n this.presentationModels.forEach((model) => {\n model.getAttributes().forEach((attr) => {\n if (filter(attr)) {\n matches.push(attr);\n }\n });\n });\n return matches;\n }\n\n addPresentationModelByType(model) {\n if (!model) {\n return;\n }\n let type = model.presentationModelType;\n if (!type) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(type);\n if (!presentationModels) {\n presentationModels = [];\n this.presentationModelsPerType.set(type, presentationModels);\n }\n if (!(presentationModels.indexOf(model) > -1)) {\n presentationModels.push(model);\n }\n }\n\n removePresentationModelByType(model) {\n if (!model || !(model.presentationModelType)) {\n return;\n }\n let presentationModels = this.presentationModelsPerType.get(model.presentationModelType);\n if (!presentationModels) {\n return;\n }\n if (presentationModels.length > -1) {\n presentationModels.splice(presentationModels.indexOf(model), 1);\n }\n if (presentationModels.length === 0) {\n this.presentationModelsPerType.delete(model.presentationModelType);\n }\n }\n\n listPresentationModelIds() {\n let result = [];\n let iter = this.presentationModels.keys();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n listPresentationModels() {\n let result = [];\n let iter = this.presentationModels.values();\n let next = iter.next();\n while (!next.done) {\n result.push(next.value);\n next = iter.next();\n }\n return result;\n }\n\n findPresentationModelById(id) {\n return this.presentationModels.get(id);\n }\n\n findAllPresentationModelByType(type) {\n if (!type || !this.presentationModelsPerType.has(type)) {\n return [];\n }\n return this.presentationModelsPerType.get(type).slice(0); // slice is used to clone the array\n }\n\n deletePresentationModel(model, notify) {\n if (!model) {\n return;\n }\n if (this.containsPresentationModel(model.id)) {\n this.remove(model);\n if (!notify || model.clientSideOnly) {\n return;\n }\n this.clientDolphin.getClientConnector().send(CommandFactory.createPresentationModelDeletedCommand(model.id), null);\n }\n }\n\n containsPresentationModel(id) {\n return this.presentationModels.has(id);\n }\n\n addAttributeById(attribute) {\n if (!attribute || this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.set(attribute.id, attribute);\n }\n\n removeAttributeById(attribute) {\n if (!attribute || !this.attributesPerId.has(attribute.id)) {\n return;\n }\n this.attributesPerId.delete(attribute.id);\n }\n\n findAttributeById(id) {\n return this.attributesPerId.get(id);\n }\n\n addAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n attributes = [];\n this.attributesPerQualifier.set(attribute.getQualifier(), attributes);\n }\n if (!(attributes.indexOf(attribute) > -1)) {\n attributes.push(attribute);\n }\n }\n\n removeAttributeByQualifier(attribute) {\n if (!attribute || !attribute.getQualifier()) {\n return;\n }\n let attributes = this.attributesPerQualifier.get(attribute.getQualifier());\n if (!attributes) {\n return;\n }\n if (attributes.length > -1) {\n attributes.splice(attributes.indexOf(attribute), 1);\n }\n if (attributes.length === 0) {\n this.attributesPerQualifier.delete(attribute.getQualifier());\n }\n }\n\n findAllAttributesByQualifier(qualifier) {\n if (!qualifier || !this.attributesPerQualifier.has(qualifier)) {\n return [];\n }\n return this.attributesPerQualifier.get(qualifier).slice(0); // slice is used to clone the array\n }\n\n onModelStoreChange(eventHandler) {\n this.modelStoreChangeBus.onEvent(eventHandler);\n }\n\n onModelStoreChangeForType(presentationModelType, eventHandler) {\n this.modelStoreChangeBus.onEvent(pmStoreEvent => {\n if (pmStoreEvent.clientPresentationModel.presentationModelType == presentationModelType) {\n eventHandler(pmStoreEvent);\n }\n });\n }\n}\n\nClientModelStore.LOGGER = LoggerFactory.getLogger('ClientModelStore');\n\n","export default class NoTransmitter {\n\n transmit(commands, onDone) {\n // do nothing special\n onDone([]);\n }\n\n signal() {\n // do nothing\n }\n\n reset() {\n // do nothing\n }\n}","import ClientConnector from './clientConnector'\nimport ClientDolphin from './clientDolphin'\nimport ClientModelStore from './clientModelStore'\nimport NoTransmitter from './noTransmitter'\nimport { LoggerFactory } from '../logging';\n\n\nclass DolphinBuilder {\n\n constructor() {\n this.slackMS = 300;\n this.maxBatchSize = 50;\n this.transmitter = null;\n }\n\n withSlackMS(slackMS) {\n this.slackMS = slackMS;\n return this;\n }\n\n withMaxBatchSize(maxBatchSize) {\n this.maxBatchSize = maxBatchSize;\n return this;\n }\n\n withTransmitter(transmitter) {\n this.transmitter = transmitter;\n return this;\n }\n\n build() {\n const clientDolphin = new ClientDolphin();\n let transmitter;\n if (this.transmitter) {\n transmitter = this.transmitter;\n } else {\n transmitter = new NoTransmitter();\n }\n clientDolphin.setClientConnector(new ClientConnector(transmitter, clientDolphin, this.slackMS, this.maxBatchSize));\n clientDolphin.setClientModelStore(new ClientModelStore(clientDolphin));\n DolphinBuilder.LOGGER.debug(\"Remoting client initialized\", clientDolphin, transmitter);\n return clientDolphin;\n }\n}\n\nDolphinBuilder.LOGGER = LoggerFactory.getLogger('DolphinBuilder');\n\nconst dolphinBuilder = new DolphinBuilder();\n\nexport { dolphinBuilder }","import {exists, checkMethod, checkParam} from '../utils';\nimport CommandFactory from './commands/commandFactory';\nimport {ADDED_TYPE, REMOVED_TYPE} from './constants';\n\n\nconst DOLPHIN_BEAN = '@@@ R_BEAN @@@';\nconst ACTION_CALL_BEAN = '@@@ CONTROLLER_ACTION_CALL_BEAN @@@';\nconst HIGHLANDER_BEAN = '@@@ HIGHLANDER_BEAN @@@';\nconst DOLPHIN_LIST_SPLICE = '@R:LS@';\nconst SOURCE_SYSTEM = '@@@ SOURCE_SYSTEM @@@';\nconst SOURCE_SYSTEM_CLIENT = 'client';\nconst SOURCE_SYSTEM_SERVER = 'server';\n\nexport default class Connector{\n\n constructor(url, dolphin, classRepository, config) {\n checkMethod('Connector(url, dolphin, classRepository, config)');\n checkParam(url, 'url');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n\n let self = this;\n this.dolphin = dolphin;\n this.config = config;\n this.classRepository = classRepository;\n this.highlanderPMResolver = function() {};\n this.highlanderPMPromise = new Promise((resolve) => {\n self.highlanderPMResolver = resolve;\n });\n\n dolphin.getClientModelStore().onModelStoreChange((event) => {\n let model = event.clientPresentationModel;\n let sourceSystem = model.findAttributeByPropertyName(SOURCE_SYSTEM);\n if (exists(sourceSystem) && sourceSystem.value === SOURCE_SYSTEM_SERVER) {\n if (event.eventType === ADDED_TYPE) {\n self.onModelAdded(model);\n } else if (event.eventType === REMOVED_TYPE) {\n self.onModelRemoved(model);\n }\n }\n });\n }\n connect() {\n let that = this;\n that.dolphin.startPushListening(CommandFactory.createStartLongPollCommand(), CommandFactory.createInterruptLongPollCommand());\n }\n\n onModelAdded(model) {\n checkMethod('Connector.onModelAdded(model)');\n checkParam(model, 'model');\n\n var type = model.presentationModelType;\n switch (type) {\n case ACTION_CALL_BEAN:\n // ignore\n break;\n case DOLPHIN_BEAN:\n this.classRepository.registerClass(model);\n break;\n case HIGHLANDER_BEAN:\n this.highlanderPMResolver(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n this.classRepository.spliceListEntry(model);\n this.dolphin.deletePresentationModel(model);\n break;\n default:\n this.classRepository.load(model);\n break;\n }\n }\n\n onModelRemoved(model) {\n checkMethod('Connector.onModelRemoved(model)');\n checkParam(model, 'model');\n let type = model.presentationModelType;\n switch (type) {\n case DOLPHIN_BEAN:\n this.classRepository.unregisterClass(model);\n break;\n case DOLPHIN_LIST_SPLICE:\n // do nothing\n break;\n default:\n this.classRepository.unload(model);\n break;\n }\n }\n\n invoke(command) {\n checkMethod('Connector.invoke(command)');\n checkParam(command, 'command');\n\n var dolphin = this.dolphin;\n return new Promise((resolve, reject) => {\n dolphin.send(command, {\n onFinished: (params) => {\n resolve(params);\n },\n onError: (reason) => {\n reject(reason);\n } \n });\n });\n }\n\n getHighlanderPM() {\n return this.highlanderPMPromise;\n }\n}\n\nexport { SOURCE_SYSTEM, SOURCE_SYSTEM_CLIENT, SOURCE_SYSTEM_SERVER, ACTION_CALL_BEAN };\n","import {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class BeanManager {\n\n constructor(classRepository) {\n checkMethod('BeanManager(classRepository)');\n checkParam(classRepository, 'classRepository');\n\n this.classRepository = classRepository;\n this.addedHandlers = new Map();\n this.removedHandlers = new Map();\n this.updatedHandlers = new Map();\n this.arrayUpdatedHandlers = new Map();\n this.allAddedHandlers = [];\n this.allRemovedHandlers = [];\n this.allUpdatedHandlers = [];\n this.allArrayUpdatedHandlers = [];\n\n this._handleBeanAdded = this._handleBeanAdded.bind(this);\n this._handleBeanRemoved = this._handleBeanRemoved.bind(this);\n this._handleBeanUpdate = this._handleBeanUpdate.bind(this);\n this._handleArrayUpdate = this._handleArrayUpdate.bind(this);\n\n this.classRepository.onBeanAdded(this._handleBeanAdded);\n this.classRepository.onBeanRemoved(this._handleBeanRemoved);\n this.classRepository.onBeanUpdate(this._handleBeanUpdate);\n this.classRepository.onArrayUpdate(this._handleArrayUpdate);\n }\n\n _handleBeanAdded(type, bean) {\n const handlerList = this.addedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanAdded-handler for type', type, e);\n }\n });\n }\n this.allAddedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanAdded-handler', e);\n }\n });\n }\n\n _handleBeanRemoved(type, bean) {\n const handlerList = this.removedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler for type', type, e);\n }\n });\n }\n this.allRemovedHandlers.forEach((handler) => {\n try {\n handler(bean);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanRemoved-handler', e);\n }\n });\n }\n\n _handleArrayUpdate(type, bean, propertyName, index, count, newElements) {\n const handlerList = this.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler for type', type, e);\n }\n });\n }\n this.allArrayUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, index, count, newElements);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onArrayUpdate-handler', e);\n }\n });\n }\n\n _handleBeanUpdate(type, bean, propertyName, newValue, oldValue) {\n const handlerList = this.updatedHandlers.get(type);\n if (exists(handlerList)) {\n handlerList.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler for type', type, e);\n }\n });\n }\n this.allUpdatedHandlers.forEach((handler) => {\n try {\n handler(bean, propertyName, newValue, oldValue);\n } catch (e) {\n BeanManager.LOGGER.error('An exception occurred while calling a general onBeanUpdate-handler', e);\n }\n });\n }\n\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('BeanManager.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n return this.classRepository.notifyBeanChange(bean, propertyName, newValue);\n }\n\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('BeanManager.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n this.classRepository.notifyArrayChange(bean, propertyName, index, count, removedElements);\n }\n\n\n isManaged(bean) {\n checkMethod('BeanManager.isManaged(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.isManaged() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n create(type) {\n checkMethod('BeanManager.create(type)');\n checkParam(type, 'type');\n\n // TODO: Implement dolphin.create() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n add(type, bean) {\n checkMethod('BeanManager.add(type, bean)');\n checkParam(type, 'type');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.add() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n addAll(type, collection) {\n checkMethod('BeanManager.addAll(type, collection)');\n checkParam(type, 'type');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.addAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n remove(bean) {\n checkMethod('BeanManager.remove(bean)');\n checkParam(bean, 'bean');\n\n // TODO: Implement dolphin.remove() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeAll(collection) {\n checkMethod('BeanManager.removeAll(collection)');\n checkParam(collection, 'collection');\n\n // TODO: Implement dolphin.removeAll() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n removeIf(predicate) {\n checkMethod('BeanManager.removeIf(predicate)');\n checkParam(predicate, 'predicate');\n\n // TODO: Implement dolphin.removeIf() [DP-7]\n throw new Error(\"Not implemented yet\");\n }\n\n\n onAdded(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onAdded(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allAddedHandlers = this.allAddedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allAddedHandlers = self.allAddedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onAdded(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.addedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.addedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.addedHandlers.get(type);\n if (exists(handlerList)) { \n self.addedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onRemoved(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onRemoved(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allRemovedHandlers = this.allRemovedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allRemovedHandlers = self.allRemovedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onRemoved(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.removedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.removedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n const handlerList = self.removedHandlers.get(type);\n if (exists(handlerList)) {\n self.removedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n\n onBeanUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onBeanUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allUpdatedHandlers = this.allUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allUpdatedHandlers = self.allUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onBeanUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.updatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.updatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.updatedHandlers.get(type);\n if (exists(handlerList)) {\n self.updatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n\n onArrayUpdate(type, eventHandler) {\n let self = this;\n if (!exists(eventHandler)) {\n eventHandler = type;\n checkMethod('BeanManager.onArrayUpdate(eventHandler)');\n checkParam(eventHandler, 'eventHandler');\n\n this.allArrayUpdatedHandlers = this.allArrayUpdatedHandlers.concat(eventHandler);\n return {\n unsubscribe: () => {\n self.allArrayUpdatedHandlers = self.allArrayUpdatedHandlers.filter((value) => {\n return value !== eventHandler;\n });\n }\n };\n } else {\n checkMethod('BeanManager.onArrayUpdate(type, eventHandler)');\n checkParam(type, 'type');\n checkParam(eventHandler, 'eventHandler');\n\n let handlerList = this.arrayUpdatedHandlers.get(type);\n if (!exists(handlerList)) {\n handlerList = [];\n }\n this.arrayUpdatedHandlers.set(type, handlerList.concat(eventHandler));\n return {\n unsubscribe: () => {\n let handlerList = self.arrayUpdatedHandlers.get(type);\n if (exists(handlerList)) {\n self.arrayUpdatedHandlers.set(type, handlerList.filter((value) => {\n return value !== eventHandler;\n }));\n }\n }\n };\n }\n }\n}\n\nBeanManager.LOGGER = LoggerFactory.getLogger('BeanManager');\n","import * as consts from './constants';\nimport {exists, checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nclass ClassRepository {\n\n constructor(dolphin) {\n checkMethod('ClassRepository(dolphin)');\n checkParam(dolphin, 'dolphin');\n\n this.dolphin = dolphin;\n this.classes = new Map();\n this.beanFromDolphin = new Map();\n this.beanToDolphin = new Map();\n this.classInfos = new Map();\n this.beanAddedHandlers = [];\n this.beanRemovedHandlers = [];\n this.propertyUpdateHandlers = [];\n this.arrayUpdateHandlers = [];\n this.blocked = null;\n }\n\n sendListSplice(classRepository, modelId, propertyName, from, to, newElements) {\n let dolphin = classRepository.dolphin;\n let model = dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = classRepository.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n if (exists(type)) {\n\n let attributes = [\n dolphin.attribute('@@@ SOURCE_SYSTEM @@@', null, 'client'),\n dolphin.attribute('source', null, modelId),\n dolphin.attribute('attribute', null, propertyName),\n dolphin.attribute('from', null, from),\n dolphin.attribute('to', null, to),\n dolphin.attribute('count', null, newElements.length)\n ];\n newElements.forEach(function (element, index) {\n attributes.push(dolphin.attribute(index.toString(), null, ClassRepository.toDolphin(classRepository, type, element)));\n });\n dolphin.presentationModel.apply(dolphin, [null, '@DP:LS@'].concat(attributes));\n }\n }\n }\n\n validateList(classRepository, type, bean, propertyName) {\n let list = bean[propertyName];\n if (!exists(list)) {\n classRepository.propertyUpdateHandlers.forEach(function (handler) {\n try {\n handler(type, bean, propertyName, [], undefined);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n }\n\n block(bean, propertyName) {\n if (exists(this.blocked)) {\n throw new Error('Trying to create a block while another block exists');\n }\n this.blocked = {\n bean: bean,\n propertyName: propertyName\n };\n }\n\n isBlocked(bean, propertyName) {\n return exists(this.blocked) && this.blocked.bean === bean && this.blocked.propertyName === propertyName;\n }\n\n unblock() {\n this.blocked = null;\n }\n\n notifyBeanChange(bean, propertyName, newValue) {\n checkMethod('ClassRepository.notifyBeanChange(bean, propertyName, newValue)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n\n let modelId = this.beanToDolphin.get(bean);\n if (exists(modelId)) {\n let model = this.dolphin.findPresentationModelById(modelId);\n if (exists(model)) {\n let classInfo = this.classes.get(model.presentationModelType);\n let type = classInfo[propertyName];\n let attribute = model.findAttributeByPropertyName(propertyName);\n if (exists(type) && exists(attribute)) {\n let oldValue = attribute.getValue();\n attribute.setValue(ClassRepository.toDolphin(this, type, newValue));\n return ClassRepository.fromDolphin(this, type, oldValue);\n }\n }\n }\n }\n\n notifyArrayChange(bean, propertyName, index, count, removedElements) {\n checkMethod('ClassRepository.notifyArrayChange(bean, propertyName, index, count, removedElements)');\n checkParam(bean, 'bean');\n checkParam(propertyName, 'propertyName');\n checkParam(index, 'index');\n checkParam(count, 'count');\n checkParam(removedElements, 'removedElements');\n\n if (this.isBlocked(bean, propertyName)) {\n return;\n }\n let modelId = this.beanToDolphin.get(bean);\n let array = bean[propertyName];\n if (exists(modelId) && exists(array)) {\n let removedElementsCount = Array.isArray(removedElements) ? removedElements.length : 0;\n this.sendListSplice(this, modelId, propertyName, index, index + removedElementsCount, array.slice(index, index + count));\n }\n }\n\n onBeanAdded(handler) {\n checkMethod('ClassRepository.onBeanAdded(handler)');\n checkParam(handler, 'handler');\n this.beanAddedHandlers.push(handler);\n }\n\n onBeanRemoved(handler) {\n checkMethod('ClassRepository.onBeanRemoved(handler)');\n checkParam(handler, 'handler');\n this.beanRemovedHandlers.push(handler);\n }\n\n onBeanUpdate(handler) {\n checkMethod('ClassRepository.onBeanUpdate(handler)');\n checkParam(handler, 'handler');\n this.propertyUpdateHandlers.push(handler);\n }\n\n onArrayUpdate(handler) {\n checkMethod('ClassRepository.onArrayUpdate(handler)');\n checkParam(handler, 'handler');\n this.arrayUpdateHandlers.push(handler);\n }\n\n registerClass(model) {\n checkMethod('ClassRepository.registerClass(model)');\n checkParam(model, 'model');\n\n if (this.classes.has(model.id)) {\n return;\n }\n\n let classInfo = {};\n model.attributes.filter(function (attribute) {\n return attribute.propertyName.search(/^@/) < 0;\n }).forEach(function (attribute) {\n classInfo[attribute.propertyName] = attribute.value;\n });\n this.classes.set(model.id, classInfo);\n }\n\n unregisterClass(model) {\n checkMethod('ClassRepository.unregisterClass(model)');\n checkParam(model, 'model');\n this.classes['delete'](model.id);\n }\n\n load(model) {\n checkMethod('ClassRepository.load(model)');\n checkParam(model, 'model');\n\n let self = this;\n let classInfo = this.classes.get(model.presentationModelType);\n let bean = {};\n model.attributes.filter(function (attribute) {\n return (attribute.propertyName.search(/^@/) < 0);\n }).forEach(function (attribute) {\n bean[attribute.propertyName] = null;\n attribute.onValueChange(function (event) {\n if (event.oldValue !== event.newValue) {\n let oldValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.oldValue);\n let newValue = ClassRepository.fromDolphin(self, classInfo[attribute.propertyName], event.newValue);\n self.propertyUpdateHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean, attribute.propertyName, newValue, oldValue);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanUpdate-handler', e);\n }\n });\n }\n });\n });\n this.beanFromDolphin.set(model.id, bean);\n this.beanToDolphin.set(bean, model.id);\n this.classInfos.set(model.id, classInfo);\n this.beanAddedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanAdded-handler', e);\n }\n });\n return bean;\n }\n\n unload(model) {\n checkMethod('ClassRepository.unload(model)');\n checkParam(model, 'model');\n\n let bean = this.beanFromDolphin.get(model.id);\n this.beanFromDolphin['delete'](model.id);\n this.beanToDolphin['delete'](bean);\n this.classInfos['delete'](model.id);\n if (exists(bean)) {\n this.beanRemovedHandlers.forEach((handler) => {\n try {\n handler(model.presentationModelType, bean);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onBeanRemoved-handler', e);\n }\n });\n }\n return bean;\n }\n\n spliceListEntry(model) {\n checkMethod('ClassRepository.spliceListEntry(model)');\n checkParam(model, 'model');\n\n let source = model.findAttributeByPropertyName('source');\n let attribute = model.findAttributeByPropertyName('attribute');\n let from = model.findAttributeByPropertyName('from');\n let to = model.findAttributeByPropertyName('to');\n let count = model.findAttributeByPropertyName('count');\n\n if (exists(source) && exists(attribute) && exists(from) && exists(to) && exists(count)) {\n let classInfo = this.classInfos.get(source.value);\n let bean = this.beanFromDolphin.get(source.value);\n if (exists(bean) && exists(classInfo)) {\n let type = model.presentationModelType;\n //var entry = fromDolphin(this, classInfo[attribute.value], element.value);\n this.validateList(this, type, bean, attribute.value);\n let newElements = [],\n element = null;\n for (let i = 0; i < count.value; i++) {\n element = model.findAttributeByPropertyName(i.toString());\n if (!exists(element)) {\n throw new Error(\"Invalid list modification update received\");\n }\n newElements.push(ClassRepository.fromDolphin(this, classInfo[attribute.value], element.value));\n }\n try {\n this.block(bean, attribute.value);\n this.arrayUpdateHandlers.forEach((handler) => {\n try {\n handler(type, bean, attribute.value, from.value, to.value - from.value, newElements);\n } catch (e) {\n ClassRepository.LOGGER.error('An exception occurred while calling an onArrayUpdate-handler', e);\n }\n });\n } finally {\n this.unblock();\n }\n } else {\n throw new Error(\"Invalid list modification update received. Source bean unknown.\");\n }\n } else {\n throw new Error(\"Invalid list modification update received\");\n }\n }\n\n mapParamToDolphin(param) {\n if (!exists(param)) {\n return param;\n }\n let type = typeof param;\n if (type === 'object') {\n if (param instanceof Date) {\n return param.toISOString();\n } else {\n let value = this.beanToDolphin.get(param);\n if (exists(value)) {\n return value;\n }\n throw new TypeError(\"Only managed remoting beans can be used\");\n }\n }\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return param;\n }\n throw new TypeError(\"Only managed remoting beans and primitive types can be used\");\n }\n\n mapDolphinToBean(value) {\n return ClassRepository.fromDolphin(this, consts.REMOTING_BEAN, value);\n }\n}\n\nClassRepository.fixType = function(type, value) {\n switch (type) {\n case consts.BYTE:\n case consts.SHORT:\n case consts.INT:\n case consts.LONG:\n return parseInt(value);\n case consts.FLOAT:\n case consts.DOUBLE:\n return parseFloat(value);\n case consts.BOOLEAN:\n return 'true' === String(value).toLowerCase();\n case consts.STRING:\n case consts.ENUM:\n return String(value);\n default:\n return value;\n }\n};\n\nClassRepository.fromDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanFromDolphin.get(String(value));\n case consts.DATE:\n return new Date(String(value));\n case consts.CALENDAR:\n return new Date(String(value));\n case consts.LOCAL_DATE_FIELD_TYPE:\n return new Date(String(value));\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return new Date(String(value));\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.toDolphin = function(classRepository, type, value) {\n if (!exists(value)) {\n return null;\n }\n switch (type) {\n case consts.REMOTING_BEAN:\n return classRepository.beanToDolphin.get(value);\n case consts.DATE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.CALENDAR:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.LOCAL_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n case consts.ZONED_DATE_TIME_FIELD_TYPE:\n return value instanceof Date ? value.toISOString() : value;\n default:\n return ClassRepository.fixType(type, value);\n }\n};\n\nClassRepository.LOGGER = LoggerFactory.getLogger('ClassRepository');\n\nexport default ClassRepository;\n","import {checkMethod, checkParam} from '../utils';\nimport { LoggerFactory } from '../logging';\n\nexport default class ControllerProxy {\n\n constructor(controllerId, model, manager){\n checkMethod('ControllerProxy(controllerId, model, manager)');\n checkParam(controllerId, 'controllerId');\n checkParam(model, 'model');\n checkParam(manager, 'manager');\n\n this.controllerId = controllerId;\n this.model = model;\n this.manager = manager;\n this.destroyed = false;\n this.onDestroyedHandlers = new Set();\n }\n\n getModel() {\n return this.model;\n }\n\n getId() {\n return this.controllerId;\n }\n\n invoke(name, params){\n checkMethod('ControllerProxy.invoke(name, params)');\n checkParam(name, 'name');\n\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n return this.manager.invokeAction(this.controllerId, name, params);\n }\n\n createController(name) {\n return this.manager._createController(name, this.getId());\n }\n\n destroy(){\n if (this.destroyed) {\n throw new Error('The controller was already destroyed');\n }\n this.destroyed = true;\n this.onDestroyedHandlers.forEach((handler) => {\n try {\n handler(this);\n } catch(e) {\n ControllerProxy.LOGGER.error('An exception occurred while calling an onDestroyed-handler', e);\n }\n }, this);\n return this.manager.destroyController(this);\n }\n\n onDestroyed(handler){\n checkMethod('ControllerProxy.onDestroyed(handler)');\n checkParam(handler, 'handler');\n\n let self = this;\n this.onDestroyedHandlers.add(handler);\n return {\n unsubscribe: () => {\n self.onDestroyedHandlers.delete(handler);\n }\n };\n }\n}\n\nControllerProxy.LOGGER = LoggerFactory.getLogger('ControllerProxy');\n","import {exists, checkMethod, checkParam} from '../utils';\n\nimport ControllerProxy from './controllerProxy.js';\n\nimport CommandFactory from './commands/commandFactory.js';\n\n\nimport { SOURCE_SYSTEM } from './connector.js';\nimport { SOURCE_SYSTEM_CLIENT } from './connector.js';\nimport { ACTION_CALL_BEAN } from './connector.js';\n\nconst CONTROLLER_ID = 'controllerId';\nconst MODEL = 'model';\nconst ERROR_CODE = 'errorCode';\n\nexport default class ControllerManager {\n\n constructor(dolphin, classRepository, connector) {\n checkMethod('ControllerManager(dolphin, classRepository, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(classRepository, 'classRepository');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.classRepository = classRepository;\n this.connector = connector;\n this.controllers = new Set();\n }\n\n createController(name) {\n return this._createController(name, null);\n }\n\n _createController(name, parentControllerId) {\n checkMethod('ControllerManager.createController(name)');\n checkParam(name, 'name');\n\n let self = this;\n\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n const MSG_ERROR_CREATING_CONTROLLER = 'Error creating controller: ';\n\n self.connector.invoke(CommandFactory.createCreateControllerCommand(name, parentControllerId)).then(() => {\n let controllerId;\n\n self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).getValue(),\n 'Could not get an controllerID from highlanderPM.'\n ).then((ctrlId) => {\n controllerId = ctrlId;\n return self.getValueWithRetry(\n () => highlanderPM.findAttributeByPropertyName(MODEL).getValue(),\n 'Could not get an modelID from highlanderPM.'\n );\n })\n .then((modelId) => {\n return self.getValueWithRetry(\n () => self.classRepository.mapDolphinToBean(modelId),\n 'Could not get an model from classRepository for ID: ' + modelId\n );\n })\n .then((model) => {\n try {\n const controller = new ControllerProxy(controllerId, model, self);\n self.controllers.add(controller);\n resolve(controller);\n } catch (e) {\n reject(MSG_ERROR_CREATING_CONTROLLER + e);\n }\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n }).catch((error) => {\n reject(MSG_ERROR_CREATING_CONTROLLER + error);\n });\n });\n });\n }\n\n\n getValueWithRetry(getValueCall, errorMessage) {\n return new Promise((resolve, reject) => {\n const RETRIES = 1000;\n const RETRY_TIME = 5;\n let i = 0;\n const intervalID = setInterval(() => {\n let value = getValueCall();\n \n if (!(typeof value !== 'undefined' && value !== null)) {\n i++;\n if (i >= RETRIES) {\n clearInterval(intervalID);\n reject(errorMessage + \" after \" + i + \" retries.\");\n }\n } else {\n clearInterval(intervalID);\n resolve(value);\n }\n }, RETRY_TIME);\n });\n }\n\n invokeAction(controllerId, actionName, params) {\n checkMethod('ControllerManager.invokeAction(controllerId, actionName, params)');\n checkParam(controllerId, 'controllerId');\n checkParam(actionName, 'actionName');\n\n let self = this;\n return new Promise((resolve, reject) => {\n\n let attributes = [\n self.dolphin.attribute(SOURCE_SYSTEM, null, SOURCE_SYSTEM_CLIENT),\n self.dolphin.attribute(ERROR_CODE)\n ];\n\n let pm = self.dolphin.presentationModel.apply(self.dolphin, [null, ACTION_CALL_BEAN].concat(attributes));\n\n let actionParams = [];\n if (exists(params)) {\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n let value = self.classRepository.mapParamToDolphin(params[param]);\n actionParams.push({\n name: param,\n value: value\n });\n }\n }\n }\n\n self.connector.invoke(CommandFactory.createCallActionCommand(controllerId, actionName, actionParams)).then(() => {\n let isError = pm.findAttributeByPropertyName(ERROR_CODE).getValue();\n if (isError) {\n reject(new Error(\"Server side ControllerAction \" + actionName + \" caused an error. Please see server log for details.\"));\n } else {\n resolve();\n }\n self.dolphin.deletePresentationModel(pm);\n }).catch(reject);\n });\n }\n\n destroyController(controller) {\n checkMethod('ControllerManager.destroyController(controller)');\n checkParam(controller, 'controller');\n\n let self = this;\n return new Promise((resolve, reject) => {\n self.connector.getHighlanderPM().then((highlanderPM) => {\n self.controllers.delete(controller);\n highlanderPM.findAttributeByPropertyName(CONTROLLER_ID).setValue(controller.controllerId);\n self.connector.invoke(CommandFactory.createDestroyControllerCommand(controller.getId())).then(resolve).catch(reject);\n });\n });\n }\n\n destroy() {\n let controllersCopy = this.controllers;\n let promises = [];\n this.controllers = new Set();\n controllersCopy.forEach((controller) => {\n try {\n promises.push(controller.destroy());\n } catch (e) {\n // ignore\n }\n });\n return Promise.all(promises);\n }\n}\n","import Emitter from 'emitter-component';\nimport CommandFactory from './commands/commandFactory';\nimport {exists, checkMethod, checkParam} from '../utils';\n\nexport default class ClientContext{\n\n constructor(dolphin, beanManager, controllerManager, connector){\n checkMethod('ClientContext(dolphin, beanManager, controllerManager, connector)');\n checkParam(dolphin, 'dolphin');\n checkParam(beanManager, 'beanManager');\n checkParam(controllerManager, 'controllerManager');\n checkParam(connector, 'connector');\n\n this.dolphin = dolphin;\n this.beanManager = beanManager;\n this._controllerManager = controllerManager;\n this._connector = connector;\n this.connectionPromise = null;\n this.isConnected = false;\n }\n\n connect(){\n let self = this;\n this.connectionPromise = new Promise((resolve, reject) => {\n self._connector.connect();\n self._connector.invoke(CommandFactory.createCreateContextCommand()).then(() => {\n self.isConnected = true;\n resolve();\n }).catch(reject);\n });\n return this.connectionPromise;\n }\n\n onConnect(){\n if(exists(this.connectionPromise)){\n if(!this.isConnected){\n return this.connectionPromise;\n }else{\n return new Promise((resolve) => {\n resolve();\n });\n }\n }else{\n return this.connect();\n }\n }\n\n createController(name){\n checkMethod('ClientContext.createController(name)');\n checkParam(name, 'name');\n\n return this._controllerManager.createController(name);\n }\n\n disconnect(){\n let self = this;\n this.dolphin.stopPushListening();\n return new Promise((resolve) => {\n self._controllerManager.destroy().then(() => {\n self._connector.invoke(CommandFactory.createDestroyContextCommand());\n self.dolphin = null;\n self.beanManager = null;\n self._controllerManager = null;\n self._connector = null;\n resolve();\n });\n });\n }\n}\n\nEmitter(ClientContext.prototype);","export class DolphinRemotingError extends Error {\n constructor(message = 'Remoting Error', detail) {\n super(message);\n this.detail = detail || undefined;\n }\n}\n\nexport class DolphinSessionError extends Error {\n constructor(message = 'Session Error') {\n super(message);\n }\n}\n\nexport class HttpResponseError extends Error {\n constructor(message = 'Http Response Error') {\n super(message);\n }\n}\n\nexport class HttpNetworkError extends Error {\n constructor(message = 'Http Network Error') {\n super(message);\n }\n}","import { LoggerFactory } from '../logging';\n\nexport default class RemotingErrorHandler {\n\n onError(error) {\n RemotingErrorHandler.LOGGER.error(error);\n }\n\n}\n\nRemotingErrorHandler.LOGGER = LoggerFactory.getLogger('RemotingErrorHandler');","import Emitter from 'emitter-component';\n\n\nimport { exists } from '../utils';\nimport { DolphinRemotingError, DolphinSessionError } from './errors';\nimport Codec from './commands/codec';\nimport RemotingErrorHandler from './remotingErrorHandler';\nimport { LoggerFactory, LogLevel } from '../logging';\nimport {VALUE_CHANGED_COMMAND_ID, START_LONG_POLL_COMMAND_ID} from './commands/commandConstants';\n\nconst DOLPHIN_SESSION_TIMEOUT = 408;\n\nexport default class PlatformHttpTransmitter {\n\n constructor(url, config, client) {\n this.url = url;\n this.config = config;\n this.client = client;\n this.headersInfo = exists(config) ? config.headersInfo : null;\n this.failed_attempt = 0;\n\n const connectionConfig = this._connectionConfig();\n this.maxRetry = exists(connectionConfig) && exists(connectionConfig.maxRetry)?connectionConfig.maxRetry: 3;\n this.timeout = exists(connectionConfig) && exists(connectionConfig.timeout)?connectionConfig.timeout: 5000;\n }\n\n _connectionConfig() {\n return exists(this.config) ? this.config.connection : null;\n }\n\n _handleError(reject, error) {\n const connectionConfig = this._connectionConfig();\n let errorHandlers = exists(connectionConfig) && exists(connectionConfig.errorHandlers)?connectionConfig.errorHandlers: [new RemotingErrorHandler()];\n errorHandlers.forEach(function(handler) {\n handler.onError(error);\n });\n reject(error);\n }\n\n _send(commands) {\n const self = this;\n return new Promise((resolve, reject) => {\n if (this.client) {\n const encodedCommands = Codec.encode(commands);\n\n if (PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.DEBUG) && !PlatformHttpTransmitter.LOGGER.isLogLevelUseable(LogLevel.TRACE)) {\n for (let i = 0; i < commands.length; i++) {\n let command = commands[i];\n if (command.id === VALUE_CHANGED_COMMAND_ID) {\n PlatformHttpTransmitter.LOGGER.debug('send', command, encodedCommands);\n }\n }\n }\n\n const useWorker = commands.length === 1 && commands[0].id === START_LONG_POLL_COMMAND_ID;\n const httpClient = this.client.getService('HttpClient');\n if (httpClient && self.failed_attempt <= self.maxRetry) {\n httpClient.post(self.url)\n .withHeadersInfo(this.headersInfo)\n .withContent(encodedCommands)\n .readString()\n .execute(useWorker)\n .then((response) => {\n resolve(response.content);\n })\n .catch((exception) => {\n const status = exception.getStatus();\n self.failed_attempt += 1;\n if (status === DOLPHIN_SESSION_TIMEOUT) {\n self._handleError(reject, new DolphinSessionError('PlatformHttpTransmitter: Session Timeout'));\n } else {\n self._handleError(reject, exception);\n }\n });\n } else {\n //TODO handle failure\n PlatformHttpTransmitter.LOGGER.error('Cannot reach the sever');\n }\n } else {\n PlatformHttpTransmitter.LOGGER.error('No Rico client found!');\n }\n });\n }\n\n transmit(commands, onDone, onError) {\n this._send(commands)\n .then(responseText => {\n if (responseText.trim().length > 0) {\n try {\n const responseCommands = Codec.decode(responseText);\n onDone(responseCommands);\n } catch (err) {\n const errorMsg = 'PlatformHttpTransmitter: Parse error: (Incorrect response = ' + responseText + ')';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n } else {\n const errorMsg = 'PlatformHttpTransmitter: Empty response';\n this.emit('error', new DolphinRemotingError(errorMsg));\n onError(errorMsg);\n }\n })\n .catch(error => {\n this.emit('error', error);\n onError(error);\n });\n }\n\n signal(command) {\n this._send([command])\n .catch(error => this.emit('error', error));\n }\n}\n\nPlatformHttpTransmitter.LOGGER = LoggerFactory.getLogger('PlatformHttpTransmitter');\n\nEmitter(PlatformHttpTransmitter.prototype);\n","import { dolphinBuilder } from './dolphinBuilder';\nimport { checkMethod, checkParam } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport Connector from './connector';\nimport BeanManager from './beanManager';\nimport ClassRepository from './classRepository';\nimport ControllerManager from './controllerManager';\nimport ClientContext from './clientContext';\nimport PlatformHttpTransmitter from './platformHttpTransmitter';\n\nclass ClientContextFactory {\n\n constructor(client) {\n this.client = client;\n if (!client && ClientContextFactory.legecyClientSupport) {\n ClientContextFactory.LOGGER.warn('Legecy support used.');\n this.client = ClientContextFactory.legecyClientSupport;\n }\n }\n\n create(url, config){\n checkMethod('connect(url, config)');\n checkParam(url, 'url');\n ClientContextFactory.LOGGER.debug('Creating client context', url, config);\n\n const transmitter = new PlatformHttpTransmitter(url, config, this.client);\n transmitter.on('error', function (error) {\n clientContext.emit('error', error);\n });\n\n const dolphin = dolphinBuilder\n .withTransmitter(transmitter)\n .withSlackMS(4)\n .withMaxBatchSize(Number.MAX_SAFE_INTEGER)\n .build();\n\n\n const classRepository = new ClassRepository(dolphin);\n const beanManager = new BeanManager(classRepository);\n const connector = new Connector(url, dolphin, classRepository, config);\n const controllerManager = new ControllerManager(dolphin, classRepository, connector);\n\n const clientContext = new ClientContext(dolphin, beanManager, controllerManager, connector);\n\n ClientContextFactory.LOGGER.debug('clientContext created with', clientContext);\n\n return clientContext;\n }\n}\n\nClientContextFactory.LOGGER = LoggerFactory.getLogger('ClientContextFactory');\nClientContextFactory.legecyClientSupport = false;\n\nlet createClientContext = (client) => new ClientContextFactory(client).create;\n\nexport { createClientContext, ClientContextFactory };","import { checkMethod, checkParam, exists } from '../utils';\nimport { HTTP, RESPONSE_TYPE } from '../platform/constants'\n\nclass KeycloakConnection {\n\n constructor() {\n }\n\n createDirectConnection(authEndpoint, realmName) {\n checkMethod('createDirectConnection');\n checkParam(authEndpoint, 'authEndpoint');\n checkParam(realmName, 'realmName');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint + '/auth/realms/' + realmName + '/protocol/openid-connect/token', true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.APPLICATION_X_WWW_FORM_URLENCODED);\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n createServerProxyConnection(authEndpoint, realmName) {\n checkMethod('createServerProxyConnection');\n checkParam(authEndpoint, 'authEndpoint');\n\n const httpRequest = new XMLHttpRequest();\n httpRequest.open(HTTP.METHOD.POST, authEndpoint, true);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.CONTENT_TYPE, HTTP.CONTENT_TYPE.TEXT_PLAIN);\n if (exists(realmName)) {\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, realmName);\n }\n httpRequest.responseType = RESPONSE_TYPE.JSON;\n\n return httpRequest;\n }\n\n}\n\nexport { KeycloakConnection }","import { HTTP } from '../platform/constants'\nimport { exists } from '../utils';\nimport { LoggerFactory } from '../logging';\nimport { KeycloakConnection } from './keycloakConnection';\n\nclass KeycloakFunctions {\n\n constructor() {\n this.connection = new KeycloakConnection();\n }\n\n createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password) {\n let connection;\n let content;\n\n const encodedUser = encodeURIComponent(user);\n const encodedPassword = encodeURIComponent(password);\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint,realmName);\n content = 'client_id=' + encodedAppName + '&username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'username=' + encodedUser + '&password=' + encodedPassword + '&grant_type=password';\n }\n\n return { connection, content };\n }\n\n createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken) {\n let connection;\n let content;\n\n const encodedAppName = encodeURIComponent(appName);\n\n if (directConnection) {\n if (exists(appName)) {\n connection = this.connection.createDirectConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken + '&client_id=' + encodedAppName;\n } else {\n throw Error('No app name set!');\n }\n } else {\n connection = this.connection.createServerProxyConnection(authEndpoint, realmName);\n content = 'grant_type=refresh_token&refresh_token=' + refreshToken;\n }\n\n return { connection, content };\n }\n\n receiveToken(httpRequest, body) {\n return new Promise((resolve, reject) => {\n httpRequest.ontimeout = function (error) {\n reject(error);\n }\n\n httpRequest.onerror = function (error) {\n reject(error);\n }\n\n httpRequest.onreadystatechange = function () {\n if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status === HTTP.STATUS.OK) {\n resolve(this.response);\n } else if (this.readyState === HTTP.XMLHTTPREQUEST_READYSTATE.DONE && this.status !== HTTP.STATUS.OK) {\n reject(this.status);\n }\n }\n \n KeycloakFunctions.LOGGER.trace('Receiving token');\n httpRequest.send(body);\n });\n }\n\n refreshToken(directConnection, authEndpoint, realmName, appName, refreshToken) {\n const { connection, content } = this.createRefreshConnection(directConnection, authEndpoint, realmName, appName, refreshToken);\n return this.receiveToken(connection, content);\n }\n \n}\n\nKeycloakFunctions.LOGGER = LoggerFactory.getLogger('KeycloakFunctions');\n\nexport { KeycloakFunctions }","import { checkMethod, checkParam, exists } from '../utils'\nimport { LoggerFactory } from '../logging'\nimport { HTTP } from '../platform/constants'\n\nclass SecurityHttpClientInterceptor {\n\n constructor() {\n this.token = null;\n this.appName = null;\n this.realm = null;\n }\n\n setToken(token) {\n this.token = token;\n }\n\n setAppName(appName) {\n this.appName = appName;\n }\n\n setRealm(realm) {\n this.realm = realm;\n }\n\n handleRequest(httpRequest) {\n checkMethod('handleRequest');\n checkParam(httpRequest, 'httpRequest');\n\n if (exists(this.token)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using token', this.token);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.AUTHORIZATION, 'Bearer ' + this.token);\n }\n\n if (exists(this.appName)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using appName', this.appName);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_APPLICATION, this.appName);\n }\n\n if (exists(this.realm)) {\n SecurityHttpClientInterceptor.LOGGER.trace('Using realm', this.realm);\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_REALM, this.realm);\n }\n\n httpRequest.setRequestHeader(HTTP.HEADER_NAME.X_PLATFORM_SECURITY_BEARER_ONLY, 'true');\n \n }\n}\n\nSecurityHttpClientInterceptor.LOGGER = LoggerFactory.getLogger('SecurityHttpClientInterceptor');\n\nexport { SecurityHttpClientInterceptor };","import { LoggerFactory } from '../logging';\nimport { exists, checkMethod, checkParam } from '../utils';\nimport { KeycloakFunctions } from './keycloakFunctions';\nimport { SecurityHttpClientInterceptor } from './securityHttpClientInterceptor';\nimport { SECURITY } from '../platform/constants'\n\nclass KeycloakSecurity {\n\n constructor() {\n this.functions = new KeycloakFunctions();\n this.interceptor = new SecurityHttpClientInterceptor();\n this.intervall = null;\n\n this.configuration = {\n directConnection: false,\n authEndpoint: SECURITY.AUTH_ENDPOINT,\n appName: null,\n realmName: null\n }\n \n }\n\n login(user, password, configuration) {\n if (this.isAuthorized()) {\n throw new Error('Already logged in!');\n }\n\n if (configuration) {\n this.configuration.directConnection = configuration.directConnection || this.configuration.directConnection;\n this.configuration.authEndpoint = configuration.authEndpoint || this.configuration.authEndpoint;\n this.configuration.appName = configuration.appName || this.configuration.appName;\n this.configuration.realmName = configuration.realmName || this.configuration.realmName;\n }\n\n const { directConnection, authEndpoint, appName, realmName } = this.configuration;\n\n const { connection, content } = this.functions.createLoginConnection(directConnection, authEndpoint, realmName, appName, user, password);\n const self = this;\n return new Promise((resolve, reject) => {\n KeycloakSecurity.LOGGER.debug('Receiving access token');\n this.functions.receiveToken(connection, content)\n .then((result) => {\n if (result && result.access_token) {\n self.token = result;\n this.interceptor.setToken(result.access_token);\n this.interceptor.setRealm(realmName);\n this.interceptor.setAppName(appName);\n const expires = result.expires_in || KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN;\n const sleepTime = Math.max(KeycloakSecurity.MIN_TOKEN_EXPIRES_RUN, expires - KeycloakSecurity.TOKEN_EXPIRES_DELTA);\n self.intervall = setInterval(() => {\n KeycloakSecurity.LOGGER.debug('Refreshing access token');\n self.functions.refreshToken(directConnection, authEndpoint, realmName, appName, result.refresh_token).then((result) => {\n self.token = result;\n self.interceptor.setToken(result.access_token);\n });\n }, sleepTime);\n resolve(result.access_token);\n } else {\n reject('No access token found');\n }\n })\n .catch((error) => reject(error));\n });\n }\n\n logout() {\n const self = this;\n KeycloakSecurity.LOGGER.debug('Logout');\n return new Promise((resolve) => {\n delete self.token;\n self.interceptor.setToken(null);\n if (exists(this.intervall)) {\n clearInterval(this.intervall);\n this.intervall = null;\n }\n resolve();\n });\n }\n\n isAuthorized() {\n return exists(this.token);\n }\n\n initServiceProvider(client) {\n checkMethod('initServiceProvider');\n checkParam(client, 'client');\n client.getService('HttpClientInterceptor').addRequestInterceptor(this.interceptor);\n }\n}\n\nKeycloakSecurity.TOKEN_EXPIRES_DELTA = 10000;\nKeycloakSecurity.MIN_TOKEN_EXPIRES_RUN = 30000;\n\nKeycloakSecurity.LOGGER = LoggerFactory.getLogger('KeycloakSecurity');\n\nexport { KeycloakSecurity };\n","import { HttpClient } from './httpClient';\nimport { HttpClientInterceptor } from './httpClientInterceptor';\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const httpClientProvider = new ServiceProvider(HttpClient, 'HttpClient', client);\n const httpClientInterceptorProvider = new ServiceProvider(HttpClientInterceptor, 'HttpClientInterceptor', client);\n \n client.registerServiceProvider(httpClientProvider);\n client.registerServiceProvider(httpClientInterceptorProvider);\n }\n}\n\nexport { register }","import { LoggerFactory, LogLevel } from './logging';\nimport { Client } from './platform/client';\nimport { ServiceProvider } from './platform/serviceProvider';\nimport { HTTP } from './platform/constants';\nimport { register as registerHttp } from './http';\nimport { register as registerClientScope } from './platform/clientScope';\nimport { register as registerRemotingScope } from './remoting'\nimport { register as registerSecurity } from './security'\n\nregisterHttp(Client);\nregisterClientScope(Client);\nregisterRemotingScope(Client);\nregisterSecurity(Client);\nClient.init();\n\nconst getService = Client.getService;\nconst hasService = Client.hasService;\nconst registerServiceProvider = Client.registerServiceProvider;\n\n/* eslint-disable */\nClient.LOGGER.info('Rico Version:' , RICO_VERSION);\n/* eslint-enable */\n\nexport { LoggerFactory, LogLevel, getService, hasService, registerServiceProvider, HTTP }\n\nif (window.Worker && window.Blob && window.URL && URL.createObjectURL) {\n Client.LOGGER.debug('Creating Worker');\n class HttpWorker {\n constructor() {\n /* eslint-disable */\n this.blob = new Blob([RICO_WORKER], {type: \"application/javascript\"});\n /* eslint-enable */\n }\n\n createWorker() {\n return new Worker(URL.createObjectURL(this.blob));\n }\n }\n\n const httpWorkerProvider = new ServiceProvider(HttpWorker, 'HttpWorker');\n Client.registerServiceProvider(httpWorkerProvider);\n}\n\n/* \n * Provide dependencies as global dolphin object for backward compatibility.\n * The code below this comment is deprecated and should be removed in a feature version.\n */\nimport { createClientContext, ClientContextFactory } from './remoting/clientContextFactory'\n\nconst LOGGER = LoggerFactory.getLogger('Deprecated:');\nlet showWarning = true;\nfunction warn() {\n if (showWarning) {\n LOGGER.warn('Please do not use \"dolphin\" anymore, it may be removed in the next version! Use the new API instead!');\n showWarning = false;\n }\n}\n\nif (window) {\n window.dolphin = { // TODO remove in next major release\n get ClientContextFactory() {\n warn();\n ClientContextFactory.legecyClientSupport = Client;\n return ClientContextFactory;\n },\n get createClientContext() {\n warn();\n return createClientContext(Client);\n },\n get LoggerFactory() {\n warn();\n return LoggerFactory;\n },\n get LogLevel() {\n warn();\n return LogLevel;\n }\n };\n}","import { ClientContextFactory } from './clientContextFactory'\nimport { ServiceProvider } from '../platform/serviceProvider'\nimport { exists } from '../utils'\n\nfunction register(client) {\n if (exists(client)) {\n const clientContextFactoryProvider = new ServiceProvider(ClientContextFactory, 'ClientContextFactory', client);\n\n client.registerServiceProvider(clientContextFactoryProvider);\n }\n}\n\nexport { register };","\nimport { ServiceProvider } from '../platform/serviceProvider';\nimport { exists } from '../utils'\nimport { KeycloakSecurity } from './keycloakSecurity';\n\nfunction register(client) {\n if (exists(client)) {\n const securityProvider = new ServiceProvider(KeycloakSecurity, 'Security', client);\n client.registerServiceProvider(securityProvider);\n }\n}\n\nexport { register }"],"sourceRoot":""} \ No newline at end of file