From 5a64620169f6d34b8ee75be20afbbba741bf8c67 Mon Sep 17 00:00:00 2001 From: Ryo Ota Date: Thu, 28 Jan 2021 23:07:29 +0900 Subject: [PATCH] Actions build/nwtgck dependabot/npm and yarn/netlify 6.1.4 (#420) * chore(deps): bump netlify from 4.6.0 to 6.1.4 Bumps [netlify](https://github.com/netlify/js-client) from 4.6.0 to 6.1.4. - [Release notes](https://github.com/netlify/js-client/releases) - [Changelog](https://github.com/netlify/js-client/blob/master/CHANGELOG.md) - [Commits](https://github.com/netlify/js-client/compare/v4.6.0...v6.1.4) Signed-off-by: dependabot-preview[bot] * build Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] --- dist/elf_cam_bg.wasm | Bin 0 -> 75646 bytes dist/index.js | 8727 +++++++++++++----------------------------- dist/thread.js | 6 +- package-lock.json | 213 +- package.json | 2 +- 5 files changed, 2663 insertions(+), 6285 deletions(-) create mode 100644 dist/elf_cam_bg.wasm diff --git a/dist/elf_cam_bg.wasm b/dist/elf_cam_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6d15df36568ea457d91c6234af33b1f51e422de9 GIT binary patch literal 75646 zcmeFa50qWSedl>^-TVG@zi#OX1T<|q?7Q6@OU>@tZq%g(ZUd~$U5 zkQ{PCto?j{RrkL4S}oMVz}a(lEz_^=y>+X8_51zm_pg3cH@WeSkEBVGq&K&3a65OV zJ8#H#+7B1W4JrTWS|uLk6e-vA!*7z@(6FK|>=|{ac=ruStbBJ_nQM19O}Iy0eeC+{ zKlZ_&x$UM8-+bHkx8Hi>hi<;*qqp94^S0}+KdbM-9ox74%xxdO{ zO4q;nEg$;e`b%%V^pYQ0|K<%h-*j^_a?-a}hPUq6e&dH`u7C5JH+=BMH^1dg>pytu zx^*|-bW`F^_1?|fwtaNl^_PC|gX=zY$&GJWf9cxwZ@T0yH@?Vw24x)YM?W}y^M|%y zf77;)-hTbIn}0gVPTJcUeaP5$^Y&Y|ee`2Vmi=Y=7inJ08~hup=Z!2)`E|7==}?l@ z8fi02^2F6#;)Yx!snzN(Uz#M1#O01B{Et5)NyFt?;_CH!2I1|0wVYR+8*S8@)NnaB zsn4Cvxnx)u8E>R+IB#ZYEpH{N>dM?aK&GF{qt^QX7nd~@>q=^*+-#otPYzL2JgPh0QX^40Xc-%F3!zwf2L zoPII=Uiypan?Ld&`Tbh@FCI$2nSMEa|F_d`rGJ?Ir}W+5OCRUKFY(`D{`-sculW0C z>A&Ugr}*!W(x3U1-Fh^A?azKX{V(bM^yd$zznkt!zf18g@BHobFVnjpPM=I?zL!3l z&ZQswR&yUUUuj3kzM&;q+eg_-mYFq=joQrM$N`J>im$E3yfOwW;(yqg3^K(`o+BX48J6{R`=ek+gNa8LvHm!Hd`Kb%2 zq{soPNT$;DSyCi^B>=5+Dz&Etb`n~o1KNG47P~pIk1)Db{LuQ!Fyt|Q=wvxRbkgRf z3AF;q0a(i4N~XK%MM=^bEwVSecIWLyc5%A4a|y3x{;_15N8S3yfUYXwu`z? zFTZ1Rg+UP06m~%Igrn1o(+x$t7^PBoq&-eUyEA&>cVBIKb(UzLY955!)vPY=57-BC zzb6!5qtX5NZKc%^C23$b3k{4xVT~Kox>j*s$7RNkeyy7H+2x~2;ry6T)4lB4 zQK0C&&XC((Ryb;O^Q%F8-dSdh0p>dm265R`@yYIGQ}@iy&fb34dipAs75NOWTsFlm z?oAcD4|HqSR5Z(r#&l6@!y5xghQXIbWYep#)P5pWPuy<-*M?~(Nb0YEo}Fn>$zOv92p}t(>G1fTKDA|ON?=6Ay zPbSmFnFTFgoW8AnxhDE*7r4*wvH1l5RCo5;o&Cmp#z&g}_tgxS{W$VRX*GXOn;6QxuE9Fz3%_m@`hnFe73!;MxT* z^$87FiW!vIV2nw{ahehu9eg(2D$Wd~vpFLfrU}=nMZh9Zf-gff`n!x3-Ij`5dIWa< zIz4oEPl-)$uh?`2S2yUYxNNp{prrnVP^D%lh9fEZ`t<4)41JO-lcuj1aUQI7E+{Fw zWz-%q**m1|RR=AP*F0}_mL3i0*i zjPdnk#n+V9fdZ^eZYNQ&b$B0Enn^@Mj5Ti62cP{=(M&*;HC$Dt-4n zjwdSj)CCFzw?p`1b20gHp` zWyN%H!CTX0q#>4?7<8DX0L@CBeexY zhM#kyn+EfkYp)kdqrQMgtND3aGgi`~q_oKhzXv^SVmBzCFkeN#3HOX+j;0dEFJW$p zKz*a~yVXy7mD+`eQ-KlXS@%Z*L|y08t(&(Y=1ZHSTia|`K?k;%wR|FBHQu?j<#tl* zsNn~FYupem0%N;qe$Z*#T8G2m9D3=T6F_Knx*%hxw~>x?WwJbE&2^VwJ(@6Ui{&%Y z%@gin*B!eCRhu4Uwv2U_`=r%LQGY1d9)XKZQyX?~O2$Ferm3}*R#<6*(z(<{5N$%! zY)Zs2Xv$4*E5*_BAlcw2nK$CyF+b)u6uR_=Ws6)V7-Y`LdW&9bS+ zySuL)_anYpymq|A<{JUN|KHu=DvFo%J#bRekzjfxw1F+Fc{yiR4MayKU(&7l)tAGF zHGlTyqTryq59|o22IR zD@SFsmA#+$(Y z13}ghAka-qb_$TqbelfEW)#7e6-^8~23pkCxfc-lMQfdVJ_j7t3nSold&l|4RinA# z#T~?&nriL}Lt=CX5f0&rT6bz4gD*c=Sj}Cn&SlI3xP8TMG2L#OqRPtq5zS6}h z17FR+FT*-(?v{b}{L*_VkE#4Z*(k5j?(2K~eVz^i`Q(!VUOvo9HtO)^E zX@F^GNf_L4HIy_=gK8)?12mK+8cI0}%Ar8kKn}4IU;q@23n&QdQyGRyry(8#5C&2V zk4t9(DU4*^EHhmuY;eI$wwp!i%Oc)bCce+6uvF!8`R6|?i)mIxD#<~kgc4il_E4hy zXoGU}$R1I7PpETPWiz9m&t*o*C%FXpN`8uDg2jwXjP>~dq`*5SDW#VN?E38ae0}yT zOd-8ndf<|d&*tmnV(`9M2d^DB(pX2q6Y)quXze}+lice5{Z74oY@r{N7 zKUa&*Fh=gK2zUR8Vr=0LDaIBKL+~WDaEQC-`rPBgOY-jMt_v?d)N2lJ1&w}gxQ}yP z3>9Zhci#}MzgTs^?X#!5tC`EfC_VkAelH5x)(8#L_{K(+pGzMDHiV1e&1qx!{Hk$X291Opc%hNFwC836#lL`gS9$}b(|2)n z2-d3Y()(Xtj7@ho6lWFZPIul?oL#J#?rhX^EUYzZIM}zC>!Klkc6Mhm0!O!7s7tfi zXMukTnm?c0)HlDZ!Q{7i##;||CX11S9Un&K^KG4R_^Xa^dlSF4;!OGIh4YunOzkf9 zL(+>&eU4tFjerhQdn4_4=n`vx9A9L>bR9?h1O@`i@ya>T7`v&wemuv{+rYTy*RYeu z#`FWdu&)d6_Ni29x>O=>2@l5%tkgtTtFx4LE}JqV5nYO<0H9mCOkkM^!{fzUv9^}# z$nJShXEZ&Ab+*M3XP4M@!skNWn#k1BZ z`gB5bt{(hE&CYuJcHMj)%;|TQuvx2k6KGy}tN3EoI)~7drexB|KD+Rt#A1+64B8yFhR0!R^amnn%FiY8u^@!zUZO;zTGuL~&Dq_z*=VyIwy`(L!j9jw14by9L7fQMEM3tqq~# z;}lKEfIW&Pe-eL$qKT-az?gng?>xn=w}f|&QbYo&pJynV5KR2D6irGd1@`Xu_0BPF zZ46yEHzxnUtzu|n^7r~hv_7X_?*DbX|KItQzaSz31p?E*Vb3$=1#cn7*K=I9?xSyiQ z_Qd}-MU(A`e~_Z=Sc&(<{}xx5_$*%S>s6bj*srh>|GYserDgd0vMOAh%w})3h7MT$ zdosmpt!dL)!LMgl;k!kt*ss|viV43|EJoZJM>UHwDmcT;zn?;K;kpS7xS37+ckRds+3E zqiWIJTy%XFZl0qX=Wi~~ClqJ3&eV<9Y%X3yB-w79ryDpwjp<NYU;{NZoSC1GsziXrCD#a>Kzs5*u7 zw~TL(A>#ytjn07t(OSC_wD2=SxqgkznhqXTw{8LCx`i8|pkT$$rDB2%ea#M^Z;9s zX1-u69|K$6w{2YjX3MroL*t}LTcdaFk`kI-@6`RQQ`H<1Lk~G|CEe`f^LmfZ>nG=P z09XlKOJ-M?Ec`2nh>y)EjLB+SH6){1#XUv+a!BorE$tQggTTu8w9=)C03FA~^>v#- zOtCP5Xj2m?6){0ZH3Paen*$)8yKq0fYX%JTsPzu$)`Vl}1YbWa-Q}Y7n5L9&TF*`S z+xUC|6ar|F0mCOe=cg(8TKCxwnSR^-!w`46lYq_rl)_NcBE|31*wrQ6V9ywzvvG#l zTmT?~GYA0eBVW5NQ5C4l1mr@^<$gs*4R9s~>Q?c4 zt(<*VGvx`KRx~@g43KNdu+*kRBm%`j0L>T#hsfJwQ4rUM^&lP?b^Xe2YJx#zV=_XX zbR=on6ifZiJ4}w+Shw3y;NK|M2qj@X3aQ9Lm2(RSm(;*Z?P1q3wGx|Gn)x73GOolP zMrc3waMIl*qA=Osg~y6Ia*$WHBMP~a6b!T#MW?$GBF10_fJ${kem4^^l*JmhSUU(z z8i7H)Rd6sj!Mk8H@#*3$h4;gPaY-JN1%ST;_~s_|&pSf+eYvEzIVGQV^A;NOro2BH4L~Wd25xoSh(&sk@*^ zmOoTvC=8e=>xpCppbP@zCqyzxT0kUAAOnTqcyV!z%iR;lSultgH5iC2U-CUXqsD?b zb~c-AM)m0^#daP6Ck9|qyJ}QHvpO{W8pa+B)7~*DwX$=|XamZ&w|Dc+qYeLca5jT-hHrnTjq&a@Dw=%<)7wQIx5Ff{RW9n(P*JnEYMbhg{2ST!3B$ zbqL+|u?4L$@0?$%SfB2jGBcuDsi2*T8<`cvLy=xWf&`01RYm{66Y!}yaLf|u9h6GN zt_;{-7lXGnu><31+AeMRqjYar^Pr;0ua?JcH%+*<{4)aYxSTc{tKIca>87FS2qkGp zJR0Vq30lLEE)MfY7y7N9Jg$pJ;}iW>)sE=mvG_#4Rkf#d@kD&0->TYCT|60|=(no& ztS+98PxM<=JEn_g;uHN=)t=YI_u~`&R@I*Ce=_?RPjp9vdqGdii`{ynJ9@IK|6-3W zbVpC_>%Z8m3*FI^`};5U=|Xq(>&Xl8iGHhUd-P-%e}oYIR@L_E;=cGqzg4w; zy0||+(Qj4lAzeHWpXj%$c1Rcd;}iW>)g(#6gnGEYjszKY>vcgA$?mD9bWUOs2Bd#l z6Od&M$xD-*#C4d(`J}8`?8~bQ?CPtu1j=kDG_QBmTP3^_zf=|oGVx9xGJEwfN>J)| z9WSOctgWC6d5#RZOa7}wi?z8B9LOa}lb%Qs=!(nh9W4-aT$Gm*-^ffl0ca`cC@JM9 z$UL#ZAYNOQe05ewk~p(Kyxu^v6BN8k3nF?SV>NBHY=i-+r-?_*14o7hSOF(pjZ#Jh z_F3u~L2jTBRwUvnhr~b0P`OmZfFM8FA`41I>4yM~>hq=&X!N@hi7vI_B|L=*gmgE- ze>Im#8Cm?3z`q+WL>>bp$MuYyP+H;9UC4sFkkP7n3|b|rJmb9QG2}1mF)-xCc?^xp zW9YLxb9oHufXC2?9)mbYu0p<`tKdKbR(GGPfVU<)LuN#Dlsl;*i2E{e>8j6FFw+iV zVIn~>)&n)6K^Q+W`D9PYTVO$y`!dOu9~P?Et9Y@hg2TX4zz^*(7#Pqhblwkx`J3jk zfM_TirX>@jv^*)9nkVcmE54>#0tPg1!!#*vh{B0KWEBWeSgKnIdNGUST4_$V*MLxE zAMxXuby|!y<00^pY~9jEAb@MZ;#%aSByf^kB~^os@Rb(|u%sW>qFD^E$fFAZ77)7< zC@RO(X%PBX8gtmnDHUW2XJRAZB3KZHBHGr1<5`Cu!STdsH#TC5L^cW`8~O|$Cyg!a zahkbW@AEk8^Ewg};kd}(G(us1i-{6(&{%;nB_c9e#U9G5F$fSgGNAO_Ub3I2*xUR# z*K-B>9RQ7*bw(FwPM;GJhnLDUGdP-(235}jfbPVfLA3E`p18*LGk%s>F}lh^G+)8$ z%2q607TJk|bv3>)AH@G=5=J%9g#oS(iJ&n60<9JdfXKxV8BY}e(VB8__9)58Dgz*t zLI9+Mv*%hdCoBKG~tK9f0Kf$$PMwPCWRFMeDeB-CjwNkX;1lLNz7^za=9Q5#= zX@+2kBbTXRI4kOy(xz|Bv=@qvTIJ*wF40!pwnPlvaIc*wU)o z_aaBMYzJSsc0J4^1!?!xu9Xvp1&|Zgr4EU{?XOxEDGRceJ;@ye!@fK&)Tj}XQCQfW zaFYsT?Lh>Du-#D>s4ekXk?KsXJ!N+%{=!3o5DlGf? z#Na;WB^{9Bhz2P$&1#CMWs~4iY3{1n%|l`a>imAzLM2rNsR8t0gp5m;KDtZVmLw?> zTy9y4iy?s#x%=XTxPRBHO$hiljxo>z4NUmq6tqB8I!r9dI|!#}70p0B1w)di>;Sd&T8qiVn$o%OSj)XvFids>tQ0jzCZoC4~8QJzeUxXQDS zOY~_LaxPY9$5=QwrU=tOym~);B%D1qgc9QS@u99Gn4#jMLmilQ!aXv?ax&o0bd(9e z#MV{<|J@-iM~NpV+}seVKD#J+VyL6MHD+#S8AGs??gG7Z6%Fz;1CDFOQV=guQnYie zfNS}|wr?=a%vjp5dHV1$hNK`XOT00VAr8&*kn8@e$(wz{)9vrr2yXS+)uZR}oCOn` zIk%AJLJWz<@gdeZwQsh|I;So@>$Lpsy?+y#qOU1uYm_v2Ii(q2Ha#20=?^Xh?N zO=orB_YMmuBc$4;z8-tOL0CdGaqHu~-jx+&jXgE5_YctfIK5AO;^bW-fQK!OK8P)P z?Ixx0EP}u?`L`gHi6F%8NPWZbH{q@mgaIk_2o_KOl?8M_78w**5=%l_&I9$m-m(Md zKEaGB{84_|_oOm#4fdlaK^M>pU457{A~7OZ2r)M-OC~gNWZ@=$_~8#}_(O5{*Ivx< z3D9y2w~OSW$RKi*AW_pduT&z0e|+BX->Gy$80Q`v{v1F3!=Gih&jQ?n;v1GcM?3@) z2JTVPRT>l9T&t7N9Wx**9n(%xc%bJDJf!;qtuMffWM`y)SsdyWs~IZ0CAf9F*(zx89b&h^WybYYNcCejGJ>d>Fa$Y$@B@@jmgIQvSCKC}%rA&m6<9uf)L!9LM z!X!6CZ=Qr*s5P39hyux)3bYm^Y&n6~_T+n*z;P^^z%)mqWSGFVHLiz~H5yAcva%eD zX6!<}$Faz_Kgn2_yksmZIb0L>X($*5W#bDhAal&XVgfJJ$%#W$7O@{SDonTu4G{>q zwVhGL0gi+LX1*wqAE>M{P3f<{Cu)h;Kis!#EZdm>6>eE z?u~<>|BIrunr@|ZTvY8S9T~YvN9H_I@uK9QVdCQScZbbXGRWj21$PgS#F4m@e=R{& z+nD@!{bF_-q|7JlJ4i=y)mO}+3XJkR$@Zo17+jgz;p&e3)nh}N+D3s1Hz_5k&4g!= z?Pz-^vF(m0_j0}Ale_pk7VjQ?yY4l^)v@#M-KB@UYQ zXHRJuBv6!D`rL>q`dlkTziG4}8CumBi(CsM%qN^E8QX@CYFlIsu?0n9NkS6{8B*AkOuR zXEu$L8qr>bkr3Ff0y_kA+8@U{m1I4s&s_B$eP-(sR4?o_Yvk6f3WtWt$s=_2sK{OT zL!}epj|Hz{Pia>F=@~BDS--nrU#d_M|6%nM8SBMq2jhj16hoTQhLt9^4aN+PEYdL3 zK)Kp7TH^W8>H)#P=HWNEnFOr|e5EzQiPv^+eg&DQ;|F4L>+ z-m93`{jYY0tljW#F|-R^K2$X^HAXskfZ$xg6??yBfhLAS_d~_-U=#86j-V)dP~5OU z6XgizLlJQ3SF4E$w*DB-u3G?EAnGDjT0e?Pi*DekuOy8*u zou-lHEi_Rg~?4ptYTf7mN=qm?|ECee?J*xIZdO(ZK9TbrDkiDcCxYae9tQN37nbxg&HWci}26D^)d+KaA^Nj;IUZFf;v zJV*$R>MR(kI{tc8I1B8jB%C>Zurul>6r|*xSB|W!fv1Vpfm9qYsCIFq-9W^}%D`9CS#prq+d|-h;bD~HqA_j<6lW><98D_6an_}*C z!T}t%#?L+CCe5(@hNuJPt?J>W4~G)IaVwNaa~z>GCD#=VY-cXeSMTtkxZBvARJy~5 z!KMqV`$_qX<}7)eg$uf!VjsfsrT502%QW7aO4VEI|7f%G!PfU?(|BwW>mH1@{hKK^ zNR`*d74#(-SHX;-p3r|!YO zXdC{@gC>^8#0Y~@_%t6v=KM8u^IX!utalT4?)%qTOuB*68SC6#n3Jq)=olaNpHckJ zDspZ|j7k&4XGJg3!Z{?9Q*o{B^HefC{)TP0FlrezTFYjCDo5d{13^}VYlPycTI-J0>hT( zi3S0RNCttBK;{J~NJ4N@zw)(+KVWJA0j3m74wgGr8q@4GDTl~jO8Oa*78#kZMMeg+ z$jG1;;j+>qRIIcJtwb$Cqozeh0C9a*02Jtj3i#U=1(!LAo7N8$mSAh@cDS5#&=#W4 zz@C52t&pA3q~%v>7!$A#u>r&GP6mRJ2zH5Q4h)0^-bKQ1Bfj%=MyzlayvZ?E5DsJg zlb~##`fm*ot~E$FE-S)Ou_7F;M8eUi5suU;2)8yecrky1X)Egxd2=s~!Hd&k@C^}& zRr7&x1_XBWOPb)TPBFnZ#cp4}aJN7461#o~><|ZgCD@(r716(Jg}1MCltA z?)H5zvD-JCqT8w1?V5$V#mjw3qg``~Zr>5ReIwem6x`YyW`{5+;x**o14NbHKru*f zpfDEH8(MBCh3Xqm(e)M-4+2^`URHp%R4e_?j1^Wpxu?dY&ch*tC)ZZPR8%-;Hq{o( zuP=3OFjmtSr-8H4cz9Oq)tnR(}Ea`V@thpruV{UI8*ONOdwmHs#j zN4j)4U_&9AhQ(KEMdLuHPTlx^jMG%_&x_NX{Cx~0Ug~55-=C`$1}CArK<6DI2lG1D zi^OFb_Hrk@JTEpAdtTsWqA|UmSBICGdW-AXkQQSw)u4&N^aoK+GH8(<>qN|E$)u%` zq6}ACKr%zl64ewO{QpX*<)sEn79IMqK*?f59|u`n!ChN?bi!gEi;qrN>|^oK3G+0Y zi}W22b}TTFpI}ulWL_$mG2#o&`d2)d(U3LMm~YKA2CSLJpf$r~WzA5rvSw%{S~E0i z)(oc@jw_0zV8$!ok;NFsUWJaJyn-38{D>?LF!3sM#7t3Sj6-{Iz#u$h!#25n}L5wlrQ^G$B57ZSNFb9v+X*QRZ;Q>;rWhsTYK(4qztuHPRQg^lCKkSmIf&pfV zlu?7QSwpM9Z>NiA%FsZLf6U>pxj*`=GEJ_fL}=hveE8gx1*l+wif^ZM3%}qoS9rhz z0}Mje4Bc=5O};vt)V>)z^(j|?hc&kFH2U3O%)$d0DAKs~PR1Qens>5G*bL0DEIhzc ztTMERUfe|=bpZ|o;&+`cM8r<=S2PNcBYzRqU!iqYRqY~7w43ybyiR~Pi{yx=Td!cfhe+K z{DTcG(3y^49ssE7jN4C#Gj8$x{gF^47_izsnR4zu8#|u>9Q{6?0+LX!OsH8Ue`;Pe zr?vmkA}9t*m)s$LtT!qF(*9PaL?p@xu zxPyRXPiNvMirV;XIsihMr42@2uCR6N6aqglC*Fg zx-$~?&T+7*RChQ+uvlgzRR>BbE#Pht(+~s^yj*BAOjkEH=tekNSv1!nty;;lQBSz# ztkZyxNxrdRqN}0LQ9LHrz3($JOBrWF2cT{j;xyYx z)Z>^kY=`y(k{ zC->ohxXk$9xNEm#cTa$+6+aqcP=|Zf9qoRw`_&!IWKfN9Zr?>wo10iPgzF$;NnX(v z`a&4dlqDC@luuWPrdgnAR*Z%X=8%?9lNL2>d}Xt|Thd1>jNM`O$Dja+CZBwYB{&*RsybN0-e(6Y|}t5p-y#egK&M+X?TSrX}hjf(mE5D z9}DvF0EA%r>ImTw55@jZEN*Knsd~&69*46OdoBo5A!&<7_$B!# zEjFWx(H#e)g0i^-onm3B#pdPU(&)(aCcX~uy*gdmq3GJ;<48v27?f^3V(vNXrR zW6_Pa5FT=ZY^C}z+{t_^QLHlZA=GBN?T4K?w zkXS}Wk>&ChO-SL#S{*+81;On@riNyT7Ur>f+IImq=15;9X`t0^Z58>-u(+anWI|>|dJ&Q+-}b}BQr{+rIfT67$g}qz2qGEuH@$wePB#f@wYNP z$6hK@jvW|5s&kNq($|S@$h^q>8Z}y~cI$3~8GLRP_W=~Cn)xRzs)t~ zX{o39p|nla5#GYgr7|IV4e)WPH}jUh97hyUMGfeGB-(0?eB%Q?p{Sirhm8Pluv*P={+eYlq8Un;V3UNB{D)9_Bcb6?0+A!3^ag?vp(IuhC0HHPOzlBMSr?RG^`#Z7 zli`>f5W7U?w;HhZtPIm>mi@U)HNCgX6n+SP6VaxKv{L6wtM8@OHvU~ z-Va2ui7F1oA;#J~+)V4`szHrl0uxXP3T(JQ0x^S;<~lf;mAy~MX2;6oIDsL|%}z6u zs9~`sguff`Q*(MvlK4N_`A)1#c5;YY^dSw4&zZX>dB_e5SVJ2N!eLB=5+sFc1u}`* z;S)~;KsjlYkL{l$ck_4Wut2$^R6VnNah}qvy3AyL;x|Whnit@>&0?o5c9X)@^aq<8 zSd&-SIU6$kZFB{qn$Z+4d@H~O!zjgP(dm_H%ZAqfK23p;nqM^?w$(5+nM-^I5o3~5 zf{R8+Hn2H1^Z|SV8-HE0EqryOCV>L=#ZonWD6K5(YaEwy>-&sW!nr0_^qqjpCLy_^ zlU5v~be)wXv9Gn#1f?rv)bY)@UVA6>Lv!jd6u9z);SzZ&}1 zR^2N^XCVc}3z&FAnEW1Z19AzE5RWMdXJAe4d}quV0rM;rbVL9xJlR>R7bU5Gy9{$J ztaNaR9H;Z(44b{~|AyV2Oig_H`u1(O5P^;|<=3G;YKRYVCdm(#1cztoHnjudE`lX# zb(o0(X^A;X)~E@nskey|$t%HP@FUhRK2jpLfTN7ruvHK5Lr$e*o}s+`V~GynrHO5f zXm<87)O^WQTESo!qya=6$nuK-U z{&mVvH`CfqaG*sbe(a-!-AqS_p~GFEyOY9Cx7vodj4#xrI807Q{pvtvu$ytdczG_9 ztOGk|j04H|;6@sbDYa1z96+Yd$|I17VyFVA*wR*ejl5l4M*>3Di#LB*NKHkTuMpqa9uDj8F(ardKM6ow3exHzIXl68{y}ok60Jb61Yx3AKwmfv44J?nC2141 z)VZ_~50axX9VC~7c9v87&Lgy=%XKckVqsJ$G9*TI;5HrUAUP}y@T<1VQwPBSxmuA? zOdmr9^l^}R0s<<^qBE-tyy;c@AvEy}9AJMSr^0U5jLt-CF;x&iV6^XKG^oFyF^cpI zr#fj)G-rNpnB6ubFovJSKl%hV0)ca8Q2JJHc0FQV4f_@QdWntRD7ke z{c_W__|k(X5Gqk3$uQ=-%v3WS*-^YK;cR3c$b6Q01WXF^a&&iRB-0yGDYk5n{FdTr znBu`1sTISTXL2dDXF$^3bdFAtVuIINC=Pu=p~Hd;-`7IMbBU7Zj-r3CCRWf!y=;Ts zoUsklFhka@+Tb%}5L`M&A@7#-3ZEB2&x8gV)%^+jKS_}ZSXj-4}LAlh}gAu-~AZ&$ybpNsGCFj@pXgQxZKk$Q&ZWri3)C!s~_m4WQzvHjFV=Vw=jrIjTK&! z#w?8$UZ#c^2U7!-)AvAo*7aP%7ZM{G4doarhH6bQvt$9GS&ZO}=sR>wFL6KeQDQ5S zSriwQB^r8EhP9wY9~~iAKOK2X9co%v9YWTjinM6fNZKds=?KP#PK?hg+DSk$Db2)# z+Hx$oHCCiZCV4;zp};VPBZ+E3?GPq#HQ2MScu-jrPho!vOJ*VQ!*13QH}S@FC#OFm z7!n~QLt(peg{TN31bk@rW>JJFnt%w&mBU<<2pI-*!zM!b#0(;2Nl%1e;)XWBXKcen zh@uQyGa;B&jKJLzAx&#WB4kNVgy1yM08=juB7_YiVy;>#LWX-H#9G+~{G|wiqy~^W zp#hn-sEHw(YZR>+aVefvhk@C*JkU9+ua`0FL11GuC~nx~1&`RRT53c2V8DVWAKWag zVB{JV`4)iuAgIshYdE$*q)KR0l!$^D306=aoTDE#fH{ov*>nr&4^$97fv~0xYw-7s zD9sWlJAnWIbNV#i2if*cXu%+{LD0$!ereY}U<%P;ks`S$DF`L-iH0rXc2cecNRnbf zq0DzMa()P{?Xc{3T8Y@qj1+E?@niy9r~L=sq*DyCirqE8f-KWvhBQW#JdHeDNjzps zq^@4=gtj_KuX&--rj40-<;=B~Gu^M6?4K5`2OF+N9)ZRxS^x|~cK+wU0d#Ozjazsh zlP1)lj1e zvMJWD`EQ8tuBvG0)FW0a;%&OLZ)cVB9z^UTv#tiK*8C_FV8qpsfUrfzO8r*959V?u z6k1Rs4ktkU&L53n0$sSjPs+He3SfL>W7>2&?R`89qA%BH#>d?eC_p}R7ms;dEaWJHl zYLuWbbftc;-UiCB*rwsFJ#$G5L#xU?At%)%p!o=@YyT9cEJG}4k`-|hKURhk?xxPY zc9M+4yz1QD44_O3fYkIO^jge3 z8q$;apk*G?BvxWrT3fhB%{I9l6RtqG@G~X_V9V41OuZ3OmfpMI5^7#nx$%mJrn;L%_a(XNetSWC%c< z20?yrpAc{O7x);ju|~r`*DD_S6$Rvup;{F))2|+&lTZEof1Izzmk%2UNl7lp&af3(VY}}Tk@0Af?fM;cp-e6&35wIBn;G7 zC6at>Pa8=poI2HD5hDV{P(wzNa>S|;`e#CQn`m~wx)Y$~n;yg(l+B^h9H}YpeNWS+ zA&u@Rd+PI5NvY;e_g8BVXvC@K{`vUv`uiDn4FjL+*Sv3(2=)QF9j{q3+8k=7E*lUPE6+S@`PnPS&cVEz`bF65=kDs(r|Q>@@*TpdzgKJT9_2$sQ^yE< z)Za5Y&fMR_Fj82UE}QKeU_Bza|mB_7+p=mu~egk8nfi?|1ka9#})xf@Vb}2PO?`7dlta^1KFXueI8&W>K5vpIEyXIa9SKXZqW=VO%{(y-JiEPDe1Ba(^_LKZ+X+t_=p)EfrjAmCI7T{77mk z!-n1U*`!Pj%iBDm`#VGTx6}Qjsg!Y!@iNe%5%-};+)G<-ekC6Q!OdwVF%&8rVJ1+_fP>F}nbayCaOV zg3(qa%3k-Ys|tp_lp(IIef@D=-?2nZ_rS!ideyLp z5RJiL49yZ4R=-fz$cQp_&D)AypU?#3oFBUmK!w<~w7_8O8e7Q5)CbP|7A$6IH?5@e z;Xska=|gN=L1Bgo7Efr4dnHyTN ztiiwxuNuOM#sb`6w737eB5-#V?bV6^95op2O|`epfLZvvBCW5~*>L72=l=s9Vopjq zQ-Q2C+VFq)-|m?9fB3&#cqQe({q*)}|F^9xw^9DmLzKTXrrUr0w-lFL$(baH|H1L& z$yWcxW5Zjxc<}dscG`EX`k(y@Mc&*tD$E?acf*x(aQ*BLn0e&#)&2JmVOFa{Jd;i% zn*;@fc(fLq5~k_$IXj{nDkohF9kIyAC;y6!q3UDr|Ka!M6#bWA#41%5T;?BiI-SGW zGv>b8-h2d5J_PH(C|eq%8Jh5Ayjf5ZnG~u6lRB#zzdxyIP#dSi1Fl z9?_tDs>Ki|^n;g#s2L~{(sf#zA_pw;D&+#!_PTN-@Ece}zWrGHwm+@poc3YepR&;w=>pokz^$``Ag0u)g{4WQ^PkzINv z-HOPY56|~%%oBehli{&Mni4;Yirv~c5ki9a1Xe*5Zj?UZ3h$V@a#AUTCJAH1#N-@+ zJT!WYizx>Iyy71zz*M)+F|@IjXF7Pp7W-CD%CXQqWXYS!-u{G68Ra$~B&OrRD5;&` zpzTS5ua3*Nxc8P;N}Lfi<7aeooOn*sGUt~VT1ON?=NJ8eCuqms{^*JFp$J!4eIZzXVb0*m2t=6?x5%2~|Lqu^iv&9g?A1krSFc3h4 zf7O`SSS35(1OHWYDH}6^P&OCwd$Q(q-)0B0yP`uc(g%@5*M=Uhq!-n(z$oii)7=In zfjMPS1Q?C|L24`D7VkX|kwEpr_yN3+^vQx<5_jn9GJxMn#B)e)Vi=McE5jCNK;j}- z=HOKEO9D#=F{w`nkBQIHz+T*s3j#AsT%u#q@ZT+m8m#Qms>IC_gsh?#oOC_{EdI|V ziVKR6jP^7Kc@5DO5-h}l1D%{F<6r|yNpmc3By^#UoZmzDgmCeQXEo^}bw zE1<%(2S`jU?tyg#gqqRnX^rU$OAToP$YDdMDvhIK3?K%VGYv|yND93Ka#daxP_D>G zjh^Yo&sO-LRzLN^m%aL^X9Q}irv-?}&g?+MTE{^)jUqrSig6*J8K{89090rW_y&QN z(3uA`X`OvQqt>7d;zVm&_H7#*p1$@gED5QaBdj`9FR^B13oKsLBoIR6V6Mh#e5rzR ziX12?*S`VJ!Nz`rFSJLiFe@nT(E69)3brp4r5TKk4I9}YSHmA>_S@o<0+NI$ZO0KR zkN_echXuq4VVKjOz8ie7P3YlN+khr;eM9_ff7~XtFICKJ!ab#BxUdPPV z!gmwy3PVE`d)#pAW_`(36lxO*X+*#GGcrhERP49oAHRx)AEn%c@5=K_Vw$EuyMQcv zrH&t2uD?XV#fq3|dZm96P}a&YQ&XFHqB}|mcGQ)=p)RyiADn8^EVdHXQmdF5WuQNo z73<{nsU@Fp!`i1X<3BOmyk^^IO@!7pCOTPkgqxWUD7dZLytB*{#0NIP?{Su&Nl z48AtE+vh;8GE*vcdiBYgi56#k-QEh{Vb$Oa-I5}uBO6A5rvN@9g!(wQrYi7}I1?d+ zC6L1=e*;`nH)4X54kbWu?_qCHY==vgb1GvuAAhT6l>Az`gVmb8|75GhZNuh@wc z?*P&aJg`0Z@(DwMUBePc+HRP8PKRL1-{tSLce{#=D1Le8R#6FpTs4j$Dw6gxOpCnr zZ^_G$B~d_M#HoEG*O5EppZdmJ&~$Vz$7u)H4^P{F?7%E zGTbZ!He=GZWpyE6+MD!lf#Sonc}A_i!SDHEZ1w-lQH8bx1|tyC8F?_|mxFcyhIS)F z%=l?{Yplt!+I;tv-Oic&+-8H{)#e3WoC1kI+t!NPcz123oYMR!VS(#pRf?*bAn zeqXFq)xmHsQ~kyE#ZoU_P0XXNQ_1S{PbI4loJv+7Je7>g>Qpi+R;QBDN<5W}M(tEG zj+Y@*Lmf3=g^oCy$09@37SK9sEJXM%HrYGay8om>%>m?bI*}}PzbxogbsQPuMXGp zS(W$)4#1DO%6KQ{dCDsBnD26SKcxlY^;sd+tA+1OIz^F|eiu+an8zz481tsMl?A^g>y%}M(3KHx zTZQ>4YVDmkd-lpop66F$zSghYrVuCpYSaD#2^V{hBnSj;KGS}aE=f(&59R|h-P}#C zRst1jU$EQR;+9Tlm-hKw1z(h*DqJZF!RsMImD4Q{ogTuQWFyp~-mqVZY;fHBaQA~SE zH-};u{r+7Zc0?WJ9JORsa%!`oy%{z|Z$dGd3h2JB>=5OzVw4fG!XQb+Qj~-uYI8V~ z>GBMeBZ6QSp-pqi-yf`$e6oE2U*HbSE^LZoGzDhs0uzlnulDVv5JNiNo7!vtO6u?b zEx2@rKgv(g{N&x}W5L!lC>(<<1m6ODFc(L3s6qyC8LmL=9(#lS%|ub;4v8lY5UH8} z{+RkG{M>_OAMnk_RWX<#5cNX{Cq;*6{Pxuc`8Nmd4-! z%s=!6-M9h}rE%qFs$@Rl1}m~JO53hrqfClW|11rrPcY2wNc zlNm=uz>etoqnvd`0U5b^2RAti<((p`wqyx36$RP`ezo(* zY<|7uKER#(J{d-&S_bwl6gZIOxnG!55A0}cuMjJ#4TUmn@?l_UhC!G1EaF1XG=jB$ zxP6-yx_Z|v5bgDU`WNRCG}iir7bK~k;rikvc`Mf`qtl1E83u+)JMAWIh3M&4?G*a6 zO5EQ*BmhZ>2_SujEAbq0OQj?6ikwr}PHRg1XerbvZ5EX3=-b>>BG;E!BDlK2NvS2w zm~9beiB}70*nFn_03fe14a@3+GYrvxYIzt7Ppiso5ynX6O$`!bh6Dv@Av4YpZSaV& zCIqWmS1A95`iA&0O5O+U?J(5vE%8;h4Aw^MriwL~5q3+!~RkJXm)%( z3w+Z?Y{51VG3g{ha71On!f0xNNO6?RPNjM?c7@J_6&Bv4AT;8)Ypr10#$<_IjqJep z=W4{R>N~2(qdvnAl}Xe0j(s)SpRt2{A_DKdh)C`N=JVP43tP%zq)?V5%H1%6dcaxZKDo+SkE_+4m<_Md8I z_Cr2ej&CkPZkSPAMJfO>+y3`y%MwU2orA1F*#%jHXs$B(+JCN=wK`LnLNjV8QV!=z z@iG9y3RluOQUWEB;KaH{2n*uI*5nHrJBYPR$q5gv+rVLH01RM@nan6)N@M`y4P){h zz~dRVQw`Ec_Q~?M7_N3IxFiDt3?zLWl_ee2hDN6!8p{a1Xj-sKm!AgNDl-IMv>cjc zfP`wii0N##a0NsWTYRPog*plS^ePi$k$9^|`A>>h{toJb$lbseRvx#kyGQ^EVND@oAQ%7=ZTmO*pT|VtL61~R!1t6tw zpOG8{w$}(kSJFbifi;uG@3OI78|<>N50puVX_pPt`ffl!ac@nLv@g(hj+DX}yM`95 z#AYR**$K4f!4yIeG!`z|14FY0vUy1cGBfCeJuvl!_P}VfOM=Tng2nOPMi``oXPe9X z2gNRCe%SYd+svtDefwU}8SHzp4WISCeJ}OsbM7i~?Ry#Q$o9QxpG#jyfxY4Dj+t^L zq0lAp*0MyIG=q)U#ul){QjC!mzTu_5)xB2hz<{)kwB2clI*FM5|K)2kPrfoMUUtDM zW!5iSTl*9q6kUAc$-VXazd*32%XCF9*bn=x?tgU70`$JMof@s}*gc^Nu7zsOt5QD2 z3V4yHl8p<$i#QnQlX`B8q~Vn)6Xc;kj~KB3y&7_zvh*Mp$9BKBgz~H%9Gr(h;|+^A z6;3f@wvp=VHiL~b1(U5TCL(gwSbx7~?Lcp)(-vwg(iuc$MxXWvMJkO+f{Ns3lF@ik zQyd=A@Av#M$U+NXC!(BCvx;L%HA{>ah-}l8q%zRo`Tl7VG;G1MM&thbryamV9A3)8K^1xktVfp_{*K_|{PiiB1Zew8+eBSN zZ}AIc@Hg+Vu9d*6s4eHinTvL+)%&pMkf{=3INPV@4K+RTMyreOc7I-IxILrxSEt_s|xfPs~vQCRLTeT2`hpG4@q@M{LQs`oZXmvg;7r}z^OR8lE?8LAZLp*`I zwsHf3<}WwUL+?2ghQ%CUfx(hasuqGdzyoZvBt%-nQWJr0jvYYoYpn?efh++7SbSI~ z6&!S+2m~!CV8B|1L88&fq3Q2CZ!7f~zOgCN`hmk<7Ypkj4Tf%w`AKLHk1;GYg2kK3 zf;ZFF$+T5?3q0E1Ff3kA=Q3?=)q=+s#tgQqRbhgP8`On)D$pW)=1m)qJRG5h{BObmY&N1+8Od`+<@zE$H=JrgN~&85tb1 zF#&Rctx!mbC2p9=GrO~l!^*(7QxxSx1(fKZ0vIn2ieedq+0~sen2fD0cVgVmy7ja_otKfv& zEFG$rVWUaOG?qze3=s~01_2GlGwi691_A$aa|iJZd#T~~|FYcpf_hMt?J@p7yD>(I zjUAT)yY^ey9u7)5CC+Y@;9z@)1Xcs=CHq8<68MKoh_pDC`71W5u{BkCFcB=BZ1^P9bvy(&>!m30s?A>wGem^ToW?{ zjBW~4Hhe8Hf((UP8LxWKu59K5WR`+qSoXN}YjR@j6Ol{>yid=`O%9B6Fr0+`MM(|U zQr&jzDE^RZs4Sc@|E&YS^dI?CG{-$lru-nW`!-NxAA}dFEpQfoir^UYb6=({0H61| z$$g}d;oB94DCT_s+U$W_1r&x@qhf?Z-4b4e~{?RZRV^^6#reYvYbnq&bGEo56lKS zT4@$2BFT&prv#ZbRC|uzC1do8c8qbXKDt5nMGu7i$;1zSoIC6$)0@uNCEj{-=1UgCP*KZY?Z)G`Xk>U zPMc}h*-p;9vr9ILrFY3Pu1$$I{IkDC^$Y#(--uSBpCgj(*Zb!c&{pI8@kho+et|CcMjj>{ZN z6*pA^LMHiZQCz4TLc|cJeIAyZn`A7++`+4y3z2Y>$<~~b9ZuP;D_a41I;Dq~+CwHb z(P>H0Dreyx+~T-LwNoW6tVPah?W~hzv489d&fe?GTWD5!3q?pyQ2HD=Qml)gDpet@ z#2YV6bd@%f>C78OyatEnk)^<)3hxja$E5tn&yt$zH+u|H*d8)90*!o3FdXtxC0Y?=N)M6 zvYHo6T56hQyq*DRa-}k=?lidO1BtZ}eecHCn zDzh?ZX~*Iyc{b@F6R5ZBqxXpIH9DKO2_XwwZ+CU(x=LdpoS)^v@&eCh0~a|V2PqkV z;fEy$u?b!$AqUJCfx~jWv;zd!TmeGc!!Y~JIladBMAf_$`a6nDqFG1!?y?VS=}6ym zw5kY>wW26|+FGGr;AG)zb!>x)Jb@?ZS-P{yiz-!AL1gPFTa}}~8)7crvp7TRKRAvH zF<%RvnPXsHpx`osf6t#M?**V>)-gA7&+(qP&Sb`6qlOBz9LP<*yMJD%B59+Le(h-L`z7a$$m z=W=OT@ zLscF!wak083m8>w%6t7?pAao>bLq6O=dbuYF*;0#LHNv3#FP%%|W6%5OT%ozQsbMjf848#~3r`J+`gbicT6;%NHD z5M4twi6EalRg(qO4646nwI>rsF#=WynV6N{9~Ny)-Q+T8^NZ2uU}`evbP?=>pXqqBj4T z$xmq0J5P_wukVi~ux6Y}z=A3T4@lgC^0F(bY)yQZw~=8dyk#;JqXc=cz)RL2ctLQ) zz>D;12)uBIv%d8}9}l6%MIrD)@__;`n8ymd*qau3(VJpzJ_-PYW-UetHEb-BD!f8D zhF93(C~FhYWD*INSwP}9`jJ=$SU@3BFV@Tz_5$r7!Oks+BHsGJ@|NpR>H0dZr#PLd{Ro4dST>}kT#txo?ty{N+2n<^3 zYAc|m#JZ40xCww1jtBxc#s8Pm(LJf334Y1_+o#Ty`}ab6g6#(GgbFR6H~}3DIDUKi zSj=`Aa9U94w~4CcsgveoMFY-~wSc<=W=>&P0gctO{F(mFUV`lxOtiEO$AJVCj!i$tB!tz zd0<>~bl@|#3@WOG-vUoSIti;xDCT4yd}>;jqt(8~6VIS%;+*D~!V;4FfFz6fL{E zGW4$ej^pRE1#F9k&QnhF)J8fRymlUk!D|}Uw`=g|ncm=m+y+l;8h&r^(u-7Maw5ew zcxkVBgQu$ag2RgNO$k^~gV+6@h1s8;A7tCo3DA`Brf9M!G#6LyqY6eOnfn{~I-$7IZ#}oqr9L8w7;vrq^FhUa46QzlotadAHX%L4;>kAY(hJYVyh}JX#N_)s` z9COD(aY*h5A*I!4{&}e3qA}5`cCO}=ehs?IH(E)Baiwsup4${5I>ChdHph>{E;7{#jA1+$u zt3+yS`8l+7*RcFia~NBQTU{kCaf6BKq)WiWtQ|9zg?AL9yUx5OYH z^swzMxMWJ*13FnJ91~&D2K={JYWv+$z1wnXVwd1VD+sh>mwr#Ik`ao!FO+G3QJTPP z>mUYvXbnFLCr4@cBit?S3<0YN5X7qDavd5%!nn95ZX9E4 z=|RM#%mre$dH9UZU=*RNj8=(lrUTMgNem(X&mTT1Qio^TILiiR}pWPkh6;uR~f>DESxSo!swZDVKQ!^F9I9rGV zPFp2weeQ>cYk^g}9~!Jrq%N&OYQmPZS^+xYy+d$mKsEO5XLP|MlZ_HBfe4reIsUCKH<(%E~DgfOZyk(QaG8oqe%k%XsTRI-mw8nOXcRPE>9YEHmKWj=2$0(<+%ZQw-UJ{{vQ zVysMzh0)P*VkL1EVyw56i=@~FziKHrU(8Z2=n|tW$V{}`Ti8WF1%CR}X#)fMyh5;? zfEa1-|JNYql)$`li21xUh4`e|NyX3{Is&C*{#FrI*;3X?oXBtIFj1G25aBJL?m8HZ zl_FelCZCpwjvRnrDbHKyK_aO-M$?%8i%?}Co43`)9wmdpI`+xst-Ek6f;SWtFa6uu zP-b@Jf(9_94CzZMD8puE&X?Ybc}E_jh6%?Hn#wYELIuotX&UOwRKYy{tK9&-%D=#m zEtveINgQXhoUT%f%$u-a+}QygX`rw6Vv1urgyc_$1}vQs-LkC9W}jxJdWf>OwpSq& zq#4cgq`fYLLu_#jXoV-kVeoaGrOVigxN?|eJ3qHyZa-;Zl$8#K=B=cdeew-!RqgWF zV)H+V1nUh*(RPFzAAQv@2(Qf>l4VmBf!2xW#@6%sty{M2 zVCyGAn1yFsA2C`~$l*$fPv+F&$<6hp8>E!6pZ^ zvcMq20qA8Ibdq9GKs8y{XW}o#-1mnGy7^1}F1#Ug(Elay1ph}yMU+Opxd+BfWD(P= zd^R&Y#2E72U>8}67W^t_VL97A66^(nSkl7GXUQduUdJg#&#CQSwuvWl+N03jopeOmN>blNpj$ zpuS+J?RSNMnL!r4+%8!fx|SeBX< zl!hA`=k8$R70OSeackz4YW!`d3Hkdgtfv*${g6dWDwHFl+gDhmI$%T`USb438pMdE z10IcZe-)|eQFCE*zx_0UKCQ<6X*T{cad?aj_D}lDVQbHd3#S*MvO|GMowZjRW49YE zj1R&U+H1+(mCAor34TWsRL9A_TyxMiB@E8Nmuc)z{LWmMH$8!O0sP>HEZQIP301ay zLi}m7{w;5?^}fJ2J^Atygv$cmKM>p{e@KU6NVd7nOl%z;Z3aBtEMdqgRRhoK97izt zoYhn8$0^5-G-~f1sI8CS_0?8$#|S|7x?6cdclYJf?FZA=b!A`)>BKZN71I7WnX0A{ zG!c~-ga*26>)HXKfCieS*&ztp{krOPcS$X6EkMT@ zs{zMxLBTj`G%=9io~W5DW)h+#Mxt3!TuUA_tcSU9XWfJf7)eB`Wxc0{HO$htI4Ip%zVt}~#D zjhjZ{*)fj|YPRfm#NNT^Bg|&z9W^I8SgK!)6 z^jL6t`=@h3x+p{sTax+97A&&|Xm_eu-(*eOS61YiS(JEkiIEI@H$6!~4ueRpAz7I) zHt7QgC}d_MHdJO}mW{<|Wo{e}yvlEF)}H{xUJ_+)F)#ZxrX*Q~kRjL>ZAy zT#Irf#*A6;_1RQ-oK7V`t(y%ycAbKGImWTZYrU3X#K7M5|IGG zCs}Vs14upyGVZAgAZN%wyA+7`b=tkuOJ94mR`nAEI<97Z2ntY#xiH=_me@TEJU4@+ z=1KOzJ@0&q#Z+>#{6Ti-MusWx-0(3So;EssqTFHI$8>nc=&-fiVT;`lln7C}ksNd# zEn51`!jKtiB6dVME2u}zvA62;Xr?tpWncx4MTx7=UU!0v&5L~t5o5SBZuc?bGD6Wm z_AW)x4FoM=`Jw=BEgmJn9#1(UnEhf#S=|1^zAHy}$(BD>Pd4kd9k|G1XFL-Y(=x_Q z%Eq;+vU4|b)f0Xu@fCmig-_xDl}ODP4F~XS+zuLA{}T7@p9B8E*gJ@rE69eaSQ(_> zMy>~8MeEnB$Trne5CZ1`2rLPd-b+`uWsxR4h@5=v>kxZ}2T2=>EzY$ZBP&!gT{S=@ zRu&rSmOsnGt1~Qr&`4*To0sPEQwe_t+DR!lkJ}CED8-(NCcRF2o=zEzPLA_*!Y3tI zrvNT-;I0jH3gD@2bZQ$n8M?Zr+h=SpWmgyNou9$fFTC}UF@&nPjO2xYN?3%km+vD5 zM[nL%C>sTe;430_375vko?%gWfDB&Z^U8v#IXMVs3= z>w^Yh67&H!;usA*>Jf)Z<@FHq7~aHx-pZSgqmoV+NB5jUcr$^3UM_1+5?Ke8L$SiL z-)*-eNw^c1lUW6{%vd!$3B^F3mJLf`^L0*OjmMY1z}v?+#uj~^##E{|=EuS&de`aW z0Y!|6+nwlf8hbq*E@EVQ;VLS0Plbc0Vs{eOm}X^3)>Qfn&dwMfXr|d3$kPBMRM?X6 z6eAuvtmKrdVzQp2dGgL#=sJOm{e+lO8#{%FZB^Ae^l9Q^2M3z~^y31oy`Mp1eX(8? zR^#OelAonvu2<6f2rgExr&o_khs!J?Nrqx2e(8;#=Is_8_h}d`b^?z~#OeWb0?0!= zjU9OU1U1F+i3__Ht{HQ78;C=7n74_dX1l~;W>wshCvJN7v!xqPzx^ByvE&y|9J}ZG z`<}mJ3ssH0`NS^b4jl^iFDyaFQt1R||3O<^O{KJi(z8*^7gL33w3ykGQwLk-^eEYk zqGptyj$E!s*{!CE8V4k}sR$MX5kbx8wOk>IhJ9)hP@+mc7k8z!Ov@bQ(uIoGJ&;Xn z?u5EKnQ*(}YOX))&T0M0d?7dFMoV{pvM^BWb;YykHm??s2Yr!9qBo+&!@hQRKAy{_ zQf(fW*W>cB*73q#S1!Mkb8?$8_Mdr<;?dikV%R?4C>; zW?S6b)}JZ5Q^{U8^`e+&PH8I4sU$0f1S`xBW#aB^Ca!@XD+MPvNaF)JA7Vp}*A3Dn z#>=tN)0NF=h8)|`-oW31bQMB1fP)FCCA9!zOzEmKgLnCG-YF_*z| z!NSmqSIlU82SGS3ksA8nBmq`wHm(z)kOMnOB)HYUHw%1^f+2*zj=jz=Xj;x@+f-2F zyP`JR{|#z6bx-$hEe_l^=aQgOA*sZ2_YugTZ)+0;$?_w{4t#RD|O~M`U9F4NHbYE1o&G4e>K9azx6nzr*ax3 zlnurG5o2w~7^HJaR}o*+YG#P>vaE-cmNNNTl{jctQ08!4!sO%{(S8^)>6jZ3lkTCP zfa^%GDRd^KpD`Fza)eiI{ZeJjBHB5Ml-K7F`AEJ8ND^W*Bjj3Fw+KI#FHhql%(s z5=k|a(elvEd(nR$`hN*A>8;N4GFi5{dqvll?v=4kE2BzpF}_PHN{pGHjj@Eyd2-``aJNG=jX88w|G$uLk|zqxza_O964&ZT9- zRwSVhRz&`jBnsRvi%zGT5YrxWJ7VH9{S<_clZB6}H;@3mx;i?Rbu0t0Gk{HcMPEPB zDA0~Z%XmAiPOc7hM(jk}9mxL}$Qb&8RMZHMlx4BaF{Lmxr~x#$0R4&17t(g1-1c_F z^fPcxtNqEi0%rDVxv1jV`#IE;oUT<3lyocT^dzGqhjF^gNWuhQd(a@S-4QiCHn^ob9!uwLM2h9r>E7X z7gCzz4!|jb2gH39F|FV4A|@IUF7%_cAHmoNFT_3ypgr-AXcI&j4GZ5m8IunqZ@|8g zO*Vq|q}vHLP7%k@lIAhq<|_;k4c+N%Lf=~sIrKeZ7Zf}3Dw&DHW`$2digQrS?NVTB z7BtRiH-vT*(T?P&2Mc68z1{&lG~q_NDo~c0ek`idwjJIr;pAwY7;tx^6X{>w^C1JL zU(0AY42^!ttBRVUW3F^AgFa3c@-TWdMcX@|!m`y86*yK9g5=YHTZ25!tK1v9Q^Vdl zq`=(AMhQa{J4G^6&~iygccz$1Da^{K^j}-=m_%xj8DLno5V2Hvgal4Q#(d*Hn(g+18Xiv?}3mLJbKX01~{^w4>?s#>Sv z0x*NdJ#UY)eSaR`lK9%KW)j_?F6cW;*|a&fxubh+Y}0C5DI2$Rb#->F0NhVu9MXGV zhVYY3wGJ)=W)CV*VnEF+gE?(?GF!~kBGj~uGMG)mYXVy;eQz%JHDLV*^0W^b`9C2~ z>tsFa2`3rsxEg~%2BM0~rCf9F`{{iCiwZ{;2?}PI9ca-gn9QKHJ^67T<&6~(#$;~c8}siXg_(DfujX^tSt&^iYfOtjlmmv@hD0Cn!MNk3$nE>UUgOJfx?_UDL-ALqy#(;o3NF&+u0d4j&D$FOFZjFdSr(s0D< zGdw#bTlRQ>j|cs!Up@NEhdG2JMJezeNl+&h{Y#hBQ&HGvZ_>q3s>(-9_1wgC#&7 z1#ImC%j*qM!f^^noYg%kAt#fQUE;qP2W}PuLUjdc0n*&)e?xdjsB}H{=a_BR-GM>+|{AeSTlS7xaaEVPB*jBHQk3Z*TXv z2ik+}q4scl#P9KY{XT!Y-|r9jgZ_{|?2iOI0dK$;Xb<=Ufj}@23WNiZpeN`J`hx92 ze=raX21CJcFcR{FydhtxJ>(AsLcvfd6b?ngp0GFU3%7^;;XpVT4u!+vNCYTGFnk1{ zBj^@E5%fIfW2`-z-xh?e2PN&CqbfkUQ$j6bNiF_ef)cVv^UK>^SpK$0% z4;pRXN1oRIIpbhYjBD<+mW~h57Pw}TE*HdKS_?U{Gss?nKdOt5A!vFH8L$iloh(4! z`my1D3NVQ8w;*n=z<~ErhHwJqv>J?hy}u5fjg+TVz@!$PScW@=K7{{!h{>iocOHeD zdyuSxT!wT)-DG_qe;kX5&Ju7Z^Z)CQi~ZfBILvOxD;WNppE&L((GM>)rmi1M+~IP$ zE+`t9#LbMm<#{qn6}pXH?533I&uP;~yn&Q+HmxCND8|MquI{^A*i8 zfAXnUUOn^M{ny=e?EWX8dgh1EzwpM-SKjsApPqdFh0d;Z+qPfPeZwuce)XGAJoUYk zKYX=z@{}Dr-}}RdXG>M-tA6=rb``(oHEwfCQOtr&bt}Z6Eb?ZPxz@J6W`cQ(S(F-VR?#AwMFAr3kYv$r;;SdgQL)x+lAY#l zX2CqEYQ3~nY{N$=YE3ncsML5#x005wyrlH3yzg;wnrYu(#O>xu_9@mnN1fwJlg%{E zwB0;UUT$lZ91<^j?XA)@lU*!*8C5eDt&!Tqf@OhNBQ7w9E%W4kXKSZg+_i0@;+#=a zx>?$HXT5#W-`_5~<@sizdaAYbwYGwz^s{LWxpY=8z3F(jN<45-3|WVF)|I|xDgAhE zShShKmgN?QsbFssFO#-gOZ%rb*d|-oNTnN1j~sJMk-SHx;WuWP9kN`yuXZ@?+}kqO zgxZ5r=}B?ASX0HB@XQ&H53O6Qf=#vy)smC16(-0NYwP$)!W5ytszGkF%;c{WcL~RZ zmxPxcuULO3yehoGpOQ}tZwv1#XQV$0e-a?5ykqwKOS{(HdhfkoFqy5vg_myq-HR_t zbyI_(t=q1B_|eC{8#p!L`WtS!w<3NdeO>Dk+Rkr2F}=ZTvDxdU1S8Q0AA0R|Yv|D7 z2hFzmm-Z!Zy)E1Q?r$#Zz5AZoEn7Z+!&qea_ORHPD;wfm&|Hu4@Xz7TC;xBmaQaXJ#npXSAOp`*WP&S;m007@#3S84gDmO z{md23SIZ(;(kJq6S7~3P=&fmxW?Gx%dGa!;dT!}q(@bfm)MD}5`O=}`kae=nQo1W5 z#w}LQWO;@-UFH{urPZ=qvYD;s#ma2SVGW8=d74>rnAdlP+N;{lE{kn=*2bUy)yw9+!$TC^{U%{9%JZKe$-UUrId>89SMl@?p+{wtb0>^4)?#E97z zY?Yj)6AKcX94oE1{i#wibEfzQ=cHtEGs!b}_N~&OcfX{A{lEi+>ot$Sc-L zmf@Rkkao#cqSfsDOi$@OTi%kHvb=P6onxD|zI6TY3h}xnHIuGeKdbAph6kfE ze;rqPbF)inS*pY; zvEbNl#*&f3z`w=P+%>$}F-a6Jy8~5Rnz`bWr1^&XTLEd&WII~I(JyLx-?4CL!;%QKq|E}risxw!r zUF)((yFPz>#yah#)9bi5W~}Enl`tL9cs^9kV?5c;&$RM= z_|7#@66ys>bV^l7n)n(X^cEY%MxjYqjJK&=;uTwqiE+myh%OMBGlLBL#>s-2pncMW0YGO+7Y)S&e{3xrzew6ZY0OiS zEf&GtB;Ae|?npihU(HXJ`5Hi}We{XYsKlAmX0E4n2JglAK8!%?PMi@_;JK@|TCa5F>L<#Et~MO!aSa-0}Wpo{&%u+pM>{F*l$33=!I7bUwn=Kufz literal 0 HcmV?d00001 diff --git a/dist/index.js b/dist/index.js index 42981123..c7fb4911 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6,15 +6,7 @@ module.exports = /***/ ((module) => { "use strict"; -module.exports = JSON.parse("{\"swagger\":\"2.0\",\"info\":{\"version\":\"0.16.1\",\"title\":\"Netlify's API documentation\",\"description\":\"Netlify is a hosting service for the programmable web. It understands your documents and provides an API to handle atomic deploys of websites, manage form submissions, inject JavaScript snippets, and much more. This is a REST-style API that uses JSON for serialization and OAuth 2 for authentication.\\n\\nThis document is an OpenAPI reference for the Netlify API that you can explore. For more detailed instructions for common uses, please visit the [online documentation](https://www.netlify.com/docs/api/). Visit our Community forum to join the conversation about [understanding and using Netlify’s API](https://community.netlify.com/t/common-issue-understanding-and-using-netlifys-api/160).\\n\\nAdditionally, we have two API clients for your convenience:\\n- [Go Client](https://github.com/netlify/open-api#go-client)\\n- [JS Client](https://github.com/netlify/js-client)\",\"termsOfService\":\"https://www.netlify.com/legal/terms-of-use/\",\"x-logo\":{\"url\":\"netlify-logo.png\",\"href\":\"https://www.netlify.com/docs/\",\"altText\":\"Netlify\"}},\"externalDocs\":{\"url\":\"https://www.netlify.com/docs/api/\",\"description\":\"Online documentation\"},\"securityDefinitions\":{\"netlifyAuth\":{\"type\":\"oauth2\",\"flow\":\"implicit\",\"authorizationUrl\":\"https://app.netlify.com/authorize\"}},\"security\":[{\"netlifyAuth\":[]}],\"consumes\":[\"application/json\"],\"produces\":[\"application/json\"],\"schemes\":[\"https\"],\"responses\":{\"error\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}},\"host\":\"api.netlify.com\",\"basePath\":\"/api/v1\",\"paths\":{\"/sites\":{\"get\":{\"operationId\":\"listSites\",\"tags\":[\"site\"],\"parameters\":[{\"name\":\"name\",\"in\":\"query\",\"type\":\"string\"},{\"name\":\"filter\",\"in\":\"query\",\"type\":\"string\",\"enum\":[\"all\",\"owner\",\"guest\"]}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSite\",\"tags\":[\"site\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site\",\"in\":\"body\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]},\"required\":true},{\"name\":\"configure_dns\",\"type\":\"boolean\",\"in\":\"query\"}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSite\",\"tags\":[\"site\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"patch\":{\"operationId\":\"updateSite\",\"tags\":[\"site\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site\",\"in\":\"body\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSite\",\"tags\":[\"site\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/ssl\":{\"post\":{\"operationId\":\"provisionSiteTLSCertificate\",\"tags\":[\"sniCertificate\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"certificate\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"key\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"ca_certificates\",\"type\":\"string\",\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"state\":{\"type\":\"string\"},\"domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"expires_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"showSiteTLSCertificate\",\"tags\":[\"sniCertificate\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"state\":{\"type\":\"string\"},\"domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"expires_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/forms\":{\"get\":{\"operationId\":\"listSiteForms\",\"tags\":[\"form\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"submission_count\":{\"type\":\"integer\",\"format\":\"int32\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/forms/{form_id}\":{\"delete\":{\"operationId\":\"deleteSiteForm\",\"tags\":[\"form\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"form_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/submissions\":{\"get\":{\"operationId\":\"listSiteSubmissions\",\"tags\":[\"submission\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/files\":{\"get\":{\"operationId\":\"listSiteFiles\",\"tags\":[\"file\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/assets\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteAssets\",\"tags\":[\"asset\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteAsset\",\"tags\":[\"asset\"],\"parameters\":[{\"name\":\"name\",\"type\":\"string\",\"in\":\"query\",\"required\":true},{\"name\":\"size\",\"type\":\"integer\",\"format\":\"int64\",\"in\":\"query\",\"required\":true},{\"name\":\"content_type\",\"type\":\"string\",\"in\":\"query\",\"required\":true},{\"name\":\"visibility\",\"type\":\"string\",\"in\":\"query\"}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"form\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"fields\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}}}},\"asset\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/assets/{asset_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"asset_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteAssetInfo\",\"tags\":[\"asset\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteAsset\",\"tags\":[\"asset\"],\"parameters\":[{\"name\":\"state\",\"type\":\"string\",\"in\":\"query\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"Updated\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSiteAsset\",\"tags\":[\"asset\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/assets/{asset_id}/public_signature\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"asset_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteAssetPublicSignature\",\"tags\":[\"assetPublicSignature\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/files/{file_path}\":{\"get\":{\"operationId\":\"getSiteFileByPathName\",\"tags\":[\"file\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"file_path\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/snippets\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteSnippets\",\"tags\":[\"snippet\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteSnippet\",\"tags\":[\"snippet\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"snippet\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/snippets/{snippet_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"snippet_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteSnippet\",\"tags\":[\"snippet\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteSnippet\",\"tags\":[\"snippet\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"snippet\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSiteSnippet\",\"tags\":[\"snippet\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/metadata\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteMetadata\",\"tags\":[\"metadata\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\"}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteMetadata\",\"tags\":[\"metadata\"],\"parameters\":[{\"name\":\"metadata\",\"in\":\"body\",\"schema\":{\"type\":\"object\"},\"required\":true}],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/build_hooks\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteBuildHooks\",\"tags\":[\"buildHook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteBuildHook\",\"tags\":[\"buildHook\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"buildHook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/build_hooks/{id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteBuildHook\",\"tags\":[\"buildHook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteBuildHook\",\"tags\":[\"buildHook\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"buildHook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"required\":true}],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSiteBuildHook\",\"tags\":[\"buildHook\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deploys\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteDeploys\",\"tags\":[\"deploy\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"title\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"deploy\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"object\"},\"draft\":{\"type\":\"boolean\"},\"async\":{\"type\":\"boolean\"},\"functions\":{\"type\":\"object\"},\"branch\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deploys/{deploy_id}\":{\"get\":{\"operationId\":\"getSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"object\"},\"draft\":{\"type\":\"boolean\"},\"async\":{\"type\":\"boolean\"},\"functions\":{\"type\":\"object\"},\"branch\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/cancel\":{\"post\":{\"operationId\":\"cancelSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"Cancelled\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deploys/{deploy_id}/restore\":{\"post\":{\"operationId\":\"restoreSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/builds\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteBuilds\",\"tags\":[\"build\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteBuild\",\"tags\":[\"build\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deployed-branches\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteDeployedBranches\",\"tags\":[\"deployedBranch\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/unlink_repo\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"put\":{\"operationId\":\"unlinkSiteRepo\",\"tags\":[\"site\"],\"description\":\"[Beta] Unlinks the repo from the site.\\n\\nThis action will also:\\n- Delete associated deploy keys\\n- Delete outgoing webhooks for the repo\\n- Delete the site's build hooks\",\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}}},\"404\":{\"description\":\"Site not found\"}}}},\"/builds/{build_id}\":{\"parameters\":[{\"name\":\"build_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteBuild\",\"tags\":[\"build\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/builds/{build_id}/log\":{\"parameters\":[{\"name\":\"build_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"msg\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\"},\"error\":{\"type\":\"boolean\"}}},\"required\":true}],\"post\":{\"operationId\":\"updateSiteBuildLog\",\"tags\":[\"buildLogMsg\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/builds/{build_id}/start\":{\"parameters\":[{\"name\":\"build_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"notifyBuildStart\",\"tags\":[\"build\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/dns\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDNSForSite\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"configureDNSForSite\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}\":{\"get\":{\"operationId\":\"getDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/lock\":{\"post\":{\"operationId\":\"lockDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/unlock\":{\"post\":{\"operationId\":\"unlockDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/files/{path}\":{\"put\":{\"operationId\":\"uploadDeployFile\",\"tags\":[\"file\"],\"consumes\":[\"application/octet-stream\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"path\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"size\",\"type\":\"integer\",\"in\":\"query\"},{\"name\":\"file_body\",\"in\":\"body\",\"schema\":{\"type\":\"string\",\"format\":\"binary\"},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/functions/{name}\":{\"put\":{\"operationId\":\"uploadDeployFunction\",\"tags\":[\"function\"],\"consumes\":[\"application/octet-stream\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"name\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"runtime\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"size\",\"type\":\"integer\",\"in\":\"query\"},{\"name\":\"file_body\",\"in\":\"body\",\"schema\":{\"type\":\"string\",\"format\":\"binary\"},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/plugin_runs\":{\"post\":{\"operationId\":\"createPluginRun\",\"tags\":[\"x-internal\"],\"description\":\"This is an internal-only endpoint.\",\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"plugin_run\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}}}],\"responses\":{\"201\":{\"description\":\"CREATED\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}},{\"type\":\"object\",\"properties\":{\"deploy_id\":{\"type\":\"string\"}}}]}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/forms\":{\"get\":{\"operationId\":\"listForms\",\"tags\":[\"form\"],\"parameters\":[{\"name\":\"site_id\",\"in\":\"query\",\"type\":\"string\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"submission_count\":{\"type\":\"integer\",\"format\":\"int32\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/forms/{form_id}/submissions\":{\"get\":{\"operationId\":\"listFormSubmissions\",\"tags\":[\"submission\"],\"parameters\":[{\"name\":\"form_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/hooks\":{\"get\":{\"operationId\":\"listHooksBySiteId\",\"tags\":[\"hook\"],\"parameters\":[{\"name\":\"site_id\",\"in\":\"query\",\"type\":\"string\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createHookBySiteId\",\"tags\":[\"hook\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"query\",\"required\":true},{\"name\":\"hook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/hooks/{hook_id}\":{\"parameters\":[{\"name\":\"hook_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getHook\",\"tags\":[\"hook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateHook\",\"tags\":[\"hook\"],\"parameters\":[{\"name\":\"hook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteHook\",\"tags\":[\"hook\"],\"responses\":{\"204\":{\"description\":\"No content\"}}}},\"/hooks/{hook_id}/enable\":{\"parameters\":[{\"name\":\"hook_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"enableHook\",\"tags\":[\"hook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/hooks/types\":{\"get\":{\"operationId\":\"listHookTypes\",\"tags\":[\"hookType\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/oauth/tickets\":{\"post\":{\"operationId\":\"createTicket\",\"tags\":[\"ticket\"],\"parameters\":[{\"name\":\"client_id\",\"type\":\"string\",\"in\":\"query\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"ok\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"authorized\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/oauth/tickets/{ticket_id}\":{\"get\":{\"operationId\":\"showTicket\",\"tags\":[\"ticket\"],\"parameters\":[{\"name\":\"ticket_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"ok\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"authorized\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/oauth/tickets/{ticket_id}/exchange\":{\"post\":{\"operationId\":\"exchangeTicket\",\"tags\":[\"accessToken\"],\"parameters\":[{\"name\":\"ticket_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"ok\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"access_token\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"user_email\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploy_keys\":{\"get\":{\"operationId\":\"listDeployKeys\",\"tags\":[\"deployKey\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createDeployKey\",\"tags\":[\"deployKey\"],\"consumes\":[\"application/json\"],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploy_keys/{key_id}\":{\"parameters\":[{\"name\":\"key_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDeployKey\",\"tags\":[\"deployKey\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteDeployKey\",\"tags\":[\"deployKey\"],\"responses\":{\"204\":{\"description\":\"Not Content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/{account_slug}/sites\":{\"post\":{\"operationId\":\"createSiteInTeam\",\"tags\":[\"site\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site\",\"in\":\"body\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]}},{\"name\":\"configure_dns\",\"type\":\"boolean\",\"in\":\"query\"},{\"name\":\"account_slug\",\"in\":\"path\",\"type\":\"string\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"listSitesForAccount\",\"tags\":[\"site\"],\"parameters\":[{\"name\":\"name\",\"in\":\"query\",\"type\":\"string\"},{\"name\":\"account_slug\",\"in\":\"path\",\"type\":\"string\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/{account_slug}/members\":{\"parameters\":[{\"name\":\"account_slug\",\"in\":\"path\",\"type\":\"string\",\"required\":true}],\"get\":{\"operationId\":\"listMembersForAccount\",\"tags\":[\"member\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"avatar\":{\"type\":\"string\"},\"role\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"addMemberToAccount\",\"tags\":[\"member\"],\"parameters\":[{\"name\":\"role\",\"in\":\"query\",\"type\":\"string\",\"enum\":[\"Owner\",\"Collaborator\",\"Controller\"]},{\"name\":\"email\",\"in\":\"query\",\"type\":\"string\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"avatar\":{\"type\":\"string\"},\"role\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/billing/payment_methods\":{\"get\":{\"operationId\":\"listPaymentMethodsForUser\",\"tags\":[\"paymentMethod\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"method_name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"data\":{\"type\":\"object\",\"properties\":{\"card_type\":{\"type\":\"string\"},\"last4\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts/types\":{\"get\":{\"operationId\":\"listAccountTypesForUser\",\"tags\":[\"accountType\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\"},\"monthly_dollar_price\":{\"type\":\"integer\"},\"yearly_dollar_price\":{\"type\":\"integer\"},\"monthly_seats_addon_dollar_price\":{\"type\":\"integer\"},\"yearly_seats_addon_dollar_price\":{\"type\":\"integer\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts\":{\"get\":{\"operationId\":\"listAccountsForUser\",\"tags\":[\"accountMembership\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createAccount\",\"tags\":[\"accountMembership\"],\"parameters\":[{\"name\":\"accountSetup\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"required\":[\"name\",\"type_id\"],\"properties\":{\"name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"period\":{\"type\":\"string\",\"enum\":[\"monthly\",\"yearly\"]},\"extra_seats_block\":{\"type\":\"integer\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts/{account_id}\":{\"parameters\":[{\"name\":\"account_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getAccount\",\"tags\":[\"accountMembership\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateAccount\",\"tags\":[\"accountMembership\"],\"parameters\":[{\"name\":\"accountUpdateSetup\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"extra_seats_block\":{\"type\":\"integer\"},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"}}}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"cancelAccount\",\"tags\":[\"accountMembership\"],\"responses\":{\"204\":{\"description\":\"Not Content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts/{account_id}/audit\":{\"parameters\":[{\"name\":\"account_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listAccountAuditEvents\",\"tags\":[\"auditLog\"],\"parameters\":[{\"name\":\"query\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"log_type\",\"type\":\"string\",\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"account_id\":{\"type\":\"string\"},\"payload\":{\"type\":\"object\",\"properties\":{\"actor_id\":{\"type\":\"string\"},\"actor_name\":{\"type\":\"string\"},\"actor_email\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"timestamp\":{\"type\":\"string\",\"format\":\"dateTime\"},\"log_type\":{\"type\":\"string\"}},\"additionalProperties\":{\"type\":\"object\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/submissions/{submission_id}\":{\"parameters\":[{\"name\":\"submission_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listFormSubmission\",\"tags\":[\"submission\"],\"parameters\":[{\"name\":\"query\",\"type\":\"string\",\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSubmission\",\"tags\":[\"submission\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/services/{addon}/instances\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"addon\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"createServiceInstance\",\"tags\":[\"serviceInstance\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"config\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\"}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/services/{addon}/instances/{instance_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"addon\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"instance_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"showServiceInstance\",\"tags\":[\"serviceInstance\"],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateServiceInstance\",\"tags\":[\"serviceInstance\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"config\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\"}}],\"responses\":{\"204\":{\"description\":\"Created\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteServiceInstance\",\"tags\":[\"serviceInstance\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/services/\":{\"parameters\":[{\"name\":\"search\",\"type\":\"string\",\"in\":\"query\"}],\"get\":{\"operationId\":\"getServices\",\"tags\":[\"service\"],\"responses\":{\"200\":{\"description\":\"services\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"long_description\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"icon\":{\"type\":\"string\"},\"manifest_url\":{\"type\":\"string\"},\"environments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/services/{addonName}\":{\"parameters\":[{\"name\":\"addonName\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"showService\",\"tags\":[\"service\"],\"responses\":{\"200\":{\"description\":\"services\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/services/{addonName}/manifest\":{\"parameters\":[{\"name\":\"addonName\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"showServiceManifest\",\"tags\":[\"service\"],\"responses\":{\"201\":{\"description\":\"retrieving from provider\",\"schema\":{\"type\":\"object\"}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/user\":{\"get\":{\"operationId\":\"getCurrentUser\",\"tags\":[\"user\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"uid\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"avatar_url\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"affiliate_id\":{\"type\":\"string\"},\"site_count\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"last_login\":{\"type\":\"string\",\"format\":\"dateTime\"},\"login_providers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"onboarding_progress\":{\"type\":\"object\",\"properties\":{\"slides\":{\"type\":\"string\"}}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"createSplitTest\",\"tags\":[\"splitTest\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"branch_tests\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"branch_tests\":{\"type\":\"object\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"getSplitTests\",\"tags\":[\"splitTest\"],\"responses\":{\"200\":{\"description\":\"split_tests\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits/{split_test_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"split_test_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"put\":{\"operationId\":\"updateSplitTest\",\"tags\":[\"splitTest\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"branch_tests\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"branch_tests\":{\"type\":\"object\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"getSplitTest\",\"tags\":[\"splitTest\"],\"responses\":{\"200\":{\"description\":\"split_test\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits/{split_test_id}/publish\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"split_test_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"enableSplitTest\",\"tags\":[\"splitTest\"],\"responses\":{\"204\":{\"description\":\"enable\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits/{split_test_id}/unpublish\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"split_test_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"disableSplitTest\",\"tags\":[\"splitTest\"],\"responses\":{\"204\":{\"description\":\"disabled\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones\":{\"post\":{\"operationId\":\"createDnsZone\",\"tags\":[\"dnsZone\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"DnsZoneParams\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"account_slug\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"getDnsZones\",\"tags\":[\"dnsZone\"],\"parameters\":[{\"name\":\"account_slug\",\"in\":\"query\",\"type\":\"string\",\"required\":false}],\"responses\":{\"200\":{\"description\":\"get all DNS zones the user has access to\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDnsZone\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"get a single DNS zone\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteDnsZone\",\"tags\":[\"dnsZone\"],\"responses\":{\"204\":{\"description\":\"delete a single DNS zone\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}/transfer\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"account_id\",\"type\":\"string\",\"in\":\"query\",\"description\":\"the account of the dns zone\",\"required\":true},{\"name\":\"transfer_account_id\",\"type\":\"string\",\"in\":\"query\",\"description\":\"the account you want to transfer the dns zone to\",\"required\":true},{\"name\":\"transfer_user_id\",\"type\":\"string\",\"in\":\"query\",\"description\":\"the user you want to transfer the dns zone to\",\"required\":true}],\"put\":{\"operationId\":\"transferDnsZone\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"transfer a DNS zone to another account\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}/dns_records\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDnsRecords\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"get all DNS records for a single DNS zone\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createDnsRecord\",\"tags\":[\"dnsZone\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"dns_record\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"weight\":{\"type\":\"integer\",\"format\":\"int64\"},\"port\":{\"type\":\"integer\",\"format\":\"int64\"},\"flag\":{\"type\":\"integer\",\"format\":\"int64\"},\"tag\":{\"type\":\"string\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}/dns_records/{dns_record_id}\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"dns_record_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getIndividualDnsRecord\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"get a single DNS record\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteDnsRecord\",\"tags\":[\"dnsZone\"],\"responses\":{\"204\":{\"description\":\"record deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}}},\"definitions\":{\"splitTestSetup\":{\"type\":\"object\",\"properties\":{\"branch_tests\":{\"type\":\"object\"}}},\"splitTests\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"splitTest\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"serviceInstance\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"service\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"long_description\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"icon\":{\"type\":\"string\"},\"manifest_url\":{\"type\":\"string\"},\"environments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"site\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}},\"siteSetup\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]},\"repoInfo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"submission\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}},\"form\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"submission_count\":{\"type\":\"integer\",\"format\":\"int32\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"hookType\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"hook\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}},\"file\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}},\"function\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"}}},\"snippet\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}},\"deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"deployFiles\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"object\"},\"draft\":{\"type\":\"boolean\"},\"async\":{\"type\":\"boolean\"},\"functions\":{\"type\":\"object\"},\"branch\":{\"type\":\"string\"}}},\"build\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"buildLogMsg\":{\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\"},\"error\":{\"type\":\"boolean\"}}},\"pluginRunData\":{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}},\"pluginRun\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}},{\"type\":\"object\",\"properties\":{\"deploy_id\":{\"type\":\"string\"}}}]},\"metadata\":{\"type\":\"object\"},\"dnsZoneSetup\":{\"type\":\"object\",\"properties\":{\"account_slug\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}}},\"dnsZones\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"dnsZone\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}},\"dnsRecordCreate\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"weight\":{\"type\":\"integer\",\"format\":\"int64\"},\"port\":{\"type\":\"integer\",\"format\":\"int64\"},\"flag\":{\"type\":\"integer\",\"format\":\"int64\"},\"tag\":{\"type\":\"string\"}}},\"dnsRecords\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dnsRecord\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}},\"sniCertificate\":{\"type\":\"object\",\"properties\":{\"state\":{\"type\":\"string\"},\"domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"expires_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"ticket\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"authorized\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"accessToken\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"access_token\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"user_email\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"asset\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"assetForm\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"fields\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}}}},\"assetSignature\":{\"type\":\"object\",\"properties\":{\"form\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"fields\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}}}},\"asset\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"assetPublicSignature\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"}}},\"deployKey\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"member\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"avatar\":{\"type\":\"string\"},\"role\":{\"type\":\"string\"}}},\"paymentMethod\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"method_name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"data\":{\"type\":\"object\",\"properties\":{\"card_type\":{\"type\":\"string\"},\"last4\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"accountType\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\"},\"monthly_dollar_price\":{\"type\":\"integer\"},\"yearly_dollar_price\":{\"type\":\"integer\"},\"monthly_seats_addon_dollar_price\":{\"type\":\"integer\"},\"yearly_seats_addon_dollar_price\":{\"type\":\"integer\"}}},\"accountSetup\":{\"type\":\"object\",\"required\":[\"name\",\"type_id\"],\"properties\":{\"name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"period\":{\"type\":\"string\",\"enum\":[\"monthly\",\"yearly\"]},\"extra_seats_block\":{\"type\":\"integer\"}}},\"accountUpdateSetup\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"extra_seats_block\":{\"type\":\"integer\"},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"}}},\"accountMembership\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"auditLog\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"account_id\":{\"type\":\"string\"},\"payload\":{\"type\":\"object\",\"properties\":{\"actor_id\":{\"type\":\"string\"},\"actor_name\":{\"type\":\"string\"},\"actor_email\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"timestamp\":{\"type\":\"string\",\"format\":\"dateTime\"},\"log_type\":{\"type\":\"string\"}},\"additionalProperties\":{\"type\":\"object\"}}}},\"accountUsageCapability\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"minifyOptions\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"buildHook\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"deployedBranch\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"}}},\"user\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"uid\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"avatar_url\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"affiliate_id\":{\"type\":\"string\"},\"site_count\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"last_login\":{\"type\":\"string\",\"format\":\"dateTime\"},\"login_providers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"onboarding_progress\":{\"type\":\"object\",\"properties\":{\"slides\":{\"type\":\"string\"}}}}},\"error\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}},\"x-tagGroups\":[{\"name\":\"OAuth\",\"tags\":[\"ticket\",\"accessToken\"]},{\"name\":\"User accounts\",\"tags\":[\"user\",\"accountMembership\",\"member\",\"accountType\",\"paymentMethod\",\"auditLog\"]},{\"name\":\"Site\",\"tags\":[\"site\",\"file\",\"metadata\",\"snippet\"]},{\"name\":\"Domain names\",\"tags\":[\"dnsZone\",\"sniCertificate\"]},{\"name\":\"Deploys\",\"tags\":[\"deploy\",\"deployedBranch\",\"deployKey\"]},{\"name\":\"Builds\",\"tags\":[\"build\",\"buildLogMsg\"]},{\"name\":\"Webhooks and notifications\",\"tags\":[\"hook\",\"hookType\",\"buildHook\"]},{\"name\":\"Services\",\"tags\":[\"service\",\"serviceInstance\"]},{\"name\":\"Functions\",\"tags\":[\"function\"]},{\"name\":\"Forms\",\"tags\":[\"form\",\"submission\"]},{\"name\":\"Split tests\",\"tags\":[\"splitTest\"]},{\"name\":\"Large media\",\"tags\":[\"asset\",\"assetPublicSignature\"]}],\"tags\":[{\"name\":\"ticket\",\"x-displayName\":\"Ticket\"},{\"name\":\"accessToken\",\"x-displayName\":\"Access token\"},{\"name\":\"user\",\"x-displayName\":\"User\"},{\"name\":\"accountMembership\",\"x-displayName\":\"Accounts\"},{\"name\":\"member\",\"x-displayName\":\"Member\"},{\"name\":\"accountType\",\"x-displayName\":\"Access type\"},{\"name\":\"paymentMethod\",\"x-displayName\":\"Payment method\"},{\"name\":\"auditLog\",\"x-displayName\":\"Audit log\"},{\"name\":\"site\",\"x-displayName\":\"Site\"},{\"name\":\"file\",\"x-displayName\":\"File\"},{\"name\":\"metadata\",\"x-displayName\":\"Metadata\"},{\"name\":\"snippet\",\"x-displayName\":\"Snippet\"},{\"name\":\"dnsZone\",\"x-displayName\":\"DNS zone\"},{\"name\":\"sniCertificate\",\"x-displayName\":\"SNI certificate\"},{\"name\":\"deploy\",\"x-displayName\":\"Deploy\"},{\"name\":\"deployedBranch\",\"x-displayName\":\"Deployed branch\"},{\"name\":\"deployKey\",\"x-displayName\":\"Deploy key\"},{\"name\":\"build\",\"x-displayName\":\"Build\"},{\"name\":\"buildLogMsg\",\"x-displayName\":\"Build log message\"},{\"name\":\"hook\",\"x-displayName\":\"Hook\"},{\"name\":\"hookType\",\"x-displayName\":\"Hook type\"},{\"name\":\"buildHook\",\"x-displayName\":\"Build hook\"},{\"name\":\"service\",\"x-displayName\":\"Service\"},{\"name\":\"serviceInstance\",\"x-displayName\":\"Service instance\"},{\"name\":\"function\",\"x-displayName\":\"Function\"},{\"name\":\"form\",\"x-displayName\":\"Form\"},{\"name\":\"submission\",\"x-displayName\":\"Form submission\"},{\"name\":\"splitTest\",\"x-displayName\":\"Split test\"},{\"name\":\"asset\",\"x-displayName\":\"Asset\"},{\"name\":\"assetPublicSignature\",\"x-displayName\":\"Asset public signature\"}]}"); - -/***/ }), - -/***/ 63494: -/***/ ((module) => { - -"use strict"; -module.exports = JSON.parse("{\"assert\":true,\"async_hooks\":\">= 8\",\"buffer_ieee754\":\"< 0.9.7\",\"buffer\":true,\"child_process\":true,\"cluster\":true,\"console\":true,\"constants\":true,\"crypto\":true,\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"dns\":true,\"domain\":true,\"events\":true,\"freelist\":\"< 6\",\"fs\":true,\"fs/promises\":\">= 10 && < 10.1\",\"_http_agent\":\">= 0.11.1\",\"_http_client\":\">= 0.11.1\",\"_http_common\":\">= 0.11.1\",\"_http_incoming\":\">= 0.11.1\",\"_http_outgoing\":\">= 0.11.1\",\"_http_server\":\">= 0.11.1\",\"http\":true,\"http2\":\">= 8.8\",\"https\":true,\"inspector\":\">= 8.0.0\",\"_linklist\":\"< 8\",\"module\":true,\"net\":true,\"node-inspect/lib/_inspect\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6.0 && < 12\",\"os\":true,\"path\":true,\"perf_hooks\":\">= 8.5\",\"process\":\">= 1\",\"punycode\":true,\"querystring\":true,\"readline\":true,\"repl\":true,\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"_stream_transform\":\">= 0.9.4\",\"_stream_wrap\":\">= 1.4.1\",\"_stream_passthrough\":\">= 0.9.4\",\"_stream_readable\":\">= 0.9.4\",\"_stream_writable\":\">= 0.9.4\",\"stream\":true,\"string_decoder\":true,\"sys\":true,\"timers\":true,\"_tls_common\":\">= 0.11.13\",\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"tls\":true,\"trace_events\":\">= 10\",\"tty\":true,\"url\":true,\"util\":true,\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/consarray\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/logreader\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8\":\">= 1\",\"vm\":true,\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"zlib\":true}"); +module.exports = JSON.parse("{\"swagger\":\"2.0\",\"info\":{\"version\":\"1.3.0\",\"title\":\"Netlify's API documentation\",\"description\":\"Netlify is a hosting service for the programmable web. It understands your documents and provides an API to handle atomic deploys of websites, manage form submissions, inject JavaScript snippets, and much more. This is a REST-style API that uses JSON for serialization and OAuth 2 for authentication.\\n\\nThis document is an OpenAPI reference for the Netlify API that you can explore. For more detailed instructions for common uses, please visit the [online documentation](https://www.netlify.com/docs/api/). Visit our Community forum to join the conversation about [understanding and using Netlify’s API](https://community.netlify.com/t/common-issue-understanding-and-using-netlifys-api/160).\\n\\nAdditionally, we have two API clients for your convenience:\\n- [Go Client](https://github.com/netlify/open-api#go-client)\\n- [JS Client](https://github.com/netlify/js-client)\",\"termsOfService\":\"https://www.netlify.com/legal/terms-of-use/\",\"x-logo\":{\"url\":\"netlify-logo.png\",\"href\":\"https://www.netlify.com/docs/\",\"altText\":\"Netlify\"}},\"externalDocs\":{\"url\":\"https://www.netlify.com/docs/api/\",\"description\":\"Online documentation\"},\"securityDefinitions\":{\"netlifyAuth\":{\"type\":\"oauth2\",\"flow\":\"implicit\",\"authorizationUrl\":\"https://app.netlify.com/authorize\"}},\"security\":[{\"netlifyAuth\":[]}],\"consumes\":[\"application/json\"],\"produces\":[\"application/json\"],\"schemes\":[\"https\"],\"responses\":{\"error\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}},\"host\":\"api.netlify.com\",\"basePath\":\"/api/v1\",\"paths\":{\"/sites\":{\"get\":{\"operationId\":\"listSites\",\"tags\":[\"site\"],\"parameters\":[{\"name\":\"name\",\"in\":\"query\",\"type\":\"string\"},{\"name\":\"filter\",\"in\":\"query\",\"type\":\"string\",\"enum\":[\"all\",\"owner\",\"guest\"]},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSite\",\"tags\":[\"site\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site\",\"in\":\"body\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]},\"required\":true},{\"name\":\"configure_dns\",\"type\":\"boolean\",\"in\":\"query\"}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSite\",\"tags\":[\"site\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"patch\":{\"operationId\":\"updateSite\",\"tags\":[\"site\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site\",\"in\":\"body\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSite\",\"tags\":[\"site\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/ssl\":{\"post\":{\"operationId\":\"provisionSiteTLSCertificate\",\"tags\":[\"sniCertificate\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"certificate\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"key\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"ca_certificates\",\"type\":\"string\",\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"state\":{\"type\":\"string\"},\"domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"expires_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"showSiteTLSCertificate\",\"tags\":[\"sniCertificate\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"state\":{\"type\":\"string\"},\"domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"expires_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/forms\":{\"get\":{\"operationId\":\"listSiteForms\",\"tags\":[\"form\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"submission_count\":{\"type\":\"integer\",\"format\":\"int32\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/forms/{form_id}\":{\"delete\":{\"operationId\":\"deleteSiteForm\",\"tags\":[\"form\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"form_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/submissions\":{\"get\":{\"operationId\":\"listSiteSubmissions\",\"tags\":[\"submission\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/files\":{\"get\":{\"operationId\":\"listSiteFiles\",\"tags\":[\"file\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/assets\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteAssets\",\"tags\":[\"asset\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteAsset\",\"tags\":[\"asset\"],\"parameters\":[{\"name\":\"name\",\"type\":\"string\",\"in\":\"query\",\"required\":true},{\"name\":\"size\",\"type\":\"integer\",\"format\":\"int64\",\"in\":\"query\",\"required\":true},{\"name\":\"content_type\",\"type\":\"string\",\"in\":\"query\",\"required\":true},{\"name\":\"visibility\",\"type\":\"string\",\"in\":\"query\"}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"form\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"fields\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}}}},\"asset\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/assets/{asset_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"asset_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteAssetInfo\",\"tags\":[\"asset\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteAsset\",\"tags\":[\"asset\"],\"parameters\":[{\"name\":\"state\",\"type\":\"string\",\"in\":\"query\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"Updated\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSiteAsset\",\"tags\":[\"asset\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/assets/{asset_id}/public_signature\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"asset_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteAssetPublicSignature\",\"tags\":[\"assetPublicSignature\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/files/{file_path}\":{\"get\":{\"operationId\":\"getSiteFileByPathName\",\"tags\":[\"file\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"file_path\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/snippets\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteSnippets\",\"tags\":[\"snippet\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteSnippet\",\"tags\":[\"snippet\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"snippet\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/snippets/{snippet_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"snippet_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteSnippet\",\"tags\":[\"snippet\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteSnippet\",\"tags\":[\"snippet\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"snippet\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSiteSnippet\",\"tags\":[\"snippet\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/metadata\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteMetadata\",\"tags\":[\"metadata\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\"}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteMetadata\",\"tags\":[\"metadata\"],\"parameters\":[{\"name\":\"metadata\",\"in\":\"body\",\"schema\":{\"type\":\"object\"},\"required\":true}],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/build_hooks\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteBuildHooks\",\"tags\":[\"buildHook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteBuildHook\",\"tags\":[\"buildHook\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"buildHook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/build_hooks/{id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteBuildHook\",\"tags\":[\"buildHook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteBuildHook\",\"tags\":[\"buildHook\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"buildHook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSiteBuildHook\",\"tags\":[\"buildHook\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deploys\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteDeploys\",\"tags\":[\"deploy\"],\"parameters\":[{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"title\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"deploy\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"object\"},\"draft\":{\"type\":\"boolean\"},\"async\":{\"type\":\"boolean\"},\"functions\":{\"type\":\"object\"},\"branch\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deploys/{deploy_id}\":{\"get\":{\"operationId\":\"getSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"object\"},\"draft\":{\"type\":\"boolean\"},\"async\":{\"type\":\"boolean\"},\"functions\":{\"type\":\"object\"},\"branch\":{\"type\":\"string\"}}},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/cancel\":{\"post\":{\"operationId\":\"cancelSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"Cancelled\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deploys/{deploy_id}/restore\":{\"post\":{\"operationId\":\"restoreSiteDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/builds\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteBuilds\",\"tags\":[\"build\"],\"parameters\":[{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createSiteBuild\",\"tags\":[\"build\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/deployed-branches\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listSiteDeployedBranches\",\"tags\":[\"deployedBranch\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/unlink_repo\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"put\":{\"operationId\":\"unlinkSiteRepo\",\"tags\":[\"site\"],\"description\":\"[Beta] Unlinks the repo from the site.\\n\\nThis action will also:\\n- Delete associated deploy keys\\n- Delete outgoing webhooks for the repo\\n- Delete the site's build hooks\",\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}}},\"404\":{\"description\":\"Site not found\"}}}},\"/builds/{build_id}\":{\"parameters\":[{\"name\":\"build_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getSiteBuild\",\"tags\":[\"build\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/builds/{build_id}/log\":{\"parameters\":[{\"name\":\"build_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"msg\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\"},\"error\":{\"type\":\"boolean\"}}},\"required\":true}],\"post\":{\"operationId\":\"updateSiteBuildLog\",\"tags\":[\"buildLogMsg\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/builds/{build_id}/start\":{\"parameters\":[{\"name\":\"build_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"notifyBuildStart\",\"tags\":[\"build\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/{account_id}/builds/status\":{\"parameters\":[{\"name\":\"account_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getAccountBuildStatus\",\"tags\":[\"build\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"active\":{\"type\":\"integer\"},\"pending_concurrency\":{\"type\":\"integer\"},\"enqueued\":{\"type\":\"integer\"},\"build_count\":{\"type\":\"integer\"},\"minutes\":{\"type\":\"object\",\"properties\":{\"current\":{\"type\":\"integer\"},\"current_average_sec\":{\"type\":\"integer\"},\"previous\":{\"type\":\"integer\"},\"period_start_date\":{\"type\":\"string\",\"format\":\"dateTime\"},\"period_end_date\":{\"type\":\"string\",\"format\":\"dateTime\"},\"last_updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"included_minutes\":{\"type\":\"string\"},\"included_minutes_with_packs\":{\"type\":\"string\"}}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/dns\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDNSForSite\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"configureDNSForSite\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/rollback\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"rollbackSiteDeploy\",\"tags\":[\"deploy\"],\"responses\":{\"204\":{\"description\":\"No content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}\":{\"get\":{\"operationId\":\"getDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/lock\":{\"post\":{\"operationId\":\"lockDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/unlock\":{\"post\":{\"operationId\":\"unlockDeploy\",\"tags\":[\"deploy\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/files/{path}\":{\"put\":{\"operationId\":\"uploadDeployFile\",\"tags\":[\"file\"],\"consumes\":[\"application/octet-stream\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"path\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"size\",\"type\":\"integer\",\"in\":\"query\"},{\"name\":\"file_body\",\"in\":\"body\",\"schema\":{\"type\":\"string\",\"format\":\"binary\"},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/functions/{name}\":{\"put\":{\"operationId\":\"uploadDeployFunction\",\"tags\":[\"function\"],\"consumes\":[\"application/octet-stream\"],\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"name\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"runtime\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"size\",\"type\":\"integer\",\"in\":\"query\"},{\"name\":\"file_body\",\"in\":\"body\",\"schema\":{\"type\":\"string\",\"format\":\"binary\"},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploys/{deploy_id}/plugin_runs\":{\"post\":{\"operationId\":\"createPluginRun\",\"tags\":[\"x-internal\"],\"description\":\"This is an internal-only endpoint.\",\"parameters\":[{\"name\":\"deploy_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"plugin_run\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}}}],\"responses\":{\"201\":{\"description\":\"CREATED\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}},{\"type\":\"object\",\"properties\":{\"deploy_id\":{\"type\":\"string\"}}}]}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/forms/{form_id}/submissions\":{\"get\":{\"operationId\":\"listFormSubmissions\",\"tags\":[\"submission\"],\"parameters\":[{\"name\":\"form_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/hooks\":{\"get\":{\"operationId\":\"listHooksBySiteId\",\"tags\":[\"hook\"],\"parameters\":[{\"name\":\"site_id\",\"in\":\"query\",\"type\":\"string\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createHookBySiteId\",\"tags\":[\"hook\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"query\",\"required\":true},{\"name\":\"hook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/hooks/{hook_id}\":{\"parameters\":[{\"name\":\"hook_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getHook\",\"tags\":[\"hook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateHook\",\"tags\":[\"hook\"],\"parameters\":[{\"name\":\"hook\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}},\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteHook\",\"tags\":[\"hook\"],\"responses\":{\"204\":{\"description\":\"No content\"}}}},\"/hooks/{hook_id}/enable\":{\"parameters\":[{\"name\":\"hook_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"enableHook\",\"tags\":[\"hook\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/hooks/types\":{\"get\":{\"operationId\":\"listHookTypes\",\"tags\":[\"hookType\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/oauth/tickets\":{\"post\":{\"operationId\":\"createTicket\",\"tags\":[\"ticket\"],\"parameters\":[{\"name\":\"client_id\",\"type\":\"string\",\"in\":\"query\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"ok\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"authorized\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/oauth/tickets/{ticket_id}\":{\"get\":{\"operationId\":\"showTicket\",\"tags\":[\"ticket\"],\"parameters\":[{\"name\":\"ticket_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"ok\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"authorized\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/oauth/tickets/{ticket_id}/exchange\":{\"post\":{\"operationId\":\"exchangeTicket\",\"tags\":[\"accessToken\"],\"parameters\":[{\"name\":\"ticket_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"ok\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"access_token\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"user_email\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploy_keys\":{\"get\":{\"operationId\":\"listDeployKeys\",\"tags\":[\"deployKey\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createDeployKey\",\"tags\":[\"deployKey\"],\"consumes\":[\"application/json\"],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/deploy_keys/{key_id}\":{\"parameters\":[{\"name\":\"key_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDeployKey\",\"tags\":[\"deployKey\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteDeployKey\",\"tags\":[\"deployKey\"],\"responses\":{\"204\":{\"description\":\"Not Content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/{account_slug}/sites\":{\"post\":{\"operationId\":\"createSiteInTeam\",\"tags\":[\"site\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"site\",\"in\":\"body\",\"schema\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]}},{\"name\":\"configure_dns\",\"type\":\"boolean\",\"in\":\"query\"},{\"name\":\"account_slug\",\"in\":\"path\",\"type\":\"string\",\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"listSitesForAccount\",\"tags\":[\"site\"],\"parameters\":[{\"name\":\"name\",\"in\":\"query\",\"type\":\"string\"},{\"name\":\"account_slug\",\"in\":\"path\",\"type\":\"string\",\"required\":true},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/{account_slug}/members\":{\"parameters\":[{\"name\":\"account_slug\",\"in\":\"path\",\"type\":\"string\",\"required\":true}],\"get\":{\"operationId\":\"listMembersForAccount\",\"tags\":[\"member\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"avatar\":{\"type\":\"string\"},\"role\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"addMemberToAccount\",\"tags\":[\"member\"],\"parameters\":[{\"name\":\"role\",\"in\":\"query\",\"type\":\"string\",\"enum\":[\"Owner\",\"Collaborator\",\"Controller\"]},{\"name\":\"email\",\"in\":\"query\",\"type\":\"string\",\"required\":true}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"avatar\":{\"type\":\"string\"},\"role\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/billing/payment_methods\":{\"get\":{\"operationId\":\"listPaymentMethodsForUser\",\"tags\":[\"paymentMethod\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"method_name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"data\":{\"type\":\"object\",\"properties\":{\"card_type\":{\"type\":\"string\"},\"last4\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts/types\":{\"get\":{\"operationId\":\"listAccountTypesForUser\",\"tags\":[\"accountType\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\"},\"monthly_dollar_price\":{\"type\":\"integer\"},\"yearly_dollar_price\":{\"type\":\"integer\"},\"monthly_seats_addon_dollar_price\":{\"type\":\"integer\"},\"yearly_seats_addon_dollar_price\":{\"type\":\"integer\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts\":{\"get\":{\"operationId\":\"listAccountsForUser\",\"tags\":[\"accountMembership\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createAccount\",\"tags\":[\"accountMembership\"],\"parameters\":[{\"name\":\"accountSetup\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"required\":[\"name\",\"type_id\"],\"properties\":{\"name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"period\":{\"type\":\"string\",\"enum\":[\"monthly\",\"yearly\"]},\"extra_seats_block\":{\"type\":\"integer\"}}},\"required\":true}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts/{account_id}\":{\"parameters\":[{\"name\":\"account_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getAccount\",\"tags\":[\"accountMembership\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateAccount\",\"tags\":[\"accountMembership\"],\"parameters\":[{\"name\":\"accountUpdateSetup\",\"in\":\"body\",\"schema\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"extra_seats_block\":{\"type\":\"integer\"},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"}}}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"cancelAccount\",\"tags\":[\"accountMembership\"],\"responses\":{\"204\":{\"description\":\"Not Content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/accounts/{account_id}/audit\":{\"parameters\":[{\"name\":\"account_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listAccountAuditEvents\",\"tags\":[\"auditLog\"],\"parameters\":[{\"name\":\"query\",\"type\":\"string\",\"in\":\"query\"},{\"name\":\"log_type\",\"type\":\"string\",\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"account_id\":{\"type\":\"string\"},\"payload\":{\"type\":\"object\",\"properties\":{\"actor_id\":{\"type\":\"string\"},\"actor_name\":{\"type\":\"string\"},\"actor_email\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"timestamp\":{\"type\":\"string\",\"format\":\"dateTime\"},\"log_type\":{\"type\":\"string\"}},\"additionalProperties\":{\"type\":\"object\"}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/submissions/{submission_id}\":{\"parameters\":[{\"name\":\"submission_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listFormSubmission\",\"tags\":[\"submission\"],\"parameters\":[{\"name\":\"query\",\"type\":\"string\",\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteSubmission\",\"tags\":[\"submission\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/service-instances\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"listServiceInstancesForSite\",\"tags\":[\"serviceInstance\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/services/{addon}/instances\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"addon\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"createServiceInstance\",\"tags\":[\"serviceInstance\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"config\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\"}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/services/{addon}/instances/{instance_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"addon\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"instance_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"showServiceInstance\",\"tags\":[\"serviceInstance\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"put\":{\"operationId\":\"updateServiceInstance\",\"tags\":[\"serviceInstance\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"config\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\"}}],\"responses\":{\"204\":{\"description\":\"No Content\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteServiceInstance\",\"tags\":[\"serviceInstance\"],\"responses\":{\"204\":{\"description\":\"Deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/services/\":{\"parameters\":[{\"name\":\"search\",\"type\":\"string\",\"in\":\"query\"}],\"get\":{\"operationId\":\"getServices\",\"tags\":[\"service\"],\"responses\":{\"200\":{\"description\":\"services\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"long_description\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"icon\":{\"type\":\"string\"},\"manifest_url\":{\"type\":\"string\"},\"environments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/services/{addonName}\":{\"parameters\":[{\"name\":\"addonName\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"showService\",\"tags\":[\"service\"],\"responses\":{\"200\":{\"description\":\"services\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"long_description\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"icon\":{\"type\":\"string\"},\"manifest_url\":{\"type\":\"string\"},\"environments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/services/{addonName}/manifest\":{\"parameters\":[{\"name\":\"addonName\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"showServiceManifest\",\"tags\":[\"service\"],\"responses\":{\"201\":{\"description\":\"retrieving from provider\",\"schema\":{\"type\":\"object\"}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/user\":{\"get\":{\"operationId\":\"getCurrentUser\",\"tags\":[\"user\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"uid\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"avatar_url\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"affiliate_id\":{\"type\":\"string\"},\"site_count\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"last_login\":{\"type\":\"string\",\"format\":\"dateTime\"},\"login_providers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"onboarding_progress\":{\"type\":\"object\",\"properties\":{\"slides\":{\"type\":\"string\"}}}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"createSplitTest\",\"tags\":[\"splitTest\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"branch_tests\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"branch_tests\":{\"type\":\"object\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"getSplitTests\",\"tags\":[\"splitTest\"],\"responses\":{\"200\":{\"description\":\"split_tests\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits/{split_test_id}\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"split_test_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"put\":{\"operationId\":\"updateSplitTest\",\"tags\":[\"splitTest\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"branch_tests\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"branch_tests\":{\"type\":\"object\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"getSplitTest\",\"tags\":[\"splitTest\"],\"responses\":{\"200\":{\"description\":\"split_test\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits/{split_test_id}/publish\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"split_test_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"enableSplitTest\",\"tags\":[\"splitTest\"],\"responses\":{\"204\":{\"description\":\"enable\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/sites/{site_id}/traffic_splits/{split_test_id}/unpublish\":{\"parameters\":[{\"name\":\"site_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"split_test_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"post\":{\"operationId\":\"disableSplitTest\",\"tags\":[\"splitTest\"],\"responses\":{\"204\":{\"description\":\"disabled\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones\":{\"post\":{\"operationId\":\"createDnsZone\",\"tags\":[\"dnsZone\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"DnsZoneParams\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"account_slug\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"get\":{\"operationId\":\"getDnsZones\",\"tags\":[\"dnsZone\"],\"parameters\":[{\"name\":\"account_slug\",\"in\":\"query\",\"type\":\"string\",\"required\":false}],\"responses\":{\"200\":{\"description\":\"get all DNS zones the user has access to\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDnsZone\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"get a single DNS zone\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteDnsZone\",\"tags\":[\"dnsZone\"],\"responses\":{\"204\":{\"description\":\"delete a single DNS zone\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}/transfer\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"account_id\",\"type\":\"string\",\"in\":\"query\",\"description\":\"the account of the dns zone\",\"required\":true},{\"name\":\"transfer_account_id\",\"type\":\"string\",\"in\":\"query\",\"description\":\"the account you want to transfer the dns zone to\",\"required\":true},{\"name\":\"transfer_user_id\",\"type\":\"string\",\"in\":\"query\",\"description\":\"the user you want to transfer the dns zone to\",\"required\":true}],\"put\":{\"operationId\":\"transferDnsZone\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"transfer a DNS zone to another account\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}/dns_records\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getDnsRecords\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"get all DNS records for a single DNS zone\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"post\":{\"operationId\":\"createDnsRecord\",\"tags\":[\"dnsZone\"],\"consumes\":[\"application/json\"],\"parameters\":[{\"name\":\"dns_record\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"weight\":{\"type\":\"integer\",\"format\":\"int64\"},\"port\":{\"type\":\"integer\",\"format\":\"int64\"},\"flag\":{\"type\":\"integer\",\"format\":\"int64\"},\"tag\":{\"type\":\"string\"}}}}],\"responses\":{\"201\":{\"description\":\"Created\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}},\"/dns_zones/{zone_id}/dns_records/{dns_record_id}\":{\"parameters\":[{\"name\":\"zone_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true},{\"name\":\"dns_record_id\",\"type\":\"string\",\"in\":\"path\",\"required\":true}],\"get\":{\"operationId\":\"getIndividualDnsRecord\",\"tags\":[\"dnsZone\"],\"responses\":{\"200\":{\"description\":\"get a single DNS record\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}},\"delete\":{\"operationId\":\"deleteDnsRecord\",\"tags\":[\"dnsZone\"],\"responses\":{\"204\":{\"description\":\"record deleted\"},\"default\":{\"description\":\"error\",\"schema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}}}}}},\"definitions\":{\"splitTestSetup\":{\"type\":\"object\",\"properties\":{\"branch_tests\":{\"type\":\"object\"}}},\"splitTests\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}},\"splitTest\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"branches\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"active\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"unpublished_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"serviceInstance\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"external_attributes\":{\"type\":\"object\"},\"service_slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"env\":{\"type\":\"object\"},\"snippets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"auth_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"service\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"service_path\":{\"type\":\"string\"},\"long_description\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"icon\":{\"type\":\"string\"},\"manifest_url\":{\"type\":\"string\"},\"environments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"site\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}},\"siteSetup\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"plan\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"custom_domain\":{\"type\":\"string\"},\"domain_aliases\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"password\":{\"type\":\"string\"},\"notification_email\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"user_id\":{\"type\":\"string\"},\"session_id\":{\"type\":\"string\"},\"ssl\":{\"type\":\"boolean\"},\"force_ssl\":{\"type\":\"boolean\"},\"managed_dns\":{\"type\":\"boolean\"},\"deploy_url\":{\"type\":\"string\"},\"published_deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"account_name\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"git_provider\":{\"type\":\"string\"},\"deploy_hook\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"processing_settings\":{\"type\":\"object\",\"properties\":{\"skip\":{\"type\":\"boolean\"},\"css\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"js\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"images\":{\"type\":\"object\",\"properties\":{\"optimize\":{\"type\":\"boolean\"}}},\"html\":{\"type\":\"object\",\"properties\":{\"pretty_urls\":{\"type\":\"boolean\"}}}}},\"build_settings\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"id_domain\":{\"type\":\"string\"},\"default_hooks_data\":{\"type\":\"object\",\"properties\":{\"access_token\":{\"type\":\"string\"}}},\"build_image\":{\"type\":\"string\"},\"prerender\":{\"type\":\"string\"}}},{\"properties\":{\"repo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}}}}]},\"repoInfo\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"provider\":{\"type\":\"string\"},\"deploy_key_id\":{\"type\":\"string\"},\"repo_path\":{\"type\":\"string\"},\"repo_branch\":{\"type\":\"string\"},\"dir\":{\"type\":\"string\"},\"cmd\":{\"type\":\"string\"},\"allowed_branches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"public_repo\":{\"type\":\"boolean\"},\"private_logs\":{\"type\":\"boolean\"},\"repo_url\":{\"type\":\"string\"},\"env\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"installation_id\":{\"type\":\"integer\"},\"stop_builds\":{\"type\":\"boolean\"}}},\"submission\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"email\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"company\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"site_url\":{\"type\":\"string\"}}},\"form\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"submission_count\":{\"type\":\"integer\",\"format\":\"int32\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"hookType\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"hook\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"event\":{\"type\":\"string\"},\"data\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"disabled\":{\"type\":\"boolean\"}}},\"file\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"mime_type\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"}}},\"function\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"}}},\"snippet\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int32\"},\"site_id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"general\":{\"type\":\"string\"},\"general_position\":{\"type\":\"string\"},\"goal\":{\"type\":\"string\"},\"goal_position\":{\"type\":\"string\"}}},\"deploy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"build_id\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"},\"admin_url\":{\"type\":\"string\"},\"deploy_url\":{\"type\":\"string\"},\"deploy_ssl_url\":{\"type\":\"string\"},\"screenshot_url\":{\"type\":\"string\"},\"review_id\":{\"type\":\"number\"},\"draft\":{\"type\":\"boolean\"},\"required\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"required_functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"error_message\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"commit_ref\":{\"type\":\"string\"},\"commit_url\":{\"type\":\"string\"},\"skipped\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"published_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"title\":{\"type\":\"string\"},\"context\":{\"type\":\"string\"},\"locked\":{\"type\":\"boolean\"},\"review_url\":{\"type\":\"string\"},\"site_capabilities\":{\"type\":\"object\",\"properties\":{\"large_media_enabled\":{\"type\":\"boolean\"}}}}},\"deployFiles\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"object\"},\"draft\":{\"type\":\"boolean\"},\"async\":{\"type\":\"boolean\"},\"functions\":{\"type\":\"object\"},\"branch\":{\"type\":\"string\"}}},\"buildStatus\":{\"type\":\"object\",\"properties\":{\"active\":{\"type\":\"integer\"},\"pending_concurrency\":{\"type\":\"integer\"},\"enqueued\":{\"type\":\"integer\"},\"build_count\":{\"type\":\"integer\"},\"minutes\":{\"type\":\"object\",\"properties\":{\"current\":{\"type\":\"integer\"},\"current_average_sec\":{\"type\":\"integer\"},\"previous\":{\"type\":\"integer\"},\"period_start_date\":{\"type\":\"string\",\"format\":\"dateTime\"},\"period_end_date\":{\"type\":\"string\",\"format\":\"dateTime\"},\"last_updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"included_minutes\":{\"type\":\"string\"},\"included_minutes_with_packs\":{\"type\":\"string\"}}}}},\"build\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"sha\":{\"type\":\"string\"},\"done\":{\"type\":\"boolean\"},\"error\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"buildLogMsg\":{\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\"},\"error\":{\"type\":\"boolean\"}}},\"pluginRunData\":{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}},\"pluginRun\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"package\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"reporting_event\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"}}},{\"type\":\"object\",\"properties\":{\"deploy_id\":{\"type\":\"string\"}}}]},\"metadata\":{\"type\":\"object\"},\"dnsZoneSetup\":{\"type\":\"object\",\"properties\":{\"account_slug\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}}},\"dnsZones\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}}},\"dnsZone\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"supported_record_types\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"user_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dns_servers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"account_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"account_slug\":{\"type\":\"string\"},\"account_name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"ipv6_enabled\":{\"type\":\"boolean\"},\"dedicated\":{\"type\":\"boolean\"}}},\"dnsRecordCreate\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"weight\":{\"type\":\"integer\",\"format\":\"int64\"},\"port\":{\"type\":\"integer\",\"format\":\"int64\"},\"flag\":{\"type\":\"integer\",\"format\":\"int64\"},\"tag\":{\"type\":\"string\"}}},\"dnsRecords\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}}},\"dnsRecord\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"hostname\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"ttl\":{\"type\":\"integer\",\"format\":\"int64\"},\"priority\":{\"type\":\"integer\",\"format\":\"int64\"},\"dns_zone_id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"flag\":{\"type\":\"integer\"},\"tag\":{\"type\":\"string\"},\"managed\":{\"type\":\"boolean\"}}},\"sniCertificate\":{\"type\":\"object\",\"properties\":{\"state\":{\"type\":\"string\"},\"domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"expires_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"ticket\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"authorized\":{\"type\":\"boolean\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"accessToken\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"access_token\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"user_email\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"asset\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"assetForm\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"fields\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}}}},\"assetSignature\":{\"type\":\"object\",\"properties\":{\"form\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"fields\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}}}},\"asset\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"creator_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"content_type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"visibility\":{\"type\":\"string\"},\"size\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}}}},\"assetPublicSignature\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"}}},\"deployKey\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"public_key\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"member\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"avatar\":{\"type\":\"string\"},\"role\":{\"type\":\"string\"}}},\"paymentMethod\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"method_name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"data\":{\"type\":\"object\",\"properties\":{\"card_type\":{\"type\":\"string\"},\"last4\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"accountType\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\"},\"monthly_dollar_price\":{\"type\":\"integer\"},\"yearly_dollar_price\":{\"type\":\"integer\"},\"monthly_seats_addon_dollar_price\":{\"type\":\"integer\"},\"yearly_seats_addon_dollar_price\":{\"type\":\"integer\"}}},\"accountSetup\":{\"type\":\"object\",\"required\":[\"name\",\"type_id\"],\"properties\":{\"name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"period\":{\"type\":\"string\",\"enum\":[\"monthly\",\"yearly\"]},\"extra_seats_block\":{\"type\":\"integer\"}}},\"accountUpdateSetup\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"extra_seats_block\":{\"type\":\"integer\"},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"}}},\"accountMembership\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"sites\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"collaborators\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}}}},\"billing_name\":{\"type\":\"string\"},\"billing_email\":{\"type\":\"string\"},\"billing_details\":{\"type\":\"string\"},\"billing_period\":{\"type\":\"string\"},\"payment_method_id\":{\"type\":\"string\"},\"type_name\":{\"type\":\"string\"},\"type_id\":{\"type\":\"string\"},\"owner_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles_allowed\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"updated_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"auditLog\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"account_id\":{\"type\":\"string\"},\"payload\":{\"type\":\"object\",\"properties\":{\"actor_id\":{\"type\":\"string\"},\"actor_name\":{\"type\":\"string\"},\"actor_email\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"timestamp\":{\"type\":\"string\",\"format\":\"dateTime\"},\"log_type\":{\"type\":\"string\"}},\"additionalProperties\":{\"type\":\"object\"}}}},\"accountUsageCapability\":{\"type\":\"object\",\"properties\":{\"included\":{\"type\":\"integer\"},\"used\":{\"type\":\"integer\"}}},\"minifyOptions\":{\"type\":\"object\",\"properties\":{\"bundle\":{\"type\":\"boolean\"},\"minify\":{\"type\":\"boolean\"}}},\"buildHookSetup\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"}}},\"buildHook\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"branch\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"site_id\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"}}},\"deployedBranch\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"deploy_id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"ssl_url\":{\"type\":\"string\"}}},\"user\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"uid\":{\"type\":\"string\"},\"full_name\":{\"type\":\"string\"},\"avatar_url\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"affiliate_id\":{\"type\":\"string\"},\"site_count\":{\"type\":\"integer\",\"format\":\"int64\"},\"created_at\":{\"type\":\"string\",\"format\":\"dateTime\"},\"last_login\":{\"type\":\"string\",\"format\":\"dateTime\"},\"login_providers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"onboarding_progress\":{\"type\":\"object\",\"properties\":{\"slides\":{\"type\":\"string\"}}}}},\"error\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int64\"},\"message\":{\"type\":\"string\",\"x-nullable\":false}}}},\"parameters\":{\"page\":{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"page\",\"required\":false,\"in\":\"query\"},\"perPage\":{\"type\":\"integer\",\"format\":\"int32\",\"name\":\"per_page\",\"required\":false,\"in\":\"query\"}},\"x-tagGroups\":[{\"name\":\"OAuth\",\"tags\":[\"ticket\",\"accessToken\"]},{\"name\":\"User accounts\",\"tags\":[\"user\",\"accountMembership\",\"member\",\"accountType\",\"paymentMethod\",\"auditLog\"]},{\"name\":\"Site\",\"tags\":[\"site\",\"file\",\"metadata\",\"snippet\"]},{\"name\":\"Domain names\",\"tags\":[\"dnsZone\",\"sniCertificate\"]},{\"name\":\"Deploys\",\"tags\":[\"deploy\",\"deployedBranch\",\"deployKey\"]},{\"name\":\"Builds\",\"tags\":[\"build\",\"buildLogMsg\"]},{\"name\":\"Webhooks and notifications\",\"tags\":[\"hook\",\"hookType\",\"buildHook\"]},{\"name\":\"Services\",\"tags\":[\"service\",\"serviceInstance\"]},{\"name\":\"Functions\",\"tags\":[\"function\"]},{\"name\":\"Forms\",\"tags\":[\"form\",\"submission\"]},{\"name\":\"Split tests\",\"tags\":[\"splitTest\"]},{\"name\":\"Large media\",\"tags\":[\"asset\",\"assetPublicSignature\"]}],\"tags\":[{\"name\":\"ticket\",\"x-displayName\":\"Ticket\"},{\"name\":\"accessToken\",\"x-displayName\":\"Access token\"},{\"name\":\"user\",\"x-displayName\":\"User\"},{\"name\":\"accountMembership\",\"x-displayName\":\"Accounts\"},{\"name\":\"member\",\"x-displayName\":\"Member\"},{\"name\":\"accountType\",\"x-displayName\":\"Access type\"},{\"name\":\"paymentMethod\",\"x-displayName\":\"Payment method\"},{\"name\":\"auditLog\",\"x-displayName\":\"Audit log\"},{\"name\":\"site\",\"x-displayName\":\"Site\"},{\"name\":\"file\",\"x-displayName\":\"File\"},{\"name\":\"metadata\",\"x-displayName\":\"Metadata\"},{\"name\":\"snippet\",\"x-displayName\":\"Snippet\"},{\"name\":\"dnsZone\",\"x-displayName\":\"DNS zone\"},{\"name\":\"sniCertificate\",\"x-displayName\":\"SNI certificate\"},{\"name\":\"deploy\",\"x-displayName\":\"Deploy\"},{\"name\":\"deployedBranch\",\"x-displayName\":\"Deployed branch\"},{\"name\":\"deployKey\",\"x-displayName\":\"Deploy key\"},{\"name\":\"build\",\"x-displayName\":\"Build\"},{\"name\":\"buildLogMsg\",\"x-displayName\":\"Build log message\"},{\"name\":\"hook\",\"x-displayName\":\"Hook\"},{\"name\":\"hookType\",\"x-displayName\":\"Hook type\"},{\"name\":\"buildHook\",\"x-displayName\":\"Build hook\"},{\"name\":\"service\",\"x-displayName\":\"Service\"},{\"name\":\"serviceInstance\",\"x-displayName\":\"Service instance\"},{\"name\":\"function\",\"x-displayName\":\"Function\"},{\"name\":\"form\",\"x-displayName\":\"Form\"},{\"name\":\"submission\",\"x-displayName\":\"Form submission\"},{\"name\":\"splitTest\",\"x-displayName\":\"Split test\"},{\"name\":\"asset\",\"x-displayName\":\"Asset\"},{\"name\":\"assetPublicSignature\",\"x-displayName\":\"Asset public signature\"}]}"); /***/ }), @@ -177,7 +169,8 @@ function createGitHubDeployment(githubClient, environmentUrl, environment) { owner: github_1.context.repo.owner, repo: github_1.context.repo.repo, // eslint-disable-next-line @typescript-eslint/camelcase - deployment_id: deployment.data.id + deployment_id: deployment + .data.id }); }); } @@ -14655,8 +14648,6 @@ module.exports.sync = cwd => { /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { var async = __nccwpck_require__(69535); -async.core = __nccwpck_require__(45765); -async.isCore = __nccwpck_require__(14028); async.sync = __nccwpck_require__(65127); module.exports = async; @@ -14672,7 +14663,9 @@ var path = __nccwpck_require__(85622); var caller = __nccwpck_require__(93998); var nodeModulesPaths = __nccwpck_require__(91183); var normalizeOptions = __nccwpck_require__(32303); -var isCore = __nccwpck_require__(14028); +var isCore = __nccwpck_require__(56873); + +var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; var defaultIsFile = function isFile(file, cb) { fs.stat(file, function (err, stat) { @@ -14694,12 +14687,16 @@ var defaultIsDir = function isDirectory(dir, cb) { }); }; -var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts, cb) { +var defaultRealpath = function realpath(x, cb) { + realpathFS(x, function (realpathErr, realPath) { + if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr); + else cb(null, realpathErr ? x : realPath); + }); +}; + +var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) { if (!opts || !opts.preserveSymlinks) { - fs.realpath(x, function (realPathErr, realPath) { - if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr); - else cb(null, realPathErr ? x : realPath); - }); + realpath(x, cb); } else { cb(null, x); } @@ -14732,6 +14729,7 @@ module.exports = function resolve(x, options, callback) { var isFile = opts.isFile || defaultIsFile; var isDirectory = opts.isDirectory || defaultIsDir; var readFile = opts.readFile || fs.readFile; + var realpath = opts.realpath || defaultRealpath; var packageIterator = opts.packageIterator; var extensions = opts.extensions || ['.js']; @@ -14743,7 +14741,8 @@ module.exports = function resolve(x, options, callback) { // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory var absoluteStart = path.resolve(basedir); - maybeUnwrapSymlink( + maybeRealpath( + realpath, absoluteStart, opts, function (err, realStart) { @@ -14770,7 +14769,7 @@ module.exports = function resolve(x, options, callback) { function validBasedir(basedir) { if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { res = path.resolve(basedir, x); - if (x === '..' || x.slice(-1) === '/') res += '/'; + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; if ((/\/$/).test(x) && res === basedir) { loadAsDirectory(res, opts.package, onfile); } else loadAsFile(res, opts.package, onfile); @@ -14779,7 +14778,7 @@ module.exports = function resolve(x, options, callback) { } else loadNodeModules(x, basedir, function (err, n, pkg) { if (err) cb(err); else if (n) { - return maybeUnwrapSymlink(n, opts, function (err, realN) { + return maybeRealpath(realpath, n, opts, function (err, realN) { if (err) { cb(err); } else { @@ -14800,7 +14799,7 @@ module.exports = function resolve(x, options, callback) { else loadAsDirectory(res, function (err, d, pkg) { if (err) cb(err); else if (d) { - maybeUnwrapSymlink(d, opts, function (err, realD) { + maybeRealpath(realpath, d, opts, function (err, realD) { if (err) { cb(err); } else { @@ -14864,7 +14863,7 @@ module.exports = function resolve(x, options, callback) { } if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null); - maybeUnwrapSymlink(dir, opts, function (unwrapErr, pkgdir) { + maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) { if (unwrapErr) return loadpkg(path.dirname(dir), cb); var pkgfile = path.join(pkgdir, 'package.json'); isFile(pkgfile, function (err, ex) { @@ -14892,7 +14891,7 @@ module.exports = function resolve(x, options, callback) { fpkg = opts.package; } - maybeUnwrapSymlink(x, opts, function (unwrapErr, pkgdir) { + maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) { if (unwrapErr) return loadAsDirectory(path.dirname(x), fpkg, cb); var pkgfile = path.join(pkgdir, 'package.json'); isFile(pkgfile, function (err, ex) { @@ -14988,78 +14987,6 @@ module.exports = function () { }; -/***/ }), - -/***/ 45765: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; - -function specifierIncluded(specifier) { - var parts = specifier.split(' '); - var op = parts.length > 1 ? parts[0] : '='; - var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); - - for (var i = 0; i < 3; ++i) { - var cur = Number(current[i] || 0); - var ver = Number(versionParts[i] || 0); - if (cur === ver) { - continue; // eslint-disable-line no-restricted-syntax, no-continue - } - if (op === '<') { - return cur < ver; - } else if (op === '>=') { - return cur >= ver; - } else { - return false; - } - } - return op === '>='; -} - -function matchesRange(range) { - var specifiers = range.split(/ ?&& ?/); - if (specifiers.length === 0) { return false; } - for (var i = 0; i < specifiers.length; ++i) { - if (!specifierIncluded(specifiers[i])) { return false; } - } - return true; -} - -function versionIncluded(specifierValue) { - if (typeof specifierValue === 'boolean') { return specifierValue; } - if (specifierValue && typeof specifierValue === 'object') { - for (var i = 0; i < specifierValue.length; ++i) { - if (matchesRange(specifierValue[i])) { return true; } - } - return false; - } - return matchesRange(specifierValue); -} - -var data = __nccwpck_require__(63494); - -var core = {}; -for (var mod in data) { // eslint-disable-line no-restricted-syntax - if (Object.prototype.hasOwnProperty.call(data, mod)) { - core[mod] = versionIncluded(data[mod]); - } -} -module.exports = core; - - -/***/ }), - -/***/ 14028: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var core = __nccwpck_require__(45765); - -module.exports = function isCore(x) { - return Object.prototype.hasOwnProperty.call(core, x); -}; - - /***/ }), /***/ 91183: @@ -15131,13 +15058,15 @@ module.exports = function (x, opts) { /***/ 65127: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var isCore = __nccwpck_require__(14028); +var isCore = __nccwpck_require__(56873); var fs = __nccwpck_require__(35747); var path = __nccwpck_require__(85622); var caller = __nccwpck_require__(93998); var nodeModulesPaths = __nccwpck_require__(91183); var normalizeOptions = __nccwpck_require__(32303); +var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; + var defaultIsFile = function isFile(file) { try { var stat = fs.statSync(file); @@ -15158,19 +15087,24 @@ var defaultIsDir = function isDirectory(dir) { return stat.isDirectory(); }; -var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts) { - if (!opts || !opts.preserveSymlinks) { - try { - return fs.realpathSync(x); - } catch (realPathErr) { - if (realPathErr.code !== 'ENOENT') { - throw realPathErr; - } +var defaultRealpathSync = function realpathSync(x) { + try { + return realpathFS(x); + } catch (realpathErr) { + if (realpathErr.code !== 'ENOENT') { + throw realpathErr; } } return x; }; +var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) { + if (!opts || !opts.preserveSymlinks) { + return realpathSync(x); + } + return x; +}; + var getPackageCandidates = function getPackageCandidates(x, start, opts) { var dirs = nodeModulesPaths(start, opts, x); for (var i = 0; i < dirs.length; i++) { @@ -15188,6 +15122,7 @@ module.exports = function resolveSync(x, options) { var isFile = opts.isFile || defaultIsFile; var isDirectory = opts.isDirectory || defaultIsDir; var readFileSync = opts.readFileSync || fs.readFileSync; + var realpathSync = opts.realpathSync || defaultRealpathSync; var packageIterator = opts.packageIterator; var extensions = opts.extensions || ['.js']; @@ -15197,7 +15132,7 @@ module.exports = function resolveSync(x, options) { opts.paths = opts.paths || []; // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory - var absoluteStart = maybeUnwrapSymlink(path.resolve(basedir), opts); + var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); if (opts.basedir && !isDirectory(absoluteStart)) { var dirError = new TypeError('Provided basedir "' + opts.basedir + '" is not a directory' + (opts.preserveSymlinks ? '' : ', or a symlink to a directory')); @@ -15207,14 +15142,14 @@ module.exports = function resolveSync(x, options) { if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { var res = path.resolve(absoluteStart, x); - if (x === '..' || x.slice(-1) === '/') res += '/'; + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; var m = loadAsFileSync(res) || loadAsDirectorySync(res); - if (m) return maybeUnwrapSymlink(m, opts); + if (m) return maybeRealpathSync(realpathSync, m, opts); } else if (isCore(x)) { return x; } else { var n = loadNodeModulesSync(x, absoluteStart); - if (n) return maybeUnwrapSymlink(n, opts); + if (n) return maybeRealpathSync(realpathSync, n, opts); } var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); @@ -15251,7 +15186,7 @@ module.exports = function resolveSync(x, options) { } if ((/[/\\]node_modules[/\\]*$/).test(dir)) return; - var pkgfile = path.join(isDirectory(dir) ? maybeUnwrapSymlink(dir, opts) : dir, 'package.json'); + var pkgfile = path.join(isDirectory(dir) ? maybeRealpathSync(realpathSync, dir, opts) : dir, 'package.json'); if (!isFile(pkgfile)) { return loadpkg(path.dirname(dir)); @@ -15271,7 +15206,7 @@ module.exports = function resolveSync(x, options) { } function loadAsDirectorySync(x) { - var pkgfile = path.join(isDirectory(x) ? maybeUnwrapSymlink(x, opts) : x, '/package.json'); + var pkgfile = path.join(isDirectory(x) ? maybeRealpathSync(realpathSync, x, opts) : x, '/package.json'); if (isFile(pkgfile)) { try { var body = readFileSync(pkgfile, 'UTF8'); @@ -15332,12 +15267,7 @@ class Comparator { return ANY } constructor (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) if (comp instanceof Comparator) { if (comp.loose === !!options.loose) { @@ -15459,6 +15389,7 @@ class Comparator { module.exports = Comparator +const parseOptions = __nccwpck_require__(13995) const {re, t} = __nccwpck_require__(23734) const cmp = __nccwpck_require__(88239) const debug = __nccwpck_require__(21906) @@ -15474,12 +15405,7 @@ const Range = __nccwpck_require__(63248) // hoisted class for cyclic dependency class Range { constructor (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) if (range instanceof Range) { if ( @@ -15519,6 +15445,24 @@ class Range { throw new TypeError(`Invalid SemVer Range: ${range}`) } + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) + this.set = [first] + else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } + } + } + } + this.format() } @@ -15537,8 +15481,17 @@ class Range { } parseRange (range) { - const loose = this.options.loose range = range.trim() + + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = Object.keys(this.options).join(',') + const memoKey = `parseRange:${memoOpts}:${range}` + const cached = cache.get(memoKey) + if (cached) + return cached + + const loose = this.options.loose // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) @@ -15560,15 +15513,33 @@ class Range { // ready to be split into comparators. const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - return range + const rangeList = range .split(' ') .map(comp => parseComparator(comp, this.options)) .join(' ') .split(/\s+/) + // >=0.0.0 is equivalent to * .map(comp => replaceGTE0(comp, this.options)) // in loose mode, throw out any that are not valid comparators .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true) .map(comp => new Comparator(comp, this.options)) + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const l = rangeList.length + const rangeMap = new Map() + for (const comp of rangeList) { + if (isNullSet(comp)) + return [comp] + rangeMap.set(comp.value, comp) + } + if (rangeMap.size > 1 && rangeMap.has('')) + rangeMap.delete('') + + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result } intersects (range, options) { @@ -15617,6 +15588,10 @@ class Range { } module.exports = Range +const LRU = __nccwpck_require__(7129) +const cache = new LRU({ max: 1000 }) + +const parseOptions = __nccwpck_require__(13995) const Comparator = __nccwpck_require__(16225) const debug = __nccwpck_require__(21906) const SemVer = __nccwpck_require__(44907) @@ -15628,6 +15603,9 @@ const { caretTrimReplace } = __nccwpck_require__(23734) +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' + // take a set of comparators and determine whether there // exists a version which can satisfy it const isSatisfiable = (comparators, options) => { @@ -15945,15 +15923,12 @@ const debug = __nccwpck_require__(21906) const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(13138) const { re, t } = __nccwpck_require__(23734) +const parseOptions = __nccwpck_require__(13995) const { compareIdentifiers } = __nccwpck_require__(74388) class SemVer { constructor (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) + if (version instanceof SemVer) { if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { @@ -16536,13 +16511,9 @@ const {MAX_LENGTH} = __nccwpck_require__(13138) const { re, t } = __nccwpck_require__(23734) const SemVer = __nccwpck_require__(44907) +const parseOptions = __nccwpck_require__(13995) const parse = (version, options) => { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) if (version instanceof SemVer) { return version @@ -16779,6 +16750,24 @@ module.exports = { } +/***/ }), + +/***/ 13995: +/***/ ((module) => { + +// parse out just the options we care about so we always get a consistent +// obj with keys in a consistent order. +const opts = ['includePrerelease', 'loose', 'rtl'] +const parseOptions = options => + !options ? {} + : typeof options !== 'object' ? { loose: true } + : opts.filter(k => options[k]).reduce((options, k) => { + options[k] = true + return options + }, {}) +module.exports = parseOptions + + /***/ }), /***/ 23734: @@ -17093,6 +17082,7 @@ const minVersion = (range, loose) => { for (let i = 0; i < range.set.length; ++i) { const comparators = range.set[i] + let setMin = null comparators.forEach((comparator) => { // Clone to avoid manipulating the comparator's semver object. const compver = new SemVer(comparator.semver.version) @@ -17107,8 +17097,8 @@ const minVersion = (range, loose) => { /* fallthrough */ case '': case '>=': - if (!minver || gt(minver, compver)) { - minver = compver + if (!setMin || gt(compver, setMin)) { + setMin = compver } break case '<': @@ -17120,6 +17110,8 @@ const minVersion = (range, loose) => { throw new Error(`Unexpected operation: ${comparator.operator}`) } }) + if (setMin && (!minver || gt(minver, setMin))) + minver = setMin } if (minver && range.test(minver)) { @@ -17170,7 +17162,7 @@ const outside = (version, range, hilo, options) => { throw new TypeError('Must provide a hilo val of "<" or ">"') } - // If it satisifes the range it is not outside + // If it satisfies the range it is not outside if (satisfies(version, range, options)) { return false } @@ -17297,15 +17289,18 @@ const compare = __nccwpck_require__(43573) // - If EQ satisfies every C, return true // - Else return false // - If GT -// - If GT is lower than any > or >= comp in C, return false +// - If GT.semver is lower than any > or >= comp in C, return false // - If GT is >=, and GT.semver does not satisfy every C, return false // - If LT -// - If LT.semver is greater than that of any > comp in C, return false +// - If LT.semver is greater than any < or <= comp in C, return false // - If LT is <=, and LT.semver does not satisfy every C, return false // - If any C is a = range, and GT or LT are set, return false // - Else return true const subset = (sub, dom, options) => { + if (sub === dom) + return true + sub = new Range(sub, options) dom = new Range(dom, options) let sawNonNull = false @@ -17328,6 +17323,9 @@ const subset = (sub, dom, options) => { } const simpleSubset = (sub, dom, options) => { + if (sub === dom) + return true + if (sub.length === 1 && sub[0].semver === ANY) return dom.length === 1 && dom[0].semver === ANY @@ -17366,6 +17364,7 @@ const simpleSubset = (sub, dom, options) => { if (!satisfies(eq, String(c), options)) return false } + return true } @@ -17377,7 +17376,7 @@ const simpleSubset = (sub, dom, options) => { if (gt) { if (c.operator === '>' || c.operator === '>=') { higher = higherGT(gt, c, options) - if (higher === c) + if (higher === c && higher !== gt) return false } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) return false @@ -17385,7 +17384,7 @@ const simpleSubset = (sub, dom, options) => { if (lt) { if (c.operator === '<' || c.operator === '<=') { lower = lowerLT(lt, c, options) - if (lower === c) + if (lower === c && lower !== lt) return false } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) return false @@ -17470,34 +17469,36 @@ module.exports = validRange /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const { createWriteStream } = __nccwpck_require__(35747) +const { promisify } = __nccwpck_require__(31669) const archiver = __nccwpck_require__(43084) const endOfStream = __nccwpck_require__(81205) -const promisify = __nccwpck_require__(63149) const pEndOfStream = promisify(endOfStream) // Start zipping files -const startZip = function(destPath) { +const startZip = function (destPath) { const output = createWriteStream(destPath) - const archive = archiver('zip', { level: 9 }) + const archive = archiver('zip', { level: ZIP_LEVEL }) archive.pipe(output) return { archive, output } } +const ZIP_LEVEL = 9 + // Add new file to zip -const addZipFile = function(archive, file, name, stat) { +const addZipFile = function (archive, file, name, stat) { // Ensure sha256 stability regardless of mtime archive.file(file, { name, mode: stat.mode, date: new Date(0), stats: stat }) } // Add new file content to zip -const addZipContent = function(archive, content, name) { +const addZipContent = function (archive, content, name) { archive.append(content, { name, date: new Date(0) }) } // End zipping files -const endZip = async function(archive, output) { +const endZip = async function (archive, output) { archive.finalize() await pEndOfStream(output) } @@ -17507,87 +17508,330 @@ module.exports = { startZip, addZipFile, addZipContent, endZip } /***/ }), -/***/ 37754: +/***/ 96935: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { readdir, lstat } = __nccwpck_require__(35747) +const { join, resolve, dirname, basename, extname } = __nccwpck_require__(85622) +const { promisify } = __nccwpck_require__(31669) + +const locatePath = __nccwpck_require__(8412) + +const { binaryRuntime } = __nccwpck_require__(4525) + +const pReaddir = promisify(readdir) +const pLstat = promisify(lstat) + +const getFunctionInfos = async function (srcFolder) { + const srcPaths = await getSrcPaths(srcFolder) + const functionInfos = await Promise.all(srcPaths.map(getFunctionInfo)) + const functionInfosA = functionInfos.filter(hasMainFile) + return functionInfosA +} + +const getSrcPaths = async function (srcFolder) { + const filenames = await listFilenames(srcFolder) + const srcPaths = filenames.map((filename) => resolve(srcFolder, filename)) + return srcPaths +} + +const listFilenames = async function (srcFolder) { + try { + return await pReaddir(srcFolder) + } catch (error) { + throw new Error(`Functions folder does not exist: ${srcFolder}`) + } +} + +const getFunctionInfo = async function (srcPath) { + const { name, filename, stat, mainFile, extension, srcDir } = await getSrcInfo(srcPath) + + if (mainFile === undefined) { + return {} + } + + if (extension === '.zip' || extension === '.js') { + return { runtime: 'js', name, filename, stat, mainFile, extension, srcPath, srcDir } + } + + const runtime = await binaryRuntime(srcPath) + if (runtime) { + return { runtime, name, filename, stat, mainFile, extension, srcPath, srcDir } + } + + return {} +} + +const getSrcInfo = async function (srcPath) { + const filename = basename(srcPath) + if (filename === 'node_modules') { + return {} + } + + const stat = await pLstat(srcPath) + const mainFile = await getMainFile(srcPath, filename, stat) + if (mainFile === undefined) { + return {} + } + + const extension = extname(mainFile) + const name = basename(srcPath, extname(srcPath)) + const srcDir = stat.isDirectory() ? srcPath : dirname(srcPath) + return { name, filename, stat, mainFile, extension, srcDir } +} + +// Each `srcPath` can also be a directory with an `index.js` file or a file +// using the same filename as its directory +const getMainFile = function (srcPath, filename, stat) { + if (!stat.isDirectory()) { + return srcPath + } + + return locatePath([join(srcPath, `${filename}.js`), join(srcPath, 'index.js')], { type: 'file' }) +} + +const hasMainFile = function ({ mainFile }) { + return mainFile !== undefined +} + +module.exports = { getFunctionInfos, getSrcPaths, getFunctionInfo } + + +/***/ }), + +/***/ 72803: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { join, basename, extname } = __nccwpck_require__(85622) + +const cpFile = __nccwpck_require__(54544) +const findUp = __nccwpck_require__(90096) +const makeDir = __nccwpck_require__(39126) +const pMap = __nccwpck_require__(91855) + +const { getFunctionInfos, getSrcPaths, getFunctionInfo } = __nccwpck_require__(96935) +const { listNodeFiles } = __nccwpck_require__(53475) +const { zipBinary } = __nccwpck_require__(4525) +const { zipNodeJs } = __nccwpck_require__(67445) + +const AUTO_PLUGINS_DIR = '.netlify/plugins/' + +const getPluginsModulesPath = (srcDir) => findUp(`${AUTO_PLUGINS_DIR}node_modules`, { cwd: srcDir, type: 'directory' }) + +// Zip `srcFolder/*` (Node.js or Go files) to `destFolder/*.zip` so it can be +// used by AWS Lambda +// TODO: remove `skipGo` option in next major release +const zipFunctions = async function ( + srcFolder, + destFolder, + { parallelLimit = DEFAULT_PARALLEL_LIMIT, skipGo, zipGo } = {}, +) { + const [srcPaths, pluginsModulesPath] = await Promise.all([getSrcPaths(srcFolder), getPluginsModulesPath(srcFolder)]) + + const zipped = await pMap( + srcPaths, + (srcPath) => zipFunction(srcPath, destFolder, { skipGo, zipGo, pluginsModulesPath }), + { + concurrency: parallelLimit, + }, + ) + return zipped.filter(Boolean) +} + +const DEFAULT_PARALLEL_LIMIT = 5 + +const zipFunction = async function ( + srcPath, + destFolder, + { skipGo = true, zipGo = !skipGo, pluginsModulesPath: defaultModulesPath } = {}, +) { + const { runtime, filename, extension, srcDir, stat, mainFile } = await getFunctionInfo(srcPath) + + if (runtime === undefined) { + return + } + + const pluginsModulesPath = + defaultModulesPath === undefined ? await getPluginsModulesPath(srcPath) : defaultModulesPath + const srcFiles = await getSrcFiles({ runtime, stat, mainFile, extension, srcPath, srcDir, pluginsModulesPath }) + + await makeDir(destFolder) + + const destPath = await RUNTIMES[runtime]({ + srcPath, + destFolder, + mainFile, + filename, + extension, + srcFiles, + stat, + zipGo, + runtime, + pluginsModulesPath, + }) + return { path: destPath, runtime } +} + +const zipJsFunction = async function ({ + srcPath, + destFolder, + mainFile, + filename, + extension, + srcFiles, + pluginsModulesPath, +}) { + if (extension === '.zip') { + const destPath = join(destFolder, filename) + await cpFile(srcPath, destPath) + return destPath + } + + const destPath = join(destFolder, `${basename(filename, '.js')}.zip`) + await zipNodeJs({ srcFiles, destPath, filename, mainFile, pluginsModulesPath }) + return destPath +} + +const zipGoFunction = async function ({ srcPath, destFolder, stat, zipGo, filename, runtime }) { + if (zipGo) { + const destPath = join(destFolder, `${filename}.zip`) + await zipBinary({ srcPath, destPath, filename, stat, runtime }) + return destPath + } + + const destPath = join(destFolder, filename) + await cpFile(srcPath, destPath) + return destPath +} + +// Rust functions must always be zipped. +// The name of the binary inside the zip file must +// always be `bootstrap` because they include the +// Lambda runtime, and that's the name that AWS +// expects for those kind of functions. +const zipRustFunction = async function ({ srcPath, destFolder, stat, filename, runtime }) { + const destPath = join(destFolder, `${filename}.zip`) + await zipBinary({ srcPath, destPath, filename: 'bootstrap', stat, runtime }) + return destPath +} + +const RUNTIMES = { + js: zipJsFunction, + go: zipGoFunction, + rs: zipRustFunction, +} + +// List all Netlify Functions main entry files for a specific directory +const listFunctions = async function (srcFolder) { + const functionInfos = await getFunctionInfos(srcFolder) + const listedFunctions = functionInfos.map(getListedFunction) + return listedFunctions +} + +// List all Netlify Functions files for a specific directory +const listFunctionsFiles = async function (srcFolder) { + const [functionInfos, pluginsModulesPath] = await Promise.all([ + getFunctionInfos(srcFolder), + getPluginsModulesPath(srcFolder), + ]) + const listedFunctionsFiles = await Promise.all( + functionInfos.map((info) => getListedFunctionFiles(info, { pluginsModulesPath })), + ) + return [].concat(...listedFunctionsFiles) +} + +const getListedFunction = function ({ runtime, name, mainFile, extension }) { + return { name, mainFile, runtime, extension } +} + +const getListedFunctionFiles = async function ( + { runtime, name, stat, mainFile, extension, srcPath, srcDir }, + { pluginsModulesPath }, +) { + const srcFiles = await getSrcFiles({ + runtime, + stat, + mainFile, + extension, + srcPath, + srcDir, + pluginsModulesPath, + }) + return srcFiles.map((srcFile) => ({ srcFile, name, mainFile, runtime, extension: extname(srcFile) })) +} + +const getSrcFiles = function ({ runtime, stat, mainFile, extension, srcPath, srcDir, pluginsModulesPath }) { + if (runtime === 'js' && extension === '.js') { + return listNodeFiles({ srcPath, mainFile, srcDir, stat, pluginsModulesPath }) + } + + return [srcPath] +} + +module.exports = { zipFunctions, zipFunction, listFunctions, listFunctionsFiles } + + +/***/ }), + +/***/ 53475: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const { dirname, basename, normalize } = __nccwpck_require__(85622) -const glob = __nccwpck_require__(91957) const { not: notJunk } = __nccwpck_require__(34072) -const pkgDir = __nccwpck_require__(4138) const precinct = __nccwpck_require__(98360) const requirePackageName = __nccwpck_require__(88705) -const promisify = __nccwpck_require__(63149) -const { resolvePathPreserveSymlinks, resolvePackage } = __nccwpck_require__(97921) - -const pGlob = promisify(glob) +const { getNestedDependencies, handleModuleNotFound } = __nccwpck_require__(85344) +const { getPackageJson } = __nccwpck_require__(90327) +const { getPublishedFiles } = __nccwpck_require__(37692) +const { resolvePathPreserveSymlinks, resolvePackage } = __nccwpck_require__(21307) +const { getSideFiles } = __nccwpck_require__(6734) +const { getTreeFiles } = __nccwpck_require__(33130) // Retrieve the paths to the Node.js files to zip. // We only include the files actually needed by the function because AWS Lambda // has a size limit for the zipped file. It also makes cold starts faster. -const listNodeFiles = async function(srcPath, filename, mainFile, srcDir, stat) { - const [treeFiles, depFiles] = await Promise.all([getTreeFiles(srcPath, stat), getDependencies(mainFile, srcDir)]) +const listNodeFiles = async function ({ srcPath, mainFile, srcDir, stat, pluginsModulesPath }) { + const [treeFiles, depFiles] = await Promise.all([ + getTreeFiles(srcPath, stat), + getDependencies(mainFile, srcDir, pluginsModulesPath), + ]) const files = [...treeFiles, ...depFiles].map(normalize) const uniqueFiles = [...new Set(files)] // We sort so that the archive's checksum is deterministic. + // Mutating is fine since `Array.filter()` returns a shallow copy + // eslint-disable-next-line fp/no-mutating-methods const filteredFiles = uniqueFiles.filter(isNotJunk).sort() return filteredFiles } -// When using a directory, we include all its descendants except `node_modules` -const getTreeFiles = function(srcPath, stat) { - if (!stat.isDirectory()) { - return [srcPath] - } - - return pGlob(`${srcPath}/**`, { - ignore: `${srcPath}/**/node_modules/**`, - nodir: true, - absolute: true - }) -} - // Remove temporary files like *~, *.swp, etc. -const isNotJunk = function(file) { +const isNotJunk = function (file) { return notJunk(basename(file)) } // Retrieve all the files recursively required by a Node.js file -const getDependencies = async function(mainFile, srcDir) { - const packageRoot = await pkgDir(srcDir) - const packageJson = getPackageJson(packageRoot) +const getDependencies = async function (mainFile, srcDir, pluginsModulesPath) { + const packageJson = await getPackageJson(srcDir) - const state = { localFiles: [], modulePaths: [] } + const state = { localFiles: new Set(), modulePaths: new Set() } try { - return await getFileDependencies(mainFile, packageJson, state) + return await getFileDependencies({ path: mainFile, packageJson, state, pluginsModulesPath }) } catch (error) { - error.message = `In file "${mainFile}": ${error.message}` + error.message = `In file "${mainFile}"\n${error.message}` throw error } } -const getPackageJson = function(packageRoot) { - if (packageRoot === undefined) { - return {} - } - - const packageJsonPath = `${packageRoot}/package.json` - try { - return require(packageJsonPath) - } catch (error) { - throw new Error(`${packageJsonPath} is invalid JSON: ${error.message}`) - } -} - -const getFileDependencies = async function(path, packageJson, state) { - if (state.localFiles.includes(path)) { +const getFileDependencies = async function ({ path, packageJson, state, treeShakeNext, pluginsModulesPath }) { + if (state.localFiles.has(path)) { return [] } - state.localFiles.push(path) + state.localFiles.add(path) const basedir = dirname(path) // This parses JavaScript in `path` to retrieve all the `require()` statements @@ -17596,33 +17840,72 @@ const getFileDependencies = async function(path, packageJson, state) { const dependencies = precinct.paperwork(path, { includeCore: false }) const depsPaths = await Promise.all( - dependencies.map(dependency => getImportDependencies(dependency, basedir, packageJson, state)) + dependencies.map((dependency) => + getImportDependencies({ dependency, basedir, packageJson, state, treeShakeNext, pluginsModulesPath }), + ), ) return [].concat(...depsPaths) } -// `require()` statements can be either `require('moduleName')` or -// `require(path)` -const getImportDependencies = function(dependency, basedir, packageJson, state) { +const getImportDependencies = function ({ + dependency, + basedir, + packageJson, + state, + treeShakeNext, + pluginsModulesPath, +}) { + const shouldTreeShakeNext = treeShakeNext || isNextOnNetlify(dependency) + if (shouldTreeShake(dependency, shouldTreeShakeNext)) { + return getTreeShakedDependencies({ + dependency, + basedir, + packageJson, + state, + treeShakeNext: shouldTreeShakeNext, + pluginsModulesPath, + }) + } + + return getAllDependencies({ dependency, basedir, state, packageJson, pluginsModulesPath }) +} + +const isNextOnNetlify = function (dependency) { + return basename(dependency, '.js') === 'renderNextPage' +} + +// we tree shake direct local requires to bundle only relevant code +// we don't tree shake external dependencies since they can break our tree shaking logic by: +// 1. doing dynamic requires (e.g. require(dynamicPath)) +// 2. reading files (e.g. fs.readFileSync(someNonJsFile)) +// an exception is when the function was generated by `next-on-netlify` to avoid bundling the entire `Next.js` framework +const shouldTreeShake = function (dependency, treeShakeNext) { if (LOCAL_IMPORT_REGEXP.test(dependency)) { - return getLocalImportDependencies(dependency, basedir, packageJson, state) + return true } - return getModuleDependencies(dependency, basedir, state, packageJson) + return treeShakeNext && getModuleName(dependency) === 'next' } const LOCAL_IMPORT_REGEXP = /^(\.|\/)/ // When a file requires another one, we apply the top-level logic recursively -const getLocalImportDependencies = async function(dependency, basedir, packageJson, state) { - const dependencyPath = await resolvePathPreserveSymlinks(dependency, basedir) - const depsPath = await getFileDependencies(dependencyPath, packageJson, state) - return [dependencyPath, ...depsPath] +const getTreeShakedDependencies = async function ({ + dependency, + basedir, + packageJson, + state, + treeShakeNext, + pluginsModulesPath, +}) { + const path = await resolvePathPreserveSymlinks(dependency, [basedir, pluginsModulesPath].filter(Boolean)) + const depsPath = await getFileDependencies({ path, packageJson, state, treeShakeNext, pluginsModulesPath }) + return [path, ...depsPath] } // When a file requires a module, we find its path inside `node_modules` and // use all its published files. We also recurse on the module's dependencies. -const getModuleDependencies = async function(dependency, basedir, state, packageJson) { +const getAllDependencies = async function ({ dependency, basedir, state, packageJson, pluginsModulesPath }) { const moduleName = getModuleName(dependency) // Happens when doing require("@scope") (not "@scope/name") or other oddities @@ -17632,14 +17915,14 @@ const getModuleDependencies = async function(dependency, basedir, state, package } try { - return await getModuleNameDependencies(moduleName, basedir, state) + return await getModuleNameDependencies({ moduleName, basedir, state, pluginsModulesPath }) } catch (error) { return handleModuleNotFound({ error, moduleName, packageJson }) } } // When doing require("moduleName/file/path"), only keep `moduleName` -const getModuleName = function(dependency) { +const getModuleName = function (dependency) { const dependencyA = dependency.replace(BACKSLASH_REGEXP, '/') const moduleName = requirePackageName(dependencyA) return moduleName @@ -17648,13 +17931,13 @@ const getModuleName = function(dependency) { // Windows path normalization const BACKSLASH_REGEXP = /\\/g -const getModuleNameDependencies = async function(moduleName, basedir, state) { +const getModuleNameDependencies = async function ({ moduleName, basedir, state, pluginsModulesPath }) { if (isExcludedModule(moduleName)) { return [] } // Find the Node.js module directory path - const packagePath = await resolvePackage(moduleName, basedir) + const packagePath = await resolvePackage(moduleName, [basedir, pluginsModulesPath].filter(Boolean)) if (packagePath === undefined) { return [] @@ -17662,100 +17945,69 @@ const getModuleNameDependencies = async function(moduleName, basedir, state) { const modulePath = dirname(packagePath) - if (state.modulePaths.includes(modulePath)) { + if (state.modulePaths.has(modulePath)) { return [] } - state.modulePaths.push(modulePath) + state.modulePaths.add(modulePath) - const pkg = require(packagePath) + // The path depends on the user's build, i.e. must be dynamic + // eslint-disable-next-line import/no-dynamic-require, node/global-require + const packageJson = require(packagePath) const [publishedFiles, sideFiles, depsPaths] = await Promise.all([ getPublishedFiles(modulePath), getSideFiles(modulePath, moduleName), - getNestedModules(modulePath, state, pkg) + getNestedModules({ modulePath, state, packageJson, pluginsModulesPath }), ]) return [...publishedFiles, ...sideFiles, ...depsPaths] } -const isExcludedModule = function(moduleName) { - return EXCLUDED_MODULES.includes(moduleName) || moduleName.startsWith('@types/') +const isExcludedModule = function (moduleName) { + return EXCLUDED_MODULES.has(moduleName) || moduleName.startsWith('@types/') } -const EXCLUDED_MODULES = ['aws-sdk'] +const EXCLUDED_MODULES = new Set(['aws-sdk']) -// Some modules generate source files on `postinstall` that are not located -// inside the module's directory itself. -const getSideFiles = function(modulePath, moduleName) { - const sideFiles = SIDE_FILES[moduleName] - if (sideFiles === undefined) { - return [] - } +const getNestedModules = async function ({ modulePath, state, packageJson, pluginsModulesPath }) { + const dependencies = getNestedDependencies(packageJson) - return getPublishedFiles(`${modulePath}/${sideFiles}`) + const depsPaths = await Promise.all( + dependencies.map((dependency) => + getAllDependencies({ dependency, basedir: modulePath, state, packageJson, pluginsModulesPath }), + ), + ) + return [].concat(...depsPaths) } -const SIDE_FILES = { - '@prisma/client': '../../.prisma' -} +module.exports = { listNodeFiles } -// We use all the files published by the Node.js except some that are not needed -const getPublishedFiles = async function(modulePath) { - const ignore = getIgnoredFiles(modulePath) - const publishedFiles = await pGlob(`${modulePath}/**`, { - ignore, - nodir: true, - absolute: true, - dot: true - }) - return publishedFiles -} -const getIgnoredFiles = function(modulePath) { - return IGNORED_FILES.map(ignoreFile => `${modulePath}/${ignoreFile}`) -} +/***/ }), -// To make the zip archive smaller, we remove those. -const IGNORED_FILES = [ - 'node_modules/**', - '.npmignore', - 'package-lock.json', - 'yarn.lock', - '*.log', - '*.lock', - '*~', - '*.map', - '*.ts', - '*.patch' -] +/***/ 85344: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { valid: validVersion, validRange, satisfies, gte: greaterThanEqual, ltr: lessThanRange } = __nccwpck_require__(32759) // Apply the Node.js module logic recursively on its own dependencies, using // the `package.json` `dependencies`, `peerDependencies` and // `optionalDependencies` keys -const getNestedModules = async function(modulePath, state, pkg) { - const dependencies = getNestedDependencies(pkg) - - const depsPaths = await Promise.all( - dependencies.map(dependency => getModuleDependencies(dependency, modulePath, state, pkg)) - ) - return [].concat(...depsPaths) -} - -const getNestedDependencies = function({ dependencies = {}, peerDependencies = {}, optionalDependencies = {} }) { +const getNestedDependencies = function ({ dependencies = {}, peerDependencies = {}, optionalDependencies = {} }) { return [ ...Object.keys(dependencies), ...Object.keys(peerDependencies).filter(shouldIncludePeerDependency), - ...Object.keys(optionalDependencies) + ...Object.keys(optionalDependencies), ] } // Workaround for https://github.com/netlify/zip-it-and-ship-it/issues/73 // TODO: remove this after adding proper modules exclusion as outlined in // https://github.com/netlify/zip-it-and-ship-it/issues/68 -const shouldIncludePeerDependency = function(name) { - return !EXCLUDED_PEER_DEPENDENCIES.includes(name) +const shouldIncludePeerDependency = function (name) { + return !EXCLUDED_PEER_DEPENDENCIES.has(name) } -const EXCLUDED_PEER_DEPENDENCIES = ['@prisma/cli', 'prisma2'] +const EXCLUDED_PEER_DEPENDENCIES = new Set(['@prisma/cli', 'prisma2']) // Modules can be required conditionally (inside an `if` or `try`/`catch` block). // When a `require()` statement is found but the module is not found, it is @@ -17779,17 +18031,20 @@ const EXCLUDED_PEER_DEPENDENCIES = ['@prisma/cli', 'prisma2'] // `optionalDependencies`: // - are not reported when missing // - are included in module dependencies -const handleModuleNotFound = function({ error, moduleName, packageJson }) { - if (error.code === 'MODULE_NOT_FOUND' && isOptionalModule(moduleName, packageJson)) { +const handleModuleNotFound = function ({ error, moduleName, packageJson }) { + if ( + error.code === 'MODULE_NOT_FOUND' && + (isOptionalModule(moduleName, packageJson) || isExternalCrittersModule(moduleName, packageJson)) + ) { return [] } throw error } -const isOptionalModule = function( +const isOptionalModule = function ( moduleName, - { optionalDependencies = {}, peerDependenciesMeta = {}, peerDependencies = {} } + { optionalDependencies = {}, peerDependenciesMeta = {}, peerDependencies = {} }, ) { return ( optionalDependencies[moduleName] !== undefined || @@ -17799,239 +18054,329 @@ const isOptionalModule = function( ) } -module.exports = { listNodeFiles } +const MIN_NEXT_VERSION = '10.0.4' + +const satisfiesRange = (range) => + validRange(range) && (satisfies(MIN_NEXT_VERSION, range) || lessThanRange(MIN_NEXT_VERSION, range)) + +// 'critters' is used only in Next.js >= 10.0.4 when enabling an experimental option and has to be installed manually +// we ignore it if it's missing +const isExternalCrittersModule = function (moduleName, { dependencies = {}, devDependencies = {} }) { + if (moduleName !== 'critters') { + return false + } + const nextVersion = dependencies.next || devDependencies.next + + // can the declared Next.js version resolve to >=10.0.4 ? + // test exact versions + if (validVersion(nextVersion)) { + return greaterThanEqual(nextVersion, MIN_NEXT_VERSION) + } + + return satisfiesRange(nextVersion) +} + +module.exports = { getNestedDependencies, handleModuleNotFound } /***/ }), -/***/ 56812: +/***/ 90327: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const { readFile } = __nccwpck_require__(35747) - -const { parse: parseElf } = __nccwpck_require__(39580) -const promisify = __nccwpck_require__(63149) +const pkgDir = __nccwpck_require__(4138) -const { startZip, addZipFile, endZip } = __nccwpck_require__(96888) +// Retrieve the `package.json` of a specific project or module +const getPackageJson = async function (srcDir) { + const packageRoot = await pkgDir(srcDir) -const pReadFile = promisify(readFile) + if (packageRoot === undefined) { + return {} + } -// Check if a file is a Go executable -const isGoExe = async function(path) { + const packageJsonPath = `${packageRoot}/package.json` try { - const buffer = await pReadFile(path) - const { sections } = parseElf(buffer) - return sections.some(isGoHeader) + // The path depends on the user's build, i.e. must be dynamic + // eslint-disable-next-line import/no-dynamic-require, node/global-require + return require(packageJsonPath) } catch (error) { - return false + throw new Error(`${packageJsonPath} is invalid JSON: ${error.message}`) } } -const isGoHeader = function({ header: { name } }) { - return name === '.note.go.buildid' -} - -// Zip a Go function file -const zipGoExe = async function(srcPath, destPath, filename, stat) { - const { archive, output } = startZip(destPath) - addZipFile(archive, srcPath, filename, stat) - await endZip(archive, output) -} - -module.exports = { isGoExe, zipGoExe } +module.exports = { getPackageJson } /***/ }), -/***/ 72803: +/***/ 37692: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const { readdir, lstat } = __nccwpck_require__(35747) -const { join, resolve, dirname, basename, extname } = __nccwpck_require__(85622) - -const cpFile = __nccwpck_require__(54544) -const locatePath = __nccwpck_require__(8412) -const makeDir = __nccwpck_require__(39126) -const pMap = __nccwpck_require__(91855) -const promisify = __nccwpck_require__(63149) - -const { listNodeFiles } = __nccwpck_require__(37754) -const { isGoExe, zipGoExe } = __nccwpck_require__(56812) -const { zipNodeJs } = __nccwpck_require__(33399) +const { promisify } = __nccwpck_require__(31669) -const pReaddir = promisify(readdir) -const pLstat = promisify(lstat) +const glob = __nccwpck_require__(91957) -// Zip `srcFolder/*` (Node.js or Go files) to `destFolder/*.zip` so it can be -// used by AWS Lambda -// TODO: remove `skipGo` option in next major release -const zipFunctions = async function(srcFolder, destFolder, { parallelLimit = 5, skipGo, zipGo } = {}) { - const srcPaths = await getSrcPaths(srcFolder) +const pGlob = promisify(glob) - const zipped = await pMap(srcPaths, srcPath => zipFunction(srcPath, destFolder, { skipGo, zipGo }), { - concurrency: parallelLimit +// We use all the files published by the Node.js except some that are not needed +const getPublishedFiles = async function (modulePath) { + const ignore = getIgnoredFiles(modulePath) + const publishedFiles = await pGlob(`${modulePath}/**`, { + ignore, + nodir: true, + absolute: true, + dot: true, }) - return zipped.filter(Boolean) + return publishedFiles } -const zipFunction = async function(srcPath, destFolder, { skipGo = true, zipGo = !skipGo } = {}) { - const { runtime, filename, extension, srcDir, stat, mainFile } = await getFunctionInfo(srcPath) +const getIgnoredFiles = function (modulePath) { + return IGNORED_FILES.map((ignoreFile) => `${modulePath}/${ignoreFile}`) +} - if (runtime === undefined) { - return - } +// To make the zip archive smaller, we remove those. +const IGNORED_FILES = [ + 'node_modules/**', + '.npmignore', + 'package-lock.json', + 'yarn.lock', + '*.log', + '*.lock', + '*~', + '*.map', + '*.ts', + '*.patch', +] - const srcFiles = await getSrcFiles({ runtime, filename, stat, mainFile, extension, srcPath, srcDir }) +module.exports = { getPublishedFiles } - await makeDir(destFolder) - if (runtime === 'js') { - if (extension === '.zip') { - const destPath = join(destFolder, filename) - await cpFile(srcPath, destPath) - return { path: destPath, runtime } - } else { - const destPath = join(destFolder, `${basename(filename, '.js')}.zip`) - await zipNodeJs(srcFiles, destPath, filename, mainFile) - return { path: destPath, runtime } +/***/ }), + +/***/ 21307: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { version: nodeVersion } = __nccwpck_require__(61765) + +const findUp = __nccwpck_require__(90096) +const pathExists = __nccwpck_require__(74037) +const resolveLib = __nccwpck_require__(23703) +const { lt: ltVersion } = __nccwpck_require__(32759) + +// Find the path to a module's `package.json` +// We need to use `resolve` instead of `require.resolve()` because: +// - it is async +// - it preserves symlinks: +// - this is important because if a file does a `require('./symlink')`, we +// need to bundle the symlink and its target, not only the target +// - `path.resolve()` cannot be used for relative|absolute file paths +// because it does not resolve ommitted file extension, +// e.g. `require('./file')` instead of `require('./file.js')` +// - the CLI flag `--preserve-symlinks` can be used with Node.js, but it +// cannot be set runtime +// However it does not give helpful error messages. +// https://github.com/browserify/resolve/issues/223 +// So, on errors, we fallback to `require.resolve()` +const resolvePackage = async function (moduleName, baseDirs) { + try { + return await resolvePathPreserveSymlinks(`${moduleName}/package.json`, baseDirs) + } catch (error) { + if (ltVersion(nodeVersion, REQUEST_RESOLVE_MIN_VERSION)) { + throw error } - } - if (runtime === 'go') { - if (zipGo) { - const destPath = join(destFolder, `${filename}.zip`) - await zipGoExe(srcPath, destPath, filename, stat) - return { path: destPath, runtime } - } else { - const destPath = join(destFolder, filename) - await cpFile(srcPath, destPath) - return { path: destPath, runtime } + try { + return resolvePathFollowSymlinks(`${moduleName}/package.json`, baseDirs) + } catch (error_) { + return await resolvePackageFallback(moduleName, baseDirs, error_) } } } -// List all Netlify Functions main entry files for a specific directory -const listFunctions = async function(srcFolder) { - const functionInfos = await getFunctionInfos(srcFolder) - const listedFunctions = functionInfos.map(getListedFunction) - return listedFunctions +// TODO: remove after dropping support for Node <8.9.0 +// `require.resolve()` option `paths` was introduced in Node 8.9.0 +const REQUEST_RESOLVE_MIN_VERSION = '8.9.0' + +// We need to use `new Promise()` due to a bug with `utils.promisify()` on +// `resolve`: +// https://github.com/browserify/resolve/issues/151#issuecomment-368210310 +const resolvePathPreserveSymlinksForDir = function (path, basedir) { + return new Promise((resolve, reject) => { + resolveLib(path, { basedir, preserveSymlinks: true }, (error, resolvedLocation) => { + if (error) { + return reject(error) + } + + resolve(resolvedLocation) + }) + }) } -// List all Netlify Functions files for a specific directory -const listFunctionsFiles = async function(srcFolder) { - const functionInfos = await getFunctionInfos(srcFolder) - const listedFunctionsFiles = await Promise.all(functionInfos.map(getListedFunctionFiles)) - return [].concat(...listedFunctionsFiles) +// the resolve library has a `paths` option but it's not the same as multiple basedirs +// see https://github.com/browserify/resolve/issues/188#issuecomment-679010477 +// we return the first resolved location or the first error if all failed +const resolvePathPreserveSymlinks = async function (path, baseDirs) { + // eslint-disable-next-line fp/no-let + let firstError + // eslint-disable-next-line fp/no-loops + for (const basedir of baseDirs) { + try { + // eslint-disable-next-line no-await-in-loop + return await resolvePathPreserveSymlinksForDir(path, basedir) + } catch (error) { + // eslint-disable-next-line fp/no-mutation + firstError = firstError || error + } + } + + throw firstError } -const getFunctionInfos = async function(srcFolder) { - const srcPaths = await getSrcPaths(srcFolder) - const functionInfos = await Promise.all(srcPaths.map(getFunctionInfo)) - const functionInfosA = functionInfos.filter(hasMainFile) - return functionInfosA +const resolvePathFollowSymlinks = function (path, baseDirs) { + return require.resolve(path, { paths: baseDirs }) } -const getSrcPaths = async function(srcFolder) { - const filenames = await listFilenames(srcFolder) - const srcPaths = filenames.map(filename => resolve(srcFolder, filename)) - return srcPaths +// `require.resolve()` on a module's specific file (like `package.json`) +// can be forbidden by the package author by using an `exports` field in +// their `package.json`. We need this fallback. +// It looks for the first directory up from a package's `main` file that: +// - is named like the package +// - has a `package.json` +// Theoretically, this might not the root `package.json`, but this is very +// unlikely, and we don't have any better alternative. +const resolvePackageFallback = async function (moduleName, baseDirs, error) { + const mainFilePath = resolvePathFollowSymlinks(moduleName, baseDirs) + const packagePath = await findUp(isPackageDir.bind(null, moduleName), { cwd: mainFilePath, type: 'directory' }) + if (packagePath === undefined) { + throw error + } + return packagePath } -const listFilenames = async function(srcFolder) { - try { - return await pReaddir(srcFolder) - } catch (error) { - throw new Error(`Functions folder does not exist: ${srcFolder}`) +const isPackageDir = async function (moduleName, dir) { + // Need to use `endsWith()` to take into account `@scope/package`. + // Backslashes need to be converted for Windows. + if (!dir.replace(BACKSLASH_REGEXP, '/').endsWith(moduleName) || !(await pathExists(`${dir}/package.json`))) { + return } + + return dir } -const getFunctionInfo = async function(srcPath) { - const { filename, stat, mainFile, extension, srcDir } = await getSrcInfo(srcPath) +const BACKSLASH_REGEXP = /\\/g - if (mainFile === undefined) { - return {} - } +module.exports = { resolvePackage, resolvePathPreserveSymlinks } - if (extension === '.zip' || extension === '.js') { - return { runtime: 'js', filename, stat, mainFile, extension, srcPath, srcDir } - } - if (await isGoExe(srcPath)) { - return { runtime: 'go', filename, stat, mainFile, extension, srcPath, srcDir } - } +/***/ }), - return {} -} +/***/ 6734: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const getSrcInfo = async function(srcPath) { - const filename = basename(srcPath) - if (filename === 'node_modules') { - return {} - } +const { getPublishedFiles } = __nccwpck_require__(37692) - const stat = await pLstat(srcPath) - const mainFile = await getMainFile(srcPath, filename, stat) - if (mainFile === undefined) { - return {} +// Some modules generate source files on `postinstall` that are not located +// inside the module's directory itself. +const getSideFiles = function (modulePath, moduleName) { + const sideFiles = SIDE_FILES[moduleName] + if (sideFiles === undefined) { + return [] } - const extension = extname(mainFile) - const srcDir = stat.isDirectory() ? srcPath : dirname(srcPath) - return { filename, stat, mainFile, extension, srcDir } + return getPublishedFiles(`${modulePath}/${sideFiles}`) } -// Each `srcPath` can also be a directory with an `index.js` file or a file -// using the same filename as its directory -const getMainFile = function(srcPath, filename, stat) { +const SIDE_FILES = { + '@prisma/client': '../../.prisma', +} + +module.exports = { getSideFiles } + + +/***/ }), + +/***/ 33130: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { promisify } = __nccwpck_require__(31669) + +const glob = __nccwpck_require__(91957) + +const pGlob = promisify(glob) + +// When using a directory, we include all its descendants except `node_modules` +const getTreeFiles = function (srcPath, stat) { if (!stat.isDirectory()) { - return srcPath + return [srcPath] } - return locatePath([join(srcPath, `${filename}.js`), join(srcPath, 'index.js')], { type: 'file' }) + return pGlob(`${srcPath}/**`, { + ignore: `${srcPath}/**/node_modules/**`, + nodir: true, + absolute: true, + }) } -const hasMainFile = function({ mainFile }) { - return mainFile !== undefined -} +module.exports = { getTreeFiles } -const getListedFunction = function({ runtime, mainFile, extension }) { - return { mainFile, runtime, extension } -} -const getListedFunctionFiles = async function({ runtime, filename, stat, mainFile, extension, srcPath, srcDir }) { - const srcFiles = await getSrcFiles({ runtime, filename, stat, mainFile, extension, srcPath, srcDir }) - return srcFiles.map(srcFile => ({ srcFile, mainFile, runtime, extension: extname(srcFile) })) +/***/ }), + +/***/ 4525: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { readFile } = __nccwpck_require__(35747) +const { promisify } = __nccwpck_require__(31669) + +const { detect, Runtime } = __nccwpck_require__(26115) + +const { startZip, addZipFile, addZipContent, endZip } = __nccwpck_require__(96888) + +const pReadFile = promisify(readFile) + +// Try to guess the runtime by inspecting the binary file. +const binaryRuntime = async function (path) { + try { + const buffer = await pReadFile(path) + return RUNTIMES[detect(buffer)] + } catch (error) {} } -const getSrcFiles = function({ runtime, filename, stat, mainFile, extension, srcPath, srcDir }) { - if (runtime === 'js' && extension === '.js') { - return listNodeFiles(srcPath, filename, mainFile, srcDir, stat) - } +const RUNTIMES = { + [Runtime.Go]: 'go', + [Runtime.Rust]: 'rs', +} - return [srcPath] +// Zip a binary function file +const zipBinary = async function ({ srcPath, destPath, filename, stat, runtime }) { + const { archive, output } = startZip(destPath) + addZipFile(archive, srcPath, filename, stat) + addZipContent(archive, JSON.stringify({ runtime }), 'netlify-toolchain') + await endZip(archive, output) } -module.exports = { zipFunctions, zipFunction, listFunctions, listFunctionsFiles } +module.exports = { binaryRuntime, zipBinary } /***/ }), -/***/ 33399: +/***/ 67445: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const { stat } = __nccwpck_require__(35747) +const { Buffer } = __nccwpck_require__(64293) +const fs = __nccwpck_require__(35747) const { dirname, normalize, sep } = __nccwpck_require__(85622) +const { promisify } = __nccwpck_require__(31669) const commonPathPrefix = __nccwpck_require__(50682) const unixify = __nccwpck_require__(61011) -const promisify = __nccwpck_require__(63149) const { startZip, addZipFile, addZipContent, endZip } = __nccwpck_require__(96888) -const pStat = promisify(stat) +const pStat = promisify(fs.stat) // Zip a Node.js function file -const zipNodeJs = async function(srcFiles, destPath, filename, mainFile) { +const zipNodeJs = async function ({ srcFiles, destPath, filename, mainFile, pluginsModulesPath }) { const { archive, output } = startZip(destPath) const dirnames = srcFiles.map(dirname) @@ -18044,13 +18389,13 @@ const zipNodeJs = async function(srcFiles, destPath, filename, mainFile) { // We ensure this is not async, so that the archive's checksum is // deterministic. Otherwise it depends on the order the files were added. srcFilesInfos.forEach(({ srcFile, stat }) => { - zipJsFile({ srcFile, commonPrefix, archive, stat }) + zipJsFile({ srcFile, commonPrefix, pluginsModulesPath, archive, stat }) }) await endZip(archive, output) } -const addEntryFile = function(commonPrefix, archive, filename, mainFile) { +const addEntryFile = function (commonPrefix, archive, filename, mainFile) { const mainPath = normalizeFilePath(mainFile, commonPrefix) const content = Buffer.from(`module.exports = require('./${mainPath}')`) const entryFilename = filename.endsWith('.js') ? filename : `${filename}.js` @@ -18058,24 +18403,26 @@ const addEntryFile = function(commonPrefix, archive, filename, mainFile) { addZipContent(archive, content, entryFilename) } -const addStat = async function(srcFile) { +const addStat = async function (srcFile) { const stat = await pStat(srcFile) return { srcFile, stat } } -const zipJsFile = function({ srcFile, commonPrefix, archive, stat }) { - const filename = normalizeFilePath(srcFile, commonPrefix) +const zipJsFile = function ({ srcFile, commonPrefix, pluginsModulesPath, archive, stat }) { + const filename = normalizeFilePath(srcFile, commonPrefix, pluginsModulesPath) addZipFile(archive, srcFile, filename, stat) } // `adm-zip` and `require()` expect Unix paths. // We remove the common path prefix. // With files on different Windows drives, we remove the drive letter. -const normalizeFilePath = function(path, commonPrefix) { +const normalizeFilePath = function (path, commonPrefix, pluginsModulesPath) { const pathA = normalize(path) - const pathB = pathA.replace(commonPrefix, `${ZIP_ROOT_DIR}${sep}`) - const pathC = unixify(pathB) - return pathC + const pathB = + pluginsModulesPath === undefined ? pathA : pathA.replace(pluginsModulesPath, `${ZIP_ROOT_DIR}${sep}node_modules`) + const pathC = pathB.replace(commonPrefix, `${ZIP_ROOT_DIR}${sep}`) + const pathD = unixify(pathC) + return pathD } const ZIP_ROOT_DIR = 'src' @@ -18083,103 +18430,6 @@ const ZIP_ROOT_DIR = 'src' module.exports = { zipNodeJs } -/***/ }), - -/***/ 97921: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const { version: nodeVersion } = __nccwpck_require__(61765) - -const findUp = __nccwpck_require__(90096) -const pathExists = __nccwpck_require__(74037) -const resolve = __nccwpck_require__(23703) -const { lt: ltVersion } = __nccwpck_require__(32759) - -// Find the path to a module's `package.json` -// We need to use `resolve` instead of `require.resolve()` because: -// - it is async -// - it preserves symlinks: -// - this is important because if a file does a `require('./symlink')`, we -// need to bundle the symlink and its target, not only the target -// - `path.resolve()` cannot be used for relative|absolute file paths -// because it does not resolve ommitted file extension, -// e.g. `require('./file')` instead of `require('./file.js')` -// - the CLI flag `--preserve-symlinks` can be used with Node.js, but it -// cannot be set runtime -// However it does not give helpful error messages. -// https://github.com/browserify/resolve/issues/223 -// So, on errors, we fallback to `require.resolve()` -const resolvePackage = async function(moduleName, basedir) { - try { - return await resolvePathPreserveSymlinks(`${moduleName}/package.json`, basedir) - } catch (error) { - if (ltVersion(nodeVersion, REQUEST_RESOLVE_MIN_VERSION)) { - throw error - } - - try { - return resolvePathFollowSymlinks(`${moduleName}/package.json`, basedir) - } catch (error) { - const packagePath = resolvePackageFallback(moduleName, basedir) - if (packagePath === undefined) { - throw error - } - return packagePath - } - } -} - -// TODO: remove after dropping support for Node <8.9.0 -// `require.resolve()` option `paths` was introduced in Node 8.9.0 -const REQUEST_RESOLVE_MIN_VERSION = '8.9.0' - -// We need to use `new Promise()` due to a bug with `utils.promisify()` on -// `resolve`: -// https://github.com/browserify/resolve/issues/151#issuecomment-368210310 -const resolvePathPreserveSymlinks = function(path, basedir) { - return new Promise((success, reject) => { - resolve(path, { basedir, preserveSymlinks: true }, (error, resolvedLocation) => { - if (error) { - return reject(error) - } - - success(resolvedLocation) - }) - }) -} - -const resolvePathFollowSymlinks = function(path, basedir) { - return require.resolve(path, { paths: [basedir] }) -} - -// `require.resolve()` on a module's specific file (like `package.json`) -// can be forbidden by the package author by using an `exports` field in -// their `package.json`. We need this fallback. -// It looks for the first directory up from a package's `main` file that: -// - is named like the package -// - has a `package.json` -// Theoritically, this might not the root `package.json`, but this is very -// unlikely, and we don't have any better alternative. -const resolvePackageFallback = async function(moduleName, basedir) { - const mainFilePath = resolvePathFollowSymlinks(moduleName, basedir) - return findUp(isPackageDir.bind(null, moduleName), { cwd: mainFilePath, type: 'directory' }) -} - -const isPackageDir = async function(moduleName, dir) { - // Need to use `endsWith()` to take into account `@scope/package`. - // Backslashes need to be converted for Windows. - if (!dir.replace(BACKSLASH_REGEXP, '/').endsWith(moduleName) || !(await pathExists(`${dir}/package.json`))) { - return - } - - return dir -} - -const BACKSLASH_REGEXP = /\\/g - -module.exports = { resolvePackage, resolvePathPreserveSymlinks } - - /***/ }), /***/ 40334: @@ -24714,7 +24964,10 @@ module.exports = Zip; /***/ 76848: /***/ ((module) => { -// Whether or not the node represents an AMD define() call +// Deprecated +// Whether or not the node represents a generic define() call +// Note: this should not be used as it will have false positives. +// It is mostly used to guide sniffs for other methods and will be made private eventually. module.exports.isDefine = function (node) { if (!node) return false; @@ -24726,6 +24979,17 @@ module.exports.isDefine = function (node) { c.name === 'define'; }; +// Whether or not the node represents any of the AMD define() forms +module.exports.isDefineAMD = function (node) { + if (!node) return false; + + var e = module.exports; + + return e.isNamedForm(node) || e.isDependencyForm(node) || + e.isFactoryForm(node) || e.isNoDependencyForm(node) || + e.isREMForm(node); +}; + // Whether or not the node represents a require function call module.exports.isRequire = function (node) { return this.isPlainRequire(node) || this.isMainScopedRequire(node); @@ -24840,7 +25104,10 @@ module.exports.isNamedForm = function (node) { var args = node['arguments']; - return args && (args[0].type === 'Literal' || args[0].type === 'StringLiteral'); + return args && args.length == 3 && + (args[0].type === 'Literal' || args[0].type === 'StringLiteral') && + (args[1].type == 'ArrayExpression') && + (args[2].type == 'FunctionExpression'); }; // define([deps], func) @@ -24849,7 +25116,9 @@ module.exports.isDependencyForm = function (node) { var args = node['arguments']; - return args && args[0].type === 'ArrayExpression'; + return args && args.length == 2 && + args[0].type === 'ArrayExpression' && + args[1].type == 'FunctionExpression'; }; // define(func(require)) @@ -24860,8 +25129,10 @@ module.exports.isFactoryForm = function (node) { firstParamNode = args.length && args[0].params ? args[0].params[0] : null; // Node should have a function whose first param is 'require' - return args && args[0].type === 'FunctionExpression' && - firstParamNode && firstParamNode.type === 'Identifier' && firstParamNode.name === 'require'; + return args && args.length == 1 && + args[0].type === 'FunctionExpression' && + firstParamNode && firstParamNode.type === 'Identifier' && + firstParamNode.name === 'require'; }; // define({}) @@ -24870,7 +25141,8 @@ module.exports.isNoDependencyForm = function (node) { var args = node['arguments']; - return args && args[0].type === 'ObjectExpression'; + return args && args.length == 1 && + args[0].type === 'ObjectExpression'; }; // define(function(require, exports, module) @@ -24881,7 +25153,7 @@ module.exports.isREMForm = function(node) { params = args.length ? args[0].params : null, first, second, third; - if (!args || args[0].type !== 'FunctionExpression' || params.length !== 3) { + if (!args || args.length == 0 || args[0].type !== 'FunctionExpression' || params.length !== 3) { return false; } @@ -37445,72 +37717,6 @@ formatters.O = function (v) { }; -/***/ }), - -/***/ 59234: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var keys = __nccwpck_require__(70137); -var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol'; - -var toStr = Object.prototype.toString; -var concat = Array.prototype.concat; -var origDefineProperty = Object.defineProperty; - -var isFunction = function (fn) { - return typeof fn === 'function' && toStr.call(fn) === '[object Function]'; -}; - -var arePropertyDescriptorsSupported = function () { - var obj = {}; - try { - origDefineProperty(obj, 'x', { enumerable: false, value: obj }); - // eslint-disable-next-line no-unused-vars, no-restricted-syntax - for (var _ in obj) { // jscs:ignore disallowUnusedVariables - return false; - } - return obj.x === obj; - } catch (e) { /* this is IE 8. */ - return false; - } -}; -var supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported(); - -var defineProperty = function (object, name, value, predicate) { - if (name in object && (!isFunction(predicate) || !predicate())) { - return; - } - if (supportsDescriptors) { - origDefineProperty(object, name, { - configurable: true, - enumerable: false, - value: value, - writable: true - }); - } else { - object[name] = value; - } -}; - -var defineProperties = function (object, map) { - var predicates = arguments.length > 2 ? arguments[2] : {}; - var props = keys(map); - if (hasSymbols) { - props = concat.call(props, Object.getOwnPropertySymbols(map)); - } - for (var i = 0; i < props.length; i += 1) { - defineProperty(object, props[i], map[props[i]], predicates[props[i]]); - } -}; - -defineProperties.supportsDescriptors = !!supportsDescriptors; - -module.exports = defineProperties; - - /***/ }), /***/ 58932: @@ -37567,7 +37773,7 @@ module.exports = function(src, options = {}) { walker.walk(src, function(node) { if (!types.isTopLevelRequire(node) && - !types.isDefine(node) && + !types.isDefineAMD(node) && !types.isRequire(node)) { return; } @@ -42804,12 +43010,7 @@ class Comparator { return ANY } constructor (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) if (comp instanceof Comparator) { if (comp.loose === !!options.loose) { @@ -42931,6 +43132,7 @@ class Comparator { module.exports = Comparator +const parseOptions = __nccwpck_require__(16346) const {re, t} = __nccwpck_require__(23995) const cmp = __nccwpck_require__(67345) const debug = __nccwpck_require__(42866) @@ -42946,12 +43148,7 @@ const Range = __nccwpck_require__(15665) // hoisted class for cyclic dependency class Range { constructor (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) if (range instanceof Range) { if ( @@ -42991,6 +43188,24 @@ class Range { throw new TypeError(`Invalid SemVer Range: ${range}`) } + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) + this.set = [first] + else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } + } + } + } + this.format() } @@ -43009,8 +43224,17 @@ class Range { } parseRange (range) { - const loose = this.options.loose range = range.trim() + + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = Object.keys(this.options).join(',') + const memoKey = `parseRange:${memoOpts}:${range}` + const cached = cache.get(memoKey) + if (cached) + return cached + + const loose = this.options.loose // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) @@ -43032,15 +43256,33 @@ class Range { // ready to be split into comparators. const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - return range + const rangeList = range .split(' ') .map(comp => parseComparator(comp, this.options)) .join(' ') .split(/\s+/) + // >=0.0.0 is equivalent to * .map(comp => replaceGTE0(comp, this.options)) // in loose mode, throw out any that are not valid comparators .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true) .map(comp => new Comparator(comp, this.options)) + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const l = rangeList.length + const rangeMap = new Map() + for (const comp of rangeList) { + if (isNullSet(comp)) + return [comp] + rangeMap.set(comp.value, comp) + } + if (rangeMap.size > 1 && rangeMap.has('')) + rangeMap.delete('') + + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result } intersects (range, options) { @@ -43089,6 +43331,10 @@ class Range { } module.exports = Range +const LRU = __nccwpck_require__(7129) +const cache = new LRU({ max: 1000 }) + +const parseOptions = __nccwpck_require__(16346) const Comparator = __nccwpck_require__(42229) const debug = __nccwpck_require__(42866) const SemVer = __nccwpck_require__(24079) @@ -43100,6 +43346,9 @@ const { caretTrimReplace } = __nccwpck_require__(23995) +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' + // take a set of comparators and determine whether there // exists a version which can satisfy it const isSatisfiable = (comparators, options) => { @@ -43417,15 +43666,12 @@ const debug = __nccwpck_require__(42866) const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(82050) const { re, t } = __nccwpck_require__(23995) +const parseOptions = __nccwpck_require__(16346) const { compareIdentifiers } = __nccwpck_require__(32800) class SemVer { constructor (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) + if (version instanceof SemVer) { if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { @@ -44008,13 +44254,9 @@ const {MAX_LENGTH} = __nccwpck_require__(82050) const { re, t } = __nccwpck_require__(23995) const SemVer = __nccwpck_require__(24079) +const parseOptions = __nccwpck_require__(16346) const parse = (version, options) => { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + options = parseOptions(options) if (version instanceof SemVer) { return version @@ -44251,6 +44493,24 @@ module.exports = { } +/***/ }), + +/***/ 16346: +/***/ ((module) => { + +// parse out just the options we care about so we always get a consistent +// obj with keys in a consistent order. +const opts = ['includePrerelease', 'loose', 'rtl'] +const parseOptions = options => + !options ? {} + : typeof options !== 'object' ? { loose: true } + : opts.filter(k => options[k]).reduce((options, k) => { + options[k] = true + return options + }, {}) +module.exports = parseOptions + + /***/ }), /***/ 23995: @@ -44565,6 +44825,7 @@ const minVersion = (range, loose) => { for (let i = 0; i < range.set.length; ++i) { const comparators = range.set[i] + let setMin = null comparators.forEach((comparator) => { // Clone to avoid manipulating the comparator's semver object. const compver = new SemVer(comparator.semver.version) @@ -44579,8 +44840,8 @@ const minVersion = (range, loose) => { /* fallthrough */ case '': case '>=': - if (!minver || gt(minver, compver)) { - minver = compver + if (!setMin || gt(compver, setMin)) { + setMin = compver } break case '<': @@ -44592,6 +44853,8 @@ const minVersion = (range, loose) => { throw new Error(`Unexpected operation: ${comparator.operator}`) } }) + if (setMin && (!minver || gt(minver, setMin))) + minver = setMin } if (minver && range.test(minver)) { @@ -44642,7 +44905,7 @@ const outside = (version, range, hilo, options) => { throw new TypeError('Must provide a hilo val of "<" or ">"') } - // If it satisifes the range it is not outside + // If it satisfies the range it is not outside if (satisfies(version, range, options)) { return false } @@ -44769,15 +45032,18 @@ const compare = __nccwpck_require__(76018) // - If EQ satisfies every C, return true // - Else return false // - If GT -// - If GT is lower than any > or >= comp in C, return false +// - If GT.semver is lower than any > or >= comp in C, return false // - If GT is >=, and GT.semver does not satisfy every C, return false // - If LT -// - If LT.semver is greater than that of any > comp in C, return false +// - If LT.semver is greater than any < or <= comp in C, return false // - If LT is <=, and LT.semver does not satisfy every C, return false // - If any C is a = range, and GT or LT are set, return false // - Else return true const subset = (sub, dom, options) => { + if (sub === dom) + return true + sub = new Range(sub, options) dom = new Range(dom, options) let sawNonNull = false @@ -44800,6 +45066,9 @@ const subset = (sub, dom, options) => { } const simpleSubset = (sub, dom, options) => { + if (sub === dom) + return true + if (sub.length === 1 && sub[0].semver === ANY) return dom.length === 1 && dom[0].semver === ANY @@ -44838,6 +45107,7 @@ const simpleSubset = (sub, dom, options) => { if (!satisfies(eq, String(c), options)) return false } + return true } @@ -44849,7 +45119,7 @@ const simpleSubset = (sub, dom, options) => { if (gt) { if (c.operator === '>' || c.operator === '>=') { higher = higherGT(gt, c, options) - if (higher === c) + if (higher === c && higher !== gt) return false } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) return false @@ -44857,7 +45127,7 @@ const simpleSubset = (sub, dom, options) => { if (lt) { if (c.operator === '<' || c.operator === '<=') { lower = lowerLT(lt, c, options) - if (lower === c) + if (lower === c && lower !== lt) return false } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) return false @@ -186587,1493 +186857,149 @@ if ( true && module.exports) { /***/ }), -/***/ 39580: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -module.exports = Object.assign({}, - __nccwpck_require__(60644), - __nccwpck_require__(43838), -); - - -/***/ }), - -/***/ 53736: -/***/ ((module) => { - -const constants = {}; - -constants.ELF_SIGNATURE_BYTES = Buffer.from('\x7fELF', 'ascii'); - -constants.class = { - 0: 'none', - 1: '32', - 2: '64', - none: 0, - '32': 1, - '64': 2, -}; - -constants.endian = { - 0: 'none', - 1: 'lsb', - 2: 'msb', - none: 0, - lsb: 1, - msb: 2, -}; - -constants.version = { - 0: 'none', - 1: 'current', - none: 0, - current: 1, -}; - -constants.osabi = { - 0: 'sysv', - 1: 'unix-sysv', - 2: 'netbsd', - 3: 'linux', - 6: 'solaris', - 7: 'aix', - 8: 'irix', - 9: 'freebsd', - 10: 'tru64', - 11: 'modesto', - 12: 'openbsd', - 13: 'openvms', - 14: 'nsk', - 15: 'aros', - 97: 'arm', - 255: 'standalone', - sysv: 0, - 'unix-sysv': 1, - netbsd: 2, - linux: 3, - solaris: 6, - aix: 7, - irix: 8, - freebsd: 9, - tru64: 10, - modesto: 11, - openbsd: 12, - openvms: 13, - nsk: 14, - aros: 15, - arm: 97, - standalone: 255, -}; - -constants.abiversion = { - 0: 'none', - 1: 'current', - none: 0, - current: 1, -}; - -constants.machine = { - 0: 'none', - 1: 'm32', - 2: 'sparc', - 3: 'x86', - 4: '68k', - 5: '88k', - 6: '486', - 7: '860', - 8: 'mips', - 9: 's370', - 10: 'mips_rs3_le', - 11: 'rs6000', - 15: 'pa_risc', - 16: 'ncube', - 17: 'vpp500', - 18: 'sparc32plus', - 19: '960', - 20: 'ppc', - 21: 'ppc64', - 22: 's390', - 36: 'v800', - 37: 'fr20', - 38: 'rh32', - 39: 'rce', - 40: 'arm', - 41: 'alpha', - 42: 'sh', - 43: 'sparcv9', - 44: 'tricore', - 45: 'arc', - 46: 'h8_300', - 47: 'h8_300h', - 48: 'h8s', - 49: 'h8_500', - 50: 'ia_64', - 51: 'mips_x', - 52: 'coldfire', - 53: '68hc12', - 54: 'mma', - 55: 'pcp', - 56: 'ncpu', - 57: 'ndr1', - 58: 'starcore', - 59: 'me16', - 60: 'st100', - 61: 'tinyj', - 62: 'amd64', - 63: 'pdsp', - 66: 'fx66', - 67: 'st9plus', - 68: 'st7', - 69: '68hc16', - 70: '68hc11', - 71: '68hc08', - 72: '68hc05', - 73: 'svx', - 74: 'st19', - 75: 'vax', - 76: 'cris', - 77: 'javelin', - 78: 'firepath', - 79: 'zsp', - 80: 'mmix', - 81: 'huany', - 82: 'prism', - 83: 'avr', - 84: 'fr30', - 85: 'd10v', - 86: 'd30v', - 87: 'v850', - 88: 'm32r', - 89: 'mn10300', - 90: 'mn10200', - 91: 'pj', - 92: 'openrisc', - 93: 'arc_a5', - 94: 'xtensa', - none: 0, - m32: 1, - sparc: 2, - x86: 3, - '68k': 4, - '88k': 5, - mips: 8, - s370: 9, - mips_rs3_le: 10, - rs6000: 11, - pa_risc: 15, - ncube: 16, - vpp500: 17, - sparc32plus: 18, - ppc: 20, - ppc64: 21, - s390: 22, - v800: 36, - fr20: 37, - rh32: 38, - rce: 39, - arm: 40, - alpha: 41, - sh: 42, - sparcv9: 43, - tricore: 44, - arc: 45, - h8_300: 46, - h8_300h: 47, - h8s: 48, - h8_500: 49, - ia_64: 50, - mips_x: 51, - coldfire: 52, - '68hc12': 53, - mma: 54, - pcp: 55, - ncpu: 56, - ndr1: 57, - starcore: 58, - me16: 59, - st100: 60, - tinyj: 61, - amd64: 62, - pdsp: 63, - fx66: 66, - st9plus: 67, - st7: 68, - '68hc16': 69, - '68hc11': 70, - '68hc08': 71, - '68hc05': 72, - svx: 73, - st19: 74, - vax: 75, - cris: 76, - javelin: 77, - firepath: 78, - zsp: 79, - mmix: 80, - huany: 81, - prism: 82, - avr: 83, - fr30: 84, - d10v: 85, - d30v: 86, - v850: 87, - m32r: 88, - mn10300: 89, - mn10200: 90, - pj: 91, - openrisc: 92, - arc_a5: 93, - xtensa: 94, -}; - -constants.type = { - '0': 'none', - '1': 'rel', - '2': 'exec', - '3': 'dyn', - '4': 'core', - none: 0, - rel: 1, - exec: 2, - dyn: 3, - core: 4, -}; - -constants.entryType = { - 0: 'null', - 1: 'load', - 2: 'dynamic', - 3: 'interp', - 4: 'note', - 5: 'shlib', - 6: 'phdr', - 7: 'tls', - null: 0, - load: 1, - dynamic: 2, - interp: 3, - note: 4, - shlib: 5, - phdr: 6, - tls: 7, - 0x6464e550: 'sunw_unwind', - 0x6474e550: 'sunw_eh_frame', - 0x6474e551: 'gnu_stack', - 0x6474e552: 'gnu_relro', - 0x6ffffffa: 'losunw', - 0x6ffffffa: 'sunwbss', - 0x6ffffffb: 'sunwstack', - 0x6ffffffc: 'sunwdtrace', - 0x6ffffffd: 'sunwcap', -}; - -constants.entryFlags = { - 4: 'read', - 2: 'write', - 1: 'execute', - read: 4, - write: 2, - execute: 1, - 0x00100000: 'sunw_failure', - 0x00200000: 'sunw_killed', - 0x00400000: 'sunw_siginfo', -}; - -constants.sectType = { - 0: 'null', - 1: 'progbits', - 2: 'symtab', - 3: 'strtab', - 4: 'rela', - 5: 'hash', - 6: 'dynamic', - 7: 'note', - 8: 'nobits', - 9: 'rel', - 10: 'shlib', - 11: 'dynsym', - 12: 'unknown12', - 13: 'unknown13', - 14: 'init_array', - 15: 'fini_array', - 16: 'preinit_array', - 17: 'group', - 18: 'symtab_shndx', - - null: 0, - progbits: 1, - symtab: 2, - strtab: 3, - rela: 4, - hash: 5, - dynamic: 6, - note: 7, - nobits: 8, - rel: 9, - shlib: 10, - dynsym: 11, - unknown12: 12, - unknown13: 13, - init_array: 14, - fini_array: 15, - preinit_array: 16, - group: 17, - symtab_shndx: 18, - - 0x60000000: 'loos', - 0x6fffffef: 'sunw_capchain', - 0x6ffffff0: 'sunw_capinfo', - 0x6ffffff1: 'sunw_symsort', - 0x6ffffff2: 'sunw_tlssort', - 0x6ffffff3: 'sunw_ldynsym', - 0x6ffffff4: 'sunw_dof', - 0x6ffffff5: 'sunw_cap', - 0x6ffffff6: 'sunw_signature', - 0x6ffffff7: 'sunw_annotate', - 0x6ffffff8: 'sunw_debugstr', - 0x6ffffff9: 'sunw_debug', - 0x6ffffffa: 'sunw_move', - 0x6ffffffb: 'sunw_comdat', - 0x6ffffffc: 'sunw_syminfo', - 0x6ffffffd: 'sunw_verdef', - 0x6ffffffe: 'sunw_verneed', - 0x6fffffff: 'sunw_versym', - 0x6fffffff: 'hisunw', - 0x6fffffff: 'hios', - 0x6ffffff5: 'gnu_attributes', - 0x6ffffff6: 'gnu_hash', - 0x6ffffff7: 'gnu_liblist', - 0x6ffffff8: 'checksum', -}; - -constants.sectFlags = { - 0x01: 'write', - 0x02: 'alloc', - 0x04: 'execute', - 0x10: 'merge', - 0x20: 'strings', - 0x40: 'info_link', - 0x80: 'link_order', - 0x100: 'os_nonconforming', - 0x200: 'group', - 0x400: 'tls', - write: 0x1, - alloc: 0x2, - execute: 0x4, - merge: 0x10, - strings: 0x20, - info_link: 0x40, - link_order: 0x80, - os_nonconforming: 0x100, - group: 0x200, - tls: 0x400, -}; - -constants.dynTypes = { - '0': 'DT_NULL', - '1': 'DT_NEEDED', - '2': 'DT_PLTRELSZ', - '3': 'DT_PLTGOT', - '4': 'DT_HASH', - '5': 'DT_STRTAB', - '6': 'DT_SYMTAB', - '7': 'DT_RELA', - '8': 'DT_RELASZ', - '9': 'DT_RELAENT', - '10': 'DT_STRSZ', - '11': 'DT_SYMENT', - '12': 'DT_INIT', - '13': 'DT_FINI', - '14': 'DT_SONAME', - '15': 'DT_RPATH', - '16': 'DT_SYMBOLIC', - '17': 'DT_REL', - '18': 'DT_RELSZ', - '19': 'DT_RELENT', - '20': 'DT_PLTREL', - '21': 'DT_DEBUG', - '22': 'DT_TEXTREL', - '23': 'DT_JMPREL', - '24': 'DT_BIND_NOW', - '25': 'DT_INIT_ARRAY', - '26': 'DT_FINI_ARRAY', - '27': 'DT_INIT_ARRAYSZ', - '28': 'DT_FINI_ARRAYSZ', - '30': 'DT_FLAGS', - 0x6ffffef5: 'DT_GNU_HASH', - 0x6ffffffb: 'DT_FLAGS_1', - 0x6ffffffe: 'DT_VERNEED', - 0x6fffffff: 'DT_VERNEEDNUM', - 0x6ffffff0: 'DT_VERSYM', - 0x6ffffff9: 'DT_RELACOUNT', - - DT_NULL: 0, - DT_NEEDED: 1, - DT_PLTRELSZ: 2, - DT_PLTGOT: 3, - DT_HASH: 4, - DT_STRTAB: 5, - DT_SYMTAB: 6, - DT_RELA: 7, - DT_RELASZ: 8, - DT_RELAENT: 9, - DT_STRSZ: 10, - DT_SYMENT: 11, - DT_INIT: 12, - DT_FINI: 13, - DT_SONAME: 14, - DT_RPATH: 15, - DT_SYMBOLIC: 16, - DT_REL: 17, - DT_RELSZ: 18, - DT_RELENT: 19, - DT_PLTREL: 20, - DT_DEBUG: 21, - DT_TEXTREL: 22, - DT_JMPREL: 23, - DT_BIND_NOW: 24, - DT_INIT_ARRAY: 25, - DT_FINI_ARRAY: 26, - DT_INIT_ARRAYSZ: 27, - DT_FINI_ARRAYSZ: 28, - DT_FLAGS: 30, - DT_GNU_HASH: 0x6ffffef5, - DT_FLAGS_1: 0x6ffffffb, - DT_VERNEED: 0x6ffffffe, - DT_VERNEEDNUM: 0x6fffffff, - DT_VERSYM: 0x6ffffff0, - DT_RELACOUNT: 0x6ffffff9, -}; - -module.exports = constants; - - -/***/ }), - -/***/ 30283: +/***/ 26115: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const ProgramHeader = __nccwpck_require__(66476); -const SectionHeader = __nccwpck_require__(73098); - -/** - * DataBlock defines the writable data bytes and any pre-zeroed data area in the program. - * It creates both a program header and section header describing the raw data block. - * - * The program header sets a memory_size = file_size + bss_length. This makes the loader allocate - * and zero additional bytes for the data segment. - */ - -class DataBlock { - constructor(elf, rw_data, bss_length) { - this.elf = elf; - this.rw_data = rw_data; - this.bss_length = bss_length; - this.elf_offset = null; - this.elf_size = this.rw_data.length; - - this.program_header = new ProgramHeader({ - type: 'load', - offset: null, - vaddr: null, - paddr: null, - filesz: this.elf_size, - memsz: this.elf_size + this.bss_length, // memsz > filesz -> fill bss data with zero - flags: 'read|write', - align: elf.word_size, - }); - this.section_header = new SectionHeader({ - name: '.data', - type: 'progbits', - flags: 'alloc|write', - addr: null, - offset: null, - size: this.elf_size, - link: 0, - info: 0, - addralign: 1, - entsize: 0, - }); - } - - calculate_size(elf_offset) { - this.elf_offset = elf_offset; - this.program_header.offset = elf_offset; - this.section_header.offset = elf_offset; - this.program_header.vaddr = this.elf.base_address + elf_offset; - this.program_header.paddr = this.elf.base_address + elf_offset; - this.section_header.addr = this.elf.base_address + elf_offset; - return this.elf_size; - } - - write(stream) { - stream.writeBuf(this.rw_data); - } -} +let imports = {}; +imports['__wbindgen_placeholder__'] = module.exports; +let wasm; +const { TextDecoder } = require(String.raw`util`); -module.exports = DataBlock; +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); -/***/ }), - -/***/ 60644: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const constants = __nccwpck_require__(53736); -const ELFHeader = __nccwpck_require__(76777); -const ProgramHeader = __nccwpck_require__(66476); -const SectionHeader = __nccwpck_require__(73098); -const StringTable = __nccwpck_require__(26233); - -/** - * Returns the integer-writing method that should be used - * @param {'lsb'|'msb'} endian - */ -function getReadIntFn(endian) { - switch (endian) { - case 'lsb': - return 'readUIntLE'; - case 'msb': - return 'readUIntBE'; - default: - new Error('Invalid endian: ' + endian); - } -} - -function parse(image) { - // load the first part of the ELF-header with the signature, word-size and endian - const hdr_bytes = image.slice(0, 8); - const hdr = { - signature: hdr_bytes.slice(0, 4), - class: constants.class[hdr_bytes[4]], - endian: constants.endian[hdr_bytes[5]], - osabi: constants.osabi[hdr_bytes[6]], - abiversion: constants.abiversion[hdr_bytes[7]], - }; - if (!hdr.signature.equals(constants.ELF_SIGNATURE_BYTES)) { - throw new Error('Invalid ELF signature bytes'); - } - - const stream = { - endian: hdr.endian, - image, - idx: 0, - word_size: hdr.class / 8, - readIntFn: getReadIntFn(hdr.endian), - seek(offset) { - return this.idx = offset; - }, - skip(sz) { - return this.idx += sz; - }, - readWord(sz) { - sz = sz || this.word_size; - // Node v10 no longer allows reads > 6 bytes - if (sz > 6) { - let buf = this.image.slice(this.idx, this.idx += sz); - if (this.endian === 'lsb') buf = buf.reverse(); - const hex = buf.toString('hex').match(/[^0].*|0$/)[0]; - const n = parseInt(hex, 16); - // sanity check - if (n.toString(16) !== hex) { - throw new Error(`Cannot represent 0x${buf.toString('hex')} as a JS number`); - } - return n; - } - this.idx += sz; - return this.image[this.readIntFn](this.idx - sz, sz); - }, - readBuf(sz) { - return this.image.slice(this.idx, (this.idx += sz)); - }, - }; - - // parse the header (fully) - const header = ELFHeader.parse(stream); - const programs = []; - const sections = []; - - // parse the program headers - stream.seek(header.phoff); - for (let i=0; i < header.phnum; i++) { - const ph = ProgramHeader.parse(stream, header); - programs.push({ - header: ph, - data: image.slice(ph.offset, ph.offset + ph.filesz), - }) - } - - // parse the section headers - stream.seek(header.shoff); - for (let i=0; i < header.shnum; i++) { - const sh = SectionHeader.parse(stream); - sections.push({ - header: sh, - data: image.slice(sh.offset, sh.offset + sh.size), - }) - } - - // resolve the section header string table and convert the section header name offsets to real names - const sh_string_table = StringTable.parse(sections[header.shstrndx]); - sections.forEach(section => { - section.header.name = sh_string_table.getString(section.header.name); - }); - - - return { - header, - programs, - sections, - sh_string_table, - } -} - -module.exports = { - parse, -} - - -/***/ }), - -/***/ 43838: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const DataBlock = __nccwpck_require__(30283); -const ELFHeader = __nccwpck_require__(76777); -const SectionHeader = __nccwpck_require__(73098); -const StringTable = __nccwpck_require__(26233); -const TextBlock = __nccwpck_require__(29864); -const Readable = __nccwpck_require__(92413).Readable; - -/** - * Minimal ELF layout (32/64 bit): - * - * - ELF header (52/64) - * - Program headers - * 0 load (56/32) - * - .text section (variable, padded) - r/e - contains code and ro data - * - .data section (variable, padded) - r/w - contains rw data and bss length - * - .shstrtab section () - * - Section headers (40/72): - * 0 null - * 1 .text - * 2 .data - * 3 .shstrtab - * - * The program-headers load everything from 0 to the end of .data section from the image into memory. - * The .text segment contains executable code and read-only data - * The .data segment contains writable data and zero-init bytes (bss) - * The .data segment may be zero-length - * The image entry point is always at the start of the .text section - * The .shstrtab section contains the names of the section headers and any symbols. - * - */ - - const zero_len_data = Buffer.alloc(0); - - // the default address the image is loaded at - const default_image_base_address = 0x400000; - - /** - * ELF image builder - */ -class ELFWriter { - - constructor(base_address, code, rodata = zero_len_data, rwdata = zero_len_data, bss_length = 0, entry_offset = 0, elf_header = null) { - check_elfwriter_args(base_address, code, rodata, rwdata, bss_length, entry_offset, elf_header); - - this.base_address = base_address; - this.entry_offset = entry_offset; - this.elf_header = new ELFHeader(elf_header); - - this.writeIntFn = get_writeIntFn(this.elf_header.endian); - this.word_size = this.elf_header.class / 8; - - this.text_block = new TextBlock(this, code, rodata); - this.data_block = new DataBlock(this, rwdata, bss_length); - this.string_table = new StringTable(SectionHeader.SHSTRTAB_NAME); - - this.program_headers = [ - this.text_block.program_header, - this.data_block.program_header, - ]; - - this.section_headers = [ - SectionHeader.null(), - this.text_block.section_header, - this.data_block.section_header, - this.string_table.section_header, - ]; - } - - /** - * @param {Writable} [stream] (optional) stream to write to - * @returns {Buffer|Number} - */ - build(stream) { - // create an rough map of all the parts that go into the ELF image - const elf_parts = [ - this.elf_header, - ...this.program_headers, - this.text_block, - this.data_block, - this.string_table, - align_to(this.word_size), - ...this.section_headers, - ]; - - // add all the section header names to the string table - // - the string table must be up-to-date before the size is calculated - this.section_headers.forEach(s => { - this.string_table.add_string(s.name); - }); - - // work out the size and offset for each part - let elf_image_size = 0; - elf_parts.forEach(elf_part => { - const elf_part_size = elf_part.calculate_size(elf_image_size, this); - elf_image_size += elf_part_size; - }); - - // find the section-header string table index - const shstrtabidx = this.section_headers.findIndex(sh => sh.name === SectionHeader.SHSTRTAB_NAME); - - // we only set the default entrypoint value if it hasn't already been customised in the elf_header - let entrypoint = this.elf_header.entry; - if (entrypoint === null) { - // the default program entrypoint is the offset from the start of the text (code) block - entrypoint = this.base_address + this.text_block.elf_offset + this.entry_offset; - } - - // finalise the details in the header - this.elf_header.finalise( - entrypoint, - this.program_headers, - this.section_headers, - shstrtabidx - ); - - let elf_image; - if (stream) { - // create a wrapper around the stream with the same methods as the buffer - elf_image = this.create_stream_wrapper(stream); - } else { - elf_image = this.create_buffer_wrapper(elf_image_size); - } - - // write all the parts to the ELF image buffer - elf_parts.forEach(elf_part => { - elf_part.write(elf_image, this); - }) - - if (stream) { - stream.push(null); // end of stream - return elf_image.idx; - } - - return elf_image.buffer; - } - - create_buffer_wrapper(size) { - return { - buffer: Buffer.alloc(size), - endian: this.elf_header.endian, - idx: 0, - word_size: this.word_size, - writeIntFn: this.writeIntFn, - - skip(sz) { - this.idx += sz; - }, - - writeBuf(buf) { - buf.copy(this.buffer, this.idx); - this.idx += buf.byteLength; - }, - - writeWord(value, sz) { - if (!Number.isSafeInteger(value)) { - throw new Error(`Cannot write non-integer value: ${value}`); - } - sz = sz || this.word_size; - // From v10, Buffer no longer allows writeUInt.. with bytelengths > 6 - // so for 64-bit integers, write via a temporary buffer - if (sz > 6) { - const buf = Buffer.alloc(sz); - const idx = this.endian === 'lsb' ? 0 : (sz-6); - buf[this.writeIntFn](value, idx, 6); - this.writeBuf(buf); - return; - } - this.buffer[this.writeIntFn](value, this.idx, sz); - this.idx += sz; - }, +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); } + return cachegetUint8Memory0; } - create_stream_wrapper(stream) { - return { - stream, - idx: 0, - word_size: this.word_size, - writeIntFn: this.writeIntFn, - - skip(sz) { - this.stream.push(Buffer.alloc(sz)); - // this.stream.write(Buffer.alloc(sz)); - this.idx += sz; - }, - - writeBuf(buf) { - this.stream.push(buf); - //this.stream.write(buf); - this.idx += buf.byteLength; - }, - - writeWord(value, sz) { - if (!Number.isSafeInteger(value)) { - throw new Error(`Cannot write non-integer value: ${value}`); - } - sz = sz || this.word_size; - const wordbuf = Buffer.alloc(sz); - // From v10, Buffer no longer allows writeUInt.. with bytelengths > 6 - let idx = 0; - if (sz > 6) { - idx = this.endian === 'lsb' ? 0 : (sz - 6); - sz = 6; - } - wordbuf[this.writeIntFn](value, idx, sz); - //this.stream.write(wordbuf); - this.stream.push(wordbuf); - this.idx += sz; - }, - } - } +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); } +const heap = new Array(32).fill(undefined); -function check_elfwriter_args(base_address, code, rodata, rwdata, bss_length, entry_offset, elf_header) { - if (typeof base_address !== 'number' || (base_address < 0) || ((base_address|0) !== base_address)) { - throw new Error('base_address must be a non-negative integer') - } - if (!Buffer.isBuffer(code) || (code.byteLength <= 0)) { - throw new Error('code must be a Buffer with at least 1 byte'); - } - if (rodata && !Buffer.isBuffer(rodata)) { - throw new Error('rodata must be a Buffer'); - } - if (rwdata && !Buffer.isBuffer(rwdata)) { - throw new Error('rwdata must be a Buffer'); - } - if (typeof bss_length !== 'number' || (bss_length < 0) || ((bss_length|0) !== bss_length)) { - throw new Error('bss_length must be a non-negative integer') - } - if (typeof entry_offset !== 'number' || (entry_offset < 0) || !Number.isSafeInteger(entry_offset)) { - throw new Error('entry_offset must be a non-negative integer') - } - if (typeof elf_header !== 'object') { - throw new Error('elf_header must be an object') - } - // we don't perform any validation of the elf_header values -} +heap.push(undefined, null, true, false); +let heap_next = heap.length; - /** - * Returns the integer-writing method that should be used - * @param {'lsb'|'msb'} endian - */ -function get_writeIntFn(endian) { - switch (endian) { - case 'lsb': - return 'writeUIntLE'; - case 'msb': - return 'writeUIntBE'; - default: - new Error('Invalid endian: ' + endian); - } -} +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; -/** - * Helper function to pad content to a specified alignment - * @param {number} boundary - * @returns {Buffer} - */ -function align_to(boundary) { - return { - boundary, - elf_size: null, - elf_offset: null, - calculate_size(elf_offset) { - this.elf_offset = elf_offset; - let mod = elf_offset % this.boundary; - if (mod === 0) { - mod = this.boundary; - } - return (this.elf_size = boundary - mod); - }, - write(stream) { - stream.skip(this.elf_size); - }, - }; + heap[idx] = obj; + return idx; } +function getObject(idx) { return heap[idx]; } -/** - * Build an ELF image. The resulting image contains the concatenation (with no padding) of: - * - code - * - rodata - * - rwdata - * - zeros (bss_length) - * - * @param {Buffer|Object} opts - * @param {Buffer} opts.code code bytes - * @param {Buffer} [opts.rodata] (optional) read-only data bytes - * @param {Buffer} [opts.rwdata] (optional) read-write data bytes - * @param {Number} [opts.bss_length] size of pre-zeroed read-write data - * @param {Number} [opts.base_address] memory address for loading the elf image (default: 0x400000) - * @param {Number} [opts.entry_offset] offset into the code buffer for the first instruction executed (default: 0) - * @param {Object} [opts.elf_header] custom ELF header values - * @returns {Buffer} - */ -function build(opts) { - let { code, rodata, rwdata, bss_length, base_address, entry_offset, elf_header } = Buffer.isBuffer(opts) ? {code: opts} : opts; - - const has_base_address = typeof(base_address) !== 'undefined' - const has_entry_offset = typeof(entry_offset) !== 'undefined' - - // if the entrypoint is set in the custom elf_header, we don't allow base_address or entry_offset to be set - if (elf_header && Object.prototype.hasOwnProperty.call(elf_header, 'entry')) { - if (has_base_address || has_entry_offset) { - throw new Error('base_address and entry_offset cannot be defined with elf_header.entry'); - } - } - if (!has_base_address) { - base_address = default_image_base_address; - } - if (!has_entry_offset) { - entry_offset = 0; - } - const elf = new ELFWriter(base_address, code, rodata, rwdata, bss_length, entry_offset, elf_header); - return elf.build(); +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; } - -/** - * Build an ELF image and output it to a Readable stream - * The resulting image contains the concatenation (with no padding) of: - * - code - * - rodata - * - rwdata - * - zeros (bss_length) - * - * @param {Buffer|Object} opts - * @param {Buffer} opts.code code bytes - * @param {Buffer} [opts.rodata] (optional) read-only data bytes - * @param {Buffer} [opts.rwdata] (optional) read-write data bytes - * @param {Number} [opts.bss_length] size of pre-zeroed read-write data - * @param {Number} [opts.base_address] memory address for loading the elf image (default: 0x400000) - * @param {Number} [opts.entry_offset] offset into the code buffer for the first instruction executed (default: 0) - * @param {Object} [opts.elf_header] custom ELF header values - * @returns {Readable} stream containing ELF image - */ -function createBuildStream(opts) { - const stream = new Readable(); - let { code, rodata, rwdata, bss_length, base_address, entry_offset, elf_header } = Buffer.isBuffer(opts) ? {code: opts} : opts; - - const has_base_address = typeof(base_address) !== 'undefined' - const has_entry_offset = typeof(entry_offset) !== 'undefined' - - // if the entrypoint is set in the custom elf_header, we don't allow base_address or entry_offset to be set - if (elf_header && Object.prototype.hasOwnProperty.call(elf_header, 'entry')) { - if (has_base_address || has_entry_offset) { - throw new Error('base_address and entry_offset cannot be defined with elf_header.entry'); - } - } - if (!has_base_address) { - base_address = default_image_base_address; - } - if (!has_entry_offset) { - entry_offset = 0; - } - - const elf = new ELFWriter(base_address, code, rodata, rwdata, bss_length, entry_offset, elf_header); - process.nextTick(() => { - elf.build(stream); - }); - return stream; +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; } - -module.exports = { - build, - createBuildStream, - default_image_base_address, -}; - -/***/ }), - -/***/ 76777: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +let WASM_VECTOR_LEN = 0; -const constants = __nccwpck_require__(53736); -const os = __nccwpck_require__(12087); - -/** - * ELFHeader is the main program header containing the ELF signature and - * general machine, program and section information. - */ -class ELFHeader { - constructor(header) { - Object.assign( - this, - { - elfsig: constants.ELF_SIGNATURE_BYTES, - class: '64', - endian: 'lsb', - osabi: 'unix-sysv', - abiversion: 'none', - type: 'exec', - machine: 'amd64', - version: 1, - entry: null, - phoff: null, - shoff: null, - flags: 0, - ehsize: null, - phentsize: null, - phnum: null, - shentsize: null, - shnum: null, - shstrndx: null, - }, - get_current_arch_elf_header_values(), - // override the default values with any custom values - header - ); - } - - static parse(stream) { - return new ELFHeader({ - elfsig: stream.readBuf(4), - class: constants.class[stream.readWord(1)], - endian: constants.endian[stream.readWord(1)], - osabi: constants.osabi[stream.readWord(1)], - abiversion: constants.abiversion[stream.readWord(1)], - padding: stream.readBuf(8), - type: constants.type[stream.readWord(2)], - machine: constants.machine[stream.readWord(2)], - version: stream.readWord(4), - entry: stream.readWord(), - phoff: stream.readWord(), - shoff: stream.readWord(), - flags: stream.readWord(4), - ehsize: stream.readWord(2), - phentsize: stream.readWord(2), - phnum: stream.readWord(2), - shentsize: stream.readWord(2), - shnum: stream.readWord(2), - shstrndx: stream.readWord(2), - }); - } - - calculate_size(elf_offset, elf) { - this.elf_offset = elf_offset; // should always be 0 - this.elf_size = this.ehsize = elf.word_size * 3 + 40; - return this.elf_size; - } - - finalise(entrypoint, program_headers, section_headers, string_table_idx) { - this.entry = entrypoint; - this.phoff = program_headers[0].elf_offset; - this.phentsize = program_headers[0].elf_size; - this.phnum = program_headers.length; - this.shoff = section_headers[0].elf_offset; - this.shentsize = section_headers[0].elf_size; - this.shnum = section_headers.length; - this.shstrndx = string_table_idx; - } - - write(stream) { - stream.writeBuf(this.elfsig); - stream.writeWord(constants.class[this.class], 1); - stream.writeWord(constants.endian[this.endian], 1); - stream.writeWord(constants.osabi[this.osabi], 1); - stream.writeWord(constants.abiversion[this.abiversion], 1); - stream.skip(8); - stream.writeWord(constants.type[this.type], 2); - stream.writeWord(constants.machine[this.machine], 2); - stream.writeWord(this.version, 4); - stream.writeWord(this.entry); - stream.writeWord(this.phoff); - stream.writeWord(this.shoff); - stream.writeWord(this.flags, 4); - stream.writeWord(this.ehsize, 2); - stream.writeWord(this.phentsize, 2); - stream.writeWord(this.phnum, 2); - stream.writeWord(this.shentsize, 2); - stream.writeWord(this.shnum, 2); - stream.writeWord(this.shstrndx, 2); - } -} - -function get_current_arch_elf_header_values() { - const res = { - endian: /^m/i.test(os.endianness()) ? 'msb' : 'lsb', - } - switch(process.arch) { - case 'arm': res.class = '32'; res.machine = 'arm'; break; - case 'arm64': res.class = '64'; res.machine = 'arm'; break; - case 'x32': res.class = '32'; res.machine = 'x86'; break; - case 'x64': - default: res.class = '64'; res.machine = 'amd64'; break; - } - return res; +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; } - -module.exports = ELFHeader; - - -/***/ }), - -/***/ 34363: -/***/ ((module) => { - /** - * Convert an integer to a pipe(|)-separated list of flags - * @param {number} n - * @param {Object} flag_map - */ -function map(n, flag_map) { - const flags = []; - for (let x = n, i=1; x; x >>>= 1) { - if (x & 1) { - flags.push(flag_map[i]); - } - i <<= 1; - } - return flags.join('|'); -} - -/** - * Convert a pipe(|)-separated list of flags to an integer - * @param {string} flags - * @param {Object} flag_map - */ -function unmap(flags, flag_map) { - if (!flags) return 0; - return flags.split('|').reduce((bits, flag) => bits |= flag_map[flag], 0); -} - -module.exports = { - map, - unmap, +* @param {Uint8Array} data +* @returns {number | undefined} +*/ +module.exports.detect = function(data) { + var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + var ret = wasm.detect(ptr0, len0); + return ret === 2 ? undefined : ret; }; - -/***/ }), - -/***/ 66476: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const constants = __nccwpck_require__(53736); -const flags = __nccwpck_require__(34363); - -/** - * ProgramHeader contains information about how and where to load a segment of - * the ELF image into memory for execution. - */ -class ProgramHeader { - constructor(data) { - Object.assign(this, data); - } - - static parse(stream, elf_header) { - const data = { - type: constants.entryType[stream.readWord(4)], - flags64: (elf_header.class === '64') ? flags.map(stream.readWord(4), constants.entryFlags) : '', - offset: stream.readWord(), - vaddr: stream.readWord(), - paddr: stream.readWord(), - filesz: stream.readWord(), - memsz: stream.readWord(), - flags32: (elf_header.class === '32') ? flags.map(stream.readWord(4), constants.entryFlags) : '', - align: stream.readWord(), - } - data.flags = data.flags32 || data.flags64; - delete data.flags32; - delete data.flags64; - - return new ProgramHeader(data); - } - - calculate_size(elf_offset, elf) { - this.elf_offset = elf_offset; - // type and flags are 32-bit, everything else is word_size - return (this.elf_size = 6 * elf.word_size + 8); - } - - finalise(filesz) { - this.filesz = this.memsz = filesz; - } - - write(stream, elf) { - stream.writeWord(constants.entryType[this.type], 4); - if (elf.elf_header.class === '64') { - stream.writeWord(flags.unmap(this.flags, constants.entryFlags), 4); - } - stream.writeWord(this.offset); // offset into ELF image - stream.writeWord(this.vaddr); // virtual address to load at - stream.writeWord(this.paddr); - stream.writeWord(this.filesz); // amount of data to copy from ELF image - stream.writeWord(this.memsz); // amount of memory to allocate - any > filesz is zeroed (the .data program header uses this to allocate BSS data) - if (elf.elf_header.class === '32') { - stream.writeWord(flags.unmap(this.flags, constants.entryFlags), 4); +let cachegetNodeBufferMemory0 = null; +function getNodeBufferMemory0() { + if (cachegetNodeBufferMemory0 === null || cachegetNodeBufferMemory0.buffer !== wasm.memory.buffer) { + cachegetNodeBufferMemory0 = Buffer.from(wasm.memory.buffer); } - stream.writeWord(this.align); - } + return cachegetNodeBufferMemory0; } -module.exports = ProgramHeader; - +function passStringToWasm0(arg, malloc) { -/***/ }), - -/***/ 73098: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const constants = __nccwpck_require__(53736); -const flags = __nccwpck_require__(34363); - -/** - * SectionHeader defines a chunk of the ELF image. - * Each section has a name which must be added to the StringTable. - */ -class SectionHeader { - constructor(data) { - Object.assign(this, data); - } - - static null() { - return new SectionHeader({ - name: '', - type: 'null', - flags: '', - addr: 0, - offset: 0, - size: 0, - link: 0, - info: 0, - addralign: 0, - entsize: 0, - }); - } - - static parse(stream) { - return new SectionHeader({ - name: stream.readWord(4), // name string can only be determined once all the section headers are parsed - type: constants.sectType[stream.readWord(4)], - flags: flags.map(stream.readWord(), constants.sectType), - addr: stream.readWord(), - offset: stream.readWord(), - size: stream.readWord(), - link: stream.readWord(4), - info: stream.readWord(4), - addralign: stream.readWord(), - entsize: stream.readWord(), - }) - } + const len = Buffer.byteLength(arg); + const ptr = malloc(len); + getNodeBufferMemory0().write(arg, ptr, len); + WASM_VECTOR_LEN = len; + return ptr; +} - calculate_size(elf_offset, elf) { - this.elf_offset = elf_offset; - return this.elf_size = (6 * elf.word_size) + (4 * 4); - } - - write(stream, elf) { - stream.writeWord(elf.string_table.getStringOffset(this.name), 4); - stream.writeWord(constants.sectType[this.type], 4); - // flags - let value = flags.unmap(this.flags, constants.sectFlags); - stream.writeWord(value); - // remaining fields are all integers - const fields = [ - 'addr', // virtual address for the section - 'offset', // ELF image offset - 'size', // ELF image size - 'link', - 'info', - 'addralign', - 'entsize', - ]; - for (let field of fields) { - let intsz = /link|info/.test(field) ? 4 : undefined; - stream.writeWord(this[field], intsz); +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); } - } + return cachegetInt32Memory0; } - -// the name of the Section Header string table -SectionHeader.SHSTRTAB_NAME = '.shstrtab'; - -module.exports = SectionHeader; - - -/***/ }), - -/***/ 26233: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SectionHeader = __nccwpck_require__(73098); - /** - * The string table is used to store section and symbol names. In the ELF image, it consists - * of a sequence of null-terminated ASCII strings. - */ -class StringTable { - constructor(arg) { - if (typeof arg === 'object') { - // from StringTable.parse() - Object.assign(this, arg); - return; - } +*/ +module.exports.Runtime = Object.freeze({ Go:0,"0":"Go",Rust:1,"1":"Rust", }); - this.strings = ''; - this.section_header = new SectionHeader({ - name: arg, - type: 'strtab', - flags: '', - addr: 0, - offset: null, - size: null, - link: 0, - info: 0, - addralign: 1, - entsize: 0, - }); - } +module.exports.__wbindgen_string_new = function(arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); +}; - static parse({ header, data }) { - return new StringTable({ - section_header: header, - strings: data.toString(StringTable.ENCODING), - }); - } +module.exports.__wbg_new_59cb74e423758ede = function() { + var ret = new Error(); + return addHeapObject(ret); +}; - add_string(str) { - return this.getStringOffset(str, true); - } +module.exports.__wbg_stack_558ba5917b466edd = function(arg0, arg1) { + var ret = getObject(arg1).stack; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; +}; - /** - * Returns the offset into the table of the specified string - * @param {string} str string to locate - * @param {boolean} [add] optional - automatically add the string if it's not in the table - */ - getStringOffset(str, add = false) { - // strings are a concatenated list of null-terminated values - const str0 = str + '\0'; - let offset = this.strings.indexOf(str0); - if (offset < 0) { - if (!add) { - throw new Error(`String '${str}' not found in string table`); - } - offset = this.strings.length; - this.strings += str0; +module.exports.__wbg_error_4bb6c2a97407129a = function(arg0, arg1) { + try { + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(arg0, arg1); } - return offset; - } - - // retrieve the string from the table at the given offset - getString(offset) { - if (offset < 0 || offset >= this.strings.length) - throw new RangeError(`Offset out of range of string table. Offset=${offset}, Table length=${this.strings.length}`); - const s = this.strings.slice(offset, this.strings.indexOf('\0', offset)); - return s; - } - - calculate_size(elf_offset) { - this.elf_offset = this.section_header.offset = elf_offset; - // ELF only allows ascii chars, so bytes = length - this.elf_size = this.section_header.size = this.strings.length; - return this.elf_size; - } - - write(stream) { - stream.writeBuf(Buffer.from(this.strings, StringTable.ENCODING)); - } -} - -StringTable.ENCODING = 'ascii'; +}; -module.exports = StringTable; +module.exports.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); +}; +module.exports.__wbindgen_rethrow = function(arg0) { + throw takeObject(arg0); +}; -/***/ }), +const path = __nccwpck_require__.ab + "elf_cam_bg.wasm"; +const bytes = __nccwpck_require__(35747).readFileSync(__nccwpck_require__.ab + "elf_cam_bg.wasm"); -/***/ 29864: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +const wasmModule = new WebAssembly.Module(bytes); +const wasmInstance = new WebAssembly.Instance(wasmModule, imports); +wasm = wasmInstance.exports; +module.exports.__wasm = wasm; -const ProgramHeader = __nccwpck_require__(66476); -const SectionHeader = __nccwpck_require__(73098); -/** - * TextBlock defines the code and read-only data bytes of the program. - * It creates both a program header and section header describing the raw buffer. - * - * If ro_data exists, the code buffer should be pre-padded to a reasonable alignment since the - * buffers are concatenated when writing to the ELF image. - */ -class TextBlock { - constructor(elf, code, ro_data) { - this.elf = elf; - this.code = code; - this.ro_data = ro_data; - this.elf_offset = null; - this.elf_size = code.byteLength + ro_data.byteLength, - - // the .text program header loads everything in the ELF image from start (offset:0) - // to the end of ro_data chunk at the base address. - // This means the loaded image includes the ELF signature, program headers, code and ro_data. - this.program_header = new ProgramHeader({ - type: 'load', - offset: 0, - vaddr: elf.base_address, - paddr: elf.base_address, - filesz: null, - memsz: null, - flags: 'read|execute', - align: 0x100000, - }); - - this.section_header = new SectionHeader({ - name: '.text', - type: 'progbits', - flags: 'alloc|execute', - addr: null, - offset: null, - size: this.elf_size, - link: 0, - info: 0, - addralign: 1, - entsize: 0, - }); - } - - calculate_size(elf_offset, elf) { - this.elf_offset = elf_offset; - this.program_header.filesz = elf_offset + this.elf_size; - this.program_header.memsz = elf_offset + this.elf_size; - this.section_header.addr = elf.base_address + elf_offset; - this.section_header.offset = elf_offset; - return this.elf_size; - } - - write(stream) { - stream.writeBuf(this.code); - stream.writeBuf(this.ro_data); - } - } - -module.exports = TextBlock; - /***/ }), @@ -188176,929 +187102,6 @@ var eos = function(stream, opts, callback) { module.exports = eos; -/***/ }), - -/***/ 71339: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $TypeError = GetIntrinsic('%TypeError%'); - -var DefineOwnProperty = __nccwpck_require__(20468); - -var FromPropertyDescriptor = __nccwpck_require__(12965); -var OrdinaryGetOwnProperty = __nccwpck_require__(59373); -var IsDataDescriptor = __nccwpck_require__(32407); -var IsExtensible = __nccwpck_require__(6997); -var IsPropertyKey = __nccwpck_require__(35103); -var SameValue = __nccwpck_require__(29582); -var Type = __nccwpck_require__(31708); - -// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty - -module.exports = function CreateDataProperty(O, P, V) { - if (Type(O) !== 'Object') { - throw new $TypeError('Assertion failed: Type(O) is not Object'); - } - if (!IsPropertyKey(P)) { - throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); - } - var oldDesc = OrdinaryGetOwnProperty(O, P); - var extensible = !oldDesc || IsExtensible(O); - var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']); - if (immutable || !extensible) { - return false; - } - return DefineOwnProperty( - IsDataDescriptor, - SameValue, - FromPropertyDescriptor, - O, - P, - { - '[[Configurable]]': true, - '[[Enumerable]]': true, - '[[Value]]': V, - '[[Writable]]': true - } - ); -}; - - -/***/ }), - -/***/ 12965: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var assertRecord = __nccwpck_require__(88625); - -var Type = __nccwpck_require__(31708); - -// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor - -module.exports = function FromPropertyDescriptor(Desc) { - if (typeof Desc === 'undefined') { - return Desc; - } - - assertRecord(Type, 'Property Descriptor', 'Desc', Desc); - - var obj = {}; - if ('[[Value]]' in Desc) { - obj.value = Desc['[[Value]]']; - } - if ('[[Writable]]' in Desc) { - obj.writable = Desc['[[Writable]]']; - } - if ('[[Get]]' in Desc) { - obj.get = Desc['[[Get]]']; - } - if ('[[Set]]' in Desc) { - obj.set = Desc['[[Set]]']; - } - if ('[[Enumerable]]' in Desc) { - obj.enumerable = Desc['[[Enumerable]]']; - } - if ('[[Configurable]]' in Desc) { - obj.configurable = Desc['[[Configurable]]']; - } - return obj; -}; - - -/***/ }), - -/***/ 22526: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $Array = GetIntrinsic('%Array%'); - -// eslint-disable-next-line global-require -var toStr = !$Array.isArray && __nccwpck_require__(40206)('Object.prototype.toString'); - -// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray - -module.exports = $Array.isArray || function IsArray(argument) { - return toStr(argument) === '[object Array]'; -}; - - -/***/ }), - -/***/ 18433: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11 - -module.exports = __nccwpck_require__(94615); - - -/***/ }), - -/***/ 32407: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var has = __nccwpck_require__(76339); - -var assertRecord = __nccwpck_require__(88625); - -var Type = __nccwpck_require__(31708); - -// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor - -module.exports = function IsDataDescriptor(Desc) { - if (typeof Desc === 'undefined') { - return false; - } - - assertRecord(Type, 'Property Descriptor', 'Desc', Desc); - - if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) { - return false; - } - - return true; -}; - - -/***/ }), - -/***/ 6997: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $Object = GetIntrinsic('%Object%'); - -var isPrimitive = __nccwpck_require__(58949); - -var $preventExtensions = $Object.preventExtensions; -var $isExtensible = $Object.isExtensible; - -// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o - -module.exports = $preventExtensions - ? function IsExtensible(obj) { - return !isPrimitive(obj) && $isExtensible(obj); - } - : function IsExtensible(obj) { - return !isPrimitive(obj); - }; - - -/***/ }), - -/***/ 35103: -/***/ ((module) => { - -"use strict"; - - -// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey - -module.exports = function IsPropertyKey(argument) { - return typeof argument === 'string' || typeof argument === 'symbol'; -}; - - -/***/ }), - -/***/ 55820: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $match = GetIntrinsic('%Symbol.match%', true); - -var hasRegExpMatcher = __nccwpck_require__(96403); - -var ToBoolean = __nccwpck_require__(19170); - -// https://ecma-international.org/ecma-262/6.0/#sec-isregexp - -module.exports = function IsRegExp(argument) { - if (!argument || typeof argument !== 'object') { - return false; - } - if ($match) { - var isRegExp = argument[$match]; - if (typeof isRegExp !== 'undefined') { - return ToBoolean(isRegExp); - } - } - return hasRegExpMatcher(argument); -}; - - -/***/ }), - -/***/ 59373: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $gOPD = __nccwpck_require__(17310); -var $TypeError = GetIntrinsic('%TypeError%'); - -var callBound = __nccwpck_require__(40206); - -var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); - -var has = __nccwpck_require__(76339); - -var IsArray = __nccwpck_require__(22526); -var IsPropertyKey = __nccwpck_require__(35103); -var IsRegExp = __nccwpck_require__(55820); -var ToPropertyDescriptor = __nccwpck_require__(71878); -var Type = __nccwpck_require__(31708); - -// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty - -module.exports = function OrdinaryGetOwnProperty(O, P) { - if (Type(O) !== 'Object') { - throw new $TypeError('Assertion failed: O must be an Object'); - } - if (!IsPropertyKey(P)) { - throw new $TypeError('Assertion failed: P must be a Property Key'); - } - if (!has(O, P)) { - return void 0; - } - if (!$gOPD) { - // ES3 / IE 8 fallback - var arrayLength = IsArray(O) && P === 'length'; - var regexLastIndex = IsRegExp(O) && P === 'lastIndex'; - return { - '[[Configurable]]': !(arrayLength || regexLastIndex), - '[[Enumerable]]': $isEnumerable(O, P), - '[[Value]]': O[P], - '[[Writable]]': true - }; - } - return ToPropertyDescriptor($gOPD(O, P)); -}; - - -/***/ }), - -/***/ 82549: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -module.exports = __nccwpck_require__(24342); - - -/***/ }), - -/***/ 29582: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var $isNaN = __nccwpck_require__(89664); - -// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12 - -module.exports = function SameValue(x, y) { - if (x === y) { // 0 === -0, but they are not identical. - if (x === 0) { return 1 / x === 1 / y; } - return true; - } - return $isNaN(x) && $isNaN(y); -}; - - -/***/ }), - -/***/ 19170: -/***/ ((module) => { - -"use strict"; - - -// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 - -module.exports = function ToBoolean(value) { return !!value; }; - - -/***/ }), - -/***/ 31921: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $Object = GetIntrinsic('%Object%'); - -var RequireObjectCoercible = __nccwpck_require__(82549); - -// https://www.ecma-international.org/ecma-262/6.0/#sec-toobject - -module.exports = function ToObject(value) { - RequireObjectCoercible(value); - return $Object(value); -}; - - -/***/ }), - -/***/ 71878: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var has = __nccwpck_require__(76339); - -var GetIntrinsic = __nccwpck_require__(43442); - -var $TypeError = GetIntrinsic('%TypeError%'); - -var Type = __nccwpck_require__(31708); -var ToBoolean = __nccwpck_require__(19170); -var IsCallable = __nccwpck_require__(18433); - -// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5 - -module.exports = function ToPropertyDescriptor(Obj) { - if (Type(Obj) !== 'Object') { - throw new $TypeError('ToPropertyDescriptor requires an object'); - } - - var desc = {}; - if (has(Obj, 'enumerable')) { - desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable); - } - if (has(Obj, 'configurable')) { - desc['[[Configurable]]'] = ToBoolean(Obj.configurable); - } - if (has(Obj, 'value')) { - desc['[[Value]]'] = Obj.value; - } - if (has(Obj, 'writable')) { - desc['[[Writable]]'] = ToBoolean(Obj.writable); - } - if (has(Obj, 'get')) { - var getter = Obj.get; - if (typeof getter !== 'undefined' && !IsCallable(getter)) { - throw new TypeError('getter must be a function'); - } - desc['[[Get]]'] = getter; - } - if (has(Obj, 'set')) { - var setter = Obj.set; - if (typeof setter !== 'undefined' && !IsCallable(setter)) { - throw new $TypeError('setter must be a function'); - } - desc['[[Set]]'] = setter; - } - - if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) { - throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute'); - } - return desc; -}; - - -/***/ }), - -/***/ 31708: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var ES5Type = __nccwpck_require__(91038); - -// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring - -module.exports = function Type(x) { - if (typeof x === 'symbol') { - return 'Symbol'; - } - return ES5Type(x); -}; - - -/***/ }), - -/***/ 24342: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $TypeError = GetIntrinsic('%TypeError%'); - -// http://www.ecma-international.org/ecma-262/5.1/#sec-9.10 - -module.exports = function CheckObjectCoercible(value, optMessage) { - if (value == null) { - throw new $TypeError(optMessage || ('Cannot call method on ' + value)); - } - return value; -}; - - -/***/ }), - -/***/ 91038: -/***/ ((module) => { - -"use strict"; - - -// https://www.ecma-international.org/ecma-262/5.1/#sec-8 - -module.exports = function Type(x) { - if (x === null) { - return 'Null'; - } - if (typeof x === 'undefined') { - return 'Undefined'; - } - if (typeof x === 'function' || typeof x === 'object') { - return 'Object'; - } - if (typeof x === 'number') { - return 'Number'; - } - if (typeof x === 'boolean') { - return 'Boolean'; - } - if (typeof x === 'string') { - return 'String'; - } -}; - - -/***/ }), - -/***/ 43442: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -/* globals - Atomics, - SharedArrayBuffer, -*/ - -var undefined; - -var $TypeError = TypeError; - -var $gOPD = Object.getOwnPropertyDescriptor; -if ($gOPD) { - try { - $gOPD({}, ''); - } catch (e) { - $gOPD = null; // this is IE 8, which has a broken gOPD - } -} - -var throwTypeError = function () { throw new $TypeError(); }; -var ThrowTypeError = $gOPD - ? (function () { - try { - // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties - arguments.callee; // IE 8 does not throw here - return throwTypeError; - } catch (calleeThrows) { - try { - // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') - return $gOPD(arguments, 'callee').get; - } catch (gOPDthrows) { - return throwTypeError; - } - } - }()) - : throwTypeError; - -var hasSymbols = __nccwpck_require__(40587)(); - -var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto - -var generator; // = function * () {}; -var generatorFunction = generator ? getProto(generator) : undefined; -var asyncFn; // async function() {}; -var asyncFunction = asyncFn ? asyncFn.constructor : undefined; -var asyncGen; // async function * () {}; -var asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined; -var asyncGenIterator = asyncGen ? asyncGen() : undefined; - -var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array); - -var INTRINSICS = { - '%Array%': Array, - '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, - '%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype, - '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined, - '%ArrayPrototype%': Array.prototype, - '%ArrayProto_entries%': Array.prototype.entries, - '%ArrayProto_forEach%': Array.prototype.forEach, - '%ArrayProto_keys%': Array.prototype.keys, - '%ArrayProto_values%': Array.prototype.values, - '%AsyncFromSyncIteratorPrototype%': undefined, - '%AsyncFunction%': asyncFunction, - '%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined, - '%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined, - '%AsyncGeneratorFunction%': asyncGenFunction, - '%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined, - '%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined, - '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, - '%Boolean%': Boolean, - '%BooleanPrototype%': Boolean.prototype, - '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, - '%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype, - '%Date%': Date, - '%DatePrototype%': Date.prototype, - '%decodeURI%': decodeURI, - '%decodeURIComponent%': decodeURIComponent, - '%encodeURI%': encodeURI, - '%encodeURIComponent%': encodeURIComponent, - '%Error%': Error, - '%ErrorPrototype%': Error.prototype, - '%eval%': eval, // eslint-disable-line no-eval - '%EvalError%': EvalError, - '%EvalErrorPrototype%': EvalError.prototype, - '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, - '%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype, - '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, - '%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype, - '%Function%': Function, - '%FunctionPrototype%': Function.prototype, - '%Generator%': generator ? getProto(generator()) : undefined, - '%GeneratorFunction%': generatorFunction, - '%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined, - '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, - '%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype, - '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, - '%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype, - '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, - '%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype, - '%isFinite%': isFinite, - '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined, - '%JSON%': typeof JSON === 'object' ? JSON : undefined, - '%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined, - '%Map%': typeof Map === 'undefined' ? undefined : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()), - '%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype, - '%Math%': Math, - '%Number%': Number, - '%NumberPrototype%': Number.prototype, - '%Object%': Object, - '%ObjectPrototype%': Object.prototype, - '%ObjProto_toString%': Object.prototype.toString, - '%ObjProto_valueOf%': Object.prototype.valueOf, - '%parseFloat%': parseFloat, - '%parseInt%': parseInt, - '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, - '%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype, - '%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then, - '%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all, - '%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject, - '%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve, - '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, - '%RangeError%': RangeError, - '%RangeErrorPrototype%': RangeError.prototype, - '%ReferenceError%': ReferenceError, - '%ReferenceErrorPrototype%': ReferenceError.prototype, - '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, - '%RegExp%': RegExp, - '%RegExpPrototype%': RegExp.prototype, - '%Set%': typeof Set === 'undefined' ? undefined : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()), - '%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype, - '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, - '%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype, - '%String%': String, - '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined, - '%StringPrototype%': String.prototype, - '%Symbol%': hasSymbols ? Symbol : undefined, - '%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined, - '%SyntaxError%': SyntaxError, - '%SyntaxErrorPrototype%': SyntaxError.prototype, - '%ThrowTypeError%': ThrowTypeError, - '%TypedArray%': TypedArray, - '%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined, - '%TypeError%': $TypeError, - '%TypeErrorPrototype%': $TypeError.prototype, - '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, - '%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype, - '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, - '%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype, - '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, - '%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype, - '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, - '%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype, - '%URIError%': URIError, - '%URIErrorPrototype%': URIError.prototype, - '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, - '%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, - '%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype -}; - -var bind = __nccwpck_require__(88334); -var $replace = bind.call(Function.call, String.prototype.replace); - -/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ -var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; -var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ -var stringToPath = function stringToPath(string) { - var result = []; - $replace(string, rePropName, function (match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match); - }); - return result; -}; -/* end adaptation */ - -var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { - if (!(name in INTRINSICS)) { - throw new SyntaxError('intrinsic ' + name + ' does not exist!'); - } - - // istanbul ignore if // hopefully this is impossible to test :-) - if (typeof INTRINSICS[name] === 'undefined' && !allowMissing) { - throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); - } - - return INTRINSICS[name]; -}; - -module.exports = function GetIntrinsic(name, allowMissing) { - if (typeof name !== 'string' || name.length === 0) { - throw new TypeError('intrinsic name must be a non-empty string'); - } - if (arguments.length > 1 && typeof allowMissing !== 'boolean') { - throw new TypeError('"allowMissing" argument must be a boolean'); - } - - var parts = stringToPath(name); - - var value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing); - for (var i = 1; i < parts.length; i += 1) { - if (value != null) { - if ($gOPD && (i + 1) >= parts.length) { - var desc = $gOPD(value, parts[i]); - if (!allowMissing && !(parts[i] in value)) { - throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); - } - value = desc ? (desc.get || desc.value) : value[parts[i]]; - } else { - value = value[parts[i]]; - } - } - } - return value; -}; - - -/***/ }), - -/***/ 20468: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); - -if ($defineProperty) { - try { - $defineProperty({}, 'a', { value: 1 }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = null; - } -} - -var callBound = __nccwpck_require__(40206); - -var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); - -// eslint-disable-next-line max-params -module.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) { - if (!$defineProperty) { - if (!IsDataDescriptor(desc)) { - // ES3 does not support getters/setters - return false; - } - if (!desc['[[Configurable]]'] || !desc['[[Writable]]']) { - return false; - } - - // fallback for ES3 - if (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) { - // a non-enumerable existing property - return false; - } - - // property does not exist at all, or exists but is enumerable - var V = desc['[[Value]]']; - // eslint-disable-next-line no-param-reassign - O[P] = V; // will use [[Define]] - return SameValue(O[P], V); - } - $defineProperty(O, P, FromPropertyDescriptor(desc)); - return true; -}; - - -/***/ }), - -/***/ 88625: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $TypeError = GetIntrinsic('%TypeError%'); -var $SyntaxError = GetIntrinsic('%SyntaxError%'); - -var has = __nccwpck_require__(76339); - -var predicates = { - // https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type - 'Property Descriptor': function isPropertyDescriptor(Type, Desc) { - if (Type(Desc) !== 'Object') { - return false; - } - var allowed = { - '[[Configurable]]': true, - '[[Enumerable]]': true, - '[[Get]]': true, - '[[Set]]': true, - '[[Value]]': true, - '[[Writable]]': true - }; - - for (var key in Desc) { // eslint-disable-line - if (has(Desc, key) && !allowed[key]) { - return false; - } - } - - var isData = has(Desc, '[[Value]]'); - var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]'); - if (isData && IsAccessor) { - throw new $TypeError('Property Descriptors may not be both accessor and data descriptors'); - } - return true; - } -}; - -module.exports = function assertRecord(Type, recordType, argumentName, value) { - var predicate = predicates[recordType]; - if (typeof predicate !== 'function') { - throw new $SyntaxError('unknown record type: ' + recordType); - } - if (!predicate(Type, value)) { - throw new $TypeError(argumentName + ' must be a ' + recordType); - } -}; - - -/***/ }), - -/***/ 42410: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var bind = __nccwpck_require__(88334); - -var GetIntrinsic = __nccwpck_require__(43442); - -var $Function = GetIntrinsic('%Function%'); -var $apply = $Function.apply; -var $call = $Function.call; - -module.exports = function callBind() { - return bind.apply($call, arguments); -}; - -module.exports.apply = function applyBind() { - return bind.apply($apply, arguments); -}; - - -/***/ }), - -/***/ 40206: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var callBind = __nccwpck_require__(42410); - -var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); - -module.exports = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = GetIntrinsic(name, !!allowMissing); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) { - return callBind(intrinsic); - } - return intrinsic; -}; - - -/***/ }), - -/***/ 17310: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var GetIntrinsic = __nccwpck_require__(43442); - -var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%'); -if ($gOPD) { - try { - $gOPD([], 'length'); - } catch (e) { - // IE 8 has a broken gOPD - $gOPD = null; - } -} - -module.exports = $gOPD; - - -/***/ }), - -/***/ 89664: -/***/ ((module) => { - -"use strict"; - - -module.exports = Number.isNaN || function isNaN(a) { - return a !== a; -}; - - -/***/ }), - -/***/ 58949: -/***/ ((module) => { - -"use strict"; - - -module.exports = function isPrimitive(value) { - return value === null || (typeof value !== 'function' && typeof value !== 'object'); -}; - - /***/ }), /***/ 98691: @@ -196323,28 +194326,6 @@ module.exports = Object.freeze({ /* vim: set sw=4 ts=4 et tw=80 : */ -/***/ }), - -/***/ 14940: -/***/ ((module) => { - -"use strict"; - - -module.exports = (object, predicate) => { - const result = {}; - const isArray = Array.isArray(predicate); - - for (const [key, value] of Object.entries(object)) { - if (isArray ? predicate.includes(key) : predicate(key, value, object)) { - result[key] = value; - } - } - - return result; -}; - - /***/ }), /***/ 67630: @@ -224407,77 +222388,6 @@ module.exports = (flag, argv = process.argv) => { }; -/***/ }), - -/***/ 40587: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var origSymbol = global.Symbol; -var hasSymbolSham = __nccwpck_require__(57747); - -module.exports = function hasNativeSymbols() { - if (typeof origSymbol !== 'function') { return false; } - if (typeof Symbol !== 'function') { return false; } - if (typeof origSymbol('foo') !== 'symbol') { return false; } - if (typeof Symbol('bar') !== 'symbol') { return false; } - - return hasSymbolSham(); -}; - - -/***/ }), - -/***/ 57747: -/***/ ((module) => { - -"use strict"; - - -/* eslint complexity: [2, 18], max-statements: [2, 33] */ -module.exports = function hasSymbols() { - if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } - if (typeof Symbol.iterator === 'symbol') { return true; } - - var obj = {}; - var sym = Symbol('test'); - var symObj = Object(sym); - if (typeof sym === 'string') { return false; } - - if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } - if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } - - // temp disabled per https://github.com/ljharb/object.assign/issues/17 - // if (sym instanceof Symbol) { return false; } - // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 - // if (!(symObj instanceof Symbol)) { return false; } - - // if (typeof Symbol.prototype.toString !== 'function') { return false; } - // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } - - var symVal = 42; - obj[sym] = symVal; - for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax - if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } - - if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } - - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { return false; } - - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } - - if (typeof Object.getOwnPropertyDescriptor === 'function') { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } - } - - return true; -}; - - /***/ }), /***/ 76339: @@ -224855,46 +222765,78 @@ if (typeof Object.create === 'function') { /***/ }), -/***/ 94615: -/***/ ((module) => { +/***/ 56873: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var fnToStr = Function.prototype.toString; +var has = __nccwpck_require__(76339); -var constructorRegex = /^\s*class\b/; -var isES6ClassFn = function isES6ClassFunction(value) { - try { - var fnStr = fnToStr.call(value); - return constructorRegex.test(fnStr); - } catch (e) { - return false; // not a function +function specifierIncluded(current, specifier) { + var nodeParts = current.split('.'); + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + + for (var i = 0; i < 3; ++i) { + var cur = parseInt(nodeParts[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } + if (op === '>=') { + return cur >= ver; + } + return false; } -}; + return op === '>='; +} -var tryFunctionObject = function tryFunctionToStr(value) { - try { - if (isES6ClassFn(value)) { return false; } - fnToStr.call(value); - return true; - } catch (e) { +function matchesRange(current, range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { return false; } -}; -var toStr = Object.prototype.toString; -var fnClass = '[object Function]'; -var genClass = '[object GeneratorFunction]'; -var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; - -module.exports = function isCallable(value) { - if (!value) { return false; } - if (typeof value !== 'function' && typeof value !== 'object') { return false; } - if (typeof value === 'function' && !value.prototype) { return true; } - if (hasToStringTag) { return tryFunctionObject(value); } - if (isES6ClassFn(value)) { return false; } - var strClass = toStr.call(value); - return strClass === fnClass || strClass === genClass; + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(current, specifiers[i])) { + return false; + } + } + return true; +} + +function versionIncluded(nodeVersion, specifierValue) { + if (typeof specifierValue === 'boolean') { + return specifierValue; + } + + var current = typeof nodeVersion === 'undefined' + ? process.versions && process.versions.node && process.versions.node + : nodeVersion; + + if (typeof current !== 'string') { + throw new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required'); + } + + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(current, specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(current, specifierValue); +} + +var data = __nccwpck_require__(93991); + +module.exports = function isCore(x, nodeVersion) { + return has(data, x) && versionIncluded(nodeVersion, data[x]); }; @@ -225026,53 +222968,6 @@ function isPlainObject(o) { exports.isPlainObject = isPlainObject; -/***/ }), - -/***/ 96403: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var has = __nccwpck_require__(76339); -var regexExec = RegExp.prototype.exec; -var gOPD = Object.getOwnPropertyDescriptor; - -var tryRegexExecCall = function tryRegexExec(value) { - try { - var lastIndex = value.lastIndex; - value.lastIndex = 0; // eslint-disable-line no-param-reassign - - regexExec.call(value); - return true; - } catch (e) { - return false; - } finally { - value.lastIndex = lastIndex; // eslint-disable-line no-param-reassign - } -}; -var toStr = Object.prototype.toString; -var regexClass = '[object RegExp]'; -var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; - -module.exports = function isRegex(value) { - if (!value || typeof value !== 'object') { - return false; - } - if (!hasToStringTag) { - return toStr.call(value) === regexClass; - } - - var descriptor = gOPD(value, 'lastIndex'); - var hasLastIndexDataProperty = descriptor && has(descriptor, 'value'); - if (!hasLastIndexDataProperty) { - return false; - } - - return tryRegexExecCall(value); -}; - - /***/ }), /***/ 70239: @@ -230405,9 +228300,10 @@ module.exports = flatten; /***/ }), -/***/ 99197: -/***/ ((module) => { +/***/ 10155: +/***/ ((module, exports, __nccwpck_require__) => { +/* module decorator */ module = __nccwpck_require__.nmd(module); /** * lodash (Custom Build) * Build: `lodash modularize exports="npm" -o ./` @@ -230417,25 +228313,20 @@ module.exports = flatten; * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - /** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; +var MAX_SAFE_INTEGER = 9007199254740991; /** `Object#toString` result references. */ -var funcTag = '[object Function]', +var argsTag = '[object Arguments]', + funcTag = '[object Function]', genTag = '[object GeneratorFunction]', - symbolTag = '[object Symbol]'; + mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; +var dataViewTag = '[object DataView]'; /** * Used to match `RegExp` @@ -230443,9 +228334,6 @@ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, */ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - /** Used to detect host constructors (Safari). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; @@ -230458,6 +228346,15 @@ var freeSelf = typeof self == 'object' && self && self.Object === Object && self /** Used as a reference to the global object. */ var root = freeGlobal || freeSelf || Function('return this')(); +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + /** * Gets the value at `key` of `object`. * @@ -230489,9 +228386,22 @@ function isHostObject(value) { return result; } +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + /** Used for built-in method references. */ -var arrayProto = Array.prototype, - funcProto = Function.prototype, +var funcProto = Function.prototype, objectProto = Object.prototype; /** Used to detect overreaching core-js shims. */ @@ -230523,357 +228433,39 @@ var reIsNative = RegExp('^' + ); /** Built-in value references. */ -var Symbol = root.Symbol, - splice = arrayProto.splice; - -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'), - nativeCreate = getNative(Object, 'create'); - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; -} - -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; -} - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); -} - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} - -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; -} - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; -} - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); -} - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} +var Buffer = moduleExports ? root.Buffer : undefined, + propertyIsEnumerable = objectProto.propertyIsEnumerable; -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeKeys = overArg(Object.keys, Object); -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; -} +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'); -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; +/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */ +var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf'); -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); /** - * The base implementation of `_.get` without support for default values. + * The base implementation of `getTag`. * * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. */ -function baseGet(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; +function baseGetTag(value) { + return objectToString.call(value); } /** @@ -230892,52 +228484,6 @@ function baseIsNative(value) { return pattern.test(toSource(value)); } -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value) { - return isArray(value) ? value : stringToPath(value); -} - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - /** * Gets the native function at `key` of `object`. * @@ -230952,38 +228498,37 @@ function getNative(object, key) { } /** - * Checks if `value` is a property name and not a property path. + * Gets the `toStringTag` of `value`. * * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} +var getTag = baseGetTag; -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); +// Fallback for data views, maps, sets, and weak maps in IE 11, +// for data views in Edge < 14, and promises in Node.js. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; } /** @@ -230998,605 +228543,17 @@ function isMasked(func) { } /** - * Converts `string` to a property path array. + * Checks if `value` is likely a prototype object. * * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. */ -var stringToPath = memoize(function(string) { - string = toString(string); - - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} - -// Assign cache to `_.memoize`. -memoize.Cache = MapCache; - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -module.exports = get; - - -/***/ }), - -/***/ 10155: -/***/ ((module, exports, __nccwpck_require__) => { - -/* module decorator */ module = __nccwpck_require__.nmd(module); -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - setTag = '[object Set]', - weakMapTag = '[object WeakMap]'; - -var dataViewTag = '[object DataView]'; - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; -} - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined, - propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeKeys = overArg(Object.keys, Object); - -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'), - Map = getNative(root, 'Map'), - Promise = getNative(root, 'Promise'), - Set = getNative(root, 'Set'), - WeakMap = getNative(root, 'WeakMap'); - -/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */ -var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf'); - -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - -/** - * The base implementation of `getTag`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - return objectToString.call(value); -} - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; - -// Fallback for data views, maps, sets, and weak maps in IE 11, -// for data views in Edge < 14, and promises in Node.js. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = objectToString.call(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : undefined; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; -} - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; + return value === proto; } /** @@ -231912,1166 +228869,169 @@ function isObjectLike(value) { } /** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; -} - -module.exports = isEmpty; - - -/***/ }), - -/***/ 25723: -/***/ ((module) => { - -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; -} - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Built-in value references. */ -var getPrototype = overArg(Object.getPrototypeOf, Object); - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike(value) || - objectToString.call(value) != objectTag || isHostObject(value)) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return (typeof Ctor == 'function' && - Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); -} - -module.exports = isPlainObject; - - -/***/ }), - -/***/ 51552: -/***/ ((module) => { - -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991; - -/** `Object#toString` result references. */ -var funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - symbolTag = '[object Symbol]'; - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; -} - -/** Used for built-in method references. */ -var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** Built-in value references. */ -var Symbol = root.Symbol, - splice = arrayProto.splice; - -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'), - nativeCreate = getNative(Object, 'create'); - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; -} - -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; -} - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); -} - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} - -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; -} - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; -} - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); -} - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; -} - -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; - -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - object[key] = value; - } -} - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} - -/** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = isKey(path, object) ? [path] : castPath(path); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; -} - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value) { - return isArray(value) ? value : stringToPath(value); -} - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && - (typeof value == 'number' || reIsUint.test(value)) && - (value > -1 && value % 1 == 0 && value < length); -} - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} - -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoize(function(string) { - string = toString(string); - - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} - -// Assign cache to `_.memoize`. -memoize.Cache = MapCache; - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. + * This method returns `false`. * * @static * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. * @example * - * _.isSymbol(Symbol.iterator); - * // => true + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = isEmpty; + + +/***/ }), + +/***/ 25723: +/***/ ((module) => { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** + * Checks if `value` is a host object in IE < 9. * - * _.isSymbol('abc'); - * // => false + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; } /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * - * _.toString(null); - * // => '' + * _.isObjectLike({}); + * // => true * - * _.toString(-0); - * // => '-0' + * _.isObjectLike([1, 2, 3]); + * // => true * - * _.toString([1, 2, 3]); - * // => '1,2,3' + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false */ -function toString(value) { - return value == null ? '' : baseToString(value); +function isObjectLike(value) { + return !!value && typeof value == 'object'; } /** - * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, - * it's created. Arrays are created for missing index properties while objects - * are created for all other missing properties. Use `_.setWith` to customize - * `path` creation. - * - * **Note:** This method mutates `object`. + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. * * @static * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * function Foo() { + * this.a = 1; + * } * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false * - * _.set(object, ['x', '0', 'y', 'z'], 5); - * console.log(object.x[0].y.z); - * // => 5 + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true */ -function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); +function isPlainObject(value) { + if (!isObjectLike(value) || + objectToString.call(value) != objectTag || isHostObject(value)) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); } -module.exports = set; +module.exports = isPlainObject; /***/ }), @@ -237058,6 +233018,348 @@ function unescape(string) { module.exports = unescape; +/***/ }), + +/***/ 7129: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// A linked list to keep track of recently-used-ness +const Yallist = __nccwpck_require__(40665) + +const MAX = Symbol('max') +const LENGTH = Symbol('length') +const LENGTH_CALCULATOR = Symbol('lengthCalculator') +const ALLOW_STALE = Symbol('allowStale') +const MAX_AGE = Symbol('maxAge') +const DISPOSE = Symbol('dispose') +const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet') +const LRU_LIST = Symbol('lruList') +const CACHE = Symbol('cache') +const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet') + +const naiveLength = () => 1 + +// lruList is a yallist where the head is the youngest +// item, and the tail is the oldest. the list contains the Hit +// objects as the entries. +// Each Hit object has a reference to its Yallist.Node. This +// never changes. +// +// cache is a Map (or PseudoMap) that matches the keys to +// the Yallist.Node object. +class LRUCache { + constructor (options) { + if (typeof options === 'number') + options = { max: options } + + if (!options) + options = {} + + if (options.max && (typeof options.max !== 'number' || options.max < 0)) + throw new TypeError('max must be a non-negative number') + // Kind of weird to have a default max of Infinity, but oh well. + const max = this[MAX] = options.max || Infinity + + const lc = options.length || naiveLength + this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc + this[ALLOW_STALE] = options.stale || false + if (options.maxAge && typeof options.maxAge !== 'number') + throw new TypeError('maxAge must be a number') + this[MAX_AGE] = options.maxAge || 0 + this[DISPOSE] = options.dispose + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false + this.reset() + } + + // resize the cache when the max changes. + set max (mL) { + if (typeof mL !== 'number' || mL < 0) + throw new TypeError('max must be a non-negative number') + + this[MAX] = mL || Infinity + trim(this) + } + get max () { + return this[MAX] + } + + set allowStale (allowStale) { + this[ALLOW_STALE] = !!allowStale + } + get allowStale () { + return this[ALLOW_STALE] + } + + set maxAge (mA) { + if (typeof mA !== 'number') + throw new TypeError('maxAge must be a non-negative number') + + this[MAX_AGE] = mA + trim(this) + } + get maxAge () { + return this[MAX_AGE] + } + + // resize the cache when the lengthCalculator changes. + set lengthCalculator (lC) { + if (typeof lC !== 'function') + lC = naiveLength + + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC + this[LENGTH] = 0 + this[LRU_LIST].forEach(hit => { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key) + this[LENGTH] += hit.length + }) + } + trim(this) + } + get lengthCalculator () { return this[LENGTH_CALCULATOR] } + + get length () { return this[LENGTH] } + get itemCount () { return this[LRU_LIST].length } + + rforEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].tail; walker !== null;) { + const prev = walker.prev + forEachStep(this, fn, walker, thisp) + walker = prev + } + } + + forEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].head; walker !== null;) { + const next = walker.next + forEachStep(this, fn, walker, thisp) + walker = next + } + } + + keys () { + return this[LRU_LIST].toArray().map(k => k.key) + } + + values () { + return this[LRU_LIST].toArray().map(k => k.value) + } + + reset () { + if (this[DISPOSE] && + this[LRU_LIST] && + this[LRU_LIST].length) { + this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)) + } + + this[CACHE] = new Map() // hash of items by key + this[LRU_LIST] = new Yallist() // list of items in order of use recency + this[LENGTH] = 0 // length of items in the list + } + + dump () { + return this[LRU_LIST].map(hit => + isStale(this, hit) ? false : { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }).toArray().filter(h => h) + } + + dumpLru () { + return this[LRU_LIST] + } + + set (key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE] + + if (maxAge && typeof maxAge !== 'number') + throw new TypeError('maxAge must be a number') + + const now = maxAge ? Date.now() : 0 + const len = this[LENGTH_CALCULATOR](value, key) + + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)) + return false + } + + const node = this[CACHE].get(key) + const item = node.value + + // dispose of the old one before overwriting + // split out into 2 ifs for better coverage tracking + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) + this[DISPOSE](key, item.value) + } + + item.now = now + item.maxAge = maxAge + item.value = value + this[LENGTH] += len - item.length + item.length = len + this.get(key) + trim(this) + return true + } + + const hit = new Entry(key, value, len, now, maxAge) + + // oversized objects fall out of cache automatically. + if (hit.length > this[MAX]) { + if (this[DISPOSE]) + this[DISPOSE](key, value) + + return false + } + + this[LENGTH] += hit.length + this[LRU_LIST].unshift(hit) + this[CACHE].set(key, this[LRU_LIST].head) + trim(this) + return true + } + + has (key) { + if (!this[CACHE].has(key)) return false + const hit = this[CACHE].get(key).value + return !isStale(this, hit) + } + + get (key) { + return get(this, key, true) + } + + peek (key) { + return get(this, key, false) + } + + pop () { + const node = this[LRU_LIST].tail + if (!node) + return null + + del(this, node) + return node.value + } + + del (key) { + del(this, this[CACHE].get(key)) + } + + load (arr) { + // reset the cache + this.reset() + + const now = Date.now() + // A previous serialized cache has the most recent items first + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l] + const expiresAt = hit.e || 0 + if (expiresAt === 0) + // the item was created without expiration in a non aged cache + this.set(hit.k, hit.v) + else { + const maxAge = expiresAt - now + // dont add already expired items + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge) + } + } + } + } + + prune () { + this[CACHE].forEach((value, key) => get(this, key, false)) + } +} + +const get = (self, key, doUse) => { + const node = self[CACHE].get(key) + if (node) { + const hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + return undefined + } else { + if (doUse) { + if (self[UPDATE_AGE_ON_GET]) + node.value.now = Date.now() + self[LRU_LIST].unshiftNode(node) + } + } + return hit.value + } +} + +const isStale = (self, hit) => { + if (!hit || (!hit.maxAge && !self[MAX_AGE])) + return false + + const diff = Date.now() - hit.now + return hit.maxAge ? diff > hit.maxAge + : self[MAX_AGE] && (diff > self[MAX_AGE]) +} + +const trim = self => { + if (self[LENGTH] > self[MAX]) { + for (let walker = self[LRU_LIST].tail; + self[LENGTH] > self[MAX] && walker !== null;) { + // We know that we're about to delete this one, and also + // what the next least recently used key will be, so just + // go ahead and set it now. + const prev = walker.prev + del(self, walker) + walker = prev + } + } +} + +const del = (self, node) => { + if (node) { + const hit = node.value + if (self[DISPOSE]) + self[DISPOSE](hit.key, hit.value) + + self[LENGTH] -= hit.length + self[CACHE].delete(hit.key) + self[LRU_LIST].removeNode(node) + } +} + +class Entry { + constructor (key, value, length, now, maxAge) { + this.key = key + this.value = value + this.length = length + this.now = now + this.maxAge = maxAge || 0 + } +} + +const forEachStep = (self, fn, node, thisp) => { + let hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + hit = undefined + } + if (hit) + fn.call(thisp, hit.value, hit.key, self) +} + +module.exports = LRUCache + + /***/ }), /***/ 39126: @@ -240021,7 +236323,7 @@ function fromSource(source) { // Walker accepts as AST to avoid reparsing walker.walk(source, function(node) { - if (types.isDefine(node)) { + if (types.isDefineAMD(node)) { hasDefine = true; } @@ -240351,7 +236653,7 @@ module.exports = NestedError; /***/ }), /***/ 34329: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ ((module) => { "use strict"; @@ -240359,27 +236661,24 @@ module.exports = NestedError; var replace = String.prototype.replace; var percentTwenties = /%20/g; -var util = __nccwpck_require__(46072); - var Format = { RFC1738: 'RFC1738', RFC3986: 'RFC3986' }; -module.exports = util.assign( - { - 'default': Format.RFC3986, - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return String(value); - } +module.exports = { + 'default': Format.RFC3986, + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return String(value); } }, - Format -); + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 +}; /***/ }), @@ -240549,7 +236848,7 @@ var parseObject = function (chain, val, options, valuesParsed) { } } - leaf = obj; // eslint-disable-line no-param-reassign + leaf = obj; } return leaf; @@ -240739,6 +237038,7 @@ var stringify = function stringify( sort, allowDots, serializeDate, + format, formatter, encodeValuesOnly, charset @@ -240754,12 +237054,12 @@ var stringify = function stringify( return serializeDate(value); } return value; - }).join(','); + }); } if (obj === null) { if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix; + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; } obj = ''; @@ -240767,8 +237067,8 @@ var stringify = function stringify( if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key'); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))]; + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; } return [formatter(prefix) + '=' + formatter(String(obj))]; } @@ -240780,7 +237080,10 @@ var stringify = function stringify( } var objKeys; - if (isArray(filter)) { + if (generateArrayPrefix === 'comma' && isArray(obj)) { + // we need to join elements in + objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }]; + } else if (isArray(filter)) { objKeys = filter; } else { var keys = Object.keys(obj); @@ -240789,7 +237092,7 @@ var stringify = function stringify( for (var i = 0; i < objKeys.length; ++i) { var key = objKeys[i]; - var value = obj[key]; + var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key]; if (skipNulls && value === null) { continue; @@ -240810,6 +237113,7 @@ var stringify = function stringify( sort, allowDots, serializeDate, + format, formatter, encodeValuesOnly, charset @@ -240857,6 +237161,7 @@ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, filter: filter, + format: format, formatter: formatter, serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, @@ -240922,6 +237227,7 @@ module.exports = function (object, opts) { options.sort, options.allowDots, options.serializeDate, + options.format, options.formatter, options.encodeValuesOnly, options.charset @@ -240948,11 +237254,13 @@ module.exports = function (object, opts) { /***/ }), /***/ 46072: -/***/ ((module) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +var formats = __nccwpck_require__(34329); + var has = Object.prototype.hasOwnProperty; var isArray = Array.isArray; @@ -241073,7 +237381,7 @@ var decode = function (str, decoder, charset) { } }; -var encode = function encode(str, defaultEncoder, charset) { +var encode = function encode(str, defaultEncoder, charset, kind, format) { // This code was originally written by Brian White (mscdex) for the io.js core querystring library. // It has been adapted here for stricter adherence to RFC 3986 if (str.length === 0) { @@ -241105,6 +237413,7 @@ var encode = function encode(str, defaultEncoder, charset) { || (c >= 0x30 && c <= 0x39) // 0-9 || (c >= 0x41 && c <= 0x5A) // a-z || (c >= 0x61 && c <= 0x7A) // A-Z + || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) ) { out += string.charAt(i); continue; @@ -241570,7 +237879,45 @@ rimraf.sync = rimrafSync /***/ }), -/***/ 143: +/***/ 82617: +/***/ ((module) => { + +// Local deploy timeout: 20 mins +const DEFAULT_DEPLOY_TIMEOUT = 1.2e6 +// Concurrent file hash calls +const DEFAULT_CONCURRENT_HASH = 1e2 +// Number of concurrent uploads +const DEFAULT_CONCURRENT_UPLOAD = 5 +// Number of files +const DEFAULT_SYNC_LIMIT = 1e2 +// Number of times to retry an upload +const DEFAULT_MAX_RETRY = 5 + +const UPLOAD_RANDOM_FACTOR = 0.5 +// 5 seconds +const UPLOAD_INITIAL_DELAY = 5e3 +// 1.5 minute +const UPLOAD_MAX_DELAY = 9e4 + +// 1 second +const DEPLOY_POLL = 1e3 + +module.exports = { + DEFAULT_DEPLOY_TIMEOUT, + DEFAULT_CONCURRENT_HASH, + DEFAULT_CONCURRENT_UPLOAD, + DEFAULT_SYNC_LIMIT, + DEFAULT_MAX_RETRY, + UPLOAD_RANDOM_FACTOR, + UPLOAD_INITIAL_DELAY, + UPLOAD_MAX_DELAY, + DEPLOY_POLL, +} + + +/***/ }), + +/***/ 51776: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const { promisify } = __nccwpck_require__(31669) @@ -241578,39 +237925,37 @@ const { promisify } = __nccwpck_require__(31669) const walker = __nccwpck_require__(6531) const pump = promisify(__nccwpck_require__(18341)) -const { hasherCtor, manifestCollectorCtor, fileFilterCtor, fileNormalizerCtor } = __nccwpck_require__(51069) +const { hasherCtor, manifestCollectorCtor, fileFilterCtor, fileNormalizerCtor } = __nccwpck_require__(99498) -module.exports = hashFiles -async function hashFiles(dir, configPath, opts) { - opts = Object.assign( - { - concurrentHash: 100, - assetType: 'file', - statusCb: () => {} - }, - opts - ) - - if (!opts.filter) throw new Error('Missing filter function option') - const fileStream = walker([configPath, dir], { filter: opts.filter }) - const filter = fileFilterCtor() - const hasher = hasherCtor(opts) - const fileNormalizer = fileNormalizerCtor(opts) +const hashFiles = async ( + dir, + configPath, + { concurrentHash, hashAlgorithm = 'sha1', assetType = 'file', statusCb, filter }, +) => { + if (!filter) throw new Error('Missing filter function option') + const fileStream = walker([configPath, dir], { filter }) + const fileFilter = fileFilterCtor() + const hasher = hasherCtor({ concurrentHash, hashAlgorithm }) + const fileNormalizer = fileNormalizerCtor({ assetType }) // Written to by manifestCollector - const files = {} // normalizedPath: hash (wanted by deploy API) - const filesShaMap = {} //hash: [fileObj, fileObj, fileObj] - const manifestCollector = manifestCollectorCtor(files, filesShaMap, opts) + // normalizedPath: hash (wanted by deploy API) + const files = {} + // hash: [fileObj, fileObj, fileObj] + const filesShaMap = {} + const manifestCollector = manifestCollectorCtor(files, filesShaMap, { statusCb, assetType }) - await pump(fileStream, filter, hasher, fileNormalizer, manifestCollector) + await pump(fileStream, fileFilter, hasher, fileNormalizer, manifestCollector) return { files, filesShaMap } } +module.exports = hashFiles + /***/ }), -/***/ 54004: +/***/ 49949: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const path = __nccwpck_require__(85622) @@ -241620,59 +237965,52 @@ const zipIt = __nccwpck_require__(72803) const fromArray = __nccwpck_require__(56614) const pump = promisify(__nccwpck_require__(18341)) -const { hasherCtor, manifestCollectorCtor } = __nccwpck_require__(51069) +const { hasherCtor, manifestCollectorCtor } = __nccwpck_require__(99498) -module.exports = hashFns -async function hashFns(dir, opts) { - opts = Object.assign( - { - concurrentHash: 100, - assetType: 'function', - hashAlgorithm: 'sha256', - // tmpDir, - statusCb: () => {} - }, - opts - ) +const hashFns = async (dir, { tmpDir, concurrentHash, hashAlgorithm = 'sha256', assetType = 'function', statusCb }) => { // early out if the functions dir is omitted if (!dir) return { functions: {}, shaMap: {} } - if (!opts.tmpDir) throw new Error('Missing tmpDir directory for zipping files') + if (!tmpDir) throw new Error('Missing tmpDir directory for zipping files') - const functionZips = await zipIt.zipFunctions(dir, opts.tmpDir) + const functionZips = await zipIt.zipFunctions(dir, tmpDir) const fileObjs = functionZips.map(({ path: functionPath, runtime }) => ({ filepath: functionPath, - root: opts.tmpDir, - relname: path.relative(opts.tmpDir, functionPath), + root: tmpDir, + relname: path.relative(tmpDir, functionPath), basename: path.basename(functionPath), extname: path.extname(functionPath), type: 'file', assetType: 'function', normalizedPath: path.basename(functionPath, path.extname(functionPath)), - runtime + runtime, })) const functionStream = fromArray.obj(fileObjs) - const hasher = hasherCtor(opts) + const hasher = hasherCtor({ concurrentHash, hashAlgorithm }) // Written to by manifestCollector - const functions = {} // normalizedPath: hash (wanted by deploy API) - const fnShaMap = {} //hash: [fileObj, fileObj, fileObj] - const manifestCollector = manifestCollectorCtor(functions, fnShaMap, opts) + // normalizedPath: hash (wanted by deploy API) + const functions = {} + // hash: [fileObj, fileObj, fileObj] + const fnShaMap = {} + const manifestCollector = manifestCollectorCtor(functions, fnShaMap, { statusCb, assetType }) await pump(functionStream, hasher, manifestCollector) return { functions, fnShaMap } } +module.exports = hashFns + /***/ }), -/***/ 51069: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 99498: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const objWriter = __nccwpck_require__(36655).obj +const flushWriteStream = __nccwpck_require__(36655) const hasha = __nccwpck_require__(44933) const transform = __nccwpck_require__(61950) const objFilterCtor = __nccwpck_require__(26248).objCtor @@ -241681,53 +238019,62 @@ const map = __nccwpck_require__(78881).obj const { normalizePath } = __nccwpck_require__(91649) // a parallel transform stream segment ctor that hashes fileObj's created by folder-walker -exports.hasherCtor = ({ concurrentHash, hashAlgorithm = 'sha1' }) => { +// TODO: use promises instead of callbacks +/* eslint-disable promise/prefer-await-to-callbacks */ +const hasherCtor = ({ concurrentHash, hashAlgorithm }) => { const hashaOpts = { algorithm: hashAlgorithm } if (!concurrentHash) throw new Error('Missing required opts') - return transform(concurrentHash, { objectMode: true }, (fileObj, cb) => { - hasha - .fromFile(fileObj.filepath, hashaOpts) + return transform(concurrentHash, { objectMode: true }, async (fileObj, cb) => { + try { + const hash = await hasha.fromFile(fileObj.filepath, hashaOpts) // insert hash and asset type to file obj - .then(hash => cb(null, Object.assign({}, fileObj, { hash }))) - .catch(err => cb(err)) + return cb(null, { ...fileObj, hash }) + } catch (error) { + return cb(error) + } }) } // Inject normalized file names into normalizedPath and assetType -exports.fileNormalizerCtor = fileNormalizerCtor -function fileNormalizerCtor({ assetType = 'file' }) { - return map(fileObj => { - return Object.assign({}, fileObj, { assetType, normalizedPath: normalizePath(fileObj.relname) }) - }) -} +const fileNormalizerCtor = ({ assetType }) => + map((fileObj) => ({ ...fileObj, assetType, normalizedPath: normalizePath(fileObj.relname) })) // A writable stream segment ctor that normalizes file paths, and writes shaMap's -exports.manifestCollectorCtor = (filesObj, shaMap, { statusCb, assetType }) => { +const manifestCollectorCtor = (filesObj, shaMap, { statusCb, assetType }) => { if (!statusCb || !assetType) throw new Error('Missing required options') - return objWriter((fileObj, _, cb) => { + return flushWriteStream.obj((fileObj, _, cb) => { + // eslint-disable-next-line no-param-reassign filesObj[fileObj.normalizedPath] = fileObj.hash // We map a hash to multiple fileObj's because the same file // might live in two different locations if (Array.isArray(shaMap[fileObj.hash])) { + // eslint-disable-next-line fp/no-mutating-methods shaMap[fileObj.hash].push(fileObj) } else { + // eslint-disable-next-line no-param-reassign shaMap[fileObj.hash] = [fileObj] } statusCb({ type: 'hashing', msg: `Hashing ${fileObj.relname}`, - phase: 'progress' + phase: 'progress', }) cb(null) }) } +/* eslint-enable promise/prefer-await-to-callbacks */ // transform stream ctor that filters folder-walker results for only files -exports.fileFilterCtor = objFilterCtor(fileObj => { - return fileObj.type === 'file' -}) +const fileFilterCtor = objFilterCtor((fileObj) => fileObj.type === 'file') + +module.exports = { + hasherCtor, + fileNormalizerCtor, + manifestCollectorCtor, + fileFilterCtor, +} /***/ }), @@ -241741,52 +238088,59 @@ const cleanDeep = __nccwpck_require__(88290) const rimraf = promisify(__nccwpck_require__(92460)) const tempy = __nccwpck_require__(34768) -const hashFiles = __nccwpck_require__(143) -const hashFns = __nccwpck_require__(54004) -const uploadFiles = __nccwpck_require__(65976) -const { waitForDiff } = __nccwpck_require__(91649) -const { waitForDeploy, getUploadList, defaultFilter } = __nccwpck_require__(91649) - -module.exports = async (api, siteId, dir, opts) => { - opts = Object.assign( - { - fnDir: null, - configPath: null, - draft: false, - message: undefined, // API calls this the 'title' - tmpDir: tempy.directory(), - deployTimeout: 1.2e6, // local deploy timeout: 20 mins - concurrentHash: 100, // concurrent file hash calls - concurrentUpload: 15, // Number of concurrent uploads - filter: defaultFilter, - syncFileLimit: 100, // number of files - maxRetry: 5, // number of times to retry an upload - statusCb: () => { - /* default to noop */ - /* statusObj: { - type: name-of-step - msg: msg to print - phase: [start, progress, stop], - spinner: a spinner from cli-spinners package - } */ - }, - // allows updating an existing deploy - deployId: null +const { + DEFAULT_DEPLOY_TIMEOUT, + DEFAULT_CONCURRENT_HASH, + DEFAULT_CONCURRENT_UPLOAD, + DEFAULT_SYNC_LIMIT, + DEFAULT_MAX_RETRY, +} = __nccwpck_require__(82617) +const hashFiles = __nccwpck_require__(51776) +const hashFns = __nccwpck_require__(49949) +const uploadFiles = __nccwpck_require__(88497) +const { waitForDiff, waitForDeploy, getUploadList, defaultFilter } = __nccwpck_require__(91649) + +const deploySite = async ( + api, + siteId, + dir, + { + fnDir = null, + configPath = null, + draft = false, + // API calls this the 'title' + message: title, + tmpDir = tempy.directory(), + deployTimeout = DEFAULT_DEPLOY_TIMEOUT, + concurrentHash = DEFAULT_CONCURRENT_HASH, + concurrentUpload = DEFAULT_CONCURRENT_UPLOAD, + filter = defaultFilter, + syncFileLimit = DEFAULT_SYNC_LIMIT, + maxRetry = DEFAULT_MAX_RETRY, + statusCb = () => { + /* default to noop */ + // statusObj: { + // type: name-of-step + // msg: msg to print + // phase: [start, progress, stop], + // spinner: a spinner from cli-spinners package + // } }, - opts - ) - - const { fnDir, configPath, statusCb, message: title } = opts - + deployId: deployIdOpt = null, + hashAlgorithm, + assetType, + branch, + } = {}, +) => { statusCb({ type: 'hashing', msg: `Hashing files...`, - phase: 'start' + phase: 'start', }) const [{ files, filesShaMap }, { functions, fnShaMap }] = await Promise.all([ - hashFiles(dir, configPath, opts), - hashFns(fnDir, opts) + hashFiles(dir, configPath, { concurrentHash, hashAlgorithm, assetType, statusCb, filter }), + hashFns(fnDir, { tmpDir, concurrentHash, hashAlgorithm, statusCb, assetType }), ]) const filesCount = Object.keys(files).length @@ -241794,8 +238148,8 @@ module.exports = async (api, siteId, dir, opts) => { statusCb({ type: 'hashing', - msg: `Finished hashing ${filesCount} files` + (fnDir ? ` and ${functionsCount} functions` : ''), - phase: 'stop' + msg: `Finished hashing ${filesCount} files${fnDir ? ` and ${functionsCount} functions` : ''}`, + phase: 'stop', }) if (filesCount === 0 && functionsCount === 0) { @@ -241805,7 +238159,7 @@ module.exports = async (api, siteId, dir, opts) => { statusCb({ type: 'create-deploy', msg: 'CDN diffing files...', - phase: 'start' + phase: 'start', }) let deploy @@ -241814,64 +238168,66 @@ module.exports = async (api, siteId, dir, opts) => { body: { files, functions, - async: Object.keys(files).length > opts.syncFileLimit, - branch: opts.branch, - draft: opts.draft - } + async: Object.keys(files).length > syncFileLimit, + branch, + draft, + }, }) - if (opts.deployId === null) { + if (deployIdOpt === null) { if (title) { deployParams = { ...deployParams, title } } deploy = await api.createSiteDeploy(deployParams) } else { - deployParams = { ...deployParams, deploy_id: opts.deployId } + deployParams = { ...deployParams, deploy_id: deployIdOpt } deploy = await api.updateSiteDeploy(deployParams) } - if (deployParams.body.async) deploy = await waitForDiff(api, deploy.id, siteId, opts.deployTimeout) + if (deployParams.body.async) deploy = await waitForDiff(api, deploy.id, siteId, deployTimeout) const { id: deployId, required: requiredFiles, required_functions: requiredFns } = deploy statusCb({ type: 'create-deploy', - msg: - `CDN requesting ${requiredFiles.length} files` + - (Array.isArray(requiredFns) ? ` and ${requiredFns.length} functions` : ''), - phase: 'stop' + msg: `CDN requesting ${requiredFiles.length} files${ + Array.isArray(requiredFns) ? ` and ${requiredFns.length} functions` : '' + }`, + phase: 'stop', }) const uploadList = getUploadList(requiredFiles, filesShaMap).concat(getUploadList(requiredFns, fnShaMap)) - await uploadFiles(api, deployId, uploadList, opts) + await uploadFiles(api, deployId, uploadList, { concurrentUpload, statusCb, maxRetry }) statusCb({ type: 'wait-for-deploy', msg: 'Waiting for deploy to go live...', - phase: 'start' + phase: 'start', }) - deploy = await waitForDeploy(api, deployId, siteId, opts.deployTimeout) + deploy = await waitForDeploy(api, deployId, siteId, deployTimeout) statusCb({ type: 'wait-for-deploy', - msg: opts.draft ? 'Draft deploy is live!' : 'Deploy is live!', - phase: 'stop' + msg: draft ? 'Draft deploy is live!' : 'Deploy is live!', + phase: 'stop', }) - await rimraf(opts.tmpDir) + await rimraf(tmpDir) const deployManifest = { deployId, deploy, - uploadList + uploadList, } return deployManifest } +module.exports = deploySite + /***/ }), -/***/ 65976: +/***/ 88497: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const fs = __nccwpck_require__(35747) @@ -241879,13 +238235,14 @@ const fs = __nccwpck_require__(35747) const backoff = __nccwpck_require__(33086) const pMap = __nccwpck_require__(91855) -module.exports = uploadFiles -async function uploadFiles(api, deployId, uploadList, { concurrentUpload, statusCb, maxRetry }) { +const { UPLOAD_RANDOM_FACTOR, UPLOAD_INITIAL_DELAY, UPLOAD_MAX_DELAY } = __nccwpck_require__(82617) + +const uploadFiles = async (api, deployId, uploadList, { concurrentUpload, statusCb, maxRetry }) => { if (!concurrentUpload || !statusCb || !maxRetry) throw new Error('Missing required option concurrentUpload') statusCb({ type: 'upload', msg: `Uploading ${uploadList.length} files`, - phase: 'start' + phase: 'start', }) const uploadFile = async (fileObj, index) => { @@ -241895,7 +238252,7 @@ async function uploadFiles(api, deployId, uploadList, { concurrentUpload, status statusCb({ type: 'upload', msg: `(${index}/${uploadList.length}) Uploading ${normalizedPath}...`, - phase: 'progress' + phase: 'progress', }) let response switch (assetType) { @@ -241905,9 +238262,9 @@ async function uploadFiles(api, deployId, uploadList, { concurrentUpload, status api.uploadDeployFile({ body: readStreamCtor, deployId, - path: encodeURI(normalizedPath) + path: encodeURI(normalizedPath), }), - maxRetry + maxRetry, ) break } @@ -241918,16 +238275,16 @@ async function uploadFiles(api, deployId, uploadList, { concurrentUpload, status body: readStreamCtor, deployId, name: encodeURI(normalizedPath), - runtime + runtime, }), - maxRetry + maxRetry, ) break } default: { - const e = new Error('File Object missing assetType property') - e.fileObj = fileObj - throw e + const error = new Error('File Object missing assetType property') + error.fileObj = fileObj + throw error } } @@ -241938,19 +238295,35 @@ async function uploadFiles(api, deployId, uploadList, { concurrentUpload, status statusCb({ type: 'upload', msg: `Finished uploading ${uploadList.length} assets`, - phase: 'stop' + phase: 'stop', }) return results } -function retryUpload(uploadFn, maxRetry) { - return new Promise((resolve, reject) => { +const retryUpload = (uploadFn, maxRetry) => + new Promise((resolve, reject) => { let lastError const fibonacciBackoff = backoff.fibonacci({ - randomisationFactor: 0.5, - initialDelay: 5000, - maxDelay: 90000 + randomisationFactor: UPLOAD_RANDOM_FACTOR, + initialDelay: UPLOAD_INITIAL_DELAY, + maxDelay: UPLOAD_MAX_DELAY, }) + + const tryUpload = async () => { + try { + const results = await uploadFn() + return resolve(results) + } catch (error) { + lastError = error + // observed errors: 408, 401 (4** swallowed), 502 + if (error.status >= 400 || error.name === 'FetchError') { + fibonacciBackoff.backoff() + return + } + return reject(error) + } + } + fibonacciBackoff.failAfter(maxRetry) fibonacciBackoff.on('backoff', () => { @@ -241964,93 +238337,71 @@ function retryUpload(uploadFn, maxRetry) { reject(lastError) }) - function tryUpload() { - uploadFn() - .then(results => resolve(results)) - .catch(e => { - lastError = e - switch (true) { - case e.status >= 400: // observed errors: 408, 401 (4** swallowed), 502 - case e.name === 'FetchError': { - return fibonacciBackoff.backoff() - } - default: { - return reject(e) - } - } - }) - } - tryUpload(0, 0) }) -} + +module.exports = uploadFiles /***/ }), /***/ 91649: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const path = __nccwpck_require__(85622) +const { basename, sep } = __nccwpck_require__(85622) -const flatten = __nccwpck_require__(48919) const pWaitFor = __nccwpck_require__(80414) +const { DEPLOY_POLL } = __nccwpck_require__(82617) + // Default filter when scanning for files -exports.defaultFilter = filename => { - if (filename == null) return false - const n = path.basename(filename) - switch (true) { - case n === 'node_modules': - case n.startsWith('.') && n !== '.well-known': - case n.match(/(\/__MACOSX|\/\.)/): - return false - default: - return true +const defaultFilter = (filePath) => { + if (filePath == null) { + return false } + + const filename = basename(filePath) + return ( + filename !== 'node_modules' && + !(filename.startsWith('.') && filename !== '.well-known') && + !filename.includes('/__MACOSX') && + !filename.includes('/.') + ) } // normalize windows paths to unix paths -exports.normalizePath = relname => { +const normalizePath = (relname) => { if (relname.includes('#') || relname.includes('?')) { throw new Error(`Invalid filename ${relname}. Deployed filenames cannot contain # or ? characters`) } return ( relname - .split(path.sep) + .split(sep) // .map(segment => encodeURI(segment)) // TODO I'm fairly certain we shouldn't encodeURI here, thats only for the file upload step .join('/') ) } -exports.waitForDiff = waitForDiff // poll an async deployId until its done diffing -async function waitForDiff(api, deployId, siteId, timeout) { - let deploy // capture ready deploy during poll - - await pWaitFor(loadDeploy, { - interval: 1000, - timeout, - message: 'Timeout while waiting for deploy' - }) - - return deploy +const waitForDiff = async (api, deployId, siteId, timeout) => { + // capture ready deploy during poll + let deploy - async function loadDeploy() { - const d = await api.getSiteDeploy({ siteId, deployId }) + const loadDeploy = async () => { + const siteDeploy = await api.getSiteDeploy({ siteId, deployId }) - switch (d.state) { + switch (siteDeploy.state) { // https://github.com/netlify/bitballoon/blob/master/app/models/deploy.rb#L21-L33 case 'error': { const deployError = new Error(`Deploy ${deployId} had an error`) - deployError.deploy = d + deployError.deploy = siteDeploy throw deployError } case 'prepared': case 'uploading': case 'uploaded': case 'ready': { - deploy = d + deploy = siteDeploy return true } case 'preparing': @@ -242059,32 +238410,32 @@ async function waitForDiff(api, deployId, siteId, timeout) { } } } -} - -// Poll a deployId until its ready -exports.waitForDeploy = waitForDeploy -async function waitForDeploy(api, deployId, siteId, timeout) { - let deploy // capture ready deploy during poll await pWaitFor(loadDeploy, { - interval: 1000, + interval: DEPLOY_POLL, timeout, - message: 'Timeout while waiting for deploy' + message: 'Timeout while waiting for deploy', }) return deploy +} - async function loadDeploy() { - const d = await api.getSiteDeploy({ siteId, deployId }) - switch (d.state) { +// Poll a deployId until its ready +const waitForDeploy = async (api, deployId, siteId, timeout) => { + // capture ready deploy during poll + let deploy + + const loadDeploy = async () => { + const siteDeploy = await api.getSiteDeploy({ siteId, deployId }) + switch (siteDeploy.state) { // https://github.com/netlify/bitballoon/blob/master/app/models/deploy.rb#L21-L33 case 'error': { const deployError = new Error(`Deploy ${deployId} had an error`) - deployError.deploy = d + deployError.deploy = siteDeploy throw deployError } case 'ready': { - deploy = d + deploy = siteDeploy return true } case 'preparing': @@ -242096,15 +238447,30 @@ async function waitForDeploy(api, deployId, siteId, timeout) { } } } + + await pWaitFor(loadDeploy, { + interval: DEPLOY_POLL, + timeout, + message: 'Timeout while waiting for deploy', + }) + + return deploy } // Transform the fileShaMap and fnShaMap into a generic shaMap that file-uploader.js can use -exports.getUploadList = function(required, shaMap) { +const getUploadList = (required, shaMap) => { if (!required || !shaMap) return [] - return flatten(required.map(sha => shaMap[sha])) + // TODO: use `Array.flatMap()` instead once we remove support for Node <11.0.0 + return [].concat(...required.map((sha) => shaMap[sha])) } -exports.retry = async () => {} +module.exports = { + defaultFilter, + normalizePath, + waitForDiff, + waitForDeploy, + getUploadList, +} /***/ }), @@ -242113,88 +238479,86 @@ exports.retry = async () => {} /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const dfn = __nccwpck_require__(35842) -const get = __nccwpck_require__(99197) -const set = __nccwpck_require__(51552) const pWaitFor = __nccwpck_require__(80414) const deploy = __nccwpck_require__(55652) -const { addMethods } = __nccwpck_require__(43086) +const { getMethods } = __nccwpck_require__(43086) const { getOperations } = __nccwpck_require__(85393) +/* eslint-disable fp/no-this */ +// eslint-disable-next-line fp/no-class class NetlifyAPI { - constructor(accessToken, opts) { - addMethods(this) - + constructor(firstArg, secondArg) { // variadic arguments - if (typeof accessToken === 'object') { - opts = accessToken - accessToken = null - } + const [accessTokenInput, opts = {}] = typeof firstArg === 'object' ? [null, firstArg] : [firstArg, secondArg] + // default opts - opts = Object.assign( - { - userAgent: 'netlify/js-client', - scheme: dfn.schemes[0], - host: dfn.host, - pathPrefix: dfn.basePath, - accessToken, - globalParams: {} - }, - opts - ) + const { + userAgent = 'netlify/js-client', + scheme = dfn.schemes[0], + host = dfn.host, + pathPrefix = dfn.basePath, + accessToken = accessTokenInput, + globalParams = {}, + agent, + } = opts - this.defaultHeaders = { - 'User-agent': opts.userAgent, - accept: 'application/json' + const defaultHeaders = { + 'User-agent': userAgent, + accept: 'application/json', } - this.scheme = opts.scheme - this.host = opts.host - this.pathPrefix = opts.pathPrefix - this.globalParams = opts.globalParams - this.accessToken = opts.accessToken - this.agent = opts.agent + const basePath = getBasePath({ scheme, host, pathPrefix }) + const methods = getMethods({ basePath, defaultHeaders, agent, globalParams }) + // eslint-disable-next-line fp/no-mutating-assign + Object.assign(this, { ...methods, defaultHeaders, scheme, host, pathPrefix, globalParams, accessToken, agent }) } get accessToken() { - return (get(this, 'defaultHeaders.Authorization') || '').replace('Bearer ', '') || null + const { + defaultHeaders: { Authorization }, + } = this + if (typeof Authorization !== 'string' || !Authorization.startsWith('Bearer ')) { + return null + } + + return Authorization.replace('Bearer ', '') } set accessToken(token) { - if (token) { - set(this, 'defaultHeaders.Authorization', 'Bearer ' + token) - } else { + if (!token) { + // eslint-disable-next-line fp/no-delete delete this.defaultHeaders.Authorization + return } + + this.defaultHeaders.Authorization = `Bearer ${token}` } get basePath() { - return `${this.scheme}://${this.host}${this.pathPrefix}` + return getBasePath({ scheme: this.scheme, host: this.host, pathPrefix: this.pathPrefix }) } - async getAccessToken(ticket, opts) { - opts = Object.assign({ poll: 1000, timeout: 3.6e6 }, opts) - - const api = this - + async getAccessToken(ticket, { poll = DEFAULT_TICKET_POLL, timeout = DEFAULT_TICKET_TIMEOUT } = {}) { const { id } = ticket - let authorizedTicket // ticket capture + // ticket capture + let authorizedTicket const checkTicket = async () => { - const t = await api.showTicket({ ticketId: id }) + const t = await this.showTicket({ ticketId: id }) if (t.authorized) { authorizedTicket = t } - return !!t.authorized + return Boolean(t.authorized) } await pWaitFor(checkTicket, { - interval: opts.poll, - timeout: opts.timeout, - message: 'Timeout while waiting for ticket grant' + interval: poll, + timeout, + message: 'Timeout while waiting for ticket grant', }) - const accessTokenResponse = await api.exchangeTicket({ ticketId: authorizedTicket.id }) + const accessTokenResponse = await this.exchangeTicket({ ticketId: authorizedTicket.id }) // See https://open-api.netlify.com/#/default/exchangeTicket for shape this.accessToken = accessTokenResponse.access_token return accessTokenResponse.access_token @@ -242207,6 +238571,16 @@ class NetlifyAPI { return await deploy(this, siteId, buildDir, opts) } } +/* eslint-enable fp/no-this */ + +const getBasePath = function ({ scheme, host, pathPrefix }) { + return `${scheme}://${host}${pathPrefix}` +} + +// 1 second +const DEFAULT_TICKET_POLL = 1e3 +// 1 hour +const DEFAULT_TICKET_TIMEOUT = 3.6e6 module.exports = NetlifyAPI @@ -242219,7 +238593,7 @@ module.exports.methods = getOperations() /***/ ((module) => { // Handle request body -const addBody = function(body, parameters, opts) { +const addBody = function (body, parameters, opts) { if (!body) { return opts } @@ -242230,22 +238604,22 @@ const addBody = function(body, parameters, opts) { return { ...opts, body: bodyA, - headers: { 'Content-Type': 'application/octet-stream', ...opts.headers } + headers: { 'Content-Type': 'application/octet-stream', ...opts.headers }, } } return { ...opts, body: JSON.stringify(bodyA), - headers: { 'Content-Type': 'application/json', ...opts.headers } + headers: { 'Content-Type': 'application/json', ...opts.headers }, } } -const isBinaryBody = function(parameters) { +const isBinaryBody = function (parameters) { return Object.values(parameters.body).some(isBodyParam) } -const isBodyParam = function({ schema }) { +const isBodyParam = function ({ schema }) { return schema && schema.format === 'binary' } @@ -242257,7 +238631,9 @@ module.exports = { addBody } /***/ 43086: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const fetch = __nccwpck_require__(80467).default || __nccwpck_require__(80467) // Webpack will sometimes export default exports in different places +const nodeFetch = __nccwpck_require__(80467) +// Webpack will sometimes export default exports in different places +const fetch = nodeFetch.default || nodeFetch const { getOperations } = __nccwpck_require__(85393) @@ -242268,85 +238644,88 @@ const { getUrl } = __nccwpck_require__(15121) // For each OpenAPI operation, add a corresponding method. // The `operationId` is the method name. -const addMethods = function(NetlifyApi) { - const methods = getMethods(NetlifyApi) - Object.assign(NetlifyApi, methods) -} - -const getMethods = function(NetlifyApi) { +const getMethods = function ({ basePath, defaultHeaders, agent, globalParams }) { const operations = getOperations() - const methods = operations.map(method => getMethod(method, NetlifyApi)) + const methods = operations.map((method) => getMethod({ method, basePath, defaultHeaders, agent, globalParams })) return Object.assign({}, ...methods) } -const getMethod = function(method, NetlifyApi) { +const getMethod = function ({ method, basePath, defaultHeaders, agent, globalParams }) { return { [method.operationId](params, opts) { - return callMethod(method, NetlifyApi, params, opts) - } + return callMethod({ method, basePath, defaultHeaders, agent, globalParams, params, opts }) + }, } } -const callMethod = async function(method, NetlifyApi, params, opts) { - const requestParams = Object.assign({}, NetlifyApi.globalParams, params) - const url = getUrl(method, NetlifyApi, requestParams) - const response = await makeRequestOrRetry({ url, method, NetlifyApi, requestParams, opts }) +const callMethod = async function ({ method, basePath, defaultHeaders, agent, globalParams, params, opts }) { + const requestParams = { ...globalParams, ...params } + const url = getUrl(method, basePath, requestParams) + const response = await makeRequestOrRetry({ url, method, defaultHeaders, agent, requestParams, opts }) const parsedResponse = await parseResponse(response) return parsedResponse } -const getOpts = function({ verb, parameters }, NetlifyApi, { body }, opts) { +const getOpts = function ({ method: { verb, parameters }, defaultHeaders, agent, requestParams: { body }, opts }) { const optsA = addHttpMethod(verb, opts) - const optsB = addDefaultHeaders(NetlifyApi, optsA) + const optsB = addDefaultHeaders(defaultHeaders, optsA) const optsC = addBody(body, parameters, optsB) - const optsD = addAgent(NetlifyApi, optsC) + const optsD = addAgent(agent, optsC) return optsD } // Add the HTTP method based on the OpenAPI definition -const addHttpMethod = function(verb, opts) { - return Object.assign({}, opts, { method: verb.toUpperCase() }) +const addHttpMethod = function (verb, opts) { + return { ...opts, method: verb.toUpperCase() } } // Assign default HTTP headers -const addDefaultHeaders = function(NetlifyApi, opts) { - return Object.assign({}, opts, { - headers: Object.assign({}, NetlifyApi.defaultHeaders, opts.headers) - }) +const addDefaultHeaders = function (defaultHeaders, opts) { + return { ...opts, headers: { ...defaultHeaders, ...opts.headers } } } // Assign fetch agent (like for example HttpsProxyAgent) if there is one -const addAgent = function(NetlifyApi, opts) { - if (NetlifyApi.agent) { - return Object.assign({}, opts, { agent: NetlifyApi.agent }) - } else { - return opts +const addAgent = function (agent, opts) { + if (agent) { + return { ...opts, agent } } + return opts } -const makeRequestOrRetry = async function({ url, method, NetlifyApi, requestParams, opts }) { +const makeRequestOrRetry = async function ({ url, method, defaultHeaders, agent, requestParams, opts }) { + // Using a loop is simpler here + // eslint-disable-next-line fp/no-loops for (let index = 0; index <= MAX_RETRY; index++) { - const optsA = getOpts(method, NetlifyApi, requestParams, opts) - const response = await makeRequest(url, optsA) + const optsA = getOpts({ method, defaultHeaders, agent, requestParams, opts }) + // eslint-disable-next-line no-await-in-loop + const { response, error } = await makeRequest(url, optsA) - if (shouldRetry(response, index)) { + if (shouldRetry({ response, error }) && index !== MAX_RETRY) { + // eslint-disable-next-line no-await-in-loop await waitForRetry(response) - } else { - return response + continue + } + + if (error !== undefined) { + throw error } + + return response } } -const makeRequest = async function(url, opts) { +const makeRequest = async function (url, opts) { try { - return await fetch(url, opts) + const response = await fetch(url, opts) + return { response } } catch (error) { - throw getFetchError(error, url, opts) + const errorA = getFetchError(error, url, opts) + return { error: errorA } } } -module.exports = { addMethods } +module.exports = { getMethods } /***/ }), @@ -242355,9 +238734,10 @@ module.exports = { addMethods } /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const { JSONHTTPError, TextHTTPError } = __nccwpck_require__(316) +const omit = __nccwpck_require__(72657)/* .default */ .Z // Read and parse the HTTP response -const parseResponse = async function(response) { +const parseResponse = async function (response) { const responseType = getResponseType(response) const textResponse = await response.text() @@ -242371,7 +238751,7 @@ const parseResponse = async function(response) { return parsedResponse } -const getResponseType = function({ headers }) { +const getResponseType = function ({ headers }) { const contentType = headers.get('Content-Type') if (contentType != null && contentType.includes('json')) { @@ -242381,7 +238761,7 @@ const getResponseType = function({ headers }) { return 'text' } -const parseJsonResponse = function(response, textResponse, responseType) { +const parseJsonResponse = function (response, textResponse, responseType) { if (responseType === 'text') { return textResponse } @@ -242393,10 +238773,11 @@ const parseJsonResponse = function(response, textResponse, responseType) { } } -const getFetchError = function(error, url, opts) { - const data = Object.assign({}, opts) - delete data.Authorization - Object.assign(error, { name: 'FetchError', url, data }) +const getFetchError = function (error, url, opts) { + const data = omit(opts, ['Authorization']) + error.name = 'FetchError' + error.url = url + error.data = data return error } @@ -242408,18 +238789,24 @@ module.exports = { parseResponse, getFetchError } /***/ 3866: /***/ ((module) => { -// When the API is rate limiting, the request is retried later -const shouldRetry = function(response, index) { - return response.status === RATE_LIMIT_STATUS && index !== MAX_RETRY +// We retry: +// - when receiving a rate limiting response +// - on network failures due to timeouts +const shouldRetry = function ({ response = {}, error = {} }) { + return response.status === RATE_LIMIT_STATUS || RETRY_ERROR_CODES.has(error.code) } -const waitForRetry = async function(response) { +const waitForRetry = async function (response) { const delay = getDelay(response) await sleep(delay) } -const getDelay = function({ headers }) { - const rateLimitReset = headers.get(RATE_LIMIT_HEADER) +const getDelay = function (response) { + if (response === undefined) { + return DEFAULT_RETRY_DELAY + } + + const rateLimitReset = response.headers.get(RATE_LIMIT_HEADER) if (!rateLimitReset) { return DEFAULT_RETRY_DELAY @@ -242428,8 +238815,10 @@ const getDelay = function({ headers }) { return Math.max(Number(rateLimitReset) * SECS_TO_MSECS - Date.now(), MIN_RETRY_DELAY) } -const sleep = function(ms) { - return new Promise(resolve => setTimeout(resolve, ms)) +const sleep = function (ms) { + return new Promise((resolve) => { + setTimeout(resolve, ms) + }) } const DEFAULT_RETRY_DELAY = 5e3 @@ -242438,6 +238827,7 @@ const SECS_TO_MSECS = 1e3 const MAX_RETRY = 10 const RATE_LIMIT_STATUS = 429 const RATE_LIMIT_HEADER = 'X-RateLimit-Reset' +const RETRY_ERROR_CODES = new Set(['ETIMEDOUT']) module.exports = { shouldRetry, waitForRetry, MAX_RETRY } @@ -242452,23 +238842,23 @@ const queryString = __nccwpck_require__(98439) // Replace path parameters and query parameters in the URI, using the OpenAPI // definition -const getUrl = function({ path, parameters }, NetlifyApi, requestParams) { - const url = `${NetlifyApi.basePath}${path}` +const getUrl = function ({ path, parameters }, basePath, requestParams) { + const url = `${basePath}${path}` const urlA = addPathParams(url, parameters, requestParams) const urlB = addQueryParams(urlA, parameters, requestParams) return urlB } -const addPathParams = function(url, parameters, requestParams) { +const addPathParams = function (url, parameters, requestParams) { const pathParams = getRequestParams(parameters.path, requestParams, 'path variable') return Object.entries(pathParams).reduce(addPathParam, url) } -const addPathParam = function(url, [name, value]) { +const addPathParam = function (url, [name, value]) { return url.replace(`{${name}}`, value) } -const addQueryParams = function(url, parameters, requestParams) { +const addQueryParams = function (url, parameters, requestParams) { const queryParams = getRequestParams(parameters.query, requestParams, 'query variable') if (Object.keys(queryParams).length === 0) { @@ -242478,12 +238868,12 @@ const addQueryParams = function(url, parameters, requestParams) { return `${url}?${queryString.stringify(queryParams)}` } -const getRequestParams = function(params, requestParams, name) { - const entries = Object.values(params).map(param => getRequestParam(param, requestParams, name)) +const getRequestParams = function (params, requestParams, name) { + const entries = Object.values(params).map((param) => getRequestParam(param, requestParams, name)) return Object.assign({}, ...entries) } -const getRequestParam = function(param, requestParams, name) { +const getRequestParam = function (param, requestParams, name) { const value = requestParams[param.name] || requestParams[camelCase(param.name)] if (value !== undefined) { @@ -242504,51 +238894,33 @@ module.exports = { getUrl } /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const { paths } = __nccwpck_require__(35842) - -const { omit } = __nccwpck_require__(74356) +const omit = __nccwpck_require__(72657)/* .default */ .Z // Retrieve all OpenAPI operations -const getOperations = function() { +const getOperations = function () { return [].concat( ...Object.entries(paths).map(([path, pathItem]) => { const operations = omit(pathItem, ['parameters']) return Object.entries(operations).map(([method, operation]) => { const parameters = getParameters(pathItem.parameters, operation.parameters) - return Object.assign({}, operation, { verb: method, path, parameters }) + return { ...operation, verb: method, path, parameters } }) - }) + }), ) } -const getParameters = function(pathParameters = [], operationParameters = []) { +const getParameters = function (pathParameters = [], operationParameters = []) { const parameters = [...pathParameters, ...operationParameters] return parameters.reduce(addParameter, { path: {}, query: {}, body: {} }) } -const addParameter = function(parameters, param) { - return Object.assign({}, parameters, { - [param.in]: Object.assign({}, parameters[param.in], { [param.name]: param }) - }) +const addParameter = function (parameters, param) { + return { ...parameters, [param.in]: { ...parameters[param.in], [param.name]: param } } } module.exports = { getOperations } -/***/ }), - -/***/ 74356: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const filterObj = __nccwpck_require__(14940) - -// lodash.omit is 1400 lines of codes. filter-obj is much smaller and simpler. -const omit = function(obj, keys) { - return filterObj(obj, key => !keys.includes(key)) -} - -module.exports = { omit } - - /***/ }), /***/ 80467: @@ -244387,304 +240759,32 @@ module.exports = function(path, stripTrailing) { /***/ }), -/***/ 38435: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var keysShim; -if (!Object.keys) { - // modified from https://github.com/es-shims/es5-shim - var has = Object.prototype.hasOwnProperty; - var toStr = Object.prototype.toString; - var isArgs = __nccwpck_require__(46362); // eslint-disable-line global-require - var isEnumerable = Object.prototype.propertyIsEnumerable; - var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString'); - var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype'); - var dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - var equalsConstructorPrototype = function (o) { - var ctor = o.constructor; - return ctor && ctor.prototype === o; - }; - var excludedKeys = { - $applicationCache: true, - $console: true, - $external: true, - $frame: true, - $frameElement: true, - $frames: true, - $innerHeight: true, - $innerWidth: true, - $onmozfullscreenchange: true, - $onmozfullscreenerror: true, - $outerHeight: true, - $outerWidth: true, - $pageXOffset: true, - $pageYOffset: true, - $parent: true, - $scrollLeft: true, - $scrollTop: true, - $scrollX: true, - $scrollY: true, - $self: true, - $webkitIndexedDB: true, - $webkitStorageInfo: true, - $window: true - }; - var hasAutomationEqualityBug = (function () { - /* global window */ - if (typeof window === 'undefined') { return false; } - for (var k in window) { - try { - if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') { - try { - equalsConstructorPrototype(window[k]); - } catch (e) { - return true; - } - } - } catch (e) { - return true; - } - } - return false; - }()); - var equalsConstructorPrototypeIfNotBuggy = function (o) { - /* global window */ - if (typeof window === 'undefined' || !hasAutomationEqualityBug) { - return equalsConstructorPrototype(o); - } - try { - return equalsConstructorPrototype(o); - } catch (e) { - return false; - } - }; - - keysShim = function keys(object) { - var isObject = object !== null && typeof object === 'object'; - var isFunction = toStr.call(object) === '[object Function]'; - var isArguments = isArgs(object); - var isString = isObject && toStr.call(object) === '[object String]'; - var theKeys = []; - - if (!isObject && !isFunction && !isArguments) { - throw new TypeError('Object.keys called on a non-object'); - } - - var skipProto = hasProtoEnumBug && isFunction; - if (isString && object.length > 0 && !has.call(object, 0)) { - for (var i = 0; i < object.length; ++i) { - theKeys.push(String(i)); - } - } - - if (isArguments && object.length > 0) { - for (var j = 0; j < object.length; ++j) { - theKeys.push(String(j)); - } - } else { - for (var name in object) { - if (!(skipProto && name === 'prototype') && has.call(object, name)) { - theKeys.push(String(name)); - } - } - } - - if (hasDontEnumBug) { - var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); - - for (var k = 0; k < dontEnums.length; ++k) { - if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) { - theKeys.push(dontEnums[k]); - } - } - } - return theKeys; - }; -} -module.exports = keysShim; - - -/***/ }), - -/***/ 70137: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var slice = Array.prototype.slice; -var isArgs = __nccwpck_require__(46362); - -var origKeys = Object.keys; -var keysShim = origKeys ? function keys(o) { return origKeys(o); } : __nccwpck_require__(38435); - -var originalKeys = Object.keys; - -keysShim.shim = function shimObjectKeys() { - if (Object.keys) { - var keysWorksWithArguments = (function () { - // Safari 5.0 bug - var args = Object.keys(arguments); - return args && args.length === arguments.length; - }(1, 2)); - if (!keysWorksWithArguments) { - Object.keys = function keys(object) { // eslint-disable-line func-name-matching - if (isArgs(object)) { - return originalKeys(slice.call(object)); - } - return originalKeys(object); - }; - } - } else { - Object.keys = keysShim; - } - return Object.keys || keysShim; -}; - -module.exports = keysShim; - - -/***/ }), - -/***/ 46362: -/***/ ((module) => { - -"use strict"; - - -var toStr = Object.prototype.toString; - -module.exports = function isArguments(value) { - var str = toStr.call(value); - var isArgs = str === '[object Arguments]'; - if (!isArgs) { - isArgs = str !== '[object Array]' && - value !== null && - typeof value === 'object' && - typeof value.length === 'number' && - value.length >= 0 && - toStr.call(value.callee) === '[object Function]'; - } - return isArgs; -}; - - -/***/ }), - -/***/ 83839: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var CreateDataProperty = __nccwpck_require__(71339); -var IsCallable = __nccwpck_require__(18433); -var RequireObjectCoercible = __nccwpck_require__(82549); -var ToObject = __nccwpck_require__(31921); -var callBound = __nccwpck_require__(40206); - -var $gOPD = Object.getOwnPropertyDescriptor; -var $getOwnNames = Object.getOwnPropertyNames; -var $getSymbols = Object.getOwnPropertySymbols; -var $concat = callBound('Array.prototype.concat'); -var $reduce = callBound('Array.prototype.reduce'); -var getAll = $getSymbols ? function (obj) { - return $concat($getOwnNames(obj), $getSymbols(obj)); -} : $getOwnNames; - -var isES5 = IsCallable($gOPD) && IsCallable($getOwnNames); - -module.exports = function getOwnPropertyDescriptors(value) { - RequireObjectCoercible(value); - if (!isES5) { - throw new TypeError('getOwnPropertyDescriptors requires Object.getOwnPropertyDescriptor'); - } - - var O = ToObject(value); - return $reduce( - getAll(O), - function (acc, key) { - var descriptor = $gOPD(O, key); - if (typeof descriptor !== 'undefined') { - CreateDataProperty(acc, key, descriptor); - } - return acc; - }, - {} - ); -}; - - -/***/ }), - -/***/ 94422: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 72657: +/***/ ((__unused_webpack_module, exports) => { "use strict"; +var __webpack_unused_export__; -var define = __nccwpck_require__(59234); - -var implementation = __nccwpck_require__(83839); -var getPolyfill = __nccwpck_require__(54290); -var shim = __nccwpck_require__(17624); - -define(implementation, { - getPolyfill: getPolyfill, - implementation: implementation, - shim: shim +__webpack_unused_export__ = ({ + value: true }); +exports.Z = void 0; -module.exports = implementation; +function omit(obj, fields) { + // eslint-disable-next-line prefer-object-spread + var shallowCopy = Object.assign({}, obj); + for (var i = 0; i < fields.length; i += 1) { + var key = fields[i]; + delete shallowCopy[key]; + } -/***/ }), - -/***/ 54290: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var implementation = __nccwpck_require__(83839); - -module.exports = function getPolyfill() { - return typeof Object.getOwnPropertyDescriptors === 'function' ? Object.getOwnPropertyDescriptors : implementation; -}; - - -/***/ }), - -/***/ 17624: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var getPolyfill = __nccwpck_require__(54290); -var define = __nccwpck_require__(59234); - -module.exports = function shimGetOwnPropertyDescriptors() { - var polyfill = getPolyfill(); - define( - Object, - { getOwnPropertyDescriptors: polyfill }, - { getOwnPropertyDescriptors: function () { return Object.getOwnPropertyDescriptors !== polyfill; } } - ); - return polyfill; -}; + return shallowCopy; +} +var _default = omit; +exports.Z = _default; /***/ }), @@ -245224,6 +241324,7 @@ const pWaitFor = async (condition, options) => { options = { interval: 20, timeout: Infinity, + leadingCheck: true, ...options }; @@ -245248,7 +241349,11 @@ const pWaitFor = async (condition, options) => { } }; - check(); + if (options.leadingCheck) { + check(); + } else { + retryTimeout = setTimeout(check, options.interval); + } }); if (options.timeout !== Infinity) { @@ -269258,7 +265363,7 @@ var Extract = function (opts) { var offset = self._offset var header try { - header = self._header = headers.decode(b.slice(0, 512), opts.filenameEncoding) + header = self._header = headers.decode(b.slice(0, 512), opts.filenameEncoding, opts.allowUnknownFormat) } catch (err) { self.emit('error', err) } @@ -269639,7 +265744,7 @@ exports.encode = function (opts) { return buf } -exports.decode = function (buf, filenameEncoding) { +exports.decode = function (buf, filenameEncoding, allowUnknownFormat) { var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET var name = decodeStr(buf, 0, 100, filenameEncoding) @@ -269672,7 +265777,9 @@ exports.decode = function (buf, filenameEncoding) { // 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and // multi-volume tarballs. } else { - throw new Error('Invalid tar header: unknown format.') + if (!allowUnknownFormat) { + throw new Error('Invalid tar header: unknown format.') + } } // to support old tar versions that use trailing / to indicate dirs @@ -426608,241 +422715,519 @@ module.exports = __nccwpck_require__(31669).deprecate; /***/ }), -/***/ 25747: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 62940: +/***/ ((module) => { -"use strict"; +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') -var isES5 = typeof Object.defineProperty === 'function' - && typeof Object.defineProperties === 'function'; + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) -var hasProto = [].__proto__ === Array.prototype; // eslint-disable-line no-proto + return wrapper -if (!isES5 || !hasProto) { - throw new TypeError('util.promisify requires a true ES5 environment, that also supports `__proto__`'); + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } } -var getOwnPropertyDescriptors = __nccwpck_require__(94422); -if (typeof Promise !== 'function') { - throw new TypeError('`Promise` must be globally available for util.promisify to work.'); -} +/***/ }), -var callBound = __nccwpck_require__(40206); +/***/ 91208: +/***/ ((module) => { -var $slice = callBound('Array.prototype.slice'); -var $concat = callBound('Array.prototype.concat'); -var $forEach = callBound('Array.prototype.forEach'); +module.exports = extend -var hasSymbols = __nccwpck_require__(40587)(); +var hasOwnProperty = Object.prototype.hasOwnProperty; -var kCustomPromisifiedSymbol = hasSymbols ? Symbol('util.promisify.custom') : null; -var kCustomPromisifyArgsSymbol = hasSymbols ? Symbol('customPromisifyArgs') : null; +function extend() { + var target = {} -module.exports = function promisify(orig) { - if (typeof orig !== 'function') { - var error = new TypeError('The "original" argument must be of type function'); - error.name = 'TypeError [ERR_INVALID_ARG_TYPE]'; - error.code = 'ERR_INVALID_ARG_TYPE'; - throw error; - } + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] - if (hasSymbols && orig[kCustomPromisifiedSymbol]) { - var customFunction = orig[kCustomPromisifiedSymbol]; - if (typeof customFunction !== 'function') { - throw new TypeError('The [util.promisify.custom] property must be a function'); - } - Object.defineProperty(customFunction, kCustomPromisifiedSymbol, { - configurable: true, - enumerable: false, - value: customFunction, - writable: false - }); - return customFunction; - } - - // Names to create an object from in case the callback receives multiple - // arguments, e.g. ['stdout', 'stderr'] for child_process.exec. - var argumentNames = orig[kCustomPromisifyArgsSymbol]; - - var promisified = function fn() { - var args = $slice(arguments); - var self = this; // eslint-disable-line no-invalid-this - return new Promise(function (resolve, reject) { - orig.apply(self, $concat(args, function (err) { - var values = arguments.length > 1 ? $slice(arguments, 1) : []; - if (err) { - reject(err); - } else if (typeof argumentNames !== 'undefined' && values.length > 1) { - var obj = {}; - $forEach(argumentNames, function (name, index) { - obj[name] = values[index]; - }); - resolve(obj); - } else { - resolve(values[0]); - } - })); - }); - }; + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } - promisified.__proto__ = orig.__proto__; // eslint-disable-line no-proto + return target +} - Object.defineProperty(promisified, kCustomPromisifiedSymbol, { - configurable: true, - enumerable: false, - value: promisified, - writable: false - }); - return Object.defineProperties(promisified, getOwnPropertyDescriptors(orig)); -}; -module.exports.custom = kCustomPromisifiedSymbol; -module.exports.customPromisifyArgs = kCustomPromisifyArgsSymbol; +/***/ }), + +/***/ 4091: +/***/ ((module) => { + +"use strict"; + +module.exports = function (Yallist) { + Yallist.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value + } + } +} /***/ }), -/***/ 63149: +/***/ 40665: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +module.exports = Yallist -var define = __nccwpck_require__(59234); -var util = __nccwpck_require__(31669); +Yallist.Node = Node +Yallist.create = Yallist -var implementation = __nccwpck_require__(25747); -var getPolyfill = __nccwpck_require__(51075); -var polyfill = getPolyfill(); -var shim = __nccwpck_require__(52364); +function Yallist (list) { + var self = this + if (!(self instanceof Yallist)) { + self = new Yallist() + } -/* eslint-disable no-unused-vars */ -var boundPromisify = function promisify(orig) { -/* eslint-enable no-unused-vars */ - return polyfill.apply(util, arguments); -}; -define(boundPromisify, { - custom: polyfill.custom, - customPromisifyArgs: polyfill.customPromisifyArgs, - getPolyfill: getPolyfill, - implementation: implementation, - shim: shim -}); + self.tail = null + self.head = null + self.length = 0 -module.exports = boundPromisify; + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item) + }) + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]) + } + } + return self +} -/***/ }), +Yallist.prototype.removeNode = function (node) { + if (node.list !== this) { + throw new Error('removing node which does not belong to this list') + } -/***/ 51075: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + var next = node.next + var prev = node.prev -"use strict"; + if (next) { + next.prev = prev + } + if (prev) { + prev.next = next + } -var util = __nccwpck_require__(31669); -var implementation = __nccwpck_require__(25747); + if (node === this.head) { + this.head = next + } + if (node === this.tail) { + this.tail = prev + } -module.exports = function getPolyfill() { - if (typeof util.promisify === 'function') { - return util.promisify; - } - return implementation; -}; + node.list.length-- + node.next = null + node.prev = null + node.list = null + return next +} -/***/ }), +Yallist.prototype.unshiftNode = function (node) { + if (node === this.head) { + return + } -/***/ 52364: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (node.list) { + node.list.removeNode(node) + } -"use strict"; + var head = this.head + node.list = this + node.next = head + if (head) { + head.prev = node + } + this.head = node + if (!this.tail) { + this.tail = node + } + this.length++ +} -var util = __nccwpck_require__(31669); -var getPolyfill = __nccwpck_require__(51075); - -module.exports = function shimUtilPromisify() { - var polyfill = getPolyfill(); - if (polyfill !== util.promisify) { - Object.defineProperty(util, 'promisify', { - configurable: true, - enumerable: true, - value: polyfill, - writable: true - }); - } - return polyfill; -}; +Yallist.prototype.pushNode = function (node) { + if (node === this.tail) { + return + } + if (node.list) { + node.list.removeNode(node) + } -/***/ }), + var tail = this.tail + node.list = this + node.prev = tail + if (tail) { + tail.next = node + } -/***/ 62940: -/***/ ((module) => { + this.tail = node + if (!this.head) { + this.head = node + } + this.length++ +} -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) +Yallist.prototype.push = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]) + } + return this.length +} - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') +Yallist.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]) + } + return this.length +} - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) +Yallist.prototype.pop = function () { + if (!this.tail) { + return undefined + } - return wrapper + var res = this.tail.value + this.tail = this.tail.prev + if (this.tail) { + this.tail.next = null + } else { + this.head = null + } + this.length-- + return res +} - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } +Yallist.prototype.shift = function () { + if (!this.head) { + return undefined + } + + var res = this.head.value + this.head = this.head.next + if (this.head) { + this.head.prev = null + } else { + this.tail = null + } + this.length-- + return res +} + +Yallist.prototype.forEach = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this) + walker = walker.next + } +} + +Yallist.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this) + walker = walker.prev + } +} + +Yallist.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.next + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.prev + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.map = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.head; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.next + } + return res +} + +Yallist.prototype.mapReverse = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.tail; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.prev + } + return res +} + +Yallist.prototype.reduce = function (fn, initial) { + var acc + var walker = this.head + if (arguments.length > 1) { + acc = initial + } else if (this.head) { + walker = this.head.next + acc = this.head.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i) + walker = walker.next + } + + return acc +} + +Yallist.prototype.reduceReverse = function (fn, initial) { + var acc + var walker = this.tail + if (arguments.length > 1) { + acc = initial + } else if (this.tail) { + walker = this.tail.prev + acc = this.tail.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i) + walker = walker.prev + } + + return acc +} + +Yallist.prototype.toArray = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value + walker = walker.next + } + return arr +} + +Yallist.prototype.toArrayReverse = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value + walker = walker.prev + } + return arr +} + +Yallist.prototype.slice = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { return ret } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value) + } + return ret } +Yallist.prototype.sliceReverse = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value) + } + return ret +} -/***/ }), +Yallist.prototype.splice = function (start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1 + } + if (start < 0) { + start = this.length + start; + } -/***/ 91208: -/***/ ((module) => { + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next + } -module.exports = extend + var ret = [] + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value) + walker = this.removeNode(walker) + } + if (walker === null) { + walker = this.tail + } -var hasOwnProperty = Object.prototype.hasOwnProperty; + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev + } -function extend() { - var target = {} + for (var i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]) + } + return ret; +} - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] +Yallist.prototype.reverse = function () { + var head = this.head + var tail = this.tail + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev + walker.prev = walker.next + walker.next = p + } + this.head = tail + this.tail = head + return this +} - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } - } - } +function insert (self, node, value) { + var inserted = node === self.head ? + new Node(value, null, node, self) : + new Node(value, node, node.next, self) - return target + if (inserted.next === null) { + self.tail = inserted + } + if (inserted.prev === null) { + self.head = inserted + } + + self.length++ + + return inserted } +function push (self, item) { + self.tail = new Node(item, self.tail, null, self) + if (!self.head) { + self.head = self.tail + } + self.length++ +} + +function unshift (self, item) { + self.head = new Node(item, null, self.head, self) + if (!self.tail) { + self.tail = self.head + } + self.length++ +} + +function Node (value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list) + } + + this.list = list + this.value = value + + if (prev) { + prev.next = this + this.prev = prev + } else { + this.prev = null + } + + if (next) { + next.prev = this + this.next = next + } else { + this.next = null + } +} + +try { + // add if support for Symbol.iterator is present + __nccwpck_require__(4091)(Yallist) +} catch (er) {} + /***/ }), @@ -427073,6 +423458,14 @@ module.exports = {"i8":"4.3.0"}; /***/ }), +/***/ 93991: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse("{\"assert\":true,\"assert/strict\":\">= 15\",\"async_hooks\":\">= 8\",\"buffer_ieee754\":\"< 0.9.7\",\"buffer\":true,\"child_process\":true,\"cluster\":true,\"console\":true,\"constants\":true,\"crypto\":true,\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"diagnostics_channel\":\">= 15.1\",\"dns\":true,\"dns/promises\":\">= 15\",\"domain\":\">= 0.7.12\",\"events\":true,\"freelist\":\"< 6\",\"fs\":true,\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"_http_agent\":\">= 0.11.1\",\"_http_client\":\">= 0.11.1\",\"_http_common\":\">= 0.11.1\",\"_http_incoming\":\">= 0.11.1\",\"_http_outgoing\":\">= 0.11.1\",\"_http_server\":\">= 0.11.1\",\"http\":true,\"http2\":\">= 8.8\",\"https\":true,\"inspector\":\">= 8.0.0\",\"_linklist\":\"< 8\",\"module\":true,\"net\":true,\"node-inspect/lib/_inspect\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6.0 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6.0 && < 12\",\"os\":true,\"path\":true,\"path/posix\":\">= 15.3\",\"path/win32\":\">= 15.3\",\"perf_hooks\":\">= 8.5\",\"process\":\">= 1\",\"punycode\":true,\"querystring\":true,\"readline\":true,\"repl\":true,\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"_stream_transform\":\">= 0.9.4\",\"_stream_wrap\":\">= 1.4.1\",\"_stream_passthrough\":\">= 0.9.4\",\"_stream_readable\":\">= 0.9.4\",\"_stream_writable\":\">= 0.9.4\",\"stream\":true,\"stream/promises\":\">= 15\",\"string_decoder\":true,\"sys\":[\">= 0.6 && < 0.7\",\">= 0.8\"],\"timers\":true,\"timers/promises\":\">= 15\",\"_tls_common\":\">= 0.11.13\",\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"tls\":true,\"trace_events\":\">= 10\",\"tty\":true,\"url\":true,\"util\":true,\"util/types\":\">= 15.3\",\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/consarray\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/logreader\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4.0 && < 5\",\">= 5.2.0 && < 12\"],\"v8\":\">= 1\",\"vm\":true,\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"zlib\":true}"); + +/***/ }), + /***/ 42357: /***/ ((module) => { diff --git a/dist/thread.js b/dist/thread.js index 9a84f376..4c40366c 100644 --- a/dist/thread.js +++ b/dist/thread.js @@ -20,7 +20,7 @@ const handlers = { .pipe(hasher) .on('error', reject) .on('finish', () => { - const {buffer} = hasher.read(); + const {buffer} = new Uint8Array(hasher.read()); resolve({value: buffer, transferList: [buffer]}); }); }), @@ -35,8 +35,8 @@ const handlers = { hasher.update(input); } - const hash = hasher.digest().buffer; - return {value: hash, transferList: [hash]}; + const {buffer} = new Uint8Array(hasher.digest()); + return {value: buffer, transferList: [buffer]}; } }; diff --git a/package-lock.json b/package-lock.json index ac84e664..bafc0a0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1928,19 +1928,19 @@ } }, "@netlify/open-api": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-0.16.1.tgz", - "integrity": "sha512-lIU1on/4xF+Gz2bpnLry/3E6Ns3ICGgCP62n3LmL3eSKo94wCqiO/9nyq5NILawYVSRUZeIvEVi5DgnVyLWyww==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-1.3.0.tgz", + "integrity": "sha512-GcCPXIWI8VDBsLN4nPvb6sKS9tbi4lrHLhex90hT27nwTDeu4HgGE93YilcsgZ1LLODJNxC5LdfTNLtvEHMKVg==" }, "@netlify/zip-it-and-ship-it": { - "version": "1.3.12", - "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-1.3.12.tgz", - "integrity": "sha512-FQM/59HXMAKp9k4z6rXDA/FBKFSUaU3n5SFpF2/jScmpCmHBpF+pYIWZmVB4fY17cvq3KIcuSfzf9PqD1B73XQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-2.1.1.tgz", + "integrity": "sha512-xG77kkrW4OtEcUrleQ5gcGmD8QZm0dOGbWZXtyL+gyoHuMxqLndcl0XymVlha9X9R00ecimSWxnf6SpdZ6UBXw==", "requires": { "archiver": "^4.0.0", "common-path-prefix": "^2.0.0", "cp-file": "^7.0.0", - "elf-tools": "^1.1.1", + "elf-cam": "^0.1.1", "end-of-stream": "^1.4.4", "find-up": "^4.1.0", "glob": "^7.1.6", @@ -1955,7 +1955,6 @@ "resolve": "^2.0.0-next.1", "semver": "^7.3.2", "unixify": "^1.0.0", - "util.promisify": "^1.0.1", "yargs": "^15.4.1" }, "dependencies": { @@ -2011,17 +2010,21 @@ } }, "resolve": { - "version": "2.0.0-next.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.1.tgz", - "integrity": "sha512-ZGTmuLZAW++TDjgslfUMRZcv7kXHv8z0zwxvuRWOPjnqc56HVsn1lVaqsWOZeQ8MwiilPVJLrcPVKG909QsAfA==", + "version": "2.0.0-next.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.2.tgz", + "integrity": "sha512-oHC2H45OCkhIeS45uW5zCsSinW+hgWwRtfobOhmkXiO4Q6e6fpZpBuBkZxAqTfoC1O6VIclqK6RjyeGVaxEYtA==", "requires": { + "is-core-module": "^2.0.0", "path-parse": "^1.0.6" } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -2756,9 +2759,9 @@ "dev": true }, "ast-module-types": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-2.6.0.tgz", - "integrity": "sha512-zXSoVaMrf2R+r+ISid5/9a8SXm1LLdkhHzh6pSRhj9jklzruOOl1hva1YmFT33wAstg/f9ZndJAlq1BSrFLSGA==" + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-2.7.1.tgz", + "integrity": "sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw==" }, "ast-types-flow": { "version": "0.0.7", @@ -2987,9 +2990,9 @@ } }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -3058,12 +3061,12 @@ } }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-crc32": { @@ -3594,6 +3597,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -3657,11 +3661,11 @@ "dev": true }, "detective-amd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-3.0.0.tgz", - "integrity": "sha512-kOpKHyabdSKF9kj7PqYHLeHPw+TJT8q2u48tZYMkIcas28el1CYeLEJ42Nm+563/Fq060T5WknfwDhdX9+kkBQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-3.0.1.tgz", + "integrity": "sha512-vJgluSKkPyo+/McW9hzwmZwY1VPA3BS0VS1agdpPAWAhr65HwC1ox4Ig82rVfGYDYCa4GcKQON5JWBk++2Kf1Q==", "requires": { - "ast-module-types": "^2.3.1", + "ast-module-types": "^2.7.0", "escodegen": "^1.8.0", "get-amd-module-type": "^3.0.0", "node-source-walk": "^4.0.0" @@ -3756,9 +3760,12 @@ } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } }, "typescript": { "version": "3.9.7", @@ -3826,10 +3833,10 @@ "safer-buffer": "^2.1.0" } }, - "elf-tools": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/elf-tools/-/elf-tools-1.1.2.tgz", - "integrity": "sha512-x+p+XNxLk8ittsYN7294mCnQ2i48udu3UGdHBv2gw1u1MVigXctcfbp5H9ebqTJnDxkbs6PdOSBOAdYGGDN7uA==" + "elf-cam": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/elf-cam/-/elf-cam-0.1.1.tgz", + "integrity": "sha512-tKSFTWOp5OwJSp6MKyQDX7umYDkvUuI8rxHXw8BuUQ63d9Trj9xLeo6SHyoTGSoZNNZVitFa+RuHHXuoAzN3Rw==" }, "emittery": { "version": "0.7.1", @@ -3864,6 +3871,7 @@ "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.1", "function-bind": "^1.1.1", @@ -3882,6 +3890,7 @@ "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", "is-date-object": "^1.0.1", @@ -4822,11 +4831,6 @@ "to-regex-range": "^5.0.1" } }, - "filter-obj": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.1.tgz", - "integrity": "sha512-yDEp513p7+iLdFHWBVdZFnRiOYwg8ZqmpaAiZCMjzqsbo7tCS4Qm4ulXOht337NGzkukKa9u3W4wqQ9tQPm3Ug==" - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -5171,7 +5175,8 @@ "has-symbols": { "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==" + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true }, "has-value": { "version": "1.0.0", @@ -5226,9 +5231,9 @@ } }, "hasha": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.1.tgz", - "integrity": "sha512-x15jnRSHTi3VmH+oHtVb9kgU/HuKOK8mjK8iCL3dPQXh4YJlUb9YSI8ZLiiqLAIvY2wuDIlZYZppy8vB2XISkQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "requires": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -5289,9 +5294,9 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { "version": "4.0.6", @@ -5566,7 +5571,8 @@ "is-callable": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true }, "is-ci": { "version": "2.0.0", @@ -5581,7 +5587,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -5609,7 +5614,8 @@ "is-date-object": { "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==" + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true }, "is-descriptor": { "version": "0.1.6", @@ -5695,6 +5701,7 @@ "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.3" } @@ -5715,6 +5722,7 @@ "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.1" } @@ -7811,11 +7819,6 @@ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, "lodash.isempty": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", @@ -7832,11 +7835,6 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -7887,7 +7885,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -8038,11 +8035,11 @@ } }, "module-definition": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-3.3.0.tgz", - "integrity": "sha512-HTplA9xwDzH67XJFC1YvZMUElWJD28DV0dUq7lhTs+JKJamUOWA/CcYWSlhW5amJO66uWtY7XdltT+LfX0wIVg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-3.3.1.tgz", + "integrity": "sha512-kLidGPwQ2yq484nSD+D3JoJp4Etc0Ox9P0L34Pu/cU4X4HcG7k7p62XI5BBuvURWMRX3RPyuhOcBHbKus+UH4A==", "requires": { - "ast-module-types": "^2.6.0", + "ast-module-types": "^2.7.1", "node-source-walk": "^4.0.0" } }, @@ -8088,30 +8085,27 @@ "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" }, "netlify": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/netlify/-/netlify-4.6.0.tgz", - "integrity": "sha512-wmx0bs64TQH1DtJs+5NyYUy9f+VvrBRRpGXNgzFYyaVsect/lxycdkDZwWQFrcvTlCf9lGHlRu2Gr0uC6+/k6Q==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/netlify/-/netlify-6.1.4.tgz", + "integrity": "sha512-dp/gE8ic9RjwyBVftjJX2J1xRsqRNggcGFgOa+i5Q3LclIhoPMpHPGIUL7GMosuP5I2A0fzgUTnCzVsezfmGnQ==", "requires": { - "@netlify/open-api": "^0.16.0", - "@netlify/zip-it-and-ship-it": "^1.3.12", + "@netlify/open-api": "^1.3.0", + "@netlify/zip-it-and-ship-it": "^2.1.1", "backoff": "^2.5.0", - "clean-deep": "^3.3.0", - "filter-obj": "^2.0.1", + "clean-deep": "^3.4.0", "flush-write-stream": "^2.0.0", "folder-walker": "^3.2.0", "from2-array": "0.0.4", - "hasha": "^5.0.0", + "hasha": "^5.2.2", "lodash.camelcase": "^4.3.0", - "lodash.flatten": "^4.4.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", "micro-api-client": "^3.3.0", - "node-fetch": "^2.2.0", + "node-fetch": "^2.6.1", + "omit.js": "^2.0.2", "p-map": "^3.0.0", - "p-wait-for": "^3.1.0", - "parallel-transform": "^1.1.0", + "p-wait-for": "^3.2.0", + "parallel-transform": "^1.2.0", "pump": "^3.0.0", - "qs": "^6.9.3", + "qs": "^6.9.6", "rimraf": "^3.0.2", "tempy": "^0.3.0", "through2-filter": "^3.0.0", @@ -8119,9 +8113,9 @@ }, "dependencies": { "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" }, "rimraf": { "version": "3.0.2", @@ -8301,12 +8295,14 @@ "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==" + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object-visit": { "version": "1.0.1", @@ -8321,6 +8317,7 @@ "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", "function-bind": "^1.1.1", @@ -8352,15 +8349,6 @@ "has": "^1.0.3" } }, - "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==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -8382,6 +8370,11 @@ "has": "^1.0.3" } }, + "omit.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz", + "integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8478,9 +8471,9 @@ "dev": true }, "p-wait-for": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.1.0.tgz", - "integrity": "sha512-0Uy19uhxbssHelu9ynDMcON6BmMk6pH8551CvxROhiz3Vx+yC4RqxjyIDk2V4ll0g9177RKT++PK4zcV58uJ7A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", "requires": { "p-timeout": "^3.0.0" } @@ -9834,6 +9827,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -9843,6 +9837,7 @@ "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": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5", @@ -9853,6 +9848,7 @@ "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": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5", @@ -9863,6 +9859,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz", "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -10019,9 +10016,9 @@ } }, "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -10477,17 +10474,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -10762,8 +10748,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.0", diff --git a/package.json b/package.json index 31cfd8f1..18085987 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "@actions/core": "^1.2.6", "@actions/github": "^4.0.0", - "netlify": "^4.6.0" + "netlify": "^6.1.4" }, "devDependencies": { "@types/jest": "^26.0.20",