From b546773fc5553bdf303f6846f820c491d43bcf44 Mon Sep 17 00:00:00 2001 From: Fazal Date: Thu, 18 May 2023 01:36:49 +0500 Subject: [PATCH 1/2] feat: update to use resvg 0.33.0 --- Cargo.toml | 4 +- src/converter.rs | 57 +++++++++++++--------- test/vrt/expected/edge-circle.50w.png | Bin 884 -> 1623 bytes test/vrt/expected/fe-turblence.1x.png | Bin 2781 -> 3675 bytes test/vrt/expected/fe-turblence.2x.png | Bin 6010 -> 8649 bytes test/vrt/expected/fe-turblence.50w.png | Bin 676 -> 916 bytes test/vrt/expected/fe-turblence.50w30h.png | Bin 455 -> 649 bytes test/vrt/expected/fe-turblence.blue.png | Bin 3206 -> 6286 bytes test/vrt/expected/fe-turblence.green.png | Bin 3546 -> 6085 bytes test/vrt/expected/fe-turblence.red.png | Bin 3289 -> 6510 bytes 10 files changed, 36 insertions(+), 25 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 863c398..af3527d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,8 +13,8 @@ crate-type = ["cdylib", "rlib"] default = ["console_error_panic_hook"] [dependencies] -resvg = { version = "0.23.0", default-features = false, features = ["filter"] } -usvg = { version = "0.23.0", default-features = false, features = [ "filter", "text"] } +resvg = { version = "0.33.0", default-features = false, features = ["text", "raster-images"] } +usvg = { version = "0.33.0", default-features = false, features = ["text"] } svgtypes = "0.8.0" tiny-skia = "0.6.1" diff --git a/src/converter.rs b/src/converter.rs index 010b092..93d5063 100644 --- a/src/converter.rs +++ b/src/converter.rs @@ -1,11 +1,10 @@ use std::collections::HashSet; use std::str::FromStr; -use tiny_skia::Color; -use tiny_skia::Pixmap; -use tiny_skia::Transform; +use resvg::tiny_skia::{Color, Pixmap, Transform}; use usvg::fontdb::Database; -use usvg::{FitTo, OptionsRef, Size, Tree}; +use usvg::{Options, Size, Tree}; +use usvg::{TreeParsing, TreeTextToPath}; use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -43,34 +42,35 @@ impl Converter { self.fantasy_family.as_deref(), self.monospace_family.as_deref(), ); - let faces = fontdb.faces(); - let default_font_family = if faces.is_empty() { - "sans-serif" + let faces = &mut fontdb.faces(); + let default_font_family = if fontdb.is_empty() { + "sans-serif".to_string() } else { - &faces[0].family + faces.next().clone().unwrap().families[0].0.to_string() }; - let svg_options = OptionsRef { + let svg_options = Options { resources_dir: None, dpi: 96.0, - font_family: default_font_family, + font_family: default_font_family.clone(), font_size: 12.0, - languages: &["en".to_string()], + languages: vec!["en".to_string()], shape_rendering: usvg::ShapeRendering::GeometricPrecision, text_rendering: usvg::TextRendering::OptimizeLegibility, image_rendering: usvg::ImageRendering::OptimizeQuality, - keep_named_groups: false, default_size: Size::new( width.unwrap_or(100.0).into(), height.unwrap_or(100.0).into(), ) .ok_or_else(|| JsValue::from_str("Invalid width or height"))?, - fontdb: &fontdb, - image_href_resolver: &usvg::ImageHrefResolver::default(), + image_href_resolver: usvg::ImageHrefResolver::default(), }; + let scale = scale.unwrap_or(1.0); - let tree = + let mut tree = Tree::from_str(svg, &svg_options).map_err(|e| JsValue::from_str(&e.to_string()))?; - let svg_size = tree.svg_node().size; + tree.convert_text(&fontdb); + + let svg_size = tree.size; let (width, height) = match (width, height) { (Some(w), Some(h)) => (w.round() as u32, h.round() as u32), (Some(w), _) => ( @@ -94,12 +94,23 @@ impl Converter { pixmap.fill(parse_color_string(&color)); } - resvg::render( - &tree, - FitTo::Size(width, height), - Transform::default(), - pixmap.as_mut(), + let rtree = resvg::Tree::from_usvg(&tree); + + let size = resvg::IntSize::from_usvg(tree.size); + let size1 = size.to_size(); + let fit_to_size = resvg::IntSize::new(width, height).map(|s| size.scale_to(s)); + let size2 = match fit_to_size { + Some(v) => v.to_size(), + None => size.to_size(), + }; + + let tx = Transform::from_scale( + (size2.width() / size1.width()) as f32, + (size2.height() / size1.height()) as f32, ); + + rtree.render(tx, &mut pixmap.as_mut()); + pixmap .encode_png() .map_err(|e| JsValue::from_str(&e.to_string())) @@ -109,8 +120,8 @@ impl Converter { pub fn list_fonts(&self) -> Box<[JsValue]> { load_fonts(&self.fonts, None, None, None, None, None) .faces() - .iter() - .map(|f| &f.family) + .into_iter() + .map(|f| &f.families[0].0) .collect::>() .iter() .map(|s| JsValue::from_str(s)) diff --git a/test/vrt/expected/edge-circle.50w.png b/test/vrt/expected/edge-circle.50w.png index cb2bd761609b4bc850903b317c0a870e39773621..4cfbceda15c72fdf6caec68817c9f549b6281af0 100644 GIT binary patch literal 1623 zcmcIlZ%h+s7{B9YyD44G64!(Vs)>moOsJv!*<5KOG8sbbvdpqUZ23YNcJ4I(X%XlZ z(AbSlwk1SM9ZfW1GE+O_NM$YFG3iVu^&&*ODYOTj?Fa*|9Dn-vZg=MrKJ3fB>`m_O z!~49?`+I)B-}Bt(?;olXZO+>a0D!3ay~+>RZxQ#rDq!CQYTIo95EN8b?)%UTE)d|? zJFCClS^Y-O_jYepWu?Jj&>m)&iCgRA|HnGTrLL>vZZQ}R9H>0!b=WuKwT3#=X_HBV zb63`0O`u>Lfo2)O7$dSV(ydI{b~-XrOx9y3h*7M2cveej8zqT+!kz5xPV~l~VQrvW zq`WK%xG)$BLzz-WWkZ}oNWaNf!l=}u_T1yUnNl0#b?2!1W09ZcZ$(DMmOWJRim=|L zojN=3nmUP>`v5%~$(*$zBN0pkx&x3hF)EH;*Qc(xu3VD^+EuahAG@^5nb$Ogn@PEc zSD!Yt7OF))@edDsUXQz}3Csk_1B!gLlM6y9705faw9k2Hxlqn(i zVukX&v7W`Z$Of#2s+DIaP9{k(&25(@?% zDMnUm&|*0I6b>MRPI}H61Vhs$vG$8Qb3%xhNH>-zT;t$Pl9#JGL511 zNZ7#~3}>gq0hcHAtD-|hK2{<&$>JQ=4Te&#aQ`LC+@&Zwp=Vb0)TBB)sho6S`_1%L z`ENB4;#YJm??Q@L(U^lbpL`*wXXQ~)CrB6vB(s~+pAvU~Ti(UJszkT?GV?l*wS0Z* zzM><(ZCU#rYX*JGyU`*z^9wwVT-Ydk5C>I`*m?8lJ*io4-Jox2gFbwPqtC}8 zfg$%M@|ipP%(rGlOPPF2+JiX4^g=jlw+PM0creF^Az(u)^!|oalS_a*Kvnn}d0LF< znvvpiWlV{MFnx^A)tt&BuC?lHlE3bB;yLCQb(W@3;;S%Q6w8P@z>`z!gxX8-E%C07 zV)8H$JYve1WkzLeQ7|2aqXTV=Gj^3Aag+no)cpsTy$vm6`tGH@sG|WM z>3fNl6==!`p?<~4Y6Dur`x!Zp((`Ea29mnbY7K%GM@$@-r&|aYa8agyBt%Fd=XU(Z zdRHO}(}pu9Q|sUo7;;E*25 z4j8$gZ*kry9Ll68F^|$lKKb2gBYmbh-|b`Kc4rr-O0sT(bQU2$j zA1NP0@$ODs5b8mkOQ1@6w-1qyAzuasp**vZ*ysCX0L&DVlNd}bu_JPQ0y9DnIwM%k qNxvTQVuj>$Oi#&#{~EI}Ap?nUMMbRXonH2b0aU+xsPa}tW7prpPPNbg delta 862 zcmV-k1EKua4D<$&BYy)sNklMDB!xTY3zGL)A?vKzj`!^5fXPF2$r(UZy4Ab-Jx4CU2B^5_9;En2M>KC)h~ zhbW4Wmb)v4@_HrM}PB3L?DzYcQ^i3b`Y&k2jp`c#L+Ah z4j`22mYP&pl|cd$0H4XHmzjRz*WDT23H<~gx}5%y!yLY#(*hD?hS3{2hjrRA#<5&)>=P|e#=sHLV5x@Ut-@<3l)aY3{6{?PG}^3HnVoBKPy~P zn^!7ls7@Bi)94Y^>6$tyxW(pWXcjpncNg`E%Jf40l%QsYW?e`Q$u6mov;oB_LGpfP o&0~;-v>9aC+6=O6t<4~R0pXuQLbpED>Hq)$07*qoM6N<$g18Hu@c;k- diff --git a/test/vrt/expected/fe-turblence.1x.png b/test/vrt/expected/fe-turblence.1x.png index 88af382a03997c8d7ff0b911940c8f7894dfe740..00444a6dfd77556711b9af2ae95d09b682b70ce3 100644 GIT binary patch literal 3675 zcmcIndr(tX8V^K*MFO-IVtGm*(@t55ZRMc?5g%n8UD$0Gvt43f>r`qHfuax;xI|PU zbY;6U9jYjq(b;td#-tsF1|-S7u3>1GV#cyGB9(gyW3mOA+?Zl+$R%gL6Y#yqgRVy)h` z{fYYeA}dz8|LWj;Z=W*8QY=5Xbb6!i=6tVYP0eJn+_X{C2dl7r#fiyc=~{blpYCLS zjQrq<$#tjy$CW^T?uNlH`T|)y6-(O1ThtB368Zf9xV&s-%a{YYWjd;6k~r5vJ@@o0 zIoYb#ht7xw*Cslr^5RvMOeN>_ZR%M(F*r}g+k1&VZ>Tvw`_8&2cPSgI_kKW?d#*lT z*7KX3>8cQNJk}6u2(=1&?s%4uF-?Q>>KOS-iAlmf;K!6AuA;|Q5+W5hMp=IzXrUc+ z0aX>EA18YT=bJT%ydW%cwy)2~U)jR`K(+d`a|alM+B=J+7F6We+LXy=Q0dZ3 zouTGSM0cmid;)kiX51nVY0O~X;^{LSIR}{YV;6*Um{BbM(s?}e z-b3H1ZETtDWV1P*+YqSA=h5-R!EZgw70gG2_Uy0LC5D4LA2Zo<(;LUa@)EM68pY^T zYJhlK`ct|b-%AxNROZ04Ii`GFzTTtPs`e2|EqoG@NJ)Wi(SW;*w zu6HQDUYB!*NUEJA475nuhI}z-ds8fXH)py?Saq9xbc>o8nkU-Z1ct{liJj2W_I8_N zD*%^itd^+f6ic%2jQ_AqOzKX<;S%&wh8TMVC$j0uK$>uHXDn9Uw% zQXzcO@!I=gg)DE%VBd$^Qwsue93^T{Q~IYP3j$)q^MX|i8e2=$E>T_^f;cy&hl24; zwpFVFFFJsxcgF-NVU3YrjS-tHC=bk_(%EfPsoRKg>skDnY6S_y>#1~fA_n=5ne6)% zh!!i>T<{ppm(ubs^#$~Uv8n{-Kv@@R)Swk*JeQ_hMjuLG_oaX*HBg1=+>4}j>JoL= zEO?H9@ilPdUEaBqcX@vRPezC4QG#2$&P`5N2+5IRRGPbH@C%fqL8euCg}gJLcYUP0 z8BwS13Tci|C4s(d4Y~pz4bAsDmmW}lHbv+rJ7Fa$Y0BmO{ z;~J#Ibb-THFtsIOJ87$7UIy<}$nJCcDk} zaSY0R8Ypy<6dR+Y@fO156`4CgzH2F$D)1Z~&XL02bzwA)fzy|)Q&s79@ZQa!LuPxf zOtOQwovdUGP=%4t9ImQzYhBsZpQpiBDJUkw&p(Y`{qhF4b|IK*z356Fa16(Qw2ldg zO#u(~hjt!n(Z`{oK#wsw5@IWX#)T95tq=JQVf5#|QA7q~QpdEq+CS=~QUMbK%` zaB5%DMpDHBvjbU{TZ&O$y2CI_54%Nej+M1q~Z zgC$gIi0zn%hSWe4)A8c@?1 z%KGPFrJd8OyH-~K^W3o78(cjzC&eyn!*N;xkMa_@Utxo?EJQMP2C()tX0jh(Ka?7z z(2MyXChP4oV6k2uj?wmS40xWIkf&KC)6P};;FI-2SCArSIP21C5VxBy{FjBFk7R#@ zOC_}_EMkbR&V^(!q3#ShT#q13+ zcbD(tZTG@1U{m`|(d>hq1Uq@>DY)8&rWUASF=(JpeF)#*?-Dj+nT zTEZ%=uM6CzK^;f!5f&mE!&3{jHWpItEeNa3>J_-gV>Kwx5E_jEcB+yXLqn#8km92a z=^@dgx*$=Dg>tin&>KYNcohs=ODRRh>S)oihhe*T@7wHlsscOxb#mxW|0JXB zq;)k3oT|0eY0`T&WnGdeH$9p&ZDWt7;0XB-f+^6oas6MLBjk=S{X_QEDA(kjOM_7) z*FwPb5s2q1paep`)eD2p9y*Vo=wUADENM70r>T84lPCjdoQalVP<^7a9r{K)%nCkii2f``I)nL)_L)W8 z8@d=gU1Y6fub|*3tb{J zw!sUpFH#@WXAb2nmUd|R0s}A$Ndr|c$a7=x>qp6uJ)fsjbtgAkiczw3JeC-V?P@s$ zT3lf;^W3N8ZW2-fzjzd=j=;--S2P3J&6w0(@Rk5y1~{z?y04?x@9yl>nmxKd`u+tk Pje@;<3U}*vmYx0&IG|pQ literal 2781 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 f#{N>~#D?=BP-3N? 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 literal 6010 zcmd6Li8~Z(*!MFtSsFA7B~#2vC(Ssr@7p9>vNaniA+n5+M3yj4DJ_cPIBFDSn8jAY zu?tB;a%KvJN~noMjU>zaOyBoz|G_)gHPv*tC1E?QTjeb9y-afWkhtbF-_IH>8w%$UPFflo(3NnmC#-yTv`F z0O>FBhmyRePBGF(BH>nKI&Lo0`F_2A{r8!=@I=dUl@^n$H^01<1q>i74RF#ZB#>@p z0Pv>{4lr>4w}<|uoF>mGF&uSpj*rX@DI>MWK0V1bVYB`f?xC#su6FK=6Z-X}u=wJ0 z1oB8rw-q7Zn2Ee`vZSc_tH%Zw`uU5*?|Fo&qp7)DIi5%9EGxE*#IYWH{@x_w1ihq) zVC$EyE_gtizC^BHC}~Lb;;i!f2|4tTY!s#=i>2fx|B$bF&3)YWjN;exMQZNQ^i$6~o{L;b{D#xMf=|hXx2|!psa+{v z_&1p1K5bU~2S+7Z^W*S@P5bl{?ixj}&dcy_U7D5hFKVcvvt23SvB3d?J?Atfba0kY zs~}OlynHg;I*T0on9e@IJAC_R6GuVR=X4Z(GYb9YN}sy+))AN2n-0fswo#&`cO<3` zr+0F05T8(b^*VxLe7h!Nz@|9b|2(I)4_r9-HMqKI5;JwQ5DyOkH;zJ^a@} zQRY)jddZ^9a3QH+G>|s@eVxGOH$T^cS5UyJYWEfG8GlLIk2@p0#2;LH$)(VeUZoB1 z73;LgEArn*c;~IyxyxZ?sy}OAnNi6S7C|Ae5}h&I-Y71XQrrebE0HA==z;crZt}51 z?1K2xrB(YvrcH9T(6s)wwO(|oq~x)PG6<3gzSD1dt_8^_5|%EAelGb8pp=gI3if#T zOH4iO<~|!Xs&MiXB-ZLYXvKeXC<^BnEip>?QAyksL=S$-HC%A@s-nt-;^NygHwNdI z7yaO?7O`AGipW}3H9UbH z_8{a(*mu+;UUuP6zJi9&kNAt`eIb7bw8KA(#8IvE-#Dq{V0(D=5Cle@E{=FKME1#H z)6_sFJ3^=%y=*Egs6rl}bW}Q*2M15@_ZMZMsz^WE1yWziYv)EZrx=J3SGYauujg_j5c5UT&XQNxb zZtOCr4D?&ABUps78}>!#H;@|NJ1T7q_r2*o4cLG1HK@u)6N*Cp`{w$*EV@Gd(%`Xp zELbt32GLnxkj3uhnN%OwnB{8K1ER5=I1t!>q3+BAMvoA^}oeR*}B zDS9^AQPgbAnCvN0*om^B#j@4d+3^dbw<|y1{@18kgE737n<`|v zV0N5+!e7>uk0@Bm`^-}roG|)PNl;=;{AhlO;#pZb`B}bI6h@bxqlXo&%dY83@$nRW zc}aE^P!Pel$$2j?dE7txlFojyk#330A=LC(iYBu;SP9%ZvS@Gg5Ls%&ye2v6j|TNB zQYdSP;-|ElP?E=fMrVWeHjeA3B~9f_=Qz!1pQ7s8_?=U|Ht9-?g@vyo-Xi^=R`K+6u&O0gWp5|*_uW$~FQbOWf)CApTt@!r0q;bjoPi9e{Vs%*VEma{Rmm)c9W$!*+2rhaWc4L=N!vxnse*d%9r5<5)0Iv-7rd5OF>zK+r}56_>KR_WnnnqKtIz6dvo)DYf8GODX$uGGY|t;KqZHpl8qfUqd8 zQt9yV)?L(aAb-BqD}LKB{@8g0LjI;Y)w7M+8nYvC{s4mLtYZBP+x&3dP9@OJey-p6 z9Q%n;Fz1$!B3|z0x2wEUG}5Q3@!b)`5*728*!lvM_b#BL_t*58nwQg@_Zr~j#F>LWNuj&)HyKu3BuCfo&qXq__;I^do_D5C9S9fHKcAp!O=}o> z{G<_p<9_v^1a)K5nb+L)rXH82z*1>uWn(6m^RR`Ber4T(A_|#YZ*}8q8DcDE+_&$Y zw-4XGUY*y}D+LP6DuiGC1zmW`Oo)j5V+N5gL$@9cZBDUuE{P|pg1S5NUmNGKjOw;dlMeq;yx4u!AsqC% z?DHqmuOBqr2KuN~d0(rRJ1%slBM^Pw`^M0Pv|8P5ppI94YI6E3gUPO)8_UFklWt*S zZ$*(rSH7_X@P5pg+8-`Zk^{qN+BbS_M*I z>Sg)#g2?6k5@nKJX0hrIT9THBuK0{@4-d@72%Fr5mymExCV|NeILg|^_sk{ZZ}R*l0DBZF<3m!*a30LK)Pxn}hINgPkJ8W}Y@2ugH>mZ+{g2_)}3TARy333FO;x zF)33uIo5B<|?gbP>t;@W=!Q z54PP^Ef&lI;MU%g6R%hs97QY=msW=~p^u2jA(ae>nNXQ=Ie0K4Oja60Mi8Y8EOC%J zC)fP%V%r6i_Bag?r5@XsV*AL8jj$amb-A1-4W9cF0oYAakuQfplm1oS z6unmUC|9%emPCLgb@SIEL4lK8E2B4|k%X8*^ zk6_NdXZgsVAt8V;vS>$j?uB9O`r;#EPgzzEr(9T8%?wNS!#YWTfo6Tfd($q?>hHd} zOu;+Zk8^Jf%jJ47xaah3RZd-LErOR+BtJBlUy{N8^~;@N zod3Zf<6#iYSKWP3{@W!LBg#uC%GG===|wxaF~~V#jY##_vW%Cz@=U4(h<+81sa}!L zg6_??@*vb`nPekxNg)`E-kjG)?Otx|A+N5vLv?~H|>xHw(2azEYvlPNJqWX-3H`S6s6kz zZJ~EK>(Xl6BcKoxkRXS|#FQba%3nQyALRee!8rb+lOG4-fGQ0hz;FT9d~9WO3+_P( zvt>|vVkP_X`BLpy9sB~zA&+*8*GAzWocaF=XFqsyC(PKvE?p@2T7c}?-Gw4SM|>@# z^rPBb|_^9Rk{;WN)ybCO`ZH;!mwzXl9NW-T&ebL;j4#>79nWTj_% zWkAnjVG#$@>Fy0>)?b7UlI| zz%D{6Agt_)67WsHhPBySr|&6PRV77npGtOI7lI1Rr}I@S$GJ~`X*SSPtHQIcv%;zC|KtKtA9we!n5$&( z8u30{cXrn_qPQ;H*8+nC1uJA!!dY^nI{~!J!=$YGmZBzmnI{hhUX*t6@4_sSo15qk z7(IvBnU)VZRuGfE`p?4KD_4UYAXvUMz}ULUMBs2)nz8F2QtfhBKz;Jkt4zX_gsbRz zcdXSK;?Na}pPME%O*8wIBvZ)Cg}eHzp8T-9KV4=Ir?4lu&jLHrfaAX@UK|(a?y1W7 z-b}(V8CQ{@Wnn-bgw#=Uhq6{{jfJ|f*azZai0hBg!E`LEZpLYRV<*Sz=4Ol^!tvki zuCN4_mpMg7shwkmRrdG|^uOm<>s2M~{A81UOv+U>NQo;(1Jb=ugWgJh`su_yP2=ijf9)+1whIMjZ4CCwS6J;#i%uHTYswXV~qk&5x&IdcZd@Z3sBzEai8 zv4VN6ZiZ$#o{eM-Y~iNTl~ANaGe#B13zmTGQ|?+6%|#R3p6r8yLvb2(_>`YR^BTxN zUf+8A$l?;+c2qJT?1+Hzo+fv(#{IiERWTGHcInPOQteo7Rcd^9d+b#$@GAG!K>PKwVQbZy1wIB*Mnx^WA z3E%g?jn4IY#5ns@JQK2s9)Mq9cU@Qaa6MRukKKZk43S!Vj z>`DIgU9Y8GXjebuUpI#D&l}v|sB@u<;%AX1k$?C$pJI0gF?iKkEB)D33E$OSS;qG} zO;VSYxuFu^XH0?p#?8eQYDq+N!V=;A-8t9+SPP4of%fb!EgM(AWT)s+hw+}NNKCR7 zC|Pzt9G-dl_2WHo!agP_@MdoApp*p8vW8I8WixC{IqbI@Kb3j$XVOmX8pp?N{=|3t z2_U4FTDxqn`bwGm6U|F7gzGL+P#-R420TvI}6`n)vHgJ-_ZLJ}Y z8`~J|7vPHirdn4CaIm0Bqq%{quW_L}2jI3jW zJCNl!+ddiXO!nQu4+W z-%ZY(PHkLTI{*wm-P1oAxO$}%vez|kD%*j1jvjdW<00He7@bs&bt|9IdpNxx-)jo| zatW8$BaR%0V$>*Sd<&p+t#*QGKcZs40ks(2@^8}4nbM(R7*1|Qp+i&-Ji@z9u zlOtEfa2ZW+wuG*YSP1Vd)$A5eqtyr5p(%pSUsn3|{uk}`LR8Cy-B%aKt zq2>IEb$$gS+?>~35A=s?FsKAG$&RB=VP>)(bhgp*4lbGz$K|Ht{Ks9U z#&;u+M6pKjtIO@mnM2S@*+TqpIUmU5d4x9w#=_!@kFw*7m%c0bn?TOi`Gq7~FP$uE zxG){aE)wS1SSONJtiEL3Tf8%Lg0-~#FWw-{IQDx0j7k@#VNypyZ+y6-X-FOAV??kE z=AFlOaS?Fn*OIrM*fYjNR^NL-FFcGdoH^uD67O)CbAz|9YGb@T?E0W1S%I{1my*T% z53bHy8ymwOmG41FX~$PEIYrbC%cYTj>QIY?rZx1yQy$MSN9iG}D{V)8wAGPcIvmo9 zSM=1iJm}nsuA5wP)dVHaDVha4VmH4u2TsFo(hC!bvvsREn?rs=&s0Sj((dIR5M{h* zU*P`^U(gkoShI!k9+5_G>|XD!;JxN1%T3TM6?JK$YKr~sgN#j)8oP%jY3W@Y8#5;I z)}y>NE~fj{Urkj?-u1p`wVKkYgA49&;jaHtBCjpE1{;YEZtEwME4@3xI)OU;MzODm zMYTEi{`}ksVQNzl>TrABntLWc^1kne_SvdA1Cz}NG?w403HHmj&)d`X7rF8eE= z2)>h}=ghT@?F-j2ZfKz#Ih@BjEC;k|A6}`A3XCIu$9XP`z-P4hg9yajsT-Zk%ZhE-(hI!W#Nc*W)sR znT0>Fu_Ggms>}v5M*!NxnTh$DaD+ zDzw5&;h7iu%R*ti%BpRF(mfR_rO#9c?T#gkH+T4f-dZH%xMT#I9R_i6(E3)>&wJ<6 zk@Cl`WmugmluQ|5CXtaiX+Lz@j-ztj*mfzcVA z^OD`@cpHGd2Inn%KkphCQ*&Z%@vi{{je+rJrs!|~HQv{UH?W69>iec_09J_LHBgyn z!|s!6>?Wu+QnME$cX=}BjTK81+1Hg>nCpGAkv$@o*aA~o2hz6qjmoT+%j5x?sK?gw zr1mEr?#HD(s7t`%$GFsO!PiLTtGI+(gw;}cYsUA97}(8J&Y!05Mvls<)-jrCO+QEe zo0E?q7t9cs7cm-HP6>%ppeME1G1CDjCqdX%kBt?O?id)X`^S`0M~Qc>aK|KYGVhFz znRb{kgd5m{BK1wK=B$Qk=6&=RIogsvsYC%OfFnUW``&3`yhX)^%)NvNjT6R?`)(*r zd}_fvXjxFlRn90dujtXj#FR)Yz00Hv=#U*XH$Er+PN+WUgj)Jh*DIUMT9h3TN*$jt)iBK~=-cv}sTQl* wH`xw;xJk@a6uCW;KrjowN;>9(GYtS0>lYmA93mgW-STgPJk2fck?p?TADSZKb^rhX delta 653 zcmV;80&@M72c!j%BYy&GNklIB6J3=?Q4 zXu5$+AWk3~G)zD`LHhiOL2Yv(QNepXea`uDqMn0!K|aLkgYrB#5G&SFMu;UT~*gZFsbO-z1i*o2&f)ZAOCG2|a_zJw}&oSc;i? zW+%|MZ}<+&jx$Nun4rQODPB{d`tfyxPC4}H7GKa*VVBJ$oukl}9Qw3Gf&ohGdWdDe z=NN@H)OSd8;&$Z;_MP{9y+81j;uZ-?B-m%U>OZxAa_CwL>mKh}uKKAu*OMH&wnTyu zI!CT2IdrW;NPpQAz#OZ(4jJPLAvK4MS+!|Mruv2M7pw%KwLbs#!Cy5eJ;o(MZGHah zgO(DM$Q16F2{Ms`uLMhk-fF|@!qYucM3HaEP>&Dt7@9jS+8QdZA#(6_Cg}%a$a{}e zh^n?B(T%V^%8*Ihkfx{x`G!O_g1q-gOhYEf92afPB!7KIEIHqhOyRy!Y|S^sst`-R zeM3g7Kjk|>3{8DQtP-&dx!5!$m-H1eG}ts`r250S(3|3P(-3Q>IG%>5+lGu3?!9sZ zs}MPC>jozXt!L-{?2DF8F~>DR8#6(sha9>zRCxdT-eIJN9J*E^gcd0DWQ66=r(Ey% z+H#D0EPs%q#5#wr<*GlB$W@P7;1K(0fT8NgtCeDobq+5n*ZYromcvUMKiJifBNVEi znJ(erZQ~C+l&Q`J9pEjR;skdXsbdbWDbpjn)fTW0(KQFVA+AxuhS>2;J+do#t1{IJ n)$ayIl0IQucH*aaReu1~*>s!T_L`dj0000R_n&QVxc;#6ugC|p1BD6G|66s`?|uKMi=CODP40~7e%?1s_Pl?1Hk_`P zJ;MF{)`5KHXI-%mEc9o+XR~A9G4+2#;|5tQ8FPWn~k5A^gefy98_6k4o z#`TPL-T!U$ng5vn-zaeYwNk+x1n=9mn2*7Kp8u9w_aoz9vckN}<;?Go*6)kn`AG54 zaR-~__u1mQ|64t>XM1#0kLmc&^{OC6lM(bstC)|s5h`mQ*^520{A=~E~_d(T@V{{QE`cI|t!|4RU!C$r;3z1>H7?vH!+NmuCq`)tEpVE}g7!2_3no>%_& zSaIHdps&0BSL|orWA^`}fc_1ztLE%yjFZ0c)L!lpt2JMZIna*ZdwIfvzOoefzv(<% zo%9dgf4Oz+71_WLx9Jc+o6S6*caNC<4b=w{=fCkhIQZwf!=KlCOg`K@5Y5d0sIv3F b+#lsrR<`ojikmrrNsPhM)z4*}Q$iB}EPGqc delta 430 zcmV;f0a5;m1;+!BBYy#oNklcE> z3B(C38{h=O1i%FNyrhwqY_k(<3h`2Z0qQDy2ayYaX z_)7ioH3|nm#XHu>mP22a!U1mK^9NU8pK3`@SSUjdefa@~cz;2u;~Havq&f7pg+;Zb zdnC)DtC7MtVbv73NK)4zmBN+DvM2Z+l^}<91$2l3UC?vT2Lqzjnk(5{hmg&f6upHzFX6$<2PfH_QR58~S* zS3@*1%AsAZL4StuH8RSfU86kzk$B&eix-^Y8mZf$fLZY%BiTMEcJ+#p40CAb&(aF1 zi}yXb-xjQu_NKT*DdQaCN`(j`U;XZRd(hpuPV YHt!HU!Ig~-bhkdcSH9AKE&Io0QU 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 literal 3206 zcmZWsc{~&T|8E;JN0~W7$(k!?QAs)4)?{1W|6ba zQAQ+2=7^-+N6hg-zN^pU_s8%1{p0<9KVIkK{eHdP@7MG7CZD#o*e<3hwr$(C?KmvP zPOyIXGaz8WOm`^C+_p`^28ThNxtTFDDCxJ$Lb-WCQ&Uqk^;}a^)4kKO(U!m;LE`|| zdJXKYsPCqzXVR)iQC-sArl_Za2}!ns=YZ{HPgrly3CEFNvC8X<+l+oWIr*M5t~P%D z6Qn@TNWB=E`7ENEF?Z+p+SdqUDFqxrswIaM_x&^y6R;1CI4T28+AS7`-64!ojRhho zC;p!}@>#~xAh*y(@?#N6EJry>HKlFun|K7E^t0)hg4TRB6K1YQs0_!k&xh17#4-=g%p@ zXWCdSkCjQT%8~8sn{TtiZ*?TJ&krpEs)Mf#)^3IS%-f; z+Ty914^+kd*3N*LMds(X4GqQn%hkiSI2;ubWmsJgxZJ?Y?6J&8FJu8N@R5lYh?*Pc zt9_%Q`tWK!MAb#FS$$)qws&G6=<3&5iRQysSU*t}mwK+Bnf_q_@8f(-%U~E&-4**t zvM4Mk{OaJwPnM{s>qi%)(d~7Xc0tMg`z!6*4Tp@n)@L0jSI-l1#4-6B3!zfioSJQa zwhzzQ8-@V-`q$au4`2H`n-(Io4yOmc$-9JkHx45+9*gI!Y4v5RN<-TxyJ)WVto6;U zXDf8Zpf1p0HpQlpwWX3G^~8T=m$9Xl0YEb@;H&!DPY4lA$i!S@A&YD!TfK?g4JU>rXdghie)L}X1298hL z=PRO)NtO3yj04$qftYxDHSv0 zi1kofjWyk3HxUmJO(`x%JptsX`j-;x9t>;>Cbayg<-cSQQoclb zN7|{t($oS`O&;k}0P&h0A%ZTU!6Om9&c7o)dv)O!jP`iG&JqvCLg|U^ucy74W^jqR)OOi4@QBgTwT}ty zv-{J|PJwduW1p~0)mlWp^QY)6!yJTHiL91$ZhI~l;C8xw_z|=#uj&0N-ml>B%4DOdM8(dKXr@pUcxTca{>y{IEO&h^%t3 zdr1VckBN$t5kc_?cwphUE4iD_2e<+7D`{3;ay#c-9Nz6&X?)EC<(i{>wb9Z3A+4cI z5h2A?tEZ)+Z?59~wnI{i8B!V8{?7DI6d_4S^mXvq@bR&cE}!Q&O)V6-#*`B>rJ& z$i;bO_4Eb2+Ts%lxi=|Q;F;lg8KVn( zo(<^KNp94`B9{X9;mpSX_!LV!J4a;TAT_UmLL%Z%+a0z?LYfyA5|obGj9F4FMPjZM za1*w~pGPlTvkcHr{i@fCdRpJ8`H) z()6r$CnAn=Z=5780MsYys$*?UORd6yu+oI3}e)@=&ySqY3Ksg7Lt6_z^oSdR8 zs1O$ZPXzSG-Kr;(LE8HTYBv|$2bGk!E?XcLN^~4T@rk6R^%Z&{pRPo1)WsqXVN=fh zIbD>{cW$A@?C@~uzx-?h=1)NV%vFV1Kp>rrosI&3Us@uTs0Rf6dRi+@J|zfoN+z}~ zN(2)fL{1Z&QH6*MY#}%55s^zZfn>+xm1rQsAVDy|lAj!1HqFA2*@@T({sXI8myy|y zI^<4nVOAxRStro=gJ?ZbCU_*KENluOjPZo*Y6+@#mZKD%nE#VW`M~P0l}%0S{tmi; z&fq*)bTd$p2wqX=AEDtT6Zof_7+yl;v0JrQ1jaJ0cd51lcrLSc2+d#qtK#gu&KwF# z#LK{ZpEot#HgxzJ;OYSg{asTyXq$Joa?8Wbtzr8m9r$T o)TzxGe*@n@JGbH9!p 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 E0P*Q}umAu6 diff --git a/test/vrt/expected/fe-turblence.red.png b/test/vrt/expected/fe-turblence.red.png index 04e87ef9c4e2dee7e1df2aa7a2783ab42fb7fe9e..106baa2db2618b7d11d6f278eeb90da820209a6f 100644 GIT binary patch literal 6510 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 y9j;EFi$5U$yC z`+@t_=ad7rZ8G*-NS__~^6N&!hF25cYJpZ+1$Nl zf+^S)vg4b4S0|e?$$ON5ACs7=@4|v?YaQE;0M$MdT*%IkS!D0>AGgWY?N75%5jb4P zMVwdQb*kwC`tcpr_pK(&KJ}+a1uB+oYVWsOyIX#LcHLnsVuR6Jxq%34^p2DN0Re4( zp!0KIqN3{47ZST9TYBtZ{!3 z%^I4=Y=-Oda^!Xoi5k1{x&|iQ0uLAKY#3u^T6whUDfH1AniN*vis{8h`L{38 z<2ERZ-R_$M6#7kCk(R=Ep?>pAW|y=lF3e;oR~;FCUrQp%&&Ncg#L_uYl5xloctZ=} z*MSnn%{!yTF-mlmSG4&P0$r;3;c7ywQ-xOEjUg-9MWg-7c?T-$XTa~!-x_AdDho5p z=j^s6H~&SgclmVZ$df5t$I1F2BT+&&IopLQwBK0kIsZ_)C+$R>1ArJTl~>IN3X9nXEx>0$bi|Jh@X)Nte~ z@ir@CUYM;1KZEfzA90?i9^cY;dTO+1V|a7Tr_oa9vHIzqfqrxtu7#tl@O42dTr0Hn zphmK_{f^(&K3Nx>R%~fqa@Qkuy!?X*#H|J!v19(LCFS22`wjINjv-fagGOX`aG+ta0{;w7tf@~tG}Y1Rx{OU5u=dz%c(Zg z21APE*~29Cu?MvB9%4Ue!#!Nk=MI%dNxjfk6Wg)#)M0OdxLP%3p*IrL4r5Q9wBqfm zCRN7c4uoQmllC(4xRd99To%r*e2;*7KCUKmR2MORiYTc*?Q>#6HTTl?QP8Z(aY+l? z&qM2O!pd;mf$LX@NsY=-sGa>e*~~V-L#W0DBfBalIoDPb!n*ddo2M^1Xa{G%Cw;VU zrTJuup1a{-aIKTLr%J`*ai=dOA{c`` z_}oNs#;AEi2K=5ngH}#1U6ms?3d9H!jJMv*%6$E1?_qF6({WPv5foa~?lL0XCC|Y9 zH~R&UH0)z}{pd}4jsnWHqb7ZZ)?!a(<#fm5v<{3Fxoi|J=8oau8i#&D@R5i|L-kwj zFhbHbslFSiXe47W5kpuViUNbfibg%Q2Fs^ufFtE^DTpa>SE??)tluuoDYc1a<>qFE z_Mf~k+=gQSn!w6whNv?fWdKyE>pr82=}M7=D}q25qof!pndAY$^uyBha=?NVyxtL> zf1kD%rq<0`qYakgtq>CMF;^uMIyBkXsN1iIrgi{mnGyF+XWv$v+sEiKV&52_+XuIA zJ^+J4&5Up~*{2ZYWN4k9cFTkX`+X9W;1#gtx8NK4OTW|CYdi~#%gepy;XW{UNUB=G zeMS{yKeozE#ULnP{L&3a6bd5>`1M~T4Gjy5AB-~yTRLMr3q%f{{@b&@>Pz><;VI74 zey)wC`7DTk?VE|vEh5YmGXz$qixDb9cXcq(91vC?YkR@zpy;js+H~!^*@cA@ zSd0M$qU;irm=TSHCxs`c{jCC)Y-#g1ZZ>)W&VQX1v>#P;2ngyUF<{~t&KhFyW+;~J zRD6FBF4;*V*=K{d(ksk02M|K;Bd#YC4IS^}9KqvgXo1=4(3d}ZAJ7SHVg$H2evSWO z*7M^GMPER)z>PCymC7{$WyHvA7;w8-C8WXMOONEk7Fn*-;_$&6b6pnfT3|TR&^hAR zhZaa69Y**bWEG8Y#ghH_L_NL8VA~L1AwyBy0i98YZQ`#$Ijrx7WmEq92J`#C$_>hE z3&;tIP0nA3Z6n4nn@G>R zzU^B+A;C~XRfi77XeL9AhdqgcdqFzcuo7SZ+CNJ(CCa9ozliL}(N*C{GM;oXmDMrP zuoaG!nSlNq4t+U* zW7PQi7B5q4g*fx2Z4uw;MsMPCC?PO@jhWqOB6OeOY=mj%J_!1$`0j&EicM|SJ0gq_ zcI$^wutS Duvtfu{QOR3zW>XTy%@o?rTRNd%7UWRV zEO7=Z^W1LOR(DKOi@zO|Ae&i1b>s3W)9faZsv zsydvV3g!W?Rram?B{}j-5+ar76zjlLgDB_i%w7Dp=Cs@JhaMM5O7mTx3py)0Yjqr0 z`z77jIf5dJi&ti^@D{Zsw7p$bxd{$HhX~*&G*%i#x6VV}c{Mfk34SUS9VWf3TDC6a zjc3zMP79|lP#WeT%B%i7+j{0ZC&l_RR$MWHs|GhJIk(!+@t2$E{ktD;*;e|=UbW}oeM2>fsUgt(a(_iklU~>Ym z#*+}CP0AUJz}I$tX|*ije5$3=)z{rf(GOkR-KEcwW+}=T!KX2<7%%1<9-IG~VB0ZN zZ<*p7G-Druj@;fQ=RXNan(A!(Oz+}WY{GkpP!$O}!MZbV*XV?a+S{#jg2NZww9hV; z4JY4xPip5W+%C9K)6+4>*^|z2T*zb$ldid!K0fsnr-m6?s(V!}o03cat_UgWMRGuO!xo!zE-RH`}2bpDi ZkWhN;7slKPF7Ra$F*mj$)Zniq{s#}%1zZ3C From 61d52fad3bd2b25fd5b30ddd1ab9ae7f849d9e58 Mon Sep 17 00:00:00 2001 From: Fazal Date: Fri, 19 May 2023 22:06:53 +0500 Subject: [PATCH 2/2] chore: bump wasm-pack to 0.11.1 --- package.json | 2 +- pnpm-lock.yaml | 73 +++++++++++++++++++++++++++----------------------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index ecf2685..44371ae 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "tslib": "^2.3.1", "typescript": "^4.5.4", "vitest": "^0.9.4", - "wasm-pack": "^0.10.2" + "wasm-pack": "^0.11.1" }, "type": "module", "packageManager": "pnpm@8.5.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6958bde..b4ff63a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ importers: specifier: ^0.9.4 version: 0.9.4 wasm-pack: - specifier: ^0.10.2 - version: 0.10.2 + specifier: ^0.11.1 + version: 0.11.1 benchmark: dependencies: @@ -134,10 +134,10 @@ importers: version: 1.16.6 '@typescript-eslint/eslint-plugin': specifier: ^5.8.1 - version: 5.8.1(@typescript-eslint/parser@5.9.0)(eslint@8.6.0)(typescript@4.5.4) + version: 5.8.1(@typescript-eslint/parser@5.9.0)(typescript@4.5.4) '@typescript-eslint/parser': specifier: ^5.9.0 - version: 5.9.0(eslint@8.6.0)(typescript@4.5.4) + version: 5.9.0(typescript@4.5.4) autoprefixer: specifier: ^10.4.1 version: 10.4.1(postcss@8.4.5) @@ -325,7 +325,7 @@ packages: '@types/node': 17.0.6 chalk: 4.1.2 cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 1.0.9(@types/node@17.0.6)(cosmiconfig@7.0.1)(typescript@4.5.4) + cosmiconfig-typescript-loader: 1.0.9(@types/node@17.0.6)(typescript@4.5.4) lodash: 4.17.21 resolve-from: 5.0.0 typescript: 4.5.4 @@ -1475,7 +1475,7 @@ packages: '@types/node': 17.0.6 dev: true - /@typescript-eslint/eslint-plugin@5.8.1(@typescript-eslint/parser@5.9.0)(eslint@8.6.0)(typescript@4.5.4): + /@typescript-eslint/eslint-plugin@5.8.1(@typescript-eslint/parser@5.9.0)(typescript@4.5.4): resolution: {integrity: sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1486,11 +1486,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 5.8.1(eslint@8.6.0)(typescript@4.5.4) - '@typescript-eslint/parser': 5.9.0(eslint@8.6.0)(typescript@4.5.4) + '@typescript-eslint/experimental-utils': 5.8.1(typescript@4.5.4) + '@typescript-eslint/parser': 5.9.0(typescript@4.5.4) '@typescript-eslint/scope-manager': 5.8.1 debug: 4.3.3 - eslint: 8.6.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 @@ -1501,7 +1500,7 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.8.1(eslint@8.6.0)(typescript@4.5.4): + /@typescript-eslint/experimental-utils@5.8.1(typescript@4.5.4): resolution: {integrity: sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1511,15 +1510,14 @@ packages: '@typescript-eslint/scope-manager': 5.8.1 '@typescript-eslint/types': 5.8.1 '@typescript-eslint/typescript-estree': 5.8.1(typescript@4.5.4) - eslint: 8.6.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.6.0) + eslint-utils: 3.0.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.9.0(eslint@8.6.0)(typescript@4.5.4): + /@typescript-eslint/parser@5.9.0(typescript@4.5.4): resolution: {integrity: sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1533,7 +1531,6 @@ packages: '@typescript-eslint/types': 5.9.0 '@typescript-eslint/typescript-estree': 5.9.0(typescript@4.5.4) debug: 4.3.3 - eslint: 8.6.0 typescript: 4.5.4 transitivePeerDependencies: - supports-color @@ -1826,10 +1823,10 @@ packages: postcss-value-parser: 4.2.0 dev: true - /axios@0.21.4: - resolution: {integrity: sha1-xnuQ3AVo5cHPKwuFjEO6KOLtpXU=} + /axios@0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} dependencies: - follow-redirects: 1.14.6 + follow-redirects: 1.15.2 transitivePeerDependencies: - debug dev: true @@ -1873,11 +1870,11 @@ packages: engines: {node: '>=8'} dev: true - /binary-install@0.1.1: - resolution: {integrity: sha1-wbIvF0WBdk5cUs0WZkzx0ofji9Q=} + /binary-install@1.1.0: + resolution: {integrity: sha512-rkwNGW+3aQVSZoD0/o3mfPN6Yxh3Id0R/xzTVBVVpGNlVz8EGwusksxRlbk/A5iKTZt9zkMn3qIqmAt3vpfbzg==} engines: {node: '>=10'} dependencies: - axios: 0.21.4 + axios: 0.26.1 rimraf: 3.0.2 tar: 6.1.11 transitivePeerDependencies: @@ -2143,7 +2140,7 @@ packages: dev: false /chownr@2.0.0: - resolution: {integrity: sha1-Fb++U9LqtM9w8YqM1o6+Wzyx3s4=} + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} dev: true @@ -2362,12 +2359,11 @@ packages: resolution: {integrity: sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=} dev: true - /cosmiconfig-typescript-loader@1.0.9(@types/node@17.0.6)(cosmiconfig@7.0.1)(typescript@4.5.4): + /cosmiconfig-typescript-loader@1.0.9(@types/node@17.0.6)(typescript@4.5.4): resolution: {integrity: sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' - cosmiconfig: '>=7' typescript: '>=3' dependencies: '@types/node': 17.0.6 @@ -3385,6 +3381,15 @@ packages: estraverse: 5.3.0 dev: true + /eslint-utils@3.0.0: + resolution: {integrity: sha1-iuuvrOc0W7M1WdsKHxOh0tSMNnI=} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint-visitor-keys: 2.1.0 + dev: true + /eslint-utils@3.0.0(eslint@8.6.0): resolution: {integrity: sha1-iuuvrOc0W7M1WdsKHxOh0tSMNnI=} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -3668,8 +3673,8 @@ packages: resolution: {integrity: sha1-KNmWnqkGYbUTQlnzEqtqp5KaxeI=} dev: true - /follow-redirects@1.14.6: - resolution: {integrity: sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==} + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -3719,7 +3724,7 @@ packages: universalify: 2.0.0 /fs-minipass@2.1.0: - resolution: {integrity: sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=} + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: minipass: 3.1.6 @@ -4723,7 +4728,7 @@ packages: dev: true /minizlib@2.1.2: - resolution: {integrity: sha1-6Q00Zrogm5MkUVCKEc49NjIUWTE=} + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: minipass: 3.1.6 @@ -4735,7 +4740,7 @@ packages: dev: false /mkdirp@0.5.5: - resolution: {integrity: sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=} + resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} hasBin: true dependencies: minimist: 1.2.5 @@ -6042,7 +6047,7 @@ packages: dev: true /rimraf@2.7.1: - resolution: {integrity: sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=} + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.0 @@ -6683,7 +6688,7 @@ packages: dev: false /tar@6.1.11: - resolution: {integrity: sha1-Z2CjjwA6+hsv/Q/+npq70Oqz1iE=} + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} engines: {node: '>= 10'} dependencies: chownr: 2.0.0 @@ -7062,12 +7067,12 @@ packages: - stylus dev: true - /wasm-pack@0.10.2: - resolution: {integrity: sha512-Kuh8XAArQNVoikMUenjDs4+g6LpktgfXgqlp03G2dJKDBokA7Y8Cx6MDCnvREzNnmprk9IohHytwycVSemwe/w==} + /wasm-pack@0.11.1: + resolution: {integrity: sha512-0BKEioKJY/SMqahDEoaUUR8jrRkHO0cdYhRqqHKQMY3Bac6Eep3ZRsTlpFSSwS4LYPxd+Tb5KFFNhUikCkq8Yg==} hasBin: true requiresBuild: true dependencies: - binary-install: 0.1.1 + binary-install: 1.1.0 transitivePeerDependencies: - debug dev: true @@ -7190,7 +7195,7 @@ packages: dev: true /yallist@4.0.0: - resolution: {integrity: sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=} + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}