@farm.js/react 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +75 -0
- package/dist/client.cjs +24 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.mts +2 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.mjs +4 -0
- package/dist/client.mjs.map +1 -0
- package/dist/compiler-runtime.cjs +140 -0
- package/dist/compiler-runtime.cjs.map +1 -0
- package/dist/compiler-runtime.d.mts +36 -0
- package/dist/compiler-runtime.d.ts +36 -0
- package/dist/compiler-runtime.mjs +134 -0
- package/dist/compiler-runtime.mjs.map +1 -0
- package/dist/index.cjs +61 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +31 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.mjs +56 -0
- package/dist/index.mjs.map +1 -0
- package/dist/server.cjs +24 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.mts +3 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.mjs +4 -0
- package/dist/server.mjs.map +1 -0
- package/dist/vite.cjs +573 -0
- package/dist/vite.cjs.map +1 -0
- package/dist/vite.d.mts +9 -0
- package/dist/vite.d.ts +9 -0
- package/dist/vite.mjs +571 -0
- package/dist/vite.mjs.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/compiler.ts","../src/index.ts","../src/vite.ts"],"names":["t","traverse","line","reason","transformAsync","normalizePath"],"mappings":";;;;;;AAqCA,SAAS,gBAAgB,IAAA,EAAuB;AAC9C,EAAA,OAAO,QAAA,CAAS,KAAK,IAAI,CAAA;AAC3B;AAEA,SAAS,gBAAgB,IAAA,EAAgE;AACvF,EAAA,OAAA,CAAQ,IAAA,CAAK,cAAc,EAAC,EAAG,IAAI,CAAC,SAAA,KAAc,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA;AACzE;AAEA,SAAS,cAAA,CACP,UAAA,EACA,aAAA,EACA,UAAA,EACgC;AAChC,EAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,UAAU,GAAG,OAAO,KAAA;AAC5C,EAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,CAAA,SAAU,aAAA,CAAc,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,IAAI,CAAA;AACtF,EAAA,OACEA,UAAA,CAAE,kBAAA,CAAmB,UAAA,CAAW,MAAM,CAAA,IACtC,CAAC,UAAA,CAAW,MAAA,CAAO,QAAA,IACnBA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,OAAO,MAAM,CAAA,IACvC,UAAA,CAAW,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA,IAC5CA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,YAAY,CAAA;AAEnE;AAEA,SAAS,gBAAwC,UAAA,EAAkB;AACjE,EAAA,OAAOA,UAAA,CAAE,SAAA,CAAU,UAAA,EAAY,IAAI,CAAA;AACrC;AAEA,SAAS,eAAe,UAAA,EAAkC;AACxD,EAAA,OAAOA,UAAA,CAAE,IAAA,CAAKA,UAAA,CAAE,OAAA,CAAQ,CAACA,WAAE,mBAAA,CAAoB,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D;AAEA,SAAS,wBAAA,CACP,YACA,aAAA,EACU;AACV,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AAC9C,MAAA,IAAI,KAAA,IAAS,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG,YAAA,CAAa,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA;AAAA,IACnF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAC7D;AAEA,SAAS,oBAAA,CAAqB,YAA0B,IAAA,EAAuB;AAC7E,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAAA,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,IAAA,CAAK,KAAK,IAAA,KAAS,IAAA,IAAQ,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,IAAI,CAAA,EAAG;AAC3D,QAAA,UAAA,GAAa,IAAA;AAAA,MACf;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,oBAAoB,IAAA,EAAiD;AAC5E,EAAA,MAAM,YAAY,IAAA,CAAK,UAAA,CAAW,CAAC,MAAA,KAAW,MAAA,CAAO,gBAAgB,CAAA;AACrE,EAAA,IAAI,CAAC,SAAA,EAAW,cAAA,EAAe,IAAK,CAACD,UAAA,CAAE,eAAA,CAAgB,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,EAAG,OAAO,IAAA;AACpF,EAAA,OAAO,WAAW,IAAA,CAAK,SAAA,CAAU,KAAK,IAAA,CAAK,IAAI,IAAI,SAAA,GAAY,IAAA;AACjE;AAEA,SAAS,mBAAA,CACP,MACA,cAAA,EACoB;AACpB,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,MAAA;AACJ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,MAAA,EAAQ;AACZ,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AAC/C,MAAA,IAAI,CAAC,SAAS,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,IACE,CAAC,MAAA,CAAO,gBAAA,EAAiB,IACzB,MAAA,CAAO,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,IAAA,IAC5B,CAAC,mBAAA,CAAoB,MAAM,CAAA,EAC3B;AACA,QAAA,MAAA,GAAS,CAAA,EAAG,MAAM,UAAU,CAAA,0CAAA,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,kBAAA,CACP,UAAA,EACA,cAAA,EACA,aAAA,EACA,cAAA,EACc;AACd,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAA,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,MAAA,CAAO,WAAA;AAAA,QACLD,UAAA,CAAE,gBAAA;AAAA,UACAA,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAGA,UAAA,CAAE,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA,EAAG,IAAI,CAAA;AAAA,UACnFA,UAAA,CAAE,WAAW,KAAK;AAAA;AACpB,OACF;AAAA,IACF,CAAA;AAAA,IACA,qBAAqB,IAAA,EAAM;AACzB,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AAC9C,MAAA,IAAI,CAAC,SAAS,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,IAAA,CAAK,WAAA;AAAA,QACHA,UAAA,CAAE,cAAA;AAAA,UACAA,UAAA,CAAE,gBAAA;AAAA,YACAA,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAGA,UAAA,CAAE,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA,EAAG,IAAI,CAAA;AAAA,YACnFA,UAAA,CAAE,WAAW,KAAK;AAAA,WACpB;AAAA,UACA;AAAC;AACH,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACzD;AAEA,SAAS,aAAa,KAAA,EAAuB;AAC3C,EAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,MAAM,IAAI,CAAA;AACjD,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAA,CAAM,CAACE,KAAAA,KAASA,KAAAA,CAAK,IAAA,EAAK,CAAE,WAAW,CAAC,CAAA;AACxF,IAAA,IAAI,IAAA,GAAO,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA,CAAE,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAC9D,IAAA,IAAI,QAAQ,CAAA,EAAG,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,MAAM,EAAE,CAAA;AAC3C,IAAA,IAAI,CAAC,gBAAA,EAAkB,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,MAAM,EAAE,CAAA;AACnD,IAAA,IAAI,IAAA,EAAM,MAAA,IAAU,IAAA,IAAQ,CAAC,mBAAmB,GAAA,GAAM,EAAA,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iBAAiB,UAAA,EAAmC;AAC3D,EAAA,IAAI,SAAA,GAAY,IAAA;AAChB,EAAAD,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,eAAe,IAAA,EAAM;AACnB,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,uBAAuB,IAAA,EAAM;AAC3B,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,WAAW,IAAA,EAAM;AACf,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,YAAY,IAAA,EAAM;AAChB,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,iBAAiB,IAAA,EAAM;AACrB,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,SAAS,IAAA,EAAM;AACb,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,iBAAiB,SAAA,EAA+C;AACvE,EAAA,OAAOD,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,GAAI,SAAA,CAAU,KAAK,IAAA,GAAO,MAAA;AACnE;AAEA,SAAS,eAAA,CACP,MACA,aAAA,EACkD;AAClD,EAAA,MAAM,WAA6B,EAAC;AAEpC,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,KAAuC;AAC3E,IAAA,MAAM,GAAA,GAAM,QAAQ,cAAA,CAAe,IAAA;AACnC,IAAA,IAAI,CAACA,UAAA,CAAE,eAAA,CAAgB,GAAG,CAAA,IAAK,CAAC,QAAA,CAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AACvD,MAAA,OAAO,qDAAA;AAAA,IACT;AAEA,IAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,MAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG,OAAO,6CAAA;AAC9C,MAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,MAAA,IAAI,CAAC,MAAM,OAAO,iDAAA;AAClB,MAAA,IAAI,IAAA,KAAS,KAAA,IAAS,IAAA,KAAS,yBAAA,EAA2B;AACxD,QAAA,OAAO,GAAG,IAAI,CAAA,yBAAA,CAAA;AAAA,MAChB;AACA,MAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACjD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,KAAA,CAAM,UAAA;AACnC,MAAA,MAAM,YAAA,GAAe,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAA;AACvE,MAAA,IAAI,aAAa,MAAA,KAAW,CAAA,IAAK,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AACxD,MAAA,IAAI,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,UAAA,IAAc,SAAS,KAAA,EAAO;AAC7D,QAAA,OAAO,YAAY,IAAI,CAAA,+BAAA,CAAA;AAAA,MACzB;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,YAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA,EAAO,gBAAgB,UAAU;AAAA,OAClC,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,cAAA,GAAiB,QAAQ,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,KAAA,KAC9CA,UAAA,CAAE,YAAA,CAAa,KAAK;AAAA,KACtB;AACA,IAAA,MAAM,kBAAA,GAAqB,QAAQ,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,KAAA,KAClDA,UAAA,CAAE,wBAAA,CAAyB,KAAK;AAAA,KAClC;AACA,IAAA,KAAA,MAAW,SAAS,kBAAA,EAAoB;AACtC,MAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAC9C,MAAA,IAAI,CAAC,gBAAA,CAAiB,KAAA,CAAM,UAAU,CAAA,EAAG;AACvC,QAAA,OAAO,uDAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,IAAI,cAAA,CAAe,WAAW,CAAA,EAAG;AAC/B,MAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,MAAA,MAAM,QAAwB,EAAC;AAC/B,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,QAAA,IAAIA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAA,EAAG;AACtB,UAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AACrC,UAAA,IAAI,MAAM,KAAA,CAAM,IAAA,CAAKA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,QAC5C,CAAA,MAAA,IAAWA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AACzF,UAAA,wBAAA,CAAyB,KAAA,CAAM,UAAA,EAAY,aAAa,CAAA,CAAE,OAAA;AAAA,YAAQ,CAAC,UAAA,KACjE,YAAA,CAAa,GAAA,CAAI,UAAU;AAAA,WAC7B;AACA,UAAA,KAAA,CAAM,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,QAC9C;AAAA,MACF;AACA,MAAA,IAAI,YAAA,CAAa,OAAO,CAAA,EAAG;AACzB,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,UACd,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,UAClE,KAAA,EAAOA,UAAA,CAAE,eAAA,CAAgB,KAAK;AAAA,SAC/B,CAAA;AAAA,MACH;AAAA,IACF,CAAA,MAAO;AACL,MAAA,KAAA,MAAW,SAAS,kBAAA,EAAoB;AACtC,QAAA,IACE,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,IACxC,wBAAA,CAAyB,KAAA,CAAM,UAAA,EAAY,aAAa,CAAA,CAAE,MAAA,GAAS,CAAA,EACnE;AACA,UAAA,OAAO,gEAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,IAAI,YAAA,GAAe,CAAA;AACnB,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,QAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAC5B,QAAA,MAAMG,UAAS,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,CAAC,CAAA;AACnD,QAAA,IAAIA,SAAQ,OAAOA,OAAAA;AACnB,QAAA,YAAA,IAAgB,CAAA;AAAA,MAClB;AAAA,IACF;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,EAAM,EAAE,CAAA;AAC7B,EAAA,OAAO,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAE,QAAA,EAAS;AAC1C;AAEA,SAAS,iBAAiB,UAAA,EAAyC;AACjE,EAAA,MAAM,KAAA,GAAQH,UAAA,CAAE,UAAA,CAAW,UAAU,CAAA;AACrC,EAAA,MAAM,cAAc,UAAA,GAAa,eAAA,CAAgB,UAAU,CAAA,GAAIA,UAAA,CAAE,WAAW,WAAW,CAAA;AACvF,EAAA,OAAOA,UAAA,CAAE,cAAA;AAAA,IACPA,UAAA,CAAE,uBAAA;AAAA,MACA,EAAC;AAAA,MACDA,WAAE,cAAA,CAAe;AAAA,QACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS,CAACA,WAAE,kBAAA,CAAmB,KAAA,EAAO,WAAW,CAAC,CAAC,CAAA;AAAA,QACzEA,UAAA,CAAE,eAAA;AAAA,UACAA,UAAA,CAAE,qBAAA;AAAA,YACAA,UAAA,CAAE,gBAAA;AAAA,cACA,KAAA;AAAA,cACAA,WAAE,eAAA,CAAgB,QAAA,EAAUA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,cAC9CA,UAAA,CAAE,cAAc,UAAU;AAAA,aAC5B;AAAA,YACAA,WAAE,cAAA,CAAeA,UAAA,CAAE,UAAU,KAAK,CAAA,EAAG,EAAE,CAAA;AAAA,YACvCA,UAAA,CAAE,UAAU,KAAK;AAAA;AACnB;AACF,OACD;AAAA,KACH;AAAA,IACA;AAAC,GACH;AACF;AAEA,SAAS,oBACP,IAAA,EACc;AACd,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AACpC,EAAA,OAAO,SAAA,IAAaA,UAAA,CAAE,YAAA,CAAa,SAAS,CAAA,GACvCA,UAAA,CAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAA,GAC5BA,UAAA,CAAE,UAAA,CAAW,QAAQ,CAAA;AAC3B;AAEA,SAAS,aAAA,CACP,OAAA,EACA,aAAA,EACA,cAAA,EACA,eACA,cAAA,EACoB;AACpB,EAAA,MAAM,UAAA,GAAiC;AAAA,IACrCA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,GAAGA,UAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,IACpEA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,eAAA,CAAgB,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAASA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA,KACtE;AAAA,IACAA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,cAAc,CAAA;AAAA,MAC3BA,UAAA,CAAE,eAAA,CAAgB,OAAA,CAAQ,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,KAASA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA;AAC9E,GACF;AACA,EAAA,IAAI,OAAA,CAAQ,IAAA;AACV,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,IAAI,CAAC,CAAC,CAAA;AACvF,EAAA,UAAA,CAAW,IAAA;AAAA,IACTA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,uBAAA;AAAA,QACA,CAAC,mBAAA,CAAoB,aAAa,GAAGA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAC,CAAA;AAAA,QAChE,kBAAA,CAAmB,OAAA,CAAQ,KAAA,EAAO,cAAA,EAAgB,eAAe,cAAc;AAAA;AACjF;AACF,GACF;AACA,EAAA,OAAOA,UAAA,CAAE,iBAAiB,UAAU,CAAA;AACtC;AAEA,SAAS,cAAA,CAAe,sBAAoC,KAAA,EAAoC;AAC9F,EAAA,MAAM,IAAA,GAAOA,UAAA,CAAE,aAAA,CAAc,oBAAA,CAAqB,IAAI,CAAA;AACtD,EAAA,MAAM,UAAA,GAAa,KAAA,GAAQ,CAACA,UAAA,CAAE,kBAAA,CAAmBA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAC,CAAC,CAAA,GAAI,EAAC;AACzE,EAAA,OAAOA,UAAA,CAAE,UAAA,CAAWA,UAAA,CAAE,iBAAA,CAAkB,IAAA,EAAM,UAAA,EAAY,IAAI,CAAA,EAAG,IAAA,EAAM,EAAC,EAAG,IAAI,CAAA;AACjF;AAEA,SAAS,gBAAA,CACP,SAAA,EACA,yBAAA,EACA,aAAA,EACA,UAAA,EACoB;AACpB,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc,GAAI,SAAA;AACtC,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,IAAA,CAAK,SAAA;AAC/B,IAAA,OAAO,kDAAA;AACT,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,cAAA,EAAgB,OAAO,0CAAA;AACrC,EAAA,IACE,KAAK,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,IACzB,IAAA,CAAK,KAAK,MAAA,CAAO,CAAC,CAAA,IAAK,CAACA,WAAE,YAAA,CAAa,IAAA,CAAK,KAAK,MAAA,CAAO,CAAC,CAAC,CAAA,EAC3D;AACA,IAAA,OAAO,6DAAA;AAAA,EACT;AACA,EAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,KAAK,IAAA,CAAK,IAAI,GAAG,OAAO,kCAAA;AAEhD,EAAA,MAAM,SAAyB,EAAC;AAChC,EAAA,IAAI,QAAA;AACJ,EAAA,KAAA,MAAW,SAAA,IAAa,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM;AAC3C,IAAA,IAAIA,UAAA,CAAE,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAClC,MAAA,IAAI,UAAU,OAAO,+CAAA;AACrB,MAAA,QAAA,GAAW,SAAA;AACX,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAACA,WAAE,qBAAA,CAAsB,SAAS,KAAK,SAAA,CAAU,YAAA,CAAa,WAAW,CAAA,EAAG;AAC9E,MAAA,OAAO,8EAAA;AAAA,IACT;AACA,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,YAAA,CAAa,CAAC,CAAA;AAC5C,IAAA,IACE,SAAA,CAAU,IAAA,KAAS,OAAA,IACnB,CAACA,UAAA,CAAE,cAAA,CAAe,WAAA,CAAY,EAAE,CAAA,IAChC,WAAA,CAAY,EAAA,CAAG,QAAA,CAAS,MAAA,KAAW,KACnC,CAACA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,EAAA,CAAG,QAAA,CAAS,CAAC,CAAC,CAAA,IAC1C,CAACA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,EAAA,CAAG,SAAS,CAAC,CAAC,CAAA,IAC1C,CAAC,cAAA,CAAe,WAAA,CAAY,IAAA,EAAM,aAAA,EAAe,UAAU,CAAA,IAC3D,WAAA,CAAY,IAAA,CAAK,SAAA,CAAU,MAAA,GAAS,CAAA,IACnC,WAAA,CAAY,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA,EAC/E;AACA,MAAA,OAAO,6EAAA;AAAA,IACT;AACA,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,SAAA,EAAW,WAAA,CAAY,EAAA,CAAG,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAAA,MACtC,UAAA,EAAY,WAAA,CAAY,EAAA,CAAG,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAAA,MACvC,OAAO,MAAA,CAAO,MAAA;AAAA,MACd,YAAA,EAAc,WAAA,CAAY,IAAA,CAAK,SAAA,CAAU,CAAC;AAAA,KAC3C,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,qCAAA;AAChC,EAAA,IAAI,CAAC,UAAU,QAAA,IAAY,CAACA,WAAE,YAAA,CAAa,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC7D,IAAA,OAAO,gDAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAA,GAAgB,IAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,SAAA,EAAW,KAAK,CAAC,CAAC,CAAA;AAC7E,EAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,UAAA,EAAY,KAAK,CAAC,CAAC,CAAA;AAC/E,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IACE,KAAA,CAAM,YAAA,KACL,wBAAA,CAAyB,KAAA,CAAM,YAAA,EAAc,aAAa,CAAA,CAAE,MAAA,GAAS,CAAA,IACpE,CAAC,GAAG,cAAc,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,CAAC,UAAU,MACnC,oBAAA,CAAqB,KAAA,CAAM,cAAe,UAAU;AAAA,KACtD,CAAA,EACF;AACA,MAAA,OAAO,oEAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,QAAA,CAAS,QAAA,EAAU,cAAc,CAAA;AAC1E,EAAA,IAAI,cAAc,OAAO,YAAA;AACzB,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,QAAA,CAAS,QAAA,EAAU,aAAa,CAAA;AACjE,EAAA,IAAI,QAAA,CAAS,MAAA,EAAQ,OAAO,QAAA,CAAS,MAAA;AAErC,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,WAAW,CAAA;AACnE,EAAA,MAAM,uBAAuB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,CAAA,EAAG,IAAI,CAAA,QAAA,CAAU,CAAA;AAC/E,EAAA,MAAM,cAAA,GAAiB,oBAAoB,IAAI,CAAA;AAC/C,EAAA,MAAM,aAAA,GAAgB,kBAAA;AAAA,IACpB,QAAA,CAAS,QAAA;AAAA,IACT,cAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,aAAaA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,yBAAyB,CAAA,EAAG;AAAA,IAC1EA,WAAE,gBAAA,CAAiB;AAAA,MACjBA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,aAAa,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,MACnEA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,YAAY,CAAA;AAAA,QACzBA,UAAA,CAAE,uBAAA;AAAA,UACA,CAACA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAC,CAAA;AAAA,UAC5BA,UAAA,CAAE,eAAA,CAAgB,MAAA,CAAO,GAAA,CAAI,CAAC,UAAU,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAC,CAAC;AAAA;AAC/E,OACF;AAAA,MACAA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,QACrBA,UAAA,CAAE,uBAAA;AAAA,UACA,CAACA,WAAE,SAAA,CAAU,cAAc,GAAGA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAC,CAAA;AAAA,UACzD;AAAA;AACF,OACF;AAAA,MACAA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,UAAU,CAAA;AAAA,QACvBA,UAAA,CAAE,eAAA;AAAA,UAAA,CACC,QAAA,CAAS,QAAA,IAAY,EAAC,EAAG,GAAA;AAAA,YAAI,CAAC,OAAA,KAC7B,aAAA,CAAc,SAAS,IAAA,EAAM,cAAA,EAAgB,eAAe,cAAc;AAAA;AAC5E;AACF;AACF,KACD;AAAA,GACF,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AACxC,EAAA,IAAA,CACG,GAAA,CAAI,MAAM,CAAA,CACV,WAAA;AAAA,IACCA,WAAE,cAAA,CAAe;AAAA,MACfA,UAAA,CAAE,eAAA;AAAA,QACA,cAAA;AAAA,UACE,oBAAA;AAAA,UACA,aAAA,IAAiBA,UAAA,CAAE,YAAA,CAAa,aAAa,IAAI,aAAA,GAAgB;AAAA;AACnE;AACF,KACD;AAAA,GACH;AACF,EAAA,aAAA,CAAc,WAAA;AAAA,IACZA,UAAA,CAAE,oBAAoB,OAAA,EAAS,CAACA,WAAE,kBAAA,CAAmB,oBAAA,EAAsB,UAAU,CAAC,CAAC;AAAA,GACzF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,kBAAkB,WAAA,EAA+C;AACxE,EAAA,MAAM,aAA0B,EAAC;AACjC,EAAA,WAAA,CAAY,QAAA,CAAS;AAAA,IACnB,oBAAoB,IAAA,EAAM;AACxB,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,CAAC,gBAAgB,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAI,CAAA,EAAG;AAC1D,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,IACE,CAAC,MAAA,CAAO,SAAA,EAAU,IAClB,CAAC,MAAA,CAAO,wBAAA,EAAyB,IACjC,CAAC,MAAA,CAAO,0BAAA,EAA2B,EACnC;AACA,QAAA;AAAA,MACF;AACA,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAA;AAAA,QACnB,IAAA;AAAA,QACA,aAAA,EAAe,MAAA,CAAO,SAAA,EAAU,GAAI,IAAA,GAAO;AAAA,OAC5C,CAAA;AAAA,IACH,CAAA;AAAA,IACA,mBAAmB,IAAA,EAAM;AACvB,MAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,IAC5B,CAAC,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAI,CAAA,IACjC,CAACA,UAAA,CAAE,oBAAA,CAAqB,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,IAAK,CAACA,UAAA,CAAE,yBAAA,CAA0B,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EACvF;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,cAAc,IAAA,CAAK,UAAA;AACzB,MAAA,MAAM,YAAY,WAAA,CAAY,UAAA;AAC9B,MAAA,IAAI,CAAC,SAAA,EAAW;AAChB,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,SAAA,EAAU,GACjC,WAAA,GACA,SAAA,CAAU,wBAAA,EAAyB,IAAK,SAAA,CAAU,UAAA,CAAW,SAAA,EAAU,GACrE,SAAA,GACA,IAAA;AACN,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAA;AAAA,QACnB,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAAA,QACrB,aAAA,EAAe;AAAA,OAChB,CAAA;AAAA,IACH;AAAA,GACD,CAAA;AACD,EAAA,OAAO,UAAA;AACT;AAEA,eAAsB,kBAAA,CACpB,IAAA,EACA,EAAA,EACA,OAAA,EACmC;AACnC,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,MAAM,cAAoC,EAAC;AAC3C,EAAA,MAAM,SAAS,OAAkB;AAAA,IAC/B,IAAA,EAAM,gBAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP,QAAQ,WAAA,EAAa;AACnB,QAAA,MAAM,mBAAmB,IAAI,GAAA,CAAI,eAAA,CAAgB,WAAA,CAAY,IAAI,CAAC,CAAA;AAClE,QAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,QAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,QAAA,KAAA,MAAW,SAAA,IAAa,WAAA,CAAY,IAAA,CAAK,IAAA,EAAM;AAC7C,UAAA,IAAI,CAACA,WAAE,mBAAA,CAAoB,SAAS,KAAK,SAAA,CAAU,MAAA,CAAO,UAAU,OAAA,EAAS;AAC7E,UAAA,KAAA,MAAW,SAAA,IAAa,UAAU,UAAA,EAAY;AAC5C,YAAA,IAAIA,WAAE,wBAAA,CAAyB,SAAS,KAAKA,UAAA,CAAE,0BAAA,CAA2B,SAAS,CAAA,EAAG;AACpF,cAAA,UAAA,CAAW,GAAA,CAAI,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAAA,YACrC,CAAA,MAAA,IACEA,UAAA,CAAE,iBAAA,CAAkB,SAAS,CAAA,IAC7BA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAA,EAAU,EAAE,IAAA,EAAM,UAAA,EAAY,CAAA,EACvD;AACA,cAAA,aAAA,CAAc,GAAA,CAAI,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,UAAA,GAAa,kBAAkB,WAAW,CAAA;AAChD,QAAA,MAAM,yBAAA,GACJ,WAAA,CAAY,KAAA,CAAM,qBAAA,CAAsB,yBAAyB,CAAA;AACnE,QAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,UAAA,MAAM,qBAAqB,IAAI,GAAA;AAAA,YAC7BA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,GACvC,eAAA,CAAgB,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAI,IACxC;AAAC,WACP;AACA,UAAA,MAAM,kBAAA,GACJ,iBAAiB,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA,IAAK,kBAAA,CAAmB,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA;AACrF,UAAA,IAAI,kBAAA,CAAmB,GAAA,CAAI,iBAAiB,CAAA,EAAG;AAC/C,UAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,YAAA,IAAgB,CAAC,kBAAA,EAAoB;AAE1D,UAAA,MAAM,MAAA,GAAS,gBAAA;AAAA,YACb,SAAA;AAAA,YACA,yBAAA;AAAA,YACA,aAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,WAAA,CAAY,IAAA,CAAK;AAAA,cACf,WAAW,SAAA,CAAU,IAAA;AAAA,cACrB,MAAA;AAAA,cACA,QAAA,EAAU;AAAA,aACX,CAAA;AAAA,UACH,CAAA,MAAO;AACL,YAAA,QAAA,CAAS,IAAA,CAAK,UAAU,IAAI,CAAA;AAAA,UAC9B;AAAA,QACF;AAEA,QAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,UAAA,WAAA,CAAY,gBAAA;AAAA,YACV,MAAA;AAAA,YACAA,UAAA,CAAE,iBAAA;AAAA,cACA;AAAA,gBACEA,UAAA,CAAE,eAAA;AAAA,kBACA,yBAAA;AAAA,kBACAA,UAAA,CAAE,WAAW,yBAAyB;AAAA;AACxC,eACF;AAAA,cACAA,UAAA,CAAE,cAAc,iCAAiC;AAAA;AACnD,WACF;AAAA,QACF;AAAA,MACF;AAAA;AACF,GACF,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,MAAMI,mBAAA,CAAe,IAAA,EAAM;AAAA,IACxC,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,UAAA,EAAY,IAAA;AAAA,IACZ,cAAA,EAAgB,EAAA;AAAA,IAChB,UAAA,EAAY,KAAA;AAAA,IACZ,OAAA,EAAS,KAAA;AAAA,IACT,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,CAAC,KAAA,EAAO,YAAY;AAAA,KAC/B;AAAA,IACA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,IAAA;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,OAAA,EAAS,CAAC,MAAM;AAAA,GACjB,CAAA;AAED,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAQ,IAAA,IAAQ,IAAA;AAAA,IACtB,GAAA,EAAK,QAAQ,GAAA,IAAO,IAAA;AAAA,IACpB,QAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC1nBO,IAAM,0BAAA,GAA6B,cAAA;AAEnC,SAAS,8BACd,KAAA,EACgC;AAChC,EAAA,MAAM,OAAA,GAAU,KAAA,KAAU,IAAA,GAAO,EAAC,GAAI,KAAA;AACtC,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,OAAA;AAE7B,EAAA,IAAI,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,YAAA,EAAc;AAC7C,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,6BAAA,EAAgC,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACpE;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAA,KAAc,MAAA,IAAa,IAAA,KAAS,YAAA,EAAc;AAC5D,IAAA,MAAM,IAAI,UAAU,yEAAyE,CAAA;AAAA,EAC/F;AAEA,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,SAAA,EAAW,IAAA,EAAK,IAAK,0BAAA;AAC/C,EAAA,MAAM,aAAA,GAAgB,QAAQ,aAAA,IAAiB,UAAA;AAC/C,EAAA,IAAI,CAAE,CAAC,UAAA,EAAY,MAAA,EAAQ,OAAO,CAAA,CAAY,QAAA,CAAS,aAAa,CAAA,EAAG;AACrE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,wCAAA,EAA2C,MAAA,CAAO,aAAa,CAAC,CAAA,CAAE,CAAA;AAAA,EACxF;AAEA,EAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,aAAA,EAAc;AAC1C;;;ACzCA,SAAS,oBACP,eAAA,EACwC;AACxC,EAAA,MAAM,eAAe,eAAA,EAAiB,YAAA;AACtC,EAAA,IAAI,CAAC,YAAA,IAAgB,OAAO,YAAA,KAAiB,UAAU,OAAO,KAAA;AAC9D,EAAA,MAAM,WAAY,YAAA,CAAwC,QAAA;AAC1D,EAAA,IAAI,CAAC,UAAU,OAAO,KAAA;AACtB,EAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,6BAAA,CAA8B,IAAI,CAAA;AAChE,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,MAAM,IAAI,SAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,UAAA,GAAa,QAAA;AACnB,EAAA,IAAA,CACG,WAAW,IAAA,KAAS,OAAA,IAAW,WAAW,IAAA,KAAS,YAAA,KACpD,OAAO,UAAA,CAAW,SAAA,KAAc,QAAA,KAC/B,UAAA,CAAW,kBAAkB,UAAA,IAC5B,UAAA,CAAW,kBAAkB,MAAA,IAC7B,UAAA,CAAW,kBAAkB,OAAA,CAAA,EAC/B;AACA,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,OAAO,8BAA8B,QAA0C,CAAA;AACjF;AAEO,SAAS,wBAAA,CAAyB,OAAA,GAAiC,EAAC,EAAa;AACtF,EAAA,MAAM,eAAA,GAAkB,mBAAA,CAAoB,OAAA,CAAQ,eAAe,CAAA;AACnE,EAAA,IAAI,CAAC,eAAA,EAAiB,OAAO,EAAC;AAE9B,EAAA,IAAI,WAAA,GAAc,EAAA;AAElB,EAAA,OAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,OAAA,EAAS,KAAA;AAAA,MACT,eAAe,MAAA,EAAQ;AACrB,QAAA,WAAA,GAAcC,mBAAc,MAAA,CAAO,IAAI,CAAA,CAAE,OAAA,CAAQ,OAAO,EAAE,CAAA;AAAA,MAC5D,CAAA;AAAA,MACA,MAAM,SAAA,CAAU,IAAA,EAAM,EAAA,EAAI;AACxB,QAAA,MAAM,OAAA,GAAUA,mBAAc,EAAA,CAAG,KAAA,CAAM,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AACjD,QAAA,IACE,CAAC,WAAA,CAAY,IAAA,CAAK,OAAO,KACzB,OAAA,CAAQ,QAAA,CAAS,gBAAgB,CAAA,IAChC,eAAe,CAAC,OAAA,CAAQ,UAAA,CAAW,CAAA,EAAG,WAAW,CAAA,CAAA,CAAG,CAAA;AAErD,UAAA,OAAO,IAAA;AAET,QAAA,MAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,IAAA,EAAM,SAAS,eAAe,CAAA;AACtE,QAAA,KAAA,MAAW,UAAA,IAAc,OAAO,WAAA,EAAa;AAC3C,UAAA,MAAM,UAAU,CAAA,iBAAA,EAAoB,UAAA,CAAW,SAAS,CAAA,EAAA,EAAK,WAAW,MAAM,CAAA,cAAA,CAAA;AAC9E,UAAA,IAAI,eAAA,CAAgB,aAAA,KAAkB,OAAA,EAAS,IAAA,CAAK,MAAM,OAAO,CAAA;AACjE,UAAA,IAAI,gBAAgB,aAAA,KAAkB,MAAA,IAAU,WAAW,QAAA,EAAU,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,QACxF;AACA,QAAA,IAAI,MAAA,CAAO,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AACzC,QAAA,OAAO,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,GAAA,EAAK,OAAO,GAAA,EAAW;AAAA,MACrD;AAAA;AACF,GACF;AACF","file":"vite.cjs","sourcesContent":["import { transformAsync, traverse, types as t, type NodePath, type PluginObj } from \"@babel/core\";\nimport type { NormalizedReactCompilerOptions } from \"./index\";\n\nexport interface CompilerDiagnostic {\n component: string;\n reason: string;\n selected: boolean;\n}\n\nexport interface CompileReactModuleResult {\n code: string;\n map: unknown;\n compiled: readonly string[];\n diagnostics: readonly CompilerDiagnostic[];\n}\n\ninterface StateBinding {\n valueName: string;\n setterName: string;\n index: number;\n initialValue?: t.Expression;\n}\n\ninterface PendingBinding {\n kind: \"text\" | \"attribute\";\n path: number[];\n dependencies: number[];\n name?: string;\n value: t.Expression;\n}\n\ninterface Candidate {\n name: string;\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>;\n statementPath: NodePath;\n}\n\nfunction isComponentName(name: string): boolean {\n return /^[A-Z]/.test(name);\n}\n\nfunction directiveValues(node: { directives?: readonly t.Directive[] | null }): string[] {\n return (node.directives || []).map((directive) => directive.value.value);\n}\n\nfunction isUseStateCall(\n expression: t.Node | null | undefined,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n): expression is t.CallExpression {\n if (!t.isCallExpression(expression)) return false;\n if (t.isIdentifier(expression.callee)) return useStateNames.has(expression.callee.name);\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object) &&\n reactNames.has(expression.callee.object.name) &&\n t.isIdentifier(expression.callee.property, { name: \"useState\" })\n );\n}\n\nfunction cloneExpression<T extends t.Expression>(expression: T): T {\n return t.cloneNode(expression, true) as T;\n}\n\nfunction expressionFile(expression: t.Expression): t.File {\n return t.file(t.program([t.expressionStatement(expression)]));\n}\n\nfunction collectStateDependencies(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n): number[] {\n const dependencies = new Set<number>();\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (state && !path.scope.hasBinding(path.node.name)) dependencies.add(state.index);\n },\n });\n return [...dependencies].sort((left, right) => left - right);\n}\n\nfunction referencesIdentifier(expression: t.Expression, name: string): boolean {\n let referenced = false;\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (path.node.name === name && !path.scope.hasBinding(name)) {\n referenced = true;\n }\n },\n });\n return referenced;\n}\n\nfunction findContainingEvent(path: NodePath): NodePath<t.JSXAttribute> | null {\n const attribute = path.findParent((parent) => parent.isJSXAttribute());\n if (!attribute?.isJSXAttribute() || !t.isJSXIdentifier(attribute.node.name)) return null;\n return /^on[A-Z]/.test(attribute.node.name.name) ? attribute : null;\n}\n\nfunction validateSetterUsage(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): string | undefined {\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason) return;\n const state = statesBySetter.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isCallExpression() ||\n parent.node.callee !== path.node ||\n !findContainingEvent(parent)\n ) {\n reason = `${state.setterName} must be called inside a JSX event handler`;\n }\n },\n });\n return reason;\n}\n\nfunction rewriteStateAccess(\n expression: t.Expression,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.Expression {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state) return;\n callee.replaceWith(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"set\"),\n ),\n );\n },\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n path.replaceWith(\n t.callExpression(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"get\"),\n ),\n [],\n ),\n );\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression;\n}\n\nfunction cleanJsxText(value: string): string {\n const lines = value.replace(/\\r/g, \"\").split(\"\\n\");\n let result = \"\";\n for (let index = 0; index < lines.length; index += 1) {\n const lastNonEmptyLine = lines.slice(index + 1).every((line) => line.trim().length === 0);\n let line = lines[index].replace(/\\t/g, \" \").replace(/ +/g, \" \");\n if (index > 0) line = line.replace(/^ /, \"\");\n if (!lastNonEmptyLine) line = line.replace(/ $/, \"\");\n if (line) result += line + (!lastNonEmptyLine ? \" \" : \"\");\n }\n return result;\n}\n\nfunction isTextExpression(expression: t.Expression): boolean {\n let supported = true;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n supported = false;\n path.stop();\n },\n OptionalCallExpression(path) {\n supported = false;\n path.stop();\n },\n JSXElement(path) {\n supported = false;\n path.stop();\n },\n JSXFragment(path) {\n supported = false;\n path.stop();\n },\n ObjectExpression(path) {\n supported = false;\n path.stop();\n },\n Function(path) {\n supported = false;\n path.stop();\n },\n });\n return supported;\n}\n\nfunction jsxAttributeName(attribute: t.JSXAttribute): string | undefined {\n return t.isJSXIdentifier(attribute.name) ? attribute.name.name : undefined;\n}\n\nfunction analyzeHostTree(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n): { bindings?: PendingBinding[]; reason?: string } {\n const bindings: PendingBinding[] = [];\n\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled trees currently support host elements only\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) return \"JSX attribute spreads are not supported yet\";\n const name = jsxAttributeName(attribute);\n if (!name) return \"namespaced JSX attributes are not supported yet\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `${name} requires React ownership`;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const dependencies = collectStateDependencies(expression, statesByValue);\n if (dependencies.length === 0 || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\" || name === \"children\" || name === \"key\") {\n return `stateful ${name} bindings are not supported yet`;\n }\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n const expressionChildren = element.children.filter((child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child),\n );\n for (const child of expressionChildren) {\n if (t.isJSXEmptyExpression(child.expression)) continue;\n if (!isTextExpression(child.expression)) {\n return \"dynamic child structures require React reconciliation\";\n }\n }\n\n if (nestedElements.length === 0) {\n const dependencies = new Set<number>();\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n collectStateDependencies(child.expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n parts.push(cloneExpression(child.expression));\n }\n }\n if (dependencies.size > 0) {\n bindings.push({\n kind: \"text\",\n path: [...path],\n dependencies: [...dependencies].sort((left, right) => left - right),\n value: t.arrayExpression(parts),\n });\n }\n } else {\n for (const child of expressionChildren) {\n if (\n !t.isJSXEmptyExpression(child.expression) &&\n collectStateDependencies(child.expression, statesByValue).length > 0\n ) {\n return \"mixed element and stateful text children are not supported yet\";\n }\n }\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n }\n\n return undefined;\n };\n\n const reason = visit(root, []);\n return reason ? { reason } : { bindings };\n}\n\nfunction lazyInitialValue(expression?: t.Expression): t.Expression {\n const value = t.identifier(\"_initial\");\n const initializer = expression ? cloneExpression(expression) : t.identifier(\"undefined\");\n return t.callExpression(\n t.arrowFunctionExpression(\n [],\n t.blockStatement([\n t.variableDeclaration(\"const\", [t.variableDeclarator(value, initializer)]),\n t.returnStatement(\n t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n t.unaryExpression(\"typeof\", t.cloneNode(value)),\n t.stringLiteral(\"function\"),\n ),\n t.callExpression(t.cloneNode(value), []),\n t.cloneNode(value),\n ),\n ),\n ]),\n ),\n [],\n );\n}\n\nfunction clonePropsParameter(\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>,\n): t.Identifier {\n const parameter = path.node.params[0];\n return parameter && t.isIdentifier(parameter)\n ? (t.cloneNode(parameter, true) as t.Identifier)\n : t.identifier(\"_props\");\n}\n\nfunction bindingObject(\n binding: PendingBinding,\n componentPath: Candidate[\"path\"],\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"dependencies\"),\n t.arrayExpression(binding.dependencies.map((part) => t.numericLiteral(part))),\n ),\n ];\n if (binding.name)\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n [clonePropsParameter(componentPath), t.cloneNode(stateParameter)],\n rewriteStateAccess(binding.value, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction wrapperElement(definitionIdentifier: t.Identifier, props?: t.Identifier): t.JSXElement {\n const name = t.jsxIdentifier(definitionIdentifier.name);\n const attributes = props ? [t.jsxSpreadAttribute(t.cloneNode(props))] : [];\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction compileCandidate(\n candidate: Candidate,\n createComponentIdentifier: t.Identifier,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n): string | undefined {\n const { path, name, statementPath } = candidate;\n if (path.node.async || path.node.generator)\n return \"async and generator components are not supported\";\n if (path.node.typeParameters) return \"generic components are not supported yet\";\n if (\n path.node.params.length > 1 ||\n (path.node.params[0] && !t.isIdentifier(path.node.params[0]))\n ) {\n return \"components must use zero parameters or one props identifier\";\n }\n if (!t.isBlockStatement(path.node.body)) return \"components must use a block body\";\n\n const states: StateBinding[] = [];\n let returned: t.ReturnStatement | undefined;\n for (const statement of path.node.body.body) {\n if (t.isReturnStatement(statement)) {\n if (returned) return \"components must have one unconditional return\";\n returned = statement;\n continue;\n }\n if (!t.isVariableDeclaration(statement) || statement.declarations.length !== 1) {\n return \"only top-level useState declarations and one return are supported in Group 1\";\n }\n const declaration = statement.declarations[0];\n if (\n statement.kind !== \"const\" ||\n !t.isArrayPattern(declaration.id) ||\n declaration.id.elements.length !== 2 ||\n !t.isIdentifier(declaration.id.elements[0]) ||\n !t.isIdentifier(declaration.id.elements[1]) ||\n !isUseStateCall(declaration.init, useStateNames, reactNames) ||\n declaration.init.arguments.length > 1 ||\n (declaration.init.arguments[0] && !t.isExpression(declaration.init.arguments[0]))\n ) {\n return \"only const [value, setValue] = useState(initial) declarations are supported\";\n }\n states.push({\n valueName: declaration.id.elements[0].name,\n setterName: declaration.id.elements[1].name,\n index: states.length,\n initialValue: declaration.init.arguments[0] as t.Expression | undefined,\n });\n }\n\n if (states.length === 0) return \"no local useState binding was found\";\n if (!returned?.argument || !t.isJSXElement(returned.argument)) {\n return \"the component must return one host JSX element\";\n }\n\n const statesByValue = new Map(states.map((state) => [state.valueName, state]));\n const statesBySetter = new Map(states.map((state) => [state.setterName, state]));\n for (const state of states) {\n if (\n state.initialValue &&\n (collectStateDependencies(state.initialValue, statesByValue).length > 0 ||\n [...statesBySetter].some(([setterName]) =>\n referencesIdentifier(state.initialValue!, setterName),\n ))\n ) {\n return \"useState initializers cannot reference another local state binding\";\n }\n }\n const setterReason = validateSetterUsage(returned.argument, statesBySetter);\n if (setterReason) return setterReason;\n const analysis = analyzeHostTree(returned.argument, statesByValue);\n if (analysis.reason) return analysis.reason;\n\n const stateParameter = path.scope.generateUidIdentifier(\"farmState\");\n const definitionIdentifier = path.scope.generateUidIdentifier(`${name}Compiled`);\n const propsParameter = clonePropsParameter(path);\n const rewrittenRoot = rewriteStateAccess(\n returned.argument,\n stateParameter,\n statesByValue,\n statesBySetter,\n ) as t.JSXElement;\n const definition = t.callExpression(t.cloneNode(createComponentIdentifier), [\n t.objectExpression([\n t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(name)),\n t.objectProperty(\n t.identifier(\"initialize\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter)],\n t.arrayExpression(states.map((state) => lazyInitialValue(state.initialValue))),\n ),\n ),\n t.objectProperty(\n t.identifier(\"render\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter)],\n rewrittenRoot,\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n (analysis.bindings || []).map((binding) =>\n bindingObject(binding, path, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n ),\n ]),\n ]);\n\n const originalProps = path.node.params[0];\n path\n .get(\"body\")\n .replaceWith(\n t.blockStatement([\n t.returnStatement(\n wrapperElement(\n definitionIdentifier,\n originalProps && t.isIdentifier(originalProps) ? originalProps : undefined,\n ),\n ),\n ]),\n );\n statementPath.insertAfter(\n t.variableDeclaration(\"const\", [t.variableDeclarator(definitionIdentifier, definition)]),\n );\n return undefined;\n}\n\nfunction collectCandidates(programPath: NodePath<t.Program>): Candidate[] {\n const candidates: Candidate[] = [];\n programPath.traverse({\n FunctionDeclaration(path) {\n if (!path.node.id || !isComponentName(path.node.id.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isProgram() &&\n !parent.isExportNamedDeclaration() &&\n !parent.isExportDefaultDeclaration()\n ) {\n return;\n }\n candidates.push({\n name: path.node.id.name,\n path,\n statementPath: parent.isProgram() ? path : parent,\n });\n },\n VariableDeclarator(path) {\n if (\n !t.isIdentifier(path.node.id) ||\n !isComponentName(path.node.id.name) ||\n (!t.isFunctionExpression(path.node.init) && !t.isArrowFunctionExpression(path.node.init))\n ) {\n return;\n }\n const declaration = path.parentPath;\n const statement = declaration.parentPath;\n if (!statement) return;\n const topLevel = statement.isProgram()\n ? declaration\n : statement.isExportNamedDeclaration() && statement.parentPath.isProgram()\n ? statement\n : null;\n if (!topLevel) return;\n candidates.push({\n name: path.node.id.name,\n path: path.get(\"init\") as Candidate[\"path\"],\n statementPath: topLevel,\n });\n },\n });\n return candidates;\n}\n\nexport async function compileReactModule(\n code: string,\n id: string,\n options: NormalizedReactCompilerOptions,\n): Promise<CompileReactModuleResult> {\n const compiled: string[] = [];\n const diagnostics: CompilerDiagnostic[] = [];\n const plugin = (): PluginObj => ({\n name: \"farm-react-aot\",\n visitor: {\n Program(programPath) {\n const moduleDirectives = new Set(directiveValues(programPath.node));\n const useStateNames = new Set<string>();\n const reactNames = new Set<string>();\n for (const statement of programPath.node.body) {\n if (!t.isImportDeclaration(statement) || statement.source.value !== \"react\") continue;\n for (const specifier of statement.specifiers) {\n if (t.isImportDefaultSpecifier(specifier) || t.isImportNamespaceSpecifier(specifier)) {\n reactNames.add(specifier.local.name);\n } else if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"useState\" })\n ) {\n useStateNames.add(specifier.local.name);\n }\n }\n }\n\n const candidates = collectCandidates(programPath);\n const createComponentIdentifier =\n programPath.scope.generateUidIdentifier(\"createCompiledComponent\");\n for (const candidate of candidates) {\n const functionDirectives = new Set(\n t.isBlockStatement(candidate.path.node.body)\n ? directiveValues(candidate.path.node.body)\n : [],\n );\n const explicitlySelected =\n moduleDirectives.has(options.directive) || functionDirectives.has(options.directive);\n if (functionDirectives.has(\"use no compiler\")) continue;\n if (options.mode === \"annotation\" && !explicitlySelected) continue;\n\n const reason = compileCandidate(\n candidate,\n createComponentIdentifier,\n useStateNames,\n reactNames,\n );\n if (reason) {\n diagnostics.push({\n component: candidate.name,\n reason,\n selected: explicitlySelected,\n });\n } else {\n compiled.push(candidate.name);\n }\n }\n\n if (compiled.length > 0) {\n programPath.unshiftContainer(\n \"body\",\n t.importDeclaration(\n [\n t.importSpecifier(\n createComponentIdentifier,\n t.identifier(\"createCompiledComponent\"),\n ),\n ],\n t.stringLiteral(\"@farm.js/react/compiler-runtime\"),\n ),\n );\n }\n },\n },\n });\n\n const result = await transformAsync(code, {\n filename: id,\n sourceType: \"module\",\n ast: false,\n code: true,\n sourceMaps: true,\n sourceFileName: id,\n configFile: false,\n babelrc: false,\n parserOpts: {\n plugins: [\"jsx\", \"typescript\"],\n },\n generatorOpts: {\n comments: true,\n compact: false,\n },\n plugins: [plugin],\n });\n\n return {\n code: result?.code || code,\n map: result?.map || null,\n compiled,\n diagnostics,\n };\n}\n","import type { FarmRenderer } from \"@farm.js/core/renderer\";\n\nexport type ReactCompilerMode = \"infer\" | \"annotation\";\nexport type UnsupportedCompilerBehavior = \"fallback\" | \"warn\" | \"error\";\n\nexport interface ReactCompilerOptions {\n /** Compile every component that the safe subset can prove eligible. */\n mode?: ReactCompilerMode;\n /** Function or module directive used only by annotation mode. */\n directive?: string;\n /** What to do when a selected component is outside the safe subset. */\n onUnsupported?: UnsupportedCompilerBehavior;\n}\n\nexport interface ReactRendererOptions {\n experimental?: {\n /** `true` enables automatic inference; an object customizes selection. */\n compiler?: boolean | ReactCompilerOptions;\n };\n}\n\nexport interface NormalizedReactCompilerOptions {\n mode: ReactCompilerMode;\n directive: string;\n onUnsupported: UnsupportedCompilerBehavior;\n}\n\nexport const DEFAULT_COMPILER_DIRECTIVE = \"use compiler\";\n\nexport function normalizeReactCompilerOptions(\n value: true | ReactCompilerOptions,\n): NormalizedReactCompilerOptions {\n const options = value === true ? {} : value;\n const mode = options.mode || \"infer\";\n\n if (mode !== \"infer\" && mode !== \"annotation\") {\n throw new TypeError(`Unknown React compiler mode: ${String(mode)}`);\n }\n\n if (options.directive !== undefined && mode !== \"annotation\") {\n throw new TypeError(\"The React compiler directive can only be configured in annotation mode.\");\n }\n\n const directive = options.directive?.trim() || DEFAULT_COMPILER_DIRECTIVE;\n const onUnsupported = options.onUnsupported || \"fallback\";\n if (!([\"fallback\", \"warn\", \"error\"] as const).includes(onUnsupported)) {\n throw new TypeError(`Unknown unsupported-component behavior: ${String(onUnsupported)}`);\n }\n\n return { mode, directive, onUnsupported };\n}\n\nconst REACT_RENDERER: Readonly<FarmRenderer> = Object.freeze({\n name: \"react\",\n vite: \"@farm.js/react/vite\",\n server: \"@farm.js/react/server\",\n client: \"@farm.js/react/client\",\n jsxImportSource: \"react\",\n dedupe: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\"],\n optimizeDeps: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"@farm.js/react/compiler-runtime\",\n ],\n capabilities: {\n streaming: { node: true, web: false },\n },\n});\n\n/** Select React and optionally enable Farm's experimental AOT compiler. */\nexport function react(options: ReactRendererOptions = {}): FarmRenderer {\n const compiler = options.experimental?.compiler;\n const normalizedCompiler = compiler ? normalizeReactCompilerOptions(compiler) : false;\n\n return {\n ...REACT_RENDERER,\n dedupe: [...(REACT_RENDERER.dedupe || [])],\n optimizeDeps: [...(REACT_RENDERER.optimizeDeps || [])],\n capabilities: {\n streaming: { ...REACT_RENDERER.capabilities?.streaming },\n },\n options: {\n experimental: { compiler: normalizedCompiler },\n },\n };\n}\n\nexport { REACT_RENDERER };\nexport type { FarmRenderer } from \"@farm.js/core/renderer\";\n","import { normalizePath, type Plugin } from \"vite\";\nimport { compileReactModule } from \"./compiler\";\nimport { normalizeReactCompilerOptions, type NormalizedReactCompilerOptions } from \"./index\";\n\ninterface RendererPluginOptions {\n ssr?: boolean;\n rendererOptions?: Readonly<Record<string, unknown>>;\n}\n\nfunction readCompilerOptions(\n rendererOptions: Readonly<Record<string, unknown>> | undefined,\n): NormalizedReactCompilerOptions | false {\n const experimental = rendererOptions?.experimental;\n if (!experimental || typeof experimental !== \"object\") return false;\n const compiler = (experimental as { compiler?: unknown }).compiler;\n if (!compiler) return false;\n if (compiler === true) return normalizeReactCompilerOptions(true);\n if (typeof compiler !== \"object\") {\n throw new TypeError(\n \"React experimental.compiler must be a boolean or compiler options object.\",\n );\n }\n const normalized = compiler as Partial<NormalizedReactCompilerOptions>;\n if (\n (normalized.mode === \"infer\" || normalized.mode === \"annotation\") &&\n typeof normalized.directive === \"string\" &&\n (normalized.onUnsupported === \"fallback\" ||\n normalized.onUnsupported === \"warn\" ||\n normalized.onUnsupported === \"error\")\n ) {\n return normalized as NormalizedReactCompilerOptions;\n }\n return normalizeReactCompilerOptions(compiler as NormalizedReactCompilerOptions);\n}\n\nexport function createFarmRendererPlugin(options: RendererPluginOptions = {}): Plugin[] {\n const compilerOptions = readCompilerOptions(options.rendererOptions);\n if (!compilerOptions) return [];\n\n let projectRoot = \"\";\n\n return [\n {\n name: \"farm:react-aot-compiler\",\n enforce: \"pre\",\n configResolved(config) {\n projectRoot = normalizePath(config.root).replace(/\\/$/, \"\");\n },\n async transform(code, id) {\n const cleanId = normalizePath(id.split(\"?\", 1)[0]);\n if (\n !/\\.[jt]sx$/.test(cleanId) ||\n cleanId.includes(\"/node_modules/\") ||\n (projectRoot && !cleanId.startsWith(`${projectRoot}/`))\n )\n return null;\n\n const result = await compileReactModule(code, cleanId, compilerOptions);\n for (const diagnostic of result.diagnostics) {\n const message = `[react-compiler] ${diagnostic.component}: ${diagnostic.reason}; using React.`;\n if (compilerOptions.onUnsupported === \"error\") this.error(message);\n if (compilerOptions.onUnsupported === \"warn\" || diagnostic.selected) this.warn(message);\n }\n if (result.compiled.length === 0) return null;\n return { code: result.code, map: result.map as any };\n },\n },\n ];\n}\n"]}
|
package/dist/vite.d.mts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Plugin } from 'vite';
|
|
2
|
+
|
|
3
|
+
interface RendererPluginOptions {
|
|
4
|
+
ssr?: boolean;
|
|
5
|
+
rendererOptions?: Readonly<Record<string, unknown>>;
|
|
6
|
+
}
|
|
7
|
+
declare function createFarmRendererPlugin(options?: RendererPluginOptions): Plugin[];
|
|
8
|
+
|
|
9
|
+
export { createFarmRendererPlugin };
|
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Plugin } from 'vite';
|
|
2
|
+
|
|
3
|
+
interface RendererPluginOptions {
|
|
4
|
+
ssr?: boolean;
|
|
5
|
+
rendererOptions?: Readonly<Record<string, unknown>>;
|
|
6
|
+
}
|
|
7
|
+
declare function createFarmRendererPlugin(options?: RendererPluginOptions): Plugin[];
|
|
8
|
+
|
|
9
|
+
export { createFarmRendererPlugin };
|