From 01c3fb22828606a82b9f8d038a4b4227f00ef970 Mon Sep 17 00:00:00 2001 From: polsevev Date: Thu, 13 Jun 2024 20:23:15 +0200 Subject: [PATCH] small bugfixes and cleanup --- bun.lockb | Bin 91684 -> 100349 bytes dsl_files/test.jstql | 19 ++ index.ts | 12 +- out.js | 97 +--------- package-lock.json | 306 +++++++++++++++++++++++++++++++- package.json | 5 +- src/parser/wildcardTokenizer.ts | 2 +- src/transform/transformMatch.ts | 8 +- test_files/test3.js | 6 + tsconfig.json | 2 +- 10 files changed, 343 insertions(+), 114 deletions(-) create mode 100644 dsl_files/test.jstql create mode 100644 test_files/test3.js diff --git a/bun.lockb b/bun.lockb index b1da9fcbac826873b841ea42527a3c10e2496af7..cccf291219e4a3097f5f45d65884be2b3c400ade 100755 GIT binary patch delta 22066 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 delta 16660 zcmeI333N^8+W61joN#brjwC`Pri3Jt$RJY3Q1ekmt06@N5viCG6h)4zqSYGS>L!L7 zTk}wJRZDw2=%s^}qD3ifX(=7U2dz5fo|DjM^6`?4-&f{s&b)rE#po{Yd%ES#-+xby9xZkR^&K<0;Jro9=4vjv zzH`m(RlCZzZ%xI%Rd%@os+AU6te0}RDxi!XZlz@FE>|`5Zpd=TLHUCROG+E`VDy~A zJTqf6J3VLMh(akEgIvGjbABn7vydN2XY>ljnY=o5jUZhlbql{(nS!5{sfSduj1sHT1LeS5bw;asF%PQ#Y zkkQCS$eOqwI7mim=tHj>pf@OX^8aH#S70OAykz@`UTA>aiIn!8{8oLgz#`&tEHI14 zDk7b7`NT`F4;+$HFqFDp#TlXkLvo7Z2N&eztwX2div!OSz~;a)G-q(ZC0=@R z6S@aEfznaPB~&Ky4;SSY4J7RJu+y;%=mqJp!`#GA$B+Vg>-Ku*QMSBGJy9yWcs3&> zedYKt1zl_%fQ&?L!a?zI9yfDrh!<08(jj8n_?&`*{G!pWis*E6pdte*V}XG=1v!Iq zb#!s<3h6T0&e{2{Q5i|afincefH*1^n~SkcD&AYil6}#|r&dLe3~Vy6Ab&WsP11j5 zWW$l?Y~Cm|di5Bq$6mJM51~uBDzR3+0fjjObBkQAndlP#K2mx( zsuAgU8yJ>bn3tREavh+c%!d4;_`HG<16&mvTLrcfFQYyhh9akM;1H^D<&7AP|6F~VSQWHEie=qwJryZq z7f7_yA3=)eRf(5|?@zMw>*zAyBXC0U56vAvR_a}ZE)JDN%Glo|zx2S!F~dem`iS8J zRm~u8@v^2?xvO@4PQBkJSdO1TN_(RzBlW$FE<+idX6ZkqT66Rz;>FP`#7l>*u*+Y< zacTE-y48-o{sJGNQ(tl56#_CR&XQ3aoSI=(oS&PUo1U8D`WRg*EE-)ndc@GCu9eNL zinTK1;GZ@8=LY}WGkZH) z^)q6wdKj{_leK-&tJPgBm_VSjwb_sPzI{bkxx}Bg4e`9=E?c?eQjO3vALngLtoXI2 zuhP`X5T8CvSK&2$`a8PHMg*5qB{h7WdwIID00X7e^0a1UQM#E*RF!o7uccIWsLxZT zw9A!9WNEd$a=IrSjm`;Zl3y#W!oz&}+R`c;aiz2>3G;cP+%6a6DLF#Y^@rT*WM!Ye z#I3T!efnpXs2QYAqCFL)!fX2U@?}(ZO`oS9k4K!rk{rryE2B=<^to4-b-DVfQ#CW) z8spH#4BbO0+YG%(sG}MBj!-u<)RHCB#|$kZ)Y%MOAk;%b`oQukytYq&uDr@dTrICk zYWv*dnL1rmt&B|l%?c_!(x=CHRW{;ruPQ-&;Z-LQvB4_5j!(Z4tg;bF6;(+cpJ!l2 ztNV0ywo1BtHd=F4t4^l-Afdq$(wkILB~d>2Viw|EX3}v&!_B1jl~s1M&$EKTWMu}* zsHocM?$6MAslL&fo|GztoOpdv6_s7r=lP6CmZz0j53QrYm zin_0%Gf-? z>^PriD$jJQ%Vh5Dt*uUycC)q$kN4@_B2_lRh*TxU0SZ?Ynr)s); z3R-j3x7J-+9aWOx)34W2ClN!URCp7gek@95H}Scn>zZTRB-1_NkI)f9-Be%VqFLbm z%us;P17_&hAECJVF4z55Dxn@`=m?=MW~eqVd}gX%*g%CR`#fujU^@@EWMb;)8>kW@ z>+tO7p+*xz*Wb&B`{iijjmhgBq!m zsXosFB4zg=2lY~RPr5=sd$uyt7s<8@B_jx`cO>&yMj>pTE)(#De zlGF8maq1*lHWF#g%N)%70gcBJS;U28HhOWdj5?d1?kPa)h*nmN*0lr`p5gP{&0|^i zK?qQBwgvcShL$op@rMuRkwUv#;^X(t;VrpEXDrxTX%%ZqtHW!BH5Slb;&CZ}C zm#ZsUkl7gnl2l2i&+`J2vb@TeLleu;wK20S&rH{cCadhb$U>y_7eh*aok#12R@$8L zDZHRa-_w^kH4;tiw+4S>Q&rN!=RQSbiVUz`IYov0eD3=gy0+?6hH6#G^n6N4 zy2CAIxa+36Tpbkg`opOzyCwS<5#31+G6yM)QQ*BqnyH@d>4uht#>1mpGc8SJxAJ*z z5+~J}Q%rB4u1*pepp0d!bl5lPW|zmaCdD1MxgAYHW9ieodkH;YwZY7(oT0MY`1EHo zR7o43=RA)}8n8P#oF3*Sg=N4Z)w7zb?7MyXmgcJDZlC98()yXT$VAO!waDzi?xyMP zgJ|Z&cYCp_t?FAf)6<8LH8o{lE4fRRg!nv1h?JefGBKRCI!fQThZ1V8PSJZ?30b4g zuz9YbNq**VwRAn!r?T7o^!`3o(%$FUMC~%%^fNiDFgtC7GSWT0&}3CH722nJW}(U4 zF=vbCEi`f2+_gQwqKTPSS_hhzNn_PHA5Cnr*6mS(vK^Q+(A|%BqONB5ZXhHz&=u9v zJ(tj=c56k}p)$*Uv9TALRiDhh1$LVG1b2TRX=Z(u?zXHo2i(&cjU;+NYM6y4ZS>T@eX?ai9MBqVj2bJ`Qbl9yg#vQcvZn$&Eqg*9k0 z`_0{2Ki*E2+~e~^(7#fE1xXh_@DJJ?G;s~1TQw_-VtFlAmhIpalXlvmNjsJelhMQj ztH0ky6Ax%0Hr;&#t-U&xp6O}H{1>~ehNqxecC%Y~{(>g`ZM{Md5P2@+EV|Wve;}w8j=RDth zWE=5c3NX{mOQiGwqi)7CT;?TG;=6$4zZaweb~^LAT}nKAtC`-zN_L5qay@O`k;M`y z4ZZCIk>5uX2&5;(@_;R;Al>kU ztxreFB~luE3Z$ZEK(7BADGtm5U0R(-KpIxId=}|}CE$g1AlJV|ir4>B#bVfc5V-;5 z5-B~i6~vQmAeTtVx80UIY`GID*X>gB?Sf(n>;}0+N`)_j#P0>UL`wWVkoZ?Yt~*It zrf-4ddmH2uSsspn#D4^GA=NKEJ;hS@Q8VTrrQ|(k$BQfjr)*uMq@T9++oi;x0jc*a zh<*;_5-Iu@wmgpwe$3lFQ6$OVKrM zQd?=H=x&i}QdW&9DeJLg%SjTKNLdzDMOU@@N19Wox}ExeBBiZR@=K90yPQY~hTFPG zX+6S@uVu%Jl;N*u>qv9R%m|6AZztSIO2aXvOBU$~k&WbLOKC99)^C>*pJ2y}lzNho z5^ru;|Ivr1<-hfm79;C|SXLk8x?TP|9-hSsG-7s%+1#BUqGDLGoi4H*{EHr*#qu^} z8qm&eK&13Q2RpvA9WPSi|FsWK`u{)r@RafYPd+@&ZF?R@$QUbI{y%(pTJwJ$4a;>W zDTe*~9-g!>4gAL*p6W)=^8fqj{NG3C|A&uGHDJI{wc}yG3LWTG-l2Z2lx$;MdBiJ!mnxUR7(DU-PK^VOi=p+F`WvDr|U`nlad`CJpy%UUd+y zS)NzLkML_1)%X!v>T9%9Xq8p$$Sk#Bh*v#5(yvujC(t_PdsT~3eyzHiIVwvFQD?c= zP#J|;TBw@KJxpEX9IT}7VZo~3n9f?1 zT0167g$~EBv3{+t>OB^}(DtF#SDr`kYXp8h;@29gJ!ml_@oSu4i&gpK@C)rQT4NP9 zK1+*JqqxVbgWMBT)PyXpi5ky6QGLigNyR>zr6sE=+?%Qs+*4H2#4IgU&77E}u8;Pr z%M<-ty2_Z8rPhq`swI>BT86ra)@!U+-80#*WvYdfvsBqfyy`c!7OGP*UZHI)_G>NG z4YVQSysB@&ueDZd19&waucr95yH)Qgc!jnPt)22bhF25t>M_68LG3|{c@(dv`n66f ze=1&~9Y*u3u*Vs#iHz3ce(fH05UtrHMr)d1yH|~$#%Q6PLhG(#pJ22mGg?phwfocw zw2sA$)^xwtQ_Y-?e`uG{vQ)+l{0rdU48PV}T}10O1^;IHwFlM0nfUh@{-O0%ou0%$ zw2e>twTILVv>{XR?M?fht&b@Lsi)9EUiF|;yz3roQ+pA@M?}<8==O}!7H>=Xrol@T)dizS9ASZ zkvf6a@kzXz=hw!lne*@p?K0XUDnsGbQ+TEP+IV#lt=BBPde*N!sun(*rA<`VxKC1@ z=4WY>)pG8|>IV0K>i%4oHbt%F{+QB?EN!al&HZt;mHRa1S-@D$VXPMTwdraPTFhL= zYN217sqz;xR%nOOo>E~YjMY5Gs>H87tq!6!Q+Tz=ugzBD7vUA!DYUsNb}?Q(i&u;N zno=jwI?l(dC4Ozbnz;n8&@Q7HDq|^LJ%?9I{n|ox5v`YjSI_&kMQY*mjMW0h3T=t% zw2ZMr+qlfHJ+E${4Oz%oE%$57)!OBZRS9FY!mq7Vy;m?7(e|OOR-Tpkw+R1M`n4C; z9<-Rn__xZhtyTG}@DJ@U+IkhX8vmBy-)g_MQ5{5UwiN$f@N1jZ_!saG?G)Np75gIo zJ&%7c`n7H91X{;s__xNd?NBq<;2+v$v|TD=E&eUXzqNjCkGhD~YXw$6?AP|H*6Z+Z zrB|(9=hybBYiPUCdan0tuc_th@o$w^xi|Q=1FHK5{9El+JJ8-x+D80C%iZYL-c(!B z#=YQG)i?RIw^hz2{Cm->-b6d7DsRR=v@x6g+F#WHv>9u>s{R(gc36$tf`4nh>L}X# zDrzhKp-tQB*FIDqqAghGRjDuewU5-4m+)`BS6x6ms*<+hAKLtFe(e)=7H!Q2uWGm5 zubohHx8vVNulfn?Q`LG0{%yj)9e(YUx`wtJt>;d^c1A7ViGQ2%Z_qF>1Kixg*!#7rLoAKItO`l##4L|Utdpf__s;i{Kzo<%; zORHaBFYDeMV&^ksw!Bd`WK)>+mwfrn@Nm(H;i<^)!qj_j90_s$_lN(^NqD%(`dLx2 z_O_jWiPrT^VcQZ8XKUNGyczN5n@W6jj#Isrub<|v-q!jDfkQ4NZE4G9whEFkU05N)EdM9`K%*x;zTq^Tc3mZ^IyKs$wv&i&VmGk zK_?&voU`NPyJRUl-xqeA7<>@qIuDXu8QulCE`Y>UfkPnImmqOfA;PL*p?5K3S%D2Rf&FbHxX z4~9TK429t^0!G3pcmT4X7o2Wd5mr3Y$& zcqrX0y(+yZz4j`|WZn-4;B|Nd{sM2p2G|IjU^8rib+81M!t<~Umct5I39Dc=yZ|rC zYFa~}1^A#P^n-_B3Ooi=;c=J%kHTH>AoPLWAU^|Yg85YsDdYAF;#ZJCk?A7S;~V%E zF2mdK4jgnDmx8qD;*e!QVip+D{-gjk4!#t+TZTd!xCg{5ne~3?3{uYV`1ZWgD>64^!b-1*_cFZ2QjyRX`oIHlKS*Ug z;X%lT-jD^oK#Y`pj)yX5`h!TRYbMNqu}}nsFbYP3jQv352pBHoKa4;D426dwABI34 z42E171X6G`atus|DKHr(!6Psp#=!)56efc7ZU7#K$6zW**=g_uoRl1|6F2~SVKc0Q zS@0x01#96&SOqI!Im`zIbKn`64Nu$QdC0l&EIbb-un-K8yw8E;T>y*3!lkenme_I` zawWU~tL?BfEOBdK6KsU_umN_!HrN6$!B$&tNA84|VK?l8J@6X50{fu&Rc`x165fWt zz#F!F6Zsar3-7=|I0_%bM{oo_g!kbv9D={Xd+>qHapW=h1Wv#y_!K^a^Rm@^LEs#G z4rf3rISpswYxoi_fK>1mT!M@6Ep)QwmD|D+_rY~;TsLbN11f3_N)g;Oy`r{Ui*Qb8 zgtaKArendY0jCB$+Nc|iVO~qCPz|2VnRAQkZ!)%26{dE z_X|~vH@;%0P&P(4Ua77n>&n9FQ7=SGj&RPG56a|WV+r-9|8XZAcvD^0PuDG&J|qYq^x&XzIv&p_n)Y4ZsKE&zCno2-m6wNe4HoVDy)`b`_qJsN{s?#Jmc|;&7rq z^ctHaDL>eFCzKAJ5NzCx#4+a_%DW*yS1(ub+EH9jPe{gl*Un%gF^m!)1sh%JXrac~ z+FH2NnlUd->!DlCRSQaCJj^CTb*DMUs+5FOmlI}8YzxJ-RIA88S~;tVu_e;9JSo*G zW?FnH9E)#Nla$)Gs?n;JR?X;AQ>(2%U)3n6i7U>(=0CIirJlb{dcUVVyHe#4jj^mI zbHzC;GhkG`7Ol!xY-Z-jkhxpGx^aa%?4C0sBB*y$b>prG;+%%XmjxllNQo;9GMtrW{^q)=a;oxSaDeXKx^|UeCagpngg5W z8bC@U+j{Q_tM>g={q!a)MZB95X7sC#SJp7x>T*e&9cFx9TWhN?4>KA>YR#pc0g<;2 zOA6h1r*ig0OLGnZ^*eDjq3g2nnNF)sUCuF~5tCKB6E8M8?4+c+?5SssN~kfp&aD~9 zq`Nhmey8Ji>L169Ml5*0;^Y}!3{p}Ol366Knzf9G zD6LDHbHJ$Synz!AELk>5*N)b*zFas*kiN;x$vK$Z)kE2&gp`D|lxBKuW2uZy#oEU1 zDEh-5j|k_(hSORlZ9;AHWiD{r9BLj-iM@4<;m8Q*h*(I~FT2Fd=y<@iJW*!n;wa;l zXlA%`D(6^m#_%fD{hiDl?5#YZqKvEL(BFtM%GG7hI}~N~s!QF&bz@dtN;(IV+OPY4 zZN%0#6)Bm>2F5H5jW+g^Bh5L=bgfg@zUwNqoGLpFyCXTQ(@w6y+Kl-ldxU-e{H>I( z(ME7R$~xzxmTo*<@N@s3t8e9SPEhr%aB*60?+NCvXw~{$w9$vM5zd*b)<@2~vG~Ck z#@{M?DB74KwV#VN-(ds8x~5fltmvK@w{ke=xVA5P?UT>GTv>7}C8Vx#TFUNkXuenn zdcStXz4-Ly82nCVXU8k&=v7wtkMHUG{lT-O$Ww~GTpnY@)tBCmv7T11#VtCS*)z1W znIl=A3I}40{`KkILovp)$Ta7;R?q(5{{HivoWGf^G?iAIgIg_r*uVANN~uFgNw?a6 zKi2q_R`jSwMo0rj-#M{WZpqn`kC*wPsac0PLUS7%gBoaEB9`0sJT>Uqt*@Lsct+R6 z6}C55k2vE{11xq^EUvXTNQ6GQY>-pKC}4=Pc09K9dTY9{fT!qg2c3_u`F| zhL~|S-kPKp%B)$@FXgS>Qbjs5CCzmy-gt~0`j7F(PGp*MLMpGhuj|J}zjh=i>rgt- zIZIVB>~cctf~;nC3YNZ|VAPIbSe#Q?r_O!Wq{~lO zr|V6O0?Iz@oFMa#dgku%FJ@gQN19dEIdj$}uEDmI4Wg2Dtw9rO_}d_Z+49~DANk2o zzOc5Gk-o!L=e%0Zv9m{lCZ6qnE2U2pOZke(wj~q-3Y4>W9F;a3kXOd#Bo&K(<#?@VR9posRY^;iYGgOk2J81H8Ly*9IH%sGcJoA!Tl&a)U2DWN zk}EjPsMMGeXA+FI$Ta6XTw$VN#kbQz_e}@TTPxmUVjc+L%5lLAOop!8i`xn2NeKv)%_7KIi zHtICN$CTDa^CsBSs3cgG*D0Yd?PSCyTe5#L@qy09gxhrE ztz<2{Tu1q5Ij)Z3#-(JfRq^Pe_~9c4<+>j4l{UEYJE!~oNSe&P`8#WE37Nj7{_nOv ze$URB?uV`(mrq9(N$=Vw>%GF)GiJ-@Aj#j%ld)pO`gRHOp-j@ZoO+~c>$WuyHbs|N zT@XDdWb%QbD_WyhK{uxFU;WP3q^9rPM??q_>yBJmy78e#`}5JOqaV6>=JiMO)Vq_> zWn}Lke1D&Ek8gi{x@Mef%3mr1{En(X{Nv414{76qZ#swK_fI*!_VDSPMGPDJ z-jq81hYoq2^l{?&hR05ST6JB$AO2gqeHec8(bHWTpSpHEox)Q8>-S!WsI=w7CU>Kk zL%*cG6u&O!m*S8=XSjz9;z;!6zwSS>;oB{LPUrl!wC~Cb6fRC%e<8R-lvUx)Cz`I> zxVPF2(oF*&JpR!9$3ESDxjX6Nz>c^Z_xbz3+P!FG&cLCR|E|@tf_mp7PVeeN2C?v& viPy^y|9HsparQrL%*x%>JXH(Vc1>!b9mq8Lx6o=CU$@q3?(&V-UJL#&R(Z}V diff --git a/dsl_files/test.jstql b/dsl_files/test.jstql new file mode 100644 index 0000000..68a363a --- /dev/null +++ b/dsl_files/test.jstql @@ -0,0 +1,19 @@ +proposal lol { + case a { + applicable to { + "let <> = Iterator.from(<>); + let <> = Iterator.from(<>); + + let <> = function* () { + yield* <>; + yield* <>; + }();" + } + transform to { + "let <> = Iterator.from(<>); + let <> = Iterator.from(<>); + + let <> = Iterator.concat(<>, <>);" + } + } +} \ No newline at end of file diff --git a/index.ts b/index.ts index cd5bc39..408a749 100644 --- a/index.ts +++ b/index.ts @@ -1,19 +1,11 @@ -//import * as babelparser from "../babel/packages/babel-parser"; -import * as babelparser from "@babel/parser"; -//import core from "../babel/packages/babel-core"; -import { parse_with_plugins } from "./src/parser/parse"; + import { - SelfHostedRecipe, - TransformRecipe, + transform, } from "./src/transform/transform"; -import { readdir } from "node:fs/promises"; import { parseJSTQL } from "./src/langium/langiumRunner"; - import { parseArgs } from "util"; -const options = {}; - const { values: argVals, tokens: positional } = parseArgs({ options: { o: { diff --git a/out.js b/out.js index d0c2239..e254dd3 100644 --- a/out.js +++ b/out.js @@ -1,94 +1,3 @@ -function parse() { - const input = ("input" |> document.getElementById(%)).value; - const data = 32 |> input.slice(%); - const compressedData = data |> decode_base64(%); - const uncompressed = compressedData |> pako.inflate(%, { - to: "string" - }); - const json = uncompressed |> JSON.parse(%); - json |> console.log(%); - json |> convertToDesktop(%); -} -function convertToDesktop(json) { - const newValues = { - crb: false, - newClanRaidClassId: 0, - newClanRaidClassLevel: 0, - pendingImmortalSouls: 0, - pendingRaidRubies: 0, - immortalSouls: 0, - lastPurchaseTime: 0, - lastRaidAttemptTimestamp: 0, - lastRaidRewardCheckTimestamp: 0, - shouldShowHZERoster: false, - lastBonusRewardCheckTimestamp: 0 - }; - const mappedValues = { - rubies: json.rubies / 10 |> Math.round(%) - }; - const pcSpecificValues = { - readPatchNumber: "1.0e12", - saveOrigin: "pc" - }; - const hash = "7a990d405d2c6fb93aa8fbb0ec1a3b23"; - const newData = { - ...newValues, - ...json, - ...mappedValues, - ...pcSpecificValues - }; - const compressed = newData |> JSON.stringify(%) |> pako.deflate(%, { - to: "string" - }); - const base64 = compressed |> btoa(%); - const finalSaveString = hash + base64; - ("output_output" |> document.getElementById(%)).innerText = finalSaveString; - showOutput(); -} -function showOutput() { - ("outputs" |> document.getElementById(%)).style.visibility = "visible"; -} -function copyOutput() { - const output = "output_output" |> document.getElementById(%); - output.disabled = false; - output.focus(); - output.select(); - "copy" |> document.execCommand(%); - output.disabled = true; - const successElement = "copy_success_msg" |> document.getElementById(%); - successElement.style.visibility = "visible"; - (() => successElement.style.visibility = "hidden") |> setTimeout(%, 4000); -} -function decode_base64(s) { - let e = {}, - i, - k, - v = [], - r = "", - w = String.fromCharCode; - let n = [[65, 91], [97, 123], [48, 58], [43, 44], [47, 48]]; - for (z in n) { - for (i = n[z][0]; i < n[z][1]; i++) { - i |> w(%) |> v.push(%); - } - } - for (i = 0; i < 64; i++) { - e[v[i]] = i; - } - for (i = 0; i < s.length; i += 72) { - let b = 0, - c, - x, - l = 0, - o = i |> s.substring(%, i + 72); - for (x = 0; x < o.length; x++) { - c = e[x |> o.charAt(%)]; - b = (b << 6) + c; - l += 6; - while (l >= 8) { - r += (b >>> (l -= 8)) % 256 |> w(%); - } - } - } - return r; -} \ No newline at end of file +let something = Iterator.from([1, 2, 3]); +let someOtherThing = Iterator.from([4, 5, 6]); +let generate = Iterator.concat(something, someOtherThing); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4139edc..c179e77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,8 @@ "@types/babel-traverse": "^6.25.10", "babel": "^6.23.0", "bun": "^1.0.4", - "ts-node": "^10.9.1" + "ts-node": "^10.9.1", + "util": "^0.12.5" }, "devDependencies": { "@babel/plugin-proposal-pipeline-operator": "^7.23.3", @@ -1001,6 +1002,21 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", @@ -1293,6 +1309,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001574", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz", @@ -1452,6 +1487,23 @@ "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -1474,6 +1526,27 @@ "once": "^1.4.0" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1647,6 +1720,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1655,6 +1746,25 @@ "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -1684,6 +1794,18 @@ "node": ">=4" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -1717,6 +1839,69 @@ "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -1768,8 +1953,35 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-extglob": { "version": "2.1.1", @@ -1780,6 +1992,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1819,6 +2046,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2082,6 +2324,15 @@ "node": ">=0.10.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -2291,6 +2542,23 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -2559,6 +2827,19 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2582,6 +2863,25 @@ "which": "bin/which" } }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 8b34036..fe4d81d 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,11 @@ "@babel/generator": "^7.23.0", "@babel/parser": "^7.23.0", "@babel/traverse": "^7.23.0", - "@types/babel__traverse": "^7.20.5", "@types/babel-traverse": "^6.25.10", + "@types/babel__traverse": "^7.20.5", "babel": "^6.23.0", "bun": "^1.0.4", - "ts-node": "^10.9.1" + "ts-node": "^10.9.1", + "util": "^0.12.5" } } diff --git a/src/parser/wildcardTokenizer.ts b/src/parser/wildcardTokenizer.ts index 3cc65a5..b7fd080 100644 --- a/src/parser/wildcardTokenizer.ts +++ b/src/parser/wildcardTokenizer.ts @@ -116,7 +116,7 @@ export class WildcardTokenizer { } private isAlpha(val: string): boolean { let alphabet = new Set( - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_".split("") + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_1234567890".split("") ); return alphabet.has(val); } diff --git a/src/transform/transformMatch.ts b/src/transform/transformMatch.ts index 709c8dd..bb37d59 100644 --- a/src/transform/transformMatch.ts +++ b/src/transform/transformMatch.ts @@ -53,7 +53,7 @@ export function transformer( // For multi line applicable to for (let i = 0; i < match.statements.length - 1; i++) { - siblings[i].remove(); + //siblings[i].remove(); } // For when we have matched with + @@ -117,9 +117,11 @@ function extractWildcardPairs(match: Match): Map { ) { name = node.element.aplToNode.expression.name; } - - if (name) { + + if (name && name.startsWith("_$$_")) { if (map.has(name)) { + console.log(name); + console.log(map.get(name)); throw new Error("Wildcard encountered twice!"); } diff --git a/test_files/test3.js b/test_files/test3.js new file mode 100644 index 0000000..eab4c08 --- /dev/null +++ b/test_files/test3.js @@ -0,0 +1,6 @@ +let something = Iterator.from([1,2,3]); +let someOtherThing = Iterator.from([4,5,6]); +let generate = function* () { + yield* something; + yield* someOtherThing; +}(); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 98668a6..496f522 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "strict": true, + "strict": false, "target": "es2017", "module": "commonjs", "sourceMap": true,