From 21694b79d241b9647b6ee279d0b5e2990df96309 Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Mon, 4 May 2026 10:42:54 -0500 Subject: [PATCH] implement ? nil-propagation, write browser-auth.el example, update spec Iteration 5: ? nil-propagation: Field and Index handlers in js_cg_expr now detect when the object expression is a Try node (the AST node for postfix `?`). When detected, emit JS optional chaining: `(expr)?.["field"] ?? null`. The `?? null` normalizes JS undefined to El's null. A bare `expr?` not followed by field/index still passes through unchanged. browser-auth.el: a realistic 130-line example demonstrating: - @async function with Supabase via native_js_call - DOM bridge: get/set value/text/attr, add/remove class, show/hide - local_storage_get/set for session hints - window_on_load for initialization - window_set to expose functions to the browser global scope - set_timeout for transient state, is_valid_email for input validation Compiles cleanly with elc --target=js --bundle Spec updated: status promoted to Phase 4 / ~80% coverage, nil-prop status updated, new example referenced. --- dist/platform/elc | Bin 415592 -> 415592 bytes el-compiler/src/codegen-js.el | 23 +++++ examples/browser-auth.el | 165 ++++++++++++++++++++++++++++++++++ spec/codegen-js.md | 4 +- 4 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 examples/browser-auth.el diff --git a/dist/platform/elc b/dist/platform/elc index 37a9e73b2f571db8f90867f3108a26be3c49725c..fb7502c2c8600afe88d217185d0dc0fa4b6471e4 100755 GIT binary patch delta 79030 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�g8HXJ-rczU^feDXA<~^sStw8_BO>vxeQu%SNi;}W;nt9}%pyCptIpm_m zG$XwoG_4_NP+!Z|$lYlre?J5dL^4qfq zwRpJ|`R+wvCmR#_T-x&tdx?w-^f^Wi+IyPyMy;8-1@-Z)POd(~&~L%c^fyOg+}m%L z34*!`G+ZqBan!=oX-euw-7sH>FKxt*6jIEcK=LPDP~~^RXBV7Gx1&Q=wiU zalCTCp_0zAwD7Gyep>9?BtY9}mO8UuHuy<<_^%>ayz!%lg6mOfoUDarE`tL|6u8$@Gisx z%x@SxE5o$WY&S#P?Rzv_8?jN(g7JkK=v~NkNmoaeSnUUi_SZvDlm|6YKG{b3Ppz;; z8GLky1!Drpu00tFSXr(SRs~^KOQu8?^#&Mqa;;Dt#UYbTC80a1_C@G3ZG^sTg|5g@ zSnOKC!b}wq|EW|M@rsmF1X(j*k8=u$7Dt~=3wlERzfFF}2V z&5Ht_hrCok$c)pBtGUdDMsh|fK`Uv*Xe*dBgn8zd$dZ{~Vt{Yv_bUcZ*fh?IpRzle zponFsFG&Bv(ojXC@A?jBFwud=BUm4yT~zyfzH3bJ{oa}|!=<4BhfN3O3zP8U}LoLr|uU>eHBe|KnWOahlv_S*2@A)MC)l zp3!{cBfnU>iV|1-4guUH8B0X5+f8-E!{KYRWD?dpK|^(pQpRgJ{H6NFwlQ#`mAcN+ zn=NA~(1bKrHaJH8845TBaxR2u-%ruaEK#3ZLO9+PAgsx6C0uI>;dmQBM`qn9jW!-b z$;b-TWQFWjE4<*#^M?1-xI8zpk;{>zUj_?mEUo3B5Im^K$P%|vO-1xSEen+6DXSjJ zQAO&7occ75$^-g-AKkw!9f~m$bk%TSq3agVIH4-WKsg@p&N{k}oAQ>sk*I(~*a0&$F}``L~1iUU=grfx_Ds;SvthEtJ-|1}P=j?8_O?46TKkHdp*}wCt}(PGmWVvb0dm|d|HhYb2tcb| zVf`WHN9bS$4TT_99EPqi!X$7D=mD%mt{w@z9W}`RdIyflci%(wVFRgwZS)SCEJesd zQFcAVksUT-DaDHHYH0F}I9hYjpsV`Lh7mcs9cWlBI8+bN@o#j1b*1QmKY+o|p(V1e z>446vwL8G*k{B?#gZeuhp6!CptE2BXEqGYmmhoSEr1dht5cna&+b!`jcQMR!dwV-P z!kc=@T#x#iMXXIkpHhQq1@^BeAuO1ob978~;pXu_QCoyNM$7j1{|N zhSw^!4BE(`EIy0?pbkPWAwCeg11p3VK`@(Ut@!a|n6a^o+v>JA+5=Vb$?=jcd5iFu$2H|)RX)Tg5dDHWO)RBi=*Y}JB)I+h2FsQx%w8S$h#O?VHZBWx)QttT152c;=y90;>^9D|sDsiO)AlqS z?i+VZT$Ta;Jjz~Jo@ZBh6EtyZ^bNDWc~?v*c01Ctj|2dpje;2vquOGXLR+>mn&UCx z=%GmLn(LvBZ|t@a^Cz|=D;1t^f*-B1TYg18enY{J`jWwmQyp1Y7l42(57Py*e}51m zT#9dmk`&jj^2Qz?cDu3>BRU_ctRCD)lj;~G{jp1?6$h8;4q7v5;hyX7q#8~vT9@Gl z1JB@5UnVK+8MUCR!QP22!q1O66WBHOBgmp?Z6OG3Rr_oDo5#e3egPc`rXFiPXsZtJ z(k#`qS9n6sBr>J1UF|~sEXF=D$7UN_W3wxfm0~&$9?jCofU{*hWE+^JkxRVWPAD8) zJ|KsAaxA3d!uEaHqlNs zI)f8HzXt;v+U<&o@C7ae=HS-9jzl5o?3y*^BG^d$>zERCA2L&e=MDiAZ`&dC-7Osg z*OZxrH%^n@thMA}T{z9tC-!#3NV4IaOtyo19#|h-befz;^bNqJNeA?&I1@)@1xxNQ zuR>aDNEy+8!n5BN+!Y@@2~T9bnQ_AZjP%qs|Bexz409}MmIYLyC8AE6Mqc-4gkq5oF=6mc_E5K>cWe{@&(6H?R}JsaDyN7{PA=|2iC#3Yuftue6k{ zV6VlI?0uLLxx4YdRT;T^R$*+Tv+s0ph%@7@4bt#BGBHlbT9E}ceGf8HhJPS~m>QiM zIa%i{HDshW?UerQhG(gwk>2g66uQ&1R6YdLSU5Lh+0rHLA4KqF=;vjrph;VmzHI3R zq}ln|6_CMwzgeQ14OwiJrb^WTd5Sy9_*xLU&jfP?x|;RM(KHbueb2?#N=Fvx?{OAwAi< zV^aQ!JTXC+OQZL3$W0YF8&uNW%H(7$aB62eCBTZ)%n^M_e8App+jYb-ANGEpl;=Wm zTU9UbOa%k+tQjCZEt^*0<5`38`}{2Vy)#Q#y_BW&EoUJx=&)ir0)+4TwwLsqvbd#k zz8Qvg1hA_zv7(#B{2SHb_U=Wk{awH(SteR*-Au=wC{mY0?smGoA-V zeP6Pr}WIaMBtCTr>2yc_{rdtZvQ0-!dG?;k!n>tpoHV@0`Qh*tLbAUSpWA2TrBt(&FgPObEf!00;DMgN7QO zHUD!a&l;15lsb**@rJu>8|3Lz@a*uj6vAsdqjSm!>P<#jDK5|nJWJp!8^bHx2)xe- zd=zvv?u`U$2rDbB`_gQex&l!F%6?swrYQnV^tNRF6V>6eyq=OX=si7D%m;Nf#G>^G953g zEuR|7Ts>NS=)F2MSXxVmMgsa>h{0}0eHA!#w&U?a8jl0|4Wv=4=A!Ho>@}~;Sp_Z* zb`rt!AfWDn32FqZCx+-A7#l9wlYU0kf@z|I;2H>~14m51oQ|6W^uvC7K7ta^e>e1X zpdY;1W_VFDEH;S^Nc_;I1x4ey_u*N^F3Noy5us;gNv8NUBniDJW2V@1fl<%Om?`!R zz-rL5GGq(UGsT_(EM+=V?5V&~bzn++ z8ZcaV5%e0TwaYT4Ji*&Gt+H%B_1)-JA4Q#08)Y@PTgBxgz+_04LvDZlS8KPq)VuKP z;+_w;m!9VfM|z~gOS}iq4qa-Q-U9>m= zUWTU_Q#ue)WF{1$slnx5uj$2ni1~b<7n@!4-@O^rk9H@3l=`I;@Rz!XSK2$<=ZA;+Uw=Ps=D$QnVe z9s(K(Z)iI-FQ5+xK#8`m>i;kA$QhNH!H((;@A?@-BRL)6z(M`|d7`I~1+Y}|(u{Cg zh49PF9WxCh6#o~CGOO9 zRBw6@%?yV}8cO1?ZNr&Z?!7m&SK9I3wwVQypJ-6VJLQ}`pzT}sE4)~B#9i4@?LtBg z+A$or*;(6>4->;Xk}=*o4d|cz>3ce=m~=8Y`bl%Pfd1B>9_gfLACdDPBhB}7e|m8z zezlst@0d<%2r<|Q0vssQtiaSxsu-P*3?I@dzl-!sq1=EgI(gq!_e%e8sQ1&?IUPZs zbnv>}J43y$-}H7_B--KAt>TgnUWz%(s$<$C_UdeLlMdc1nrzce+x*8t=@sgDn{L|a zQh)mXay3@caT3V%K6m>G>MB&3Wng-uJN@b186Le(VxDu z!qf-eVTqaU>RLa+gwd@PVtTI2{OPks+X_j>YNca8&!7ItXq9ahKo?B)H4W*P!1!5s zbBl)UYV3m?@ZS73pX#8QLgR_89Gab5JE^E}XpSL_CJx6SoobwCIk$HL7Sv6)e>EX< zIcQS-s|l?~0zM?mY^QClJjV&>{~|99C7f@1 z7xg~&&5IwV|Y28>-pgy9bUYZxr)qFyr$Z2l*ZpBTpGm8sEC zg1d&?VG3P#azKw^+(ksw7A(C}@-@@a>9m#>*945@L;?K(n2bXSjiyNluL(b9Gr*ig zQwy51R+?sKQy2B1rCHscY3>3|YTmO(u-k#z<*V2x!RD8EZ(SU7o3Hzvrl+)i9njZ< zPQn`62oGoq4=G&Y!f}Kb(!awP(cY#Z4Wa=qtoH&lJy0^n7>*19Ys4l$Tm9=U3OvZ_ z&9NV)MyE0F5>w5ND0MnOQhw4SJ{REmbB;dQD0hp>#MkHg2hFglL>~wusr~?Yy+l z3EVxB##=#xWUjFr!OF2(L+X=uyvh>KYXmJ-%%=~dlfb$qX|dTm_piIGRHYPn zUs03vz?fRmvb5zu1C5!}Y%>PL`rIKa$*DGhToBYY#)As$T6 z*_w8Mu5k(KWx!Jf$?ButM;`9``*h_F=v_RMVTcF$%8Uz%K0-i9-)DOw9L=WZ@DT6c ze;VR)m=x04Wb-Zux1>y9ZCg?cL|`Zpj~difU2f|pF7CJ+>9i|Dc1!En>W!12ddkz# zh|Y#NsJ`78;?f_GsSaCb>;T*k2K6HBMQ|lyh~T5{puzn+MAIB&_s!8Kn2KYJ-8V;% z2PU(skZyvF$sWvi4^3@z^jz?vHO@Ks3njhpF7H}V9Aooc3y4{vnO34)(nrTs(Ed)w zTB9?5p(LcA_l8|DG-Gua#Y+Mb_8Lia20|oL#}v{JfPEdEPc&{$rCI{4t%*Hg)mT1b z@e`$HkMgND3ctx?=&%@-=zf&alrW@*a$-OqAsP6!Y%kHjAid}aZ{(G?WSNc=?`d5b ztiHOdx-#7;$>DBDpNM>Qn10-Ery%RPstYZR@s)9HX@cFYAHlox7{v=(^Yfr9Hg6t{Ui?Y&pmlZR4js zfVDMZXQG3#nFV_M{>*KIogeAq}#cI#lf~ zDaJmSO?(}eCoqLg?@4;&rjVZMyA0Ml=?o8e7hm1S!i4zQ@TH;=YBJcI}qGzl{C>qy77Q>(-y zIa7{q_@7J>J;0Y~HPW$>M1m4_TzUqWa}buJp8!_9!_XP0SOKh|KRbXaU|2sg*qLf) z4XIK;NSS5UkdR4hSTCi_vNC3{9DNV4XfHN;!aFdo)MQ zvvyySqc))LpbDjmS;KU2MrO530*7c}+;YCS8qrJ1e9w^RBqIAiXr~-F0nV z&bly#-CW%ZEV~6^?}cl7mv)bc^yv{b-m=>eQ4h3XH(r!Z#CS>@(qp|I*G1h~x#~>f z3pFR8X;9QN156sN4A~hI&t5U+xYPRtu2LtaB!8(0U87I+=#2TI0>Y%rrbDat<)4 zDBXkUMrHv^b%~7S=&OL)>US`7--+T-_mGJ3QbO6)xiP-kX)_fRXN_Pab_A9(3}ZM- z39M~RIKbN0#6B1yRTCKDb5NRL6AgVyTlW<62K8C2O-P@4xcAd7IqsrCCY<0AC#WAnaun~Z zz@?HgGb!xoR|-QF6$lm=8Z${u1I=noE*sHZab7b~+=pSi58fzhls$oD%+T)yUf?)A z`Q>1L23)RoV{kYxHU{;LBnfYIF@eeX6>{QEsKwQo{QEP0=ACupkvVL|_dsH-h-q~@ zHN$)8#$p$5`eVH&x$zUTUW4@)Uaxs9P1b9$>W_gVInAYkolc{L^s$g%13!}I96b)t zR1$d(>oKGs`d^9PBYHUmlRMBB;6IHL6!{GY-NYF#3=L{Lr%M_QkIrkrwc3Zt8Fu zJ7RaF`J40K!MNI1j%m&v3=O-$F}NK0j?@pv2n)#2VPuff6kPO|NEp!2nyM(H-GlJx0CK z$}&#<(cLC3U`agGG!Y0AhX7qZ~P@2+J&9_7|+p*`7hxC_Dt9h z9fVBi<49v(xMpe*es?je0SO0+Z1End8JUxyexKrGQ$KN#-igv%kj*L9p$ydKx9D$9f2KBYZuUIk6eg z*@g(EOgN1L)R`xxDu}I#tB2+fbqgp24C>oR8%%1rb26P+4KPPKv4kCAzQ>rGD*nO> z^=HsD$Q&jv!46*d1QxXz$G<^+1@V`84PN09nU?@_8-Hb?aoN)e>hl3sS&ZY$pgsp! z-7ki&Rx+Oj%&{2n*97$xVAb0V9nVIC`V^v*03$AULb0331z1jR$C=iMZ`v zswnf%+>0dac(?)3LnkU#-z>HeO+{+@L|-w{DJ&t45z7q6fr?B-dyN^TK|Kl;7tD0H=;;qoJ+Pe; z4j9Bwq=pvM`6RIw2H@cUF7G_^ZI@@kiU-cS((;$e248f}V zs+SlG>K7~)@2gfbMtyWx|Jm>*H@ODC3p1VVTLaE{Q|KHA-Gq%OFfnarI&b`nwo+;T zvJ6-ERgW;kkp73o*7a2nGM1wsuvl|nwUjXte3p0Vf_(RAh$PRXUiK7JhAcYsHe4b$ zFI}AgjM8b%nP?~ml_MA-{XI@TOIiV~k)roVS4l{~dzKh-3^pl4y-gSbB;vtzh&3n% zg~PgH&&(oqrBxGl{1d5(DchwM8(ySFvD+J_S7)eakyh2plwaU2GzDNYRTU}XG1cT9yD&r5A+Z6yh|!iAXZsmnB8 zNm*z7mHI4F*^G(Dti9g|M~~#yEGlsSHsj!)n(dB;*YU)IyZvLqgc@#1s{0D)Z-523 z_X_9)7^iwKC5&c?$yy?^l_zWQvWxjFcYH2(b+B@i zxNamFltQ4eo{7BV8q`<(3AHCXJh&U@Ft{1}ukmR#it{DiW&a?5nF%1%yb;01jrK$D zm8TaYGuIFrOD%rWd9AzoZ$JmQq2!58@C}_t;EhHQ@jL-Me}<3p8U`8&^Fbf-7tWuj zYYqz=<`ep`0c z;N|?eBi#A}0_ugC3BurWsMK&{TD-UbS0b_HvJOL4NA#J#wA*Z2v7}A%r9EoXCQ2G6 zB!3OMSIfgVA7PUvd_>a9eQDWP=Vajxk~Z9zHqfRuN!nmv+KD!;dw*8?Fq4);CA!=u zPLRaH!@Q+`du=cmp0};Tn&Q#1w7~*nH1%sW#!tMY63{1mcf|AEa;^@nsDffQwjiCB zmih`fCFdlEgs=~g)`+DF#*FPN{Ph8erFdrP)oJPt(Brs%JwHz;1#vJPJoy=of}Sq} z4MyL?^dNxzSD5DC0t<=%@{ZNtZ*f=O!{9Gul+xa2A46IV#daIOf z2(!StwRL?oJ5uo`;MHi(es#V@5R}Rf%YBJw>aUmv`?Xhlr{5iQ@wqBua1j{Ld41Lu zF)VrSdwvEO^$B~+FrhqGK*39~{GSr?h$z{D@=(BY0Dqa^n*QoH{65D%ZxFhjc+RHG z)T=+|9k@FZ#5K(GP&8JNug}ZT<=y}VHzy#CjQ2PG zOSTE>wIq;d>@<1=^a7+YFU;6)GjvFg(_HuC<4}nRJ!wf^mIzZM_htdHnht+L#ScZImq{CR|8Pb)8H|a3D zjSi(qvpS40bgTnp-Ek-#ZXKyg+vqS0`Tj_UT;_>W4Td-AFsY3W-H~Q>=wj$t2go}2 zP sCye7CL-S->98G3dgKp3^I!3Y;x;-oAWu`E`J-9*5Ea%ZLqabl8u4e`JS;m}f{oXn0dyY=X`x zr&;O_=p{(AcDTpTu^k}m`(xYKp?Pu4#R}q*HacuTzCY4o4)YA@KO5epL!yliS0l~p zaD|~`9U$w~L+P+#l)Ac&4l9xGk93&KJVW{v!<%%V{=jdC2}rX#j5l?^O zYC;H|aqAfnSFx(yR`>3?1tLS=aop4h2`7OA{CjQ|}(;b4=`k zO-JTbm(QbbKvSe?=Hzh)4J`oWDdJ~=aAq=&gB3+v0O?$VdS@SLOuu^T?+^DFP-Mn= zvjU47g6}^%rN@#sdK`8LJ^tp`1CIXLu?Ops`v-cwV)S^4_4u{#!FqIn9$~NhvO%C* zbsB|=84CeyU{p#H8LANK`xPidIzQKqrt9dJMT5R=noE&^y0MF?#Ay$BV;=~oES+yO zx6D_7wr!2~G&I(Qs*gR`(#w$NP&Gcz$gN^a-_XX=cY50%ICDHJO)(F;v{Yoz>vm!N zDX>(~#Oropy%89BALrwByRcsG-SPK=30PgASf)J-jp$7LWg-MXY509%%sg`d6wv$e zOajS0U%uDgoyTYSsi0nbulK~m zd1<$L^B*kghKP#t{};3a@y|;{#3U|0W*2|YabMxZG=p`r&SMrd~A#sx7K^>>xSfC z-p9d9Mm4A6z)EuWZ(|gF32iEVM+z&w{D*S8gpEOHx{O;)9txx-ywe{#u~!ywS`Nd} z;VD#lns!V3#=TwMOAlS`ng!h=h+YtNYR^KXRW`Gj%|M%;y@5k$^X}fom^S0CPCRpQ zF);|^H_gdIf+cBU&=bFJ03R|Vg?6=BwAevmg$EL^os-5^v*sm5V7@(RN%hNwu3=3de4c+$^8#KUG z-{Ro}3mh{*O3s8K{e{Kn4N#jI3+qoThK>G@7|Yck^52O50Dni}AI8I zp%owWEX@w)Z}d%$2fWFT+A`#8zq0)ifd+Qar&HJv7-g1XbWDxfDDb^_=E7ls=?B>kj%zcm8R7ow zr>`BT3dkV%usze%4}?7eIt+|HcF$N7W3KKA5bHbw1`lV#F2Lwx_e?lZuqeGIjuK=!UmYgrR^x1B~Jo7RFu_><3^q zc=d%bXE0~}23R9rpJ8l*V7RN9KX%X9t%7|Dj6QbH*c!n$0;7-JGv@9Pa6Q0kys*Py z<`FDp9WdNCC0MCoZvcy0Y?ffJ0jt5wKb-eP!CnH^h|dQIzah+THLxm+6$|D*1CVZ2 zV8ZDFJ^_qwRbcE^!BzmHcYhgMF4!Z$=-pq&ngn|g7`^+;Smsa`ycAds-u-1PD%d^1 z8nK%oV1<$neb}C?gCba?Lfv>3U)g%$6}p_v5@(|5P%5XC4$WZW?E%)Y_(v2 zCVp5FjPg9(o3^rBR;GO1{Yr0!j=J#u4-gLceg8c?Lwu4>$ex4jD9b^<|AwD_;*sif z(4>knU6@ZIu~y|Jf}IE~Rg86l4LlZLsvP?T91AQ}j!E*`P(`74^2+?IW%5*FbzkDw z1??7xr&7B2CDvF+5>q;CwuOHBrV^D0npFLnZ@7nmrRr~i?2mQ_hWZn8uNCaVP5@H{ z&!hzz#9P2p1wTfxG+?QM-zwPt-oA3L5o|ZGRJqO9&VTVvT3L`aQNBF>y?4#Z;vgm& ze;=2sGVU)w@nTOL6yweXD;faicw1J6)1LIUKVA^T4BTy#?}fJcrki}zIA5IeVKPDA z#4#?y@|LyDH`?SY=X}?2KFoB-w#j!>+kCxEz5>p7D(A!Ov`?FS=d{h&(o4#Bz+3-B zIIV>9VWN@ICSPUSe2pgG=bSId`7jIodhEgFi?+@8s>z4@)*x@Ex8=zoHJ$4bN~P=q z_qztqa5p}S=%8qD8FIhW`L#>^^b<1pl8oI-pMMDGUw|2JNyZul+Xl?ElB9gx zBA`P}0FApOV^ieq=&!t!o-W8*CJ&!@*F4QFywWcgYL@%dd`na~NX-&I{nurRN}m$% z(1#%c`bEF=p@Ka}yi%Qwd|utFemXmAqNG1z6$! zbq{Dv6U9pj!aNSlG|^;izhHL(Gc7b3tB^O-C*KY*W%Rg!^MR#|zDBTlz*41d7VOW! zQZ|p!Iii5RmTf*o9xkOKR>L*k#bBLM8AW^x&(<~00+%XTB2T%-YkvAA6>1VmH@2iV zVc3nUAeFa=02Qj(eAo|hj7tpj;hG@7ASgJB`MKEdI zM7$2+g4tD){zZXz@^`(x)%9K6)nk-bm8zr!#hvdVH)7$0|7;sqnmOBc9nvX=z6O6O z{;V$HE1x71pN~! zsdAdxV;!(mIn8mP`%#Xk^RvuBpu0WwY?1pTzQqVq(+HYzXogL43oz3NnqyN1yBS!j z4H%YlfTh}iVLS_%QKy+M3Za5s1txyS`r7UKGDk55$66uBi`@f`i)3`NJ7&c+L_^yz}j+S#vs z=WF_Ab3GW*@cIhQ5!7Vvc`nb%zl)gCR`Zvbhp$9B9aN#Y)U#ff)%lbE0fc5$biQFE zet(JI^Z9bLe0{&6hBGufSm>Zh`~CSOA)@c&zxjGG|Hb8f_`5d`o7vuhw<=xaNYc^B zd)gF!J*XNbd`%U89k423q-O_6EX;DYzm0N{AJc*d7AW~Nv$Y4$W6#SZyCfnwCPMZ& z3L4LZJv!ozQShNRKl9ii)4`Aoaxn}N&Dir?u9IgBLg~4B3ex3ZL5@BLG`wnpw?5@G zPoDk?%8^OVWs~G-s(6_ghxG|aBU4Pk-<2r(7uc0^u+nm1uJ`QoLvlA|s=JVq^2j}z zT-Uefvzv6M)9C??z~kRRcep&<0CMAf&9Tb`y9QXw`xXdxxu5M?!7e5`^ewY`Ahn7ZU$OLVyPDgv<1mU6#j4ghm3 zhMOlz!LEdfGR?7S!LotXV4swgSs+*@utwPvMPMq^-xl~t6o*$?88dbM4OpFvjZy~d zg>WZ8$6{vg+zhN5o2N`?=FVGzHT-B9$~5^~U{Q;isq+?KHCvgkIhGIwH&b3C!;P8w z^hcE03O4iU_bIaoZjSAc% z7<2XWloaPsl ze!=bs*6^ikz~P-(@Vx+|UmEOc!4$BXEe3l;u!X=H8x6Keu>S*AWwA(S=Jyw1bzc~| zse;`^bl)1xT_E6W0n?;5@4PedZ28?!L!KVXj6d^daBG@FN`^3=I3U(r}hD`=rC)lyT zoXrN?A=p@8)mHHEt}LU1@_y3dO1)1Pa1_9(6|z9EBZ1X?Y#6>M*kE9dR&bMG#lY&U z5WF2t7VHbG0pHbQ-zpWXH!$ZTgH^i%<^rtVXuxHH1u64~2HPQ6H()hZ@TBf6q$99K z%dk$cc7%!GWNe*a4zTL?m|rs1y$9#r=jKAly9OL8;4WYezVgTIeTrb)fz`ZYuvvor zNO|!=Kc-tE*muCH@UcC{)(G|`usVEKk1?kw3;qmPBjmaO6EU;gwTUuYWvYbm1Ila# z&lBujV2;J=1$z@%wH4eX*cxC_DKSoPAHjlO0ao<}D+9ShTn7IQu)%_6U2GL)7AzU- z9ALTxuc*S55!EOfTkTN*Snv7KmIEOO7 zYzQwAY!?&Z@mhMHtE(2EgqM>UR>_T9UV2PMn->as)FBrO_kixa92nZ;% zWjHm&TAx9gEfyDSGO(KGP3AR%O$64s+F(Blb{w!Oi*?Uoe&c}EJ!j~K3N|_y_oz4) zoFZT;2&@%aGviz^b1zbY?!&iSk;(W7BQ5(h+BV5XlfK^$nRe(K`5y)=%4Z?9z^Y~IBN>}5*x!Iv$+iiGSi$ZjA(k#$z(uqumPF4#!oC-X$CqX{;Q_*rZRW3C=V z4DE!{?Dq5r)*$;F5K_oO`Vd3e4@t&q1nUKin*-)-i>-y$N?H!l+xqGrWgb0%r4|RO z3B$ypGcl3<4qUM!gdKoYN#;b%>@1}d9jYS=FP~?Htr7ZtI5(cEz72xy0!H*zpugJE z?~t^gk;d;Yc;~Ji>IP$~t~|BI5U1s$%^<)uIlepfD&*p&m@da7&y0rFbe|PIO$!=( zGGg39JFCsnbAVI&pYhk8mN+Vv9@5tUmnA0Jk`3yyS8#@~{uBQ-YfQ!})K&5t6Vl)? zaa!=eU0FPZ<~0H+k0quzD~998xot}E00ETLP>K82$dhd-csoPgyC6Z+v>R z!ij_Uw4ckpt#9_q9taI+;y=Rc@mBa$s(xDKpmmQyI0$8@`Es%(%=dPEi9$y}C$FP~ z^-74Msec+z{qZSMACLUwyc^%jyO1iHwx4Nx`u;ZLjv?n_R>!b-QlK5sa3g*(rViwg zg1LGh{xa4WQ+pW0hmrYjp5B4KQ@y=!O{5dD*ej3MqO@dB`rZZ@Cmifi)ALaKjIC#S z9%P@fCqvKlxecbrUJE@J*=Ovb&~wy2V{e3>3+yxYJm`5q!~)pNARuU;u}MMC-SJFy za=o|h?TGv6VRXj|UUWT7R%x~#MypqevOs^Tqr|im`}3;JD!yhbw6!tYu40Asl)Iz` zU=n^;mF6q57*jyI{P7rGF`(%R)e=9`iF%lc+6t{<{j|MhaTj_+f*If)gDsv~7s%$Z7Cduyx_w24Cv4snm%6w>S8maBjUX z^|w?iE_L)~ymRWQT$=XKoEjaJ!`4V2Rf{aR`9ng_1_zBZq7NWEpa#YTFz2%O081?* z25EUBqJQ<$-i>5^Ee~70*t-$8;3!VH9$cg7li2kxk+<;*fU(rNzA6{LZwgU`1@&OO ztjeCjFUa78h0x)3-7%^ge$$#?7s2qFT7T6Mzpq5zx9_yw2X0%(Z)#EA>UXz(v_ zxfgpc(s^Tl5Xm7D&l~?CeddL`)FHguCfhZ~RRAR^Pn zXyFa7AZ!L*jd`n$^Wr$(c+lPi+6Ig^mX`9xQ3mrgGr-FM>%ailS+SbT z0O#38fcOexzy=ovLvy{Z>yHXCNmH7lIGKOrwE(#C`ohy~N>8L1ujCg5a3`Q0Akj|A zG4VM>VAb%&7?pxw4!{j6z(^qT;THjLrr%q?z95U=6u{wqZ|C|!W6TAd{XtFT>c@Zi zn#SX$nAgeY5ui3AP+xL`bdiT9Qie|rj zg7hWy*rwsd=~}Q8krM$&J*Q)BD1r@@|60?(`j&LmWVzESp^;&RCgu8cyuIR=Ig zlT@mapsAAvZ?p&v)Wb*+-|8CFAJWwna-=05Gi$Yr!G!F5w>Rg5Ligr7oZ8nxMHlMR z8$#2u{*5*A_^N-jS0iENjlIoCi0cJ72*7m%?A_t^;@v~qtFu8r7uOE3cYjJnljDh5 z(1cO2SuKw8f`FKjNfEGY6820usYsVdkm|?wlmo7 zP2LckP~Bc_MWSP*uyJvD?6<%g_jAABH{u z-rW%HWv-MdH3~4jxwxhz;-!ChifiuOq>%4)vhV>TX|^mzhk^eh3)#4UfFuR=BczdR zhQ?#&#>y^6dKT&+h~6W-zwXWvusMCPrzJhObytT6^BRAnOCu%j`DFq5E^c0F@z#GB zarp+wpuU63Z#naeMA%(NXfTla;yp$)^HThez|X}6Dzu8tj)nuaT~Xuwo8S1s7jVF@ z&N?0+QVr_g^NXM;>-*2pRAH^e$g51Y`-d7?U^uasu zb#aQ1j|O{cH1@d?QxYcxjHxKJ^j&P>D_|fCm;27oBOJq0B+dn=xo2mai&y3qVr>s z>H*A6ceXd7Zkr07=b?2yW^DDGzNeqcM*6RiNMD_3K|1~Jgx|&Ri>#N*6y>$rr}db> zl+tIRLt^9O0tV)T8yYVBVWb(xuxkhb{NW>tt-cmKflB9CtI^WY-6KffY}2dzt8aTU zkA#!xufDRsonnP!d>HO=>6Eu+Q(!cA3ov*oq(nN6P)FhKw3c$UGwg6NSf#7w#Oup&7#yNX0G>#+O_%cd~;DBaO`ejW_4xlI*eY zG3q&%c&k1xKWQkQh{x;5Cm|l^!^LsM>S18m%&9-G8yyg*x_yU)zf>Jn48Bf6~kS&;R-2MfkwGIkuyU=ot`H!!NDV3%Pmv4Wt== z!S#H7)ajJY1F4BW5v9EhnwbdjXhs23#pxU_b%48|4A&}Rr(f}#jI+HbmN#HOe0{E1 z{RHq-)|k4}Ts;QNtND|#B7C_~%tWN|7=%3x?3n)%7Sx~mgl#gyHsY_9^#Oj5!oL?< zI=7muq^I}SPjklcR08$S!^K4isG;99gl%Q8Y8h^!*^`l_8{wu@t5?H#WDxSSdC-NT z;m!f?+fNU3uf`+442`mLxe=THiAgZ6foK|bDbh*%iGplHgBL;10}ZQ*0d%IJ|Jg^s za~sE`#;$p~7HP~MC(RXp@9cpy(fAtEU7LGn!Uwi`k8jQ|#P)D}Bg(|SeUxzol!+%C zXZG>F+Z=QI7)PKo909>nuCRUyOdT|7vOCpFe^x3_KL?y9+K~?Qbva7Q(NRtd>jctp z#|ehY0-cGQV5|AJDI{K;UT*R>;WEjr(1S~x0#4Vx^et2Cx=(rceAd5P8@0W+KkF6x z;dXg(fW+;>2uyx-yLaHT0=K?c{SAeO(M_dl@LV7z&L4)Ma{I@m0+luEHJTis=uL-|t zNEnIlT2g8(j_$J!qco9Ouj+g|hJDy@hGPtyOqk z!G=!}Fq2UxM;F13s3FutP>mU7sDJ9sIIY2ibiNV(Bbr(6?cSAJa)Zsg?Kp?Qf%`f1 z1@~|1l((Kf?3BReylyz{tQC~(+K1eyP&X4*lnxsÜl24O8bcOamCn>@%#_v4Rmj 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

QRJ8v}RX425GP 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 jsidz2ZFRi(Gw+_qo`FVF#f_%) -> String { // El's `obj.foo` becomes JS `obj["foo"]` — works on plain objects // (maps) and on JS objects with prototype. el_get_field is a // runtime helper for callers that want EL_NULL on missing keys. + // + // If the object is a Try (nil-propagation postfix `obj?`), use JS + // optional chaining: `obj?.["foo"]` — returns undefined (null) if obj + // is null/undefined, otherwise accesses the field. let obj = expr["object"] let field: String = expr["field"] + let obj_kind: String = obj["expr"] + if str_eq(obj_kind, "Try") { + let inner = obj["inner"] + let inner_c: String = js_cg_expr(inner) + return "(" + inner_c + ")?.[" + js_str_lit(field) + "] ?? null" + } let obj_c: String = js_cg_expr(obj) return "el_get_field(" + obj_c + ", " + js_str_lit(field) + ")" } if kind == "Index" { // Map vs list dispatch on the index expression kind, same as C. + // If the object is a Try (nil-propagation), use JS optional indexing. let obj = expr["object"] let idx = expr["index"] let obj_c: String = js_cg_expr(obj) let idx_c: String = js_cg_expr(idx) let idx_kind: String = idx["expr"] + let obj_kind: String = obj["expr"] + if str_eq(obj_kind, "Try") { + let inner = obj["inner"] + let inner_c: String = js_cg_expr(inner) + return "(" + inner_c + ")?.[" + idx_c + "] ?? null" + } if str_eq(idx_kind, "Str") { return "el_get_field(" + obj_c + ", " + idx_c + ")" } @@ -491,6 +508,12 @@ fn js_cg_expr(expr: Map) -> String { } if kind == "Try" { + // Postfix `?` — nil-propagation guard. + // When used as `expr?.field` the Field handler above intercepts and + // emits `(expr)?.["field"]`. Here, a bare `expr?` (not followed by + // field/index access) passes through to the inner expression unchanged + // (it acts as an identity but marks the value as "nil-propagating" for + // its caller). This matches the C backend's current behavior. let inner = expr["inner"] return js_cg_expr(inner) } diff --git a/examples/browser-auth.el b/examples/browser-auth.el new file mode 100644 index 0000000..214b73d --- /dev/null +++ b/examples/browser-auth.el @@ -0,0 +1,165 @@ +// browser-auth.el -- El-compiled auth flow using Supabase via native_js_call +// +// Compile: elc --target=js --bundle examples/browser-auth.el > auth.js +// (requires el_runtime.js in the same directory as browser-auth.el) +// +// Demonstrates: +// - @async functions with DOM interaction +// - native_js_call to invoke third-party library methods (Supabase) +// - DOM bridge: dom_get_element, dom_get_value, dom_set_text, dom_add_class +// dom_remove_class, dom_show, dom_hide, dom_is_null +// - window_set to expose El functions to the browser global scope +// - local_storage_set/get for session hints +// - set_timeout for transient UI state +// - state_set/get for component state +// +// Expected HTML elements: +// #acct-email-input -- email text input +// #send-link-btn -- submit button +// #auth-message -- status message container +// #auth-form -- the form to hide after success +// +// Supabase client is expected on window.supabase (loaded from Supabase CDN +// via a separate script tag before auth.js). + +// ── UI helpers ───────────────────────────────────────────────────────────── + +fn show_message(text: String, is_error: Bool) -> Void { + let msg_el = dom_get_element("auth-message") + if !dom_is_null(msg_el) { + dom_set_text(msg_el, text) + dom_remove_class(msg_el, "hidden") + if is_error { + dom_add_class(msg_el, "error") + dom_remove_class(msg_el, "success") + } else { + dom_add_class(msg_el, "success") + dom_remove_class(msg_el, "error") + } + } +} + +fn set_button_loading(loading: Bool) -> Void { + let btn = dom_get_element("send-link-btn") + if !dom_is_null(btn) { + if loading { + dom_set_text(btn, "Sending...") + dom_set_attr(btn, "disabled", "true") + } else { + dom_set_text(btn, "Send Magic Link") + dom_remove_attr(btn, "disabled") + } + } +} + +fn clear_message() -> Void { + let msg_el = dom_get_element("auth-message") + if !dom_is_null(msg_el) { + dom_add_class(msg_el, "hidden") + dom_set_text(msg_el, "") + } +} + +// ── Email validation ─────────────────────────────────────────────────────── + +fn is_valid_email(email: String) -> Bool { + let trimmed: String = str_trim(email) + if str_len(trimmed) < 5 { return false } + let at_pos: Int = str_index_of(trimmed, "@") + if at_pos < 1 { return false } + let dot_pos: Int = str_index_of(trimmed, ".") + if dot_pos < at_pos + 2 { return false } + return true +} + +// ── Auth flow ────────────────────────────────────────────────────────────── + +@async +fn send_magic_link() -> Void { + let email_el = dom_get_element("acct-email-input") + if dom_is_null(email_el) { + show_message("Could not find email input", true) + return null + } + + let email: String = str_trim(dom_get_value(email_el)) + + if !is_valid_email(email) { + show_message("Please enter a valid email address", true) + return null + } + + clear_message() + set_button_loading(true) + state_set("auth_email", email) + + // Call Supabase via native_js_call. + // window.supabase.auth.signInWithOtp({ email: "..." }) returns a Promise. + let supabase = window_get("supabase") + if dom_is_null(supabase) { + show_message("Auth service not available", true) + set_button_loading(false) + return null + } + + let auth = native_js_call(supabase, "auth", []) + let payload = { "email": email } + let result = native_js_call(auth, "signInWithOtp", [payload]) + + // Await the promise via native_js_call on the result object + let error = native_js_call(result, "then", [check_auth_result]) + set_button_loading(false) +} + +fn check_auth_result(resp: Any) -> Void { + let err = resp["error"] + if !dom_is_null(err) { + let msg: String = err["message"] + show_message("Error: " + msg, true) + return null + } + let email: String = state_get("auth_email") + local_storage_set("auth_pending_email", email) + show_message("Magic link sent! Check your inbox for " + email, false) + let form = dom_get_element("auth-form") + if !dom_is_null(form) { + dom_hide(form) + } +} + +// ── Keyboard support ─────────────────────────────────────────────────────── + +fn handle_email_keydown(event: Any) -> Void { + let key: String = dom_get_prop(event, "key") + if str_eq(key, "Enter") { + send_magic_link() + } +} + +// ── Initialization ───────────────────────────────────────────────────────── + +fn init_auth() -> Void { + let email_el = dom_get_element("acct-email-input") + if !dom_is_null(email_el) { + // Pre-fill from local storage if a pending send was interrupted + let pending: String = local_storage_get("auth_pending_email") + if !str_eq(pending, "") { + dom_set_value(email_el, pending) + } + dom_listen(email_el, "keydown", handle_email_keydown) + } + let btn = dom_get_element("send-link-btn") + if !dom_is_null(btn) { + dom_listen(btn, "click", send_magic_link) + } + state_set("auth_initialized", "true") +} + +fn main() -> Void { + // Expose send_magic_link globally so inline event handlers can call it + window_set("sendMagicLink", send_magic_link) + window_set("initAuth", init_auth) + + // Run init when DOM is ready + window_on_load(init_auth) +} diff --git a/spec/codegen-js.md b/spec/codegen-js.md index 7770811..b60e750 100644 --- a/spec/codegen-js.md +++ b/spec/codegen-js.md @@ -1,6 +1,6 @@ # El JavaScript Backend (codegen-js) -**Status:** Phase 3 complete. Hello-world compiles and runs. ~50% language coverage. Core runtime (~50 builtins) implemented including full DOM bridge, window export helpers, native_js escape hatches, and @async/await support. CGI / DHARMA / LLM / Engram intentionally stubbed. +**Status:** Phase 4 complete. ~80% language coverage. Core runtime (~70 builtins) implemented including full DOM bridge (extended), localStorage, timers, window navigation, window export helpers, native_js escape hatches, and @async/await support. Enum::Variant match patterns fully implemented in parser and both codegens. TypeDef parser bug fixed (= before { consumed correctly). `?` nil-propagation compiles to JS optional chaining for field/index access. `--bundle` flag produces self-contained IIFE output for direct `