@reckona/mreact-compiler 0.0.161 → 0.0.162
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/dist/emit-server-stream.d.ts.map +1 -1
- package/dist/emit-server-stream.js +70 -4
- package/dist/emit-server-stream.js.map +1 -1
- package/dist/oxc-compat-create-element.d.ts +2 -0
- package/dist/oxc-compat-create-element.d.ts.map +1 -1
- package/dist/oxc-compat-create-element.js +93 -18
- package/dist/oxc-compat-create-element.js.map +1 -1
- package/dist/oxc.d.ts.map +1 -1
- package/dist/oxc.js +177 -21
- package/dist/oxc.js.map +1 -1
- package/package.json +2 -2
- package/src/emit-server-stream.ts +103 -8
- package/src/oxc-compat-create-element.ts +132 -25
- package/src/oxc.ts +326 -12
package/dist/oxc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc.js","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,2CAA2C,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAiD,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,kCAAkC,GAEnC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,WAAW,EACX,cAAc,EACd,wBAAwB,EACxB,SAAS,EACT,UAAU,EACV,UAAU,EACV,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,gCAAgC,EAChC,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAE1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,EAC/B,qCAAqC,EACrC,6BAA6B,EAC7B,kBAAkB,EAClB,2BAA2B,EAC3B,iCAAiC,EACjC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,SAAS,EACT,0BAA0B,EAC1B,gCAAgC,EAChC,qBAAqB,EACrB,mCAAmC,EACnC,yCAAyC,GAC1C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wCAAwC,EACxC,4CAA4C,EAC5C,uCAAuC,EACvC,+BAA+B,EAC/B,uBAAuB,EACvB,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EACL,yBAAyB,EACzB,iBAAiB,GAElB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,oCAAoC,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EACL,6BAA6B,EAC7B,sCAAsC,EACtC,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAC7B,qCAAqC,GACtC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAetD,MAAM,eAAe,GAAoB,qBAAqB,EAAE,CAAC;AAEjE,SAAS,qBAAqB,CAC5B,uBAA+D,IAAI,GAAG,EAAE;IAExE,OAAO;QACL,sBAAsB,EAAE,yBAAyB;QACjD,2BAA2B,EAAE,8BAA8B;QAC3D,2BAA2B,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CACrF,8BAA8B,CAC5B,IAAI,EACJ,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAW,EACX,oBAAoB,CACrB;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,cAA2B,EAC3B,MAAqB,EACrB,WAAyB,EACzB,gBAA0C,EAC1C,qBAAoE,EACpE,qBAAmD,EACnD,YAAmD,EACnD,kBAAgC,EAChC,eAAgC,eAAe;IAE/C,OAAO;QACL,cAAc;QACd,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACnE,MAAM;QACN,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,WAAW;QACX,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC/D,GAAG,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;QACzE,GAAG,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;QACzE,YAAY;QACZ,wBAAwB,EAAE,2BAA2B;KACtD,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,gBAAgB,CAAC,KAAuB;IACtD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;QAChD,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvF,MAAM,cAAc,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAExD,OAAO;QACL,OAAO,EACL,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACvB,SAAS,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAClC,CAAC,cAAc;YACf,WAAW,CACT,qBAAqB,EACrB,SAAS,CAAC,EAAE,CAAC,UAAU;iBACpB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC;iBACnD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAC5C;QACH,GAAG,EAAE;YACH,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YAChD,kBAAkB,EAAE,qBAAqB;YACzC,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,sBAAsB,EAAE,KAAK;YAC7B,cAAc;SACf;KACF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,OAAO,mCAAmC,CAAC,kCAAkC,CAAC,KAAK,CAAC,EAAE;QACpF,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,mCAAmC,CACjD,OAA8B,EAC9B,KAAkD;IAElD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5F,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,WAAW,EAAE;YACX,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnF,GAAG,QAAQ,CAAC,WAAW;SACxB;QACD,sBAAsB,EAAE,KAAK;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY,EAAE,KAAc;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GACP,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ;QAClC,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;QAClD,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,KAAK,EAAE,OAAO;QACd,IAAI,EACF,MAAM,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,oBAAoB;QAC5F,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB;QAChF,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,OAAgB,EAChB,MAAqB,EACrB,OAA8B;IAE9B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,qBAAqB,GAAG,wCAAwC,CACpE,OAAO,EACP,IAAI,GAAG,CAAC,OAAO,EAAE,qBAAqB,IAAI,EAAE,CAAC,EAC7C,IAAI,GAAG,CAAC,OAAO,EAAE,6BAA6B,IAAI,EAAE,CAAC,CACtD,CAAC;IACF,MAAM,oBAAoB,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAC;IAC9E,MAAM,yBAAyB,GAC7B,OAAO,EAAE,+BAA+B,KAAK,YAAY;QACvD,CAAC,CAAC,4CAA4C,CAAC,OAAO,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,2BAA2B,GAC/B,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;IAC3F,uEAAuE;IACvE,uCAAuC;IACvC,MAAM,wBAAwB,GAC5B,MAAM,KAAK,QAAQ,IAAI,OAAO,EAAE,YAAY,KAAK,QAAQ;QACvD,CAAC,CAAC,+BAA+B,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;IACxB,MAAM,4BAA4B,GAChC,MAAM,KAAK,QAAQ;QACjB,CAAC,CAAC,mCAAmC,CAAC,OAAO,EAAE,2BAA2B,CAAC;QAC3E,CAAC,CAAC,IAAI,GAAG,EAAuB,CAAC;IACrC,MAAM,YAAY,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IACjE,MAAM,yBAAyB,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,4BAA4B,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC;IAElF,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;YAE/C,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC7E,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;YACD,KAAK,MAAM,WAAW,IAAI,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;YACD,SAAS;QACX,CAAC;QAED,IACE,0BAA0B,CAAC,SAAS,EAAE,2BAA2B,CAAC;YAClE,uCAAuC,CAAC,IAAI,EAAE,SAAS,EAAE,wBAAwB,CAAC;YAClF,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC,EACjF,CAAC;YACD,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;YAElE,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAC/C,KAAK,MAAM,WAAW,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC3D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;aAAM,CAAC;YACN,IAAI,gCAAgC,CAAC,SAAS,EAAE,OAAO,EAAE,2BAA2B,CAAC,EAAE,CAAC;gBACtF,WAAW,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,iCAAiC;oBACvC,OAAO,EAAE,uEAAuE;iBACjF,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,MAAM,eAAe,GAAG,yBAAyB,CAC/C,IAAI,EACJ,SAAS,EACT,yBAAyB,CAAC,OAAO,EAAE,kBAAkB,CAAC,EACtD,MAAM,EACN,WAAW,EACX,OAAO,EACP,YAAY,CACb,CAAC;YACF,MAAM,kBAAkB,GACtB,eAAe,IAAI,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAExE,IACE,eAAe,KAAK,SAAS;gBAC7B,oBAAoB,CAAC,MAAM,CAAC;gBAC5B,OAAO,EAAE,WAAW,KAAK,eAAe;gBACxC,OAAO,EAAE,WAAW,KAAK,eAAe,EACxC,CAAC;gBACD,WAAW,CAAC,IAAI,CACd,2CAA2C,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAC7E,CAAC;YACJ,CAAC;YAED,IAAI,kBAAkB,KAAK,EAAE,EAAE,CAAC;gBAC9B,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC5C,CAAC;YACD,KAAK,MAAM,WAAW,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzD,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,yBAAyB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GACtB,OAAO,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAC5C,mBAAmB,CACjB,IAAI,EACJ,SAAS,EACT,cAAc,EACd,MAAM,EACN,WAAW,EACX,OAAO,EAAE,gBAAgB,IAAI,UAAU,EACvC,wBAAwB,EACxB,yBAAyB,EACzB,OAAO,EAAE,qBAAqB,KAAK,IAAI,EACvC,OAAO,EAAE,YAAY,EACrB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,CAC7B,CACF,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,+BAA+B,CAAC,SAAS,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACrE,uBAAuB,CAAC,SAAS,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC/D,8BAA8B,CAAC,SAAS,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QACrE,IAAI,yBAAyB,KAAK,SAAS,EAAE,CAAC;YAC5C,gCAAgC,CAAC,SAAS,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC9E,CAAC;QACD,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpD,gCAAgC,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE;YAC5D,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,KAAK,OAAO;SAClE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,GAAa;QACnB,WAAW;QACX,gBAAgB;QAChB,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAClD,UAAU;KACX,CAAC;IAEF,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEtB,OAAO;QACL,EAAE;QACF,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAe;IACxC,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ,IAAI,qDAAqD,CAAC,IAAI,CAAC,MAAM,CAAC,CACjG,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAgB,EAChB,kBAAuC;IAEvC,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,4BAA4B,CAAC,OAAO,CAAC;QACxC,GAAG,+BAA+B,CAAC,OAAO,CAAC;QAC3C,GAAG,6BAA6B,CAAC,OAAO,CAAC;QACzC,GAAG,kBAAkB;KACtB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAgB;IACrD,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;QAC7E,GAAG,6BAA6B,CAAC,OAAO,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mCAAmC,CAC1C,OAAgB,EAChB,2BAAgD;IAEhD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAElD,IAAI,2BAA2B,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,WAAW,GACf,MAAM,CAAC,IAAI,KAAK,wBAAwB,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B;YACpF,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC;QACb,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QAED,KAAK,MAAM,gBAAgB,IAAI,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;YACjE,MAAM,cAAc,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;YAC9D,IAAI,cAAc,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC7C,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,IACE,MAAM,CAAC,IAAI,KAAK,YAAY;gBAC5B,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;gBAC/B,CAAC,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAC7C,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YAE/B,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAC9D,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAChD,OAAO;gBACT,CAAC;gBAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,2BAA2B,CAClC,SAAkC;IAElC,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACzC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACjD,2BAA2B,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO;YACL,GAAG,2BAA2B,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAChE,GAAG,2BAA2B,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACvD,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7D,2BAA2B,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAC/C,CACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAOD,SAAS,mCAAmC,CAC1C,IAAY,EACZ,UAAmC,EACnC,KAA0B;IAE1B,MAAM,YAAY,GAAG,yCAAyC,CAAC,UAAU,CAAC,CAAC;IAE3E,OAAO,YAAY,KAAK,SAAS;QAC/B,qCAAqC,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;QAChE,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,qCAAqC,CAC5C,IAAY,EACZ,SAAkB,EAClB,KAA0B;IAE1B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAErC,IACE,MAAM,CAAC,IAAI,KAAK,qBAAqB;QACrC,qCAAqC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAC1D,CAAC;QACD,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACxD,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAE3C,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,mCAAmC,CACrD,IAAI,EACJ,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,KAAK,CACN,CAAC;QAEF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,uCAAuC,CAC9C,IAAY,EACZ,SAAkB,EAClB,KAA0B;IAE1B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC/C,OAAO,mCAAmC,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC;IACxG,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEnD,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC/C,OAAO,qCAAqC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,qCAAqC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC;IACvF,CAAC;IAED,OAAO,qCAAqC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC;AACrF,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAY,EACZ,SAAkB,EAClB,cAA2B,EAC3B,MAAqB,EACrB,WAAyB,EACzB,gBAAyC,EACzC,wBAA6C,EAC7C,yBAAsC,EACtC,qBAA8B,EAC9B,YAAkD,EAClD,kBAA2C,EAC3C,YAA6B,EAC7B,4BAAiD,EACjD,2BAAgD,EAChD,4BAAsE;IAEtE,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,yCAAyC,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAE9F,IACE,WAAW,KAAK,SAAS;YACzB,CAAC,CAAC,iCAAiC,CAAC,WAAW,CAAC;gBAC9C,CAAC,qCAAqC,CAAC,IAAI,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC,EACtF,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QAErE,OAAO;YACL,+BAA+B,CAC7B,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,SAAS,EACT,cAAc,EACd,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,IAAI,CACL;SACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC7C,MAAM,cAAc,GAClB,qBAAqB,CAAC,SAAS,CAAC;YAChC,qCAAqC,CAAC,IAAI,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAEnF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO;YACL;gBACE,GAAG,+BAA+B,CAChC,IAAI,EACJ,cAAc,CAAC,IAAI,EACnB,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,IAAI,EACnB,cAAc,EACd,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,CAC7B;gBACD,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GACrB,mCAAmC,CAAC,WAAW,CAAC;YAChD,qCAAqC,CAAC,IAAI,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;QAErF,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO;YACL,+BAA+B,CAC7B,IAAI,EACJ,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,IAAI,EACtB,cAAc,EACd,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,CAC7B;SACF,CAAC;IACJ,CAAC;IAED,IACE,WAAW,CAAC,IAAI,KAAK,qBAAqB;QAC1C,CAAC,CAAC,qBAAqB;YACrB,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC;YACrC,CAAC,2BAA2B,CAAC,WAAW,CAAC,IAAI,EAAE,2BAA2B,CAAC;YAC3E,CAAC,qCAAqC,CAAC,IAAI,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC,EACtF,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEtC,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,+BAA+B,CAC7B,IAAI,EACJ,EAAE,CAAC,IAAI,EACP,WAAW,EACX,EAAE,CAAC,IAAI,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,CAC7B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAC/C,IAAY,EACZ,UAAmC,EACnC,cAA2B,EAC3B,MAAqB,EACrB,WAAyB,EACzB,YAA6B;IAE7B,IAAI,UAAU,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,OAAO,oBAAoB,CAAC,MAAM,CAAC;YACjC,CAAC,CAAC,CAAC,YAAY,CAAC,2BAA2B,CACvC,IAAI,EACJ,MAAM,EACN,cAAc,EACd,MAAM,EACN,WAAW,CACZ,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAClF,CAAC;AAED,SAAS,+BAA+B,CACtC,IAAY,EACZ,IAAY,EACZ,YAAqC,EACrC,UAAkB,EAClB,cAA2B,EAC3B,MAAqB,EACrB,WAAyB,EACzB,gBAAyC,EACzC,wBAA6C,EAC7C,yBAAsC,EACtC,qBAA8B,EAC9B,YAAkD,EAClD,kBAA2C,EAC3C,YAA6B,EAC7B,4BAAiD,EACjD,2BAAgD,EAChD,4BAAsE,EACtE,aAAa,GAAG,KAAK;IAErB,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,iBAAiB,GACrB,gBAAgB,KAAK,eAAe;QAClC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC;IAC1D,MAAM,aAAa,GACjB,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACtC,CAAC,gBAAgB,KAAK,eAAe;YACnC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC;YACpF,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,MAAM,eAAe,GACnB,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,MAAM,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GACpB,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9D,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAClC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACjC,MAAM,CAAC,CAAC,SAAS,EAAuB,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CACvE,CAAC;IACF,MAAM,kBAAkB,GACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7C,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC;QAChF,CAAC,CAAC,cAAc,CAAC;IACrB,MAAM,cAAc,GAAG,IAAI;SACxB,MAAM,CACL,CAAC,aAAa,EAAE,EAAE,CAChB,aAAa,KAAK,aAAa;QAC/B,iBAAiB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI;QACpE,iBAAiB,EAAE,yBAAyB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI;QAC7E,aAAa,KAAK,iBAAiB,EAAE,oBAAoB,CAC5D;SACA,GAAG,CACF,CAAC,aAAa,EAAE,EAAE,CAChB,wBAAwB,CACtB,IAAI,EACJ,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,YAAY,CACb,IAAI,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CACrE,CAAC;IACJ,MAAM,qBAAqB,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,qBAAqB,GAAG,6BAA6B,CACzD,IAAI,EACJ,IAAI,EACJ,4BAA4B,CAC7B,CAAC;IACF,MAAM,oBAAoB,GAAG,6BAA6B,CACxD,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,YAAY,CACb,CAAC;IACF,MAAM,IAAI,GACR,2BAA2B,CAAC,IAAI,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,CAAC;QAC5F,0BAA0B,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,CAAC;QACvF,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC;YAClC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,8BAA8B,CAAC,IAAI,EAAE,gBAAgB,EAAE;gBACrD,KAAK,EAAE,wBAAwB;gBAC/B,QAAQ,EAAE,4BAA4B,CAAC,YAAY,EAAE,wBAAwB,CAAC;aAC/E,CAAC,CAAC;QACP,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,KAAK,aAAa;YAC1E,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,oBAAoB,CAAC;YACjE,CAAC,CAAC,4BAA4B,CAAC,gBAAgB,CAAC;gBAC9C,CAAC,CAAC,iCAAiC,CAAC,IAAI,EAAE,gBAAgB,CAAC;gBAC3D,CAAC,CAAC,iCAAiC,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;oBAChF,CAAC,CAAC;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,0BAA0B,CAC9B,gBAAgB,KAAK,eAAe;4BAClC,CAAC,CAAC,wCAAwC,CACtC,IAAI,EACJ,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,YAAY,CACb;4BACH,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CACvC;wBACD,UAAU,EAAE,MAAe;qBAC5B;oBACH,CAAC,CAAC,CAAC,2BAA2B,CAC1B,IAAI,EACJ,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,CACjB,IAAI;wBACH,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,0BAA0B,CAC9B,qBAAqB;4BACnB,CAAC,CAAC,CAAC,iCAAiC,CAChC,IAAI,EACJ,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,WAAW,CACZ;gCACC,wBAAwB,CACtB,kCAAkC,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CACvE,CAAC;4BACN,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CACvC;wBACD,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,YAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACxE,CAAC,CAAC,CAAC;IACd,6BAA6B,CAC3B,CAAC,IAAI,CAAC,EACN,IAAI,GAAG,CAAC;QACN,GAAG,yBAAyB;QAC5B,GAAG,6BAA6B,CAC9B,IAAI,CAAC,MAAM,CACT,CAAC,aAAa,EAAE,EAAE,CAChB,aAAa,KAAK,aAAa;YAC/B,iBAAiB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI;YACpE,iBAAiB,EAAE,yBAAyB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI;YAC7E,aAAa,KAAK,iBAAiB,EAAE,oBAAoB,CAC5D,CACF;QACD,GAAG,kBAAkB;KACtB,CAAC,EACF,gBAAgB,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAC1D,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,UAAU;QACV,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,UAAU;QACV,cAAc;QACd,YAAY,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACnE,IAAI;KACL,CAAC;AACJ,CAAC;AAaD,SAAS,wBAAwB,CAC/B,IAAwB,EACxB,8BAAuC;IAEvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAqC,EAAE,CAAC;QACtD,MAAM,gBAAgB,GAAc,EAAE,CAAC;QACvC,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAE3C,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3F,MAAM;YACR,CAAC;YAED,MAAM,UAAU,GAAG,wCAAwC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAElF,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvE,MAAM;YACR,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;gBAChC,UAAU;aACX,CAAC,CAAC;YACH,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC;QAChC,IAAI,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,oCAAoC,CAAC,oBAAoB,CAAC,CAAC;QAE/E,IAAI,WAAW,KAAK,SAAS,IAAI,8BAA8B,EAAE,CAAC;YAChE,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5B,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,oCAAoC,CAAC,oBAAoB,CAAC,CAAC;gBAE7E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC1C,MAAM;oBACR,CAAC;oBAED,OAAO;wBACL,gBAAgB;wBAChB,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC;wBAC/D,oBAAoB;wBACpB,QAAQ;wBACR,WAAW,EAAE,SAAS;qBACvB,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,CAAC;YACzE,SAAS;QACX,CAAC;QAED,OAAO;YACL,gBAAgB;YAChB,yBAAyB,EAAE,EAAE;YAC7B,oBAAoB;YACpB,QAAQ;YACR,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wCAAwC,CAC/C,SAAkB;IAElB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACtC,OAAO,oCAAoC,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,oCAAoC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,yBAAyB,CAAC,UAAmC;IACpE,OAAO,oBAAoB,CAAC,UAAU,CAAC,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAmC;IAC/D,OAAO,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,yBAAyB,CAAC,UAAmC;IACpE,OAAO,CACL,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QAC1B,UAAU,CAAC,IAAI,KAAK,aAAa;QACjC,4BAA4B,CAAC,UAAU,CAAC;QACxC,gCAAgC,CAAC,UAAU,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CAAC,UAAmC;IAC3E,IAAI,UAAU,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,KAAK,mBAAmB,IAAI,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAwB;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,IAAI,KAAK,iBAAiB,IAAI,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CAAC,SAAkC;IACxE,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACpD,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,iBAAiB,CACxD,CACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAY,EACZ,SAAkB,EAClB,OAAgC,EAChC,gBAAyC;IAEzC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;aACrD,GAAG,CAAC,UAAU,CAAC;aACf,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QACrD,MAAM,QAAQ,GACZ,eAAe,KAAK,SAAS;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEjE,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;YACjC,QAAQ,EACN,QAAQ,KAAK,SAAS;gBACpB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC;SAC7E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACzE,IAAI,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC;IAE3C,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,QAAQ,GAAG;YACT;gBACE,IAAI,EAAE,aAAa;gBACnB,aAAa,EAAE,GAAG,YAAY,QAAQ,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;gBACpE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;gBAC9B,SAAS,EAAE,QAAQ;aACpB;SACF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,2BAA2B,CAClC,IAAY,EACZ,iBAAmD,EACnD,OAAgC,EAChC,gBAAyC;IAEzC,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,GAAG,2BAA2B,CACxC,IAAI,EACJ,iBAAiB,CAAC,WAAW,EAC7B,OAAO,EACP,gBAAgB,CACjB,CAAC;IAEF,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,QAAQ,GAAG;YACT;gBACE,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,iBAAiB,CAAC,yBAAyB,CAAC,GAAG,CAC7D,CAAC,aAAa,EAAE,EAAE,CAChB,wBAAwB,CACtB,IAAI,EACJ,aAAa,EACb,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,WAAW,EACnB,gBAAgB,EAChB,OAAO,CAAC,YAAY,CACrB,IAAI,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CACrE;gBACD,QAAQ,EAAE,QAAQ;aACnB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,QAAQ,GAAG;YACT;gBACE,IAAI,EAAE,aAAa;gBACnB,aAAa,EAAE,gCAAgC,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC3E,QAAQ,EAAE,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC;gBACzF,SAAS,EAAE,QAAQ;aACpB;SACF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,gCAAgC,CACvC,IAAY,EACZ,UAAmC,EACnC,OAAgC;IAEhC,OAAO,CACL,qCAAqC,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC;QACtF,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,IAAY,EACZ,UAAmC,EACnC,OAAgC,EAChC,gBAAyC;IAEzC,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;QAC/F,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,2BAA2B,CAClC,IAAY,EACZ,gBAAyC,EACzC,OAAgC,EAChC,gBAAyC;IAEzC,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAE3F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACrB,OAAO,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,iCAAiC,CACxC,IAAY,EACZ,UAAmC;IAEnC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErC,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QAC9B,KAAK,EACH,QAAQ,CAAC,IAAI,KAAK,SAAS;YACzB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,aAAsB;oBAC5B,IAAI,EAAE,0BAA0B,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;iBAC7D;aACF;QACP,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC","sourcesContent":["import { parseSync } from \"oxc-parser\";\nimport { unsupportedTopLevelJsxInitializerDiagnostic } from \"./diagnostics.js\";\nimport { type AnalyzeToIrInput, type AnalyzeToIrOutput } from \"./internal.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nimport type { ClientReferenceIr, ComponentIr, ModuleIr } from \"./ir.js\";\nimport { transformJsxToCreateElementWithOxc } from \"./oxc-transform.js\";\nimport {\n arraysEqual,\n getOxcLocation,\n getOxcLocationFromOffset,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport { assignOxcAwaitIds } from \"./oxc-await-ids.js\";\nimport {\n validateOxcAwaitCompatComponents,\n validateOxcNestedAwait,\n} from \"./oxc-await-validation.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n collectBindingNames,\n collectImportBindingNames,\n formatStatement,\n readOxcParameterName,\n} from \"./oxc-bindings.js\";\nimport {\n formatOxcBodyStatement,\n formatPreservedStatement,\n lowerOxcBodyStatementJsx,\n lowerOxcTopLevelStatement,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { collectOxcVariableInitializers } from \"./oxc-await-analysis.js\";\nimport {\n collectOxcAsyncComponentNames,\n collectOxcExportedComponents,\n collectOxcExportedFunctionNames,\n collectOxcLocalJsxReturnFunctionNames,\n collectOxcPlainComponentNames,\n hasComponentReturn,\n hasLocalJsxHelperCallReturn,\n hasOxcFunctionLikeComponentReturn,\n isOxcExportedFunctionLike,\n isOxcComponentCallExpression,\n isOxcLocalJsxHelperCallExpression,\n isJsxRoot,\n isOxcJsxComponentStatement,\n isOxcUnsupportedExportedFunction,\n readOxcPlainComponent,\n readOxcVariableComponentDeclaration,\n unwrapOxcComponentFunctionLikeInitializer,\n} from \"./oxc-component-detection.js\";\nimport {\n collectOxcClientBoundaryImportComponents,\n collectOxcCompatReactNodeComponentReferences,\n collectOxcCompatRuntimeImportComponents,\n markOxcAsyncComponentReferences,\n markOxcClientReferences,\n markOxcCompatReactNodeReferences,\n markOxcCompatRuntimeReferences,\n} from \"./oxc-component-references.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n analyzeOxcExpressionChild,\n analyzeOxcJsxNode,\n type OxcChildAnalysisContext,\n} from \"./oxc-child-analysis.js\";\nimport {\n analyzeCompatCreateElementRoot,\n collectCompatCreateElementNames,\n collectFunctionShadowedNames,\n hasLowerableCompatCreateElementReturn,\n} from \"./oxc-compat-create-element.js\";\nimport { lowerOxcDomNodeExpression } from \"./oxc-dom-lowering.js\";\nimport {\n lowerOxcCompatObjectExpression,\n lowerOxcCompatReactNodeExpression,\n lowerOxcNestedJsxExpression,\n lowerOxcServerStringExpression,\n} from \"./oxc-nested-lowering.js\";\nimport { isOxcJsxBranch, readOxcReturnExpressionFromStatement } from \"./oxc-expression-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n collectOxcReactiveDerivedFunctionNames,\n collectOxcReactiveReadAliases,\n containsOxcJsxSyntax,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { containsRawJsxInIr } from \"./oxc-raw-jsx.js\";\nimport type { AnalyzeModuleOptions, CompileTarget, Diagnostic } from \"./types.js\";\n\n/** Reports OXC analysis parity data used by compiler migration and diagnostics tests. */\nexport interface OxcParityResult {\n matches: boolean;\n oxc: {\n errors: string[];\n exportedComponents: string[];\n ir?: ModuleIr;\n usedTypescriptFallback: boolean;\n rawJsxDetected: boolean;\n };\n}\n\nconst oxcBodyLowerers: OxcBodyLowerers = createOxcBodyLowerers();\n\nfunction createOxcBodyLowerers(\n compatRuntimeImports: ReadonlyMap<string, ClientReferenceIr> = new Map(),\n): OxcBodyLowerers {\n return {\n lowerDomNodeExpression: lowerOxcDomNodeExpression,\n lowerCompatObjectExpression: lowerOxcCompatObjectExpression,\n lowerServerStringExpression: (code, expression, componentNames, target, diagnostics) =>\n lowerOxcServerStringExpression(\n code,\n expression,\n componentNames,\n target,\n diagnostics,\n compatRuntimeImports,\n ),\n };\n}\n\nfunction createOxcChildAnalysisContext(\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>,\n reactiveAliasBindings?: ReadonlyMap<string, string>,\n serverOutput?: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames?: Set<string>,\n bodyLowerers: OxcBodyLowerers = oxcBodyLowerers,\n): OxcChildAnalysisContext {\n return {\n componentNames,\n ...(componentCallNames === undefined ? {} : { componentCallNames }),\n target,\n ...(serverOutput === undefined ? {} : { serverOutput }),\n diagnostics,\n ...(bodyStatementJsx === undefined ? {} : { bodyStatementJsx }),\n ...(componentBodyBindings === undefined ? {} : { componentBodyBindings }),\n ...(reactiveAliasBindings === undefined ? {} : { reactiveAliasBindings }),\n bodyLowerers,\n lowerNestedJsxExpression: lowerOxcNestedJsxExpression,\n };\n}\n\n/** Compares OXC component discovery and IR output against parity expectations for one module. */\nexport function analyzeOxcParity(input: AnalyzeToIrInput): OxcParityResult {\n const oxc = parseSync(input.filename, input.code, {\n lang: \"tsx\",\n sourceType: \"module\",\n astType: \"ts\",\n });\n const oxcExportedComponents = collectOxcExportedComponents(oxc.program);\n const oxcOutput = analyzeOxcToIr(input.code, oxc.program, input.target, input.options);\n const rawJsxDetected = containsRawJsxInIr(oxcOutput.ir);\n\n return {\n matches:\n oxc.errors.length === 0 &&\n oxcOutput.diagnostics.length === 0 &&\n !rawJsxDetected &&\n arraysEqual(\n oxcExportedComponents,\n oxcOutput.ir.components\n .filter((component) => component.exported !== false)\n .map((component) => component.exportName),\n ),\n oxc: {\n errors: oxc.errors.map((error) => error.message),\n exportedComponents: oxcExportedComponents,\n ir: oxcOutput.ir,\n usedTypescriptFallback: false,\n rawJsxDetected,\n },\n };\n}\n\n/** Analyzes source code into compiler IR using OXC parsing and lowering. */\nexport function analyzeWithOxc(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(createCompilerModuleContextWithOxc(input), {\n target: input.target,\n ...(input.options === undefined ? {} : { options: input.options }),\n });\n}\n\n/** Analyzes a cached OXC compiler module context into compiler IR. */\nexport function analyzeCompilerModuleContextWithOxc(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n const analyzed = analyzeOxcToIr(context.code, context.program, input.target, input.options);\n\n return {\n ir: analyzed.ir,\n diagnostics: [\n ...context.parseErrors.map((error) => oxcParseErrorDiagnostic(context.code, error)),\n ...analyzed.diagnostics,\n ],\n usedTypescriptFallback: false,\n };\n}\n\nfunction oxcParseErrorDiagnostic(code: string, error: unknown): Diagnostic {\n const object = readObject(error);\n const firstLabel = readObject(readArray(object.labels)[0]);\n const loc =\n typeof firstLabel.start === \"number\"\n ? getOxcLocationFromOffset(code, firstLabel.start)\n : undefined;\n\n return {\n level: \"error\",\n code:\n object.message === \"Unexpected token\" ? \"MR_INVALID_JSX_EXPRESSION\" : \"MR_OXC_PARSE_ERROR\",\n message: typeof object.message === \"string\" ? object.message : \"Oxc parse error\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nfunction analyzeOxcToIr(\n code: string,\n program: unknown,\n target: CompileTarget,\n options?: AnalyzeModuleOptions,\n): { ir: ModuleIr; diagnostics: Diagnostic[] } {\n const body = readArray(readObject(program).body);\n const userImports: string[] = [];\n const moduleStatements: string[] = [];\n const moduleBindingNames = new Set<string>();\n const diagnostics: Diagnostic[] = [];\n const clientBoundaryImports = collectOxcClientBoundaryImportComponents(\n program,\n new Set(options?.clientBoundaryImports ?? []),\n new Set(options?.clientBoundaryFallbackImports ?? []),\n );\n const compatRuntimeImports = collectOxcCompatRuntimeImportComponents(program);\n const compatReactNodeReferences =\n options?.compatReactNodeReturnRenderMode === \"react-node\"\n ? collectOxcCompatReactNodeComponentReferences(program)\n : undefined;\n const localJsxReturnFunctionNames =\n target === \"server\" ? collectOxcLocalJsxReturnFunctionNames(program) : new Set<string>();\n // Stream emit keeps interpreting compat trees for now; only the string\n // pipeline lowers createElement calls.\n const compatCreateElementNames =\n target === \"server\" && options?.serverOutput !== \"stream\"\n ? collectCompatCreateElementNames(program)\n : new Set<string>();\n const localJsxHelperHtmlParameters =\n target === \"server\"\n ? collectLocalJsxHelperHtmlParameters(program, localJsxReturnFunctionNames)\n : new Map<string, Set<number>>();\n const bodyLowerers = createOxcBodyLowerers(compatRuntimeImports);\n const moduleRenderValueBindings = collectOxcBodyJsxBindingNames(body);\n const reactiveDerivedFunctionNames = collectOxcReactiveDerivedFunctionNames(body);\n\n for (const statement of body) {\n const object = readObject(statement);\n\n if (object.type === \"ImportDeclaration\") {\n const importCode = formatStatement(code, statement);\n const source = readObject(object.source).value;\n\n if (importCode !== \"\" && !(target === \"server\" && isCssImportSource(source))) {\n userImports.push(importCode);\n }\n for (const bindingName of collectImportBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n continue;\n }\n\n if (\n isOxcJsxComponentStatement(statement, localJsxReturnFunctionNames) ||\n isCompatCreateElementComponentStatement(code, statement, compatCreateElementNames) ||\n (options?.compatReactNodeReturn === true && isOxcExportedFunctionLike(statement))\n ) {\n const declaration = readObject(readObject(statement).declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n for (const bindingName of collectBindingNames(declaration)) {\n moduleBindingNames.add(bindingName);\n }\n }\n continue;\n } else {\n if (isOxcUnsupportedExportedFunction(statement, options, localJsxReturnFunctionNames)) {\n diagnostics.push({\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPONENT_RETURN\",\n message: \"Exported component must return a JSX element or supported React node.\",\n });\n continue;\n }\n const loweredTopLevel = lowerOxcTopLevelStatement(\n code,\n statement,\n componentNamesFromProgram(program, moduleBindingNames),\n target,\n diagnostics,\n options,\n bodyLowerers,\n );\n const formattedStatement =\n loweredTopLevel ?? formatPreservedStatement(code, statement, options);\n\n if (\n loweredTopLevel === undefined &&\n containsOxcJsxSyntax(object) &&\n options?.topLevelJsx !== \"compat-object\" &&\n options?.topLevelJsx !== \"server-string\"\n ) {\n diagnostics.push(\n unsupportedTopLevelJsxInitializerDiagnostic(getOxcLocation(code, statement)),\n );\n }\n\n if (formattedStatement !== \"\") {\n moduleStatements.push(formattedStatement);\n }\n for (const bindingName of collectBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n }\n }\n\n const componentNames = componentNamesFromProgram(program, moduleBindingNames);\n const componentCallNames =\n options?.serverOutput === \"stream\" ? componentCallNamesFromProgram(program) : undefined;\n const asyncComponentNames = collectOxcAsyncComponentNames(program);\n const components = body.flatMap((statement) =>\n analyzeOxcComponent(\n code,\n statement,\n componentNames,\n target,\n diagnostics,\n options?.bodyStatementJsx ?? \"dom-node\",\n compatCreateElementNames,\n moduleRenderValueBindings,\n options?.compatReactNodeReturn === true,\n options?.serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n );\n\n for (const component of components) {\n markOxcAsyncComponentReferences(component.root, asyncComponentNames);\n markOxcClientReferences(component.root, clientBoundaryImports);\n markOxcCompatRuntimeReferences(component.root, compatRuntimeImports);\n if (compatReactNodeReferences !== undefined) {\n markOxcCompatReactNodeReferences(component.root, compatReactNodeReferences);\n }\n validateOxcNestedAwait(component.root, diagnostics);\n validateOxcAwaitCompatComponents(component.root, diagnostics, {\n allowCompatComponents: options?.awaitCompatComponents === \"lower\",\n });\n }\n\n const ir: ModuleIr = {\n userImports,\n moduleStatements,\n moduleBindingNames: Array.from(moduleBindingNames),\n components,\n };\n\n assignOxcAwaitIds(ir);\n\n return {\n ir,\n diagnostics,\n };\n}\n\nfunction isCssImportSource(source: unknown): boolean {\n return (\n typeof source === \"string\" && /\\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source)\n );\n}\n\nfunction componentNamesFromProgram(\n program: unknown,\n moduleBindingNames: ReadonlySet<string>,\n): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program),\n ...collectOxcExportedFunctionNames(program),\n ...collectOxcPlainComponentNames(program),\n ...moduleBindingNames,\n ]);\n}\n\nfunction componentCallNamesFromProgram(program: unknown): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program).filter((name) => name !== \"default\"),\n ...collectOxcPlainComponentNames(program),\n ]);\n}\n\nfunction collectLocalJsxHelperHtmlParameters(\n program: unknown,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n): Map<string, Set<number>> {\n const parameters = new Map<string, Set<number>>();\n\n if (localJsxReturnFunctionNames.size === 0) {\n return parameters;\n }\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\"\n ? readObject(object.declaration)\n : object;\n const body = readObject(declaration.body);\n\n if (body.type !== \"BlockStatement\") {\n continue;\n }\n\n for (const returnExpression of collectOxcReturnExpressions(body)) {\n const callExpression = unwrapOxcParentheses(returnExpression);\n if (callExpression.type !== \"CallExpression\") {\n continue;\n }\n\n const callee = unwrapOxcParentheses(readObject(callExpression.callee));\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !localJsxReturnFunctionNames.has(callee.name)\n ) {\n continue;\n }\n const calleeName = callee.name;\n\n readArray(callExpression.arguments).forEach((argument, index) => {\n if (!containsOxcJsxSyntax(readObject(argument))) {\n return;\n }\n\n const indexes = parameters.get(calleeName) ?? new Set<number>();\n indexes.add(index);\n parameters.set(calleeName, indexes);\n });\n }\n }\n\n return parameters;\n}\n\nfunction collectOxcReturnExpressions(\n statement: Record<string, unknown>,\n): Record<string, unknown>[] {\n if (statement.type === \"ReturnStatement\") {\n return [unwrapOxcParentheses(readObject(statement.argument))];\n }\n\n if (statement.type === \"BlockStatement\") {\n return readArray(statement.body).flatMap((child) =>\n collectOxcReturnExpressions(readObject(child)),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return [\n ...collectOxcReturnExpressions(readObject(statement.consequent)),\n ...collectOxcReturnExpressions(readObject(statement.alternate)),\n ];\n }\n\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).flatMap((switchCase) =>\n readArray(readObject(switchCase).consequent).flatMap((child) =>\n collectOxcReturnExpressions(readObject(child)),\n ),\n );\n }\n\n return [];\n}\n\ninterface CompatCreateElementComponent {\n name: string;\n initializer: Record<string, unknown>;\n}\n\nfunction readCompatCreateElementFunctionLike(\n code: string,\n expression: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Record<string, unknown> | undefined {\n const functionLike = unwrapOxcComponentFunctionLikeInitializer(expression);\n\n return functionLike !== undefined &&\n hasLowerableCompatCreateElementReturn(code, functionLike, names)\n ? functionLike\n : undefined;\n}\n\nfunction readCompatCreateElementPlainComponent(\n code: string,\n statement: unknown,\n names: ReadonlySet<string>,\n): CompatCreateElementComponent | undefined {\n if (names.size === 0) {\n return undefined;\n }\n\n const object = readObject(statement);\n\n if (\n object.type === \"FunctionDeclaration\" &&\n hasLowerableCompatCreateElementReturn(code, object, names)\n ) {\n const id = readObject(object.id);\n return typeof id.name === \"string\" ? { name: id.name, initializer: object } : undefined;\n }\n\n if (object.type !== \"VariableDeclaration\") {\n return undefined;\n }\n\n for (const declarator of readArray(object.declarations)) {\n const declaratorObject = readObject(declarator);\n const id = readObject(declaratorObject.id);\n\n if (typeof id.name !== \"string\" || !/^[A-Z]/.test(id.name)) {\n continue;\n }\n\n const initializer = readCompatCreateElementFunctionLike(\n code,\n readObject(declaratorObject.init),\n names,\n );\n\n if (initializer !== undefined) {\n return { name: id.name, initializer };\n }\n }\n\n return undefined;\n}\n\nfunction isCompatCreateElementComponentStatement(\n code: string,\n statement: unknown,\n names: ReadonlySet<string>,\n): boolean {\n if (names.size === 0) {\n return false;\n }\n\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n return readCompatCreateElementFunctionLike(code, readObject(object.declaration), names) !== undefined;\n }\n\n if (object.type === \"ExportNamedDeclaration\") {\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"FunctionDeclaration\") {\n return hasLowerableCompatCreateElementReturn(code, declaration, names);\n }\n\n return readCompatCreateElementPlainComponent(code, declaration, names) !== undefined;\n }\n\n return readCompatCreateElementPlainComponent(code, statement, names) !== undefined;\n}\n\nfunction analyzeOxcComponent(\n code: string,\n statement: unknown,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n compatCreateElementNames: ReadonlySet<string>,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n localJsxHelperHtmlParameters: ReadonlyMap<string, ReadonlySet<number>>,\n): ComponentIr[] {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n\n if (\n declaration === undefined ||\n (!hasOxcFunctionLikeComponentReturn(declaration) &&\n !hasLowerableCompatCreateElementReturn(code, declaration, compatCreateElementNames))\n ) {\n return [];\n }\n const id = readObject(declaration.id);\n const name = typeof id.name === \"string\" ? id.name : \"DefaultExport\";\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n name,\n declaration,\n \"default\",\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n true,\n ),\n ];\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n const plainComponent =\n readOxcPlainComponent(statement) ??\n readCompatCreateElementPlainComponent(code, statement, compatCreateElementNames);\n\n if (plainComponent === undefined) {\n return [];\n }\n\n return [\n {\n ...analyzeOxcFunctionLikeComponent(\n code,\n plainComponent.name,\n plainComponent.initializer,\n plainComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n exported: false,\n },\n ];\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n const variableComponent =\n readOxcVariableComponentDeclaration(declaration) ??\n readCompatCreateElementPlainComponent(code, declaration, compatCreateElementNames);\n\n if (variableComponent === undefined) {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n variableComponent.name,\n variableComponent.initializer,\n variableComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n ];\n }\n\n if (\n declaration.type !== \"FunctionDeclaration\" ||\n (!compatReactNodeReturn &&\n !hasComponentReturn(declaration.body) &&\n !hasLocalJsxHelperCallReturn(declaration.body, localJsxReturnFunctionNames) &&\n !hasLowerableCompatCreateElementReturn(code, declaration, compatCreateElementNames))\n ) {\n return [];\n }\n\n const id = readObject(declaration.id);\n\n if (typeof id.name !== \"string\") {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n id.name,\n declaration,\n id.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n ];\n}\n\nfunction lowerOxcLocalJsxHelperCallExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyLowerers: OxcBodyLowerers,\n): string {\n if (expression.type !== \"CallExpression\") {\n return readSource(code, expression);\n }\n\n const args = readArray(expression.arguments).map((argument) => {\n const object = unwrapOxcParentheses(readObject(argument));\n return containsOxcJsxSyntax(object)\n ? (bodyLowerers.lowerServerStringExpression(\n code,\n object,\n componentNames,\n target,\n diagnostics,\n ) ?? readSource(code, argument))\n : readSource(code, argument);\n });\n\n return `${readSource(code, readObject(expression.callee))}(${args.join(\", \")})`;\n}\n\nfunction analyzeOxcFunctionLikeComponent(\n code: string,\n name: string,\n functionLike: Record<string, unknown>,\n exportName: string,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n compatCreateElementNames: ReadonlySet<string>,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n localJsxHelperHtmlParameters: ReadonlyMap<string, ReadonlySet<number>>,\n exportDefault = false,\n): ComponentIr {\n const functionBody = readObject(functionLike.body);\n const body = functionBody.type === \"BlockStatement\" ? readArray(functionBody.body) : [];\n const earlyIfRootReturn =\n bodyStatementJsx === \"compat-object\"\n ? undefined\n : findOxcEarlyIfRootReturn(body, target === \"client\");\n const rootStatement =\n earlyIfRootReturn?.branchStatements[0] ??\n (bodyStatementJsx === \"compat-object\"\n ? body.find((bodyStatement) => readObject(bodyStatement).type === \"ReturnStatement\")\n : findOxcRootStatement(body));\n const returnStatement =\n readObject(rootStatement).type === \"ReturnStatement\" ? rootStatement : undefined;\n const expressionBody = unwrapOxcParentheses(readObject(functionLike.body));\n const returnExpression =\n returnStatement === undefined\n ? expressionBody\n : unwrapOxcParentheses(readObject(readObject(returnStatement).argument));\n const parameters = readArray(functionLike.params).map((param) =>\n readOxcParameterName(code, param),\n );\n const htmlParameterNames = new Set(\n [...(localJsxHelperHtmlParameters.get(name) ?? [])]\n .map((index) => parameters[index])\n .filter((parameter): parameter is string => parameter !== undefined),\n );\n const bodyComponentNames =\n /^[a-z]/.test(name) && componentNames.has(name)\n ? new Set([...componentNames].filter((componentName) => componentName !== name))\n : componentNames;\n const bodyStatements = body\n .filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n )\n .map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n bodyComponentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n );\n const componentBodyBindings = collectOxcVariableInitializers(body);\n const reactiveAliasBindings = collectOxcReactiveReadAliases(\n code,\n body,\n reactiveDerivedFunctionNames,\n );\n const childAnalysisContext = createOxcChildAnalysisContext(\n bodyComponentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n componentBodyBindings,\n reactiveAliasBindings,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n );\n const root =\n analyzeOxcEarlyIfRootReturn(code, earlyIfRootReturn, childAnalysisContext, bodyStatementJsx) ??\n analyzeOxcSwitchRootReturn(code, rootStatement, childAnalysisContext, bodyStatementJsx) ??\n (compatCreateElementNames.size === 0\n ? undefined\n : analyzeCompatCreateElementRoot(code, returnExpression, {\n names: compatCreateElementNames,\n shadowed: collectFunctionShadowedNames(functionLike, compatCreateElementNames),\n })) ??\n (isJsxRoot(returnExpression.type) || returnExpression.type === \"JSXFragment\"\n ? analyzeOxcJsxNode(code, returnExpression, childAnalysisContext)\n : isOxcComponentCallExpression(returnExpression)\n ? analyzeOxcComponentCallExpression(code, returnExpression)\n : isOxcLocalJsxHelperCallExpression(returnExpression, localJsxReturnFunctionNames)\n ? {\n kind: \"expr\" as const,\n code: normalizeOxcExpressionCode(\n bodyStatementJsx === \"server-string\"\n ? lowerOxcLocalJsxHelperCallExpressionCode(\n code,\n returnExpression,\n bodyComponentNames,\n target,\n diagnostics,\n bodyLowerers,\n )\n : readSource(code, returnExpression),\n ),\n renderMode: \"html\" as const,\n }\n : (analyzeOxcDynamicRootReturn(\n code,\n returnExpression,\n childAnalysisContext,\n bodyStatementJsx,\n ) ?? {\n kind: \"expr\" as const,\n code: normalizeOxcExpressionCode(\n compatReactNodeReturn\n ? (lowerOxcCompatReactNodeExpression(\n code,\n returnExpression,\n componentNames,\n target,\n diagnostics,\n ) ??\n stripOxcGeneratedImports(\n transformJsxToCreateElementWithOxc(readSource(code, returnExpression)),\n ))\n : readSource(code, returnExpression),\n ),\n ...(compatReactNodeReturn ? { renderMode: \"react-node\" as const } : {}),\n }));\n markOxcRenderValueExpressions(\n [root],\n new Set([\n ...moduleRenderValueBindings,\n ...collectOxcBodyJsxBindingNames(\n body.filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n ),\n ),\n ...htmlParameterNames,\n ]),\n bodyStatementJsx === \"server-string\" ? \"html\" : \"dynamic\",\n );\n\n return {\n name,\n exportName,\n ...(exportDefault ? { exportDefault: true } : {}),\n ...(functionLike.async === true ? { async: true } : {}),\n parameters,\n bodyStatements,\n bindingNames: [...parameters, ...body.flatMap(collectBindingNames)],\n root,\n };\n}\n\ninterface OxcEarlyIfRootReturn {\n branchStatements: unknown[];\n fallthroughStatement: unknown;\n fallthroughBodyStatements: unknown[];\n branches: Array<{\n test: Record<string, unknown>;\n consequent: Record<string, unknown>;\n }>;\n fallthrough: Record<string, unknown>;\n}\n\nfunction findOxcEarlyIfRootReturn(\n body: readonly unknown[],\n allowFallthroughBodyStatements: boolean,\n): OxcEarlyIfRootReturn | undefined {\n for (let index = 0; index < body.length - 1; index += 1) {\n const branches: OxcEarlyIfRootReturn[\"branches\"] = [];\n const branchStatements: unknown[] = [];\n let cursor = index;\n\n while (cursor < body.length - 1) {\n const statement = readObject(body[cursor]);\n\n if (statement.type !== \"IfStatement\" || readObject(statement.alternate).type !== undefined) {\n break;\n }\n\n const consequent = readOxcPureReturnExpressionFromStatement(statement.consequent);\n\n if (consequent === undefined || !isOxcRootReturnExpression(consequent)) {\n break;\n }\n\n branches.push({\n test: readObject(statement.test),\n consequent,\n });\n branchStatements.push(body[cursor]);\n cursor += 1;\n }\n\n if (branches.length === 0) {\n continue;\n }\n\n const fallthroughStart = cursor;\n let fallthroughStatement = body[cursor];\n const fallthrough = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (fallthrough === undefined && allowFallthroughBodyStatements) {\n while (cursor < body.length) {\n fallthroughStatement = body[cursor];\n const candidate = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (candidate !== undefined) {\n if (!isOxcRootReturnExpression(candidate)) {\n break;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: body.slice(fallthroughStart, cursor),\n fallthroughStatement,\n branches,\n fallthrough: candidate,\n };\n }\n\n cursor += 1;\n }\n }\n\n if (fallthrough === undefined || !isOxcRootReturnExpression(fallthrough)) {\n continue;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: [],\n fallthroughStatement,\n branches,\n fallthrough,\n };\n }\n\n return undefined;\n}\n\nfunction readOxcPureReturnExpressionFromStatement(\n statement: unknown,\n): Record<string, unknown> | undefined {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return readOxcReturnExpressionFromStatement(statement);\n }\n\n if (object.type !== \"BlockStatement\") {\n return undefined;\n }\n\n const statements = readArray(object.body);\n if (statements.length !== 1) {\n return undefined;\n }\n\n return readOxcReturnExpressionFromStatement(statements[0]);\n}\n\nfunction isOxcRootReturnExpression(expression: Record<string, unknown>): boolean {\n return isOxcEmptyRootReturn(expression) || isOxcRenderableRootReturn(expression);\n}\n\nfunction isOxcEmptyRootReturn(expression: Record<string, unknown>): boolean {\n return expression.type === \"Literal\" && (expression.value === null || expression.value === false);\n}\n\nfunction isOxcRenderableRootReturn(expression: Record<string, unknown>): boolean {\n return (\n isJsxRoot(expression.type) ||\n expression.type === \"JSXFragment\" ||\n isOxcComponentCallExpression(expression) ||\n analyzeOxcDynamicRootReturnShape(expression)\n );\n}\n\nfunction analyzeOxcDynamicRootReturnShape(expression: Record<string, unknown>): boolean {\n if (expression.type === \"ConditionalExpression\") {\n return true;\n }\n\n return expression.type === \"LogicalExpression\" && isOxcJsxBranch(readObject(expression.right));\n}\n\nfunction findOxcRootStatement(body: readonly unknown[]): unknown | undefined {\n return body.find((bodyStatement) => {\n const object = readObject(bodyStatement);\n return object.type === \"ReturnStatement\" || isOxcSwitchRootReturnStatement(object);\n });\n}\n\nfunction isOxcSwitchRootReturnStatement(statement: Record<string, unknown>): boolean {\n if (statement.type !== \"SwitchStatement\") {\n return false;\n }\n\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some(\n (child) => readObject(child).type === \"ReturnStatement\",\n ),\n );\n}\n\nfunction analyzeOxcSwitchRootReturn(\n code: string,\n statement: unknown,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const object = readObject(statement);\n\n if (object.type !== \"SwitchStatement\") {\n return undefined;\n }\n\n const discriminant = readSource(code, object.discriminant);\n const cases = readArray(object.cases).map((switchCase) => {\n const caseObject = readObject(switchCase);\n const returnStatement = readArray(caseObject.consequent)\n .map(readObject)\n .find((child) => child.type === \"ReturnStatement\");\n const argument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n return {\n test: readObject(caseObject.test),\n children:\n argument === undefined\n ? undefined\n : analyzeOxcDynamicRootBranch(code, argument, context, bodyStatementJsx),\n };\n });\n\n if (cases.some((entry) => entry.children === undefined)) {\n return undefined;\n }\n\n const defaultCase = cases.find((entry) => entry.test.type === undefined);\n let fallback = defaultCase?.children ?? [];\n\n for (const entry of [...cases].reverse()) {\n if (entry.test.type === undefined) {\n continue;\n }\n\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: `${discriminant} === ${readSource(code, entry.test)}`,\n whenTrue: entry.children ?? [],\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction analyzeOxcEarlyIfRootReturn(\n code: string,\n earlyIfRootReturn: OxcEarlyIfRootReturn | undefined,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n if (earlyIfRootReturn === undefined) {\n return undefined;\n }\n\n let fallback = analyzeOxcDynamicRootBranch(\n code,\n earlyIfRootReturn.fallthrough,\n context,\n bodyStatementJsx,\n );\n\n if (earlyIfRootReturn.fallthroughBodyStatements.length > 0) {\n fallback = [\n {\n kind: \"fragment\",\n bodyStatements: earlyIfRootReturn.fallthroughBodyStatements.map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n ),\n children: fallback,\n },\n ];\n }\n\n for (const branch of [...earlyIfRootReturn.branches].reverse()) {\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveRootConditionCode(code, branch.test, context),\n whenTrue: analyzeOxcDynamicRootBranch(code, branch.consequent, context, bodyStatementJsx),\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction readOxcReactiveRootConditionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction analyzeOxcDynamicRootBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"][] {\n if (expression.type === \"Literal\" && (expression.value === null || expression.value === false)) {\n return [];\n }\n\n return analyzeOxcExpressionChild(code, expression, context, bodyStatementJsx);\n}\n\nfunction analyzeOxcDynamicRootReturn(\n code: string,\n returnExpression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const nodes = analyzeOxcExpressionChild(code, returnExpression, context, bodyStatementJsx);\n\n if (nodes.length !== 1) {\n return undefined;\n }\n\n const [root] = nodes;\n return root?.kind === \"conditional\" ? root : undefined;\n}\n\nfunction analyzeOxcComponentCallExpression(\n code: string,\n expression: Record<string, unknown>,\n): ComponentIr[\"root\"] {\n const callee = readObject(expression.callee);\n const args = readArray(expression.arguments);\n const firstArg = readObject(args[0]);\n\n return {\n kind: \"component\",\n name: readSource(code, callee),\n props:\n firstArg.type === undefined\n ? []\n : [\n {\n kind: \"spread-prop\" as const,\n code: normalizeOxcExpressionCode(readSource(code, firstArg)),\n },\n ],\n children: [],\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oxc.js","sourceRoot":"","sources":["../src/oxc.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseSync } from \"oxc-parser\";\nimport { unsupportedTopLevelJsxInitializerDiagnostic } from \"./diagnostics.js\";\nimport { type AnalyzeToIrInput, type AnalyzeToIrOutput } from \"./internal.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nimport type { ClientReferenceIr, ComponentIr, ModuleIr } from \"./ir.js\";\nimport { transformJsxToCreateElementWithOxc } from \"./oxc-transform.js\";\nimport {\n arraysEqual,\n getOxcLocation,\n getOxcLocationFromOffset,\n readArray,\n readObject,\n readSource,\n unwrapOxcParentheses,\n} from \"./oxc-node-utils.js\";\nimport { assignOxcAwaitIds } from \"./oxc-await-ids.js\";\nimport {\n validateOxcAwaitCompatComponents,\n validateOxcNestedAwait,\n} from \"./oxc-await-validation.js\";\nimport type { OxcBodyStatementJsxMode } from \"./oxc-analysis-types.js\";\nimport {\n collectBindingNames,\n collectImportBindingNames,\n formatStatement,\n readOxcParameterName,\n} from \"./oxc-bindings.js\";\nimport {\n formatOxcBodyStatement,\n formatPreservedStatement,\n lowerOxcBodyStatementJsx,\n lowerOxcTopLevelStatement,\n type OxcBodyLowerers,\n} from \"./oxc-body-lowering.js\";\nimport { collectOxcVariableInitializers } from \"./oxc-await-analysis.js\";\nimport {\n collectOxcAsyncComponentNames,\n collectOxcExportedComponents,\n collectOxcExportedFunctionNames,\n collectOxcLocalJsxReturnFunctionNames,\n collectOxcPlainComponentNames,\n hasComponentReturn,\n hasLocalJsxHelperCallReturn,\n hasOxcFunctionLikeComponentReturn,\n isOxcExportedFunctionLike,\n isOxcComponentCallExpression,\n isOxcLocalJsxHelperCallExpression,\n isJsxRoot,\n isOxcJsxComponentStatement,\n isOxcUnsupportedExportedFunction,\n readOxcPlainComponent,\n readOxcVariableComponentDeclaration,\n unwrapOxcComponentFunctionLikeInitializer,\n} from \"./oxc-component-detection.js\";\nimport {\n collectOxcClientBoundaryImportComponents,\n collectOxcCompatReactNodeComponentReferences,\n collectOxcCompatRuntimeImportComponents,\n markOxcAsyncComponentReferences,\n markOxcClientReferences,\n markOxcCompatReactNodeReferences,\n markOxcCompatRuntimeReferences,\n} from \"./oxc-component-references.js\";\nimport { normalizeOxcExpressionCode, stripOxcGeneratedImports } from \"./oxc-code-utils.js\";\nimport {\n analyzeOxcExpressionChild,\n analyzeOxcJsxNode,\n type OxcChildAnalysisContext,\n} from \"./oxc-child-analysis.js\";\nimport {\n analyzeCompatCreateElementFunctionRoot,\n analyzeCompatCreateElementRoot,\n collectCompatCreateElementNames,\n collectCompatRenderToStringNames,\n collectFunctionShadowedNames,\n hasLowerableCompatCreateElementReturn,\n} from \"./oxc-compat-create-element.js\";\nimport { lowerOxcDomNodeExpression } from \"./oxc-dom-lowering.js\";\nimport {\n lowerOxcCompatObjectExpression,\n lowerOxcCompatReactNodeExpression,\n lowerOxcNestedJsxExpression,\n lowerOxcServerStringExpression,\n} from \"./oxc-nested-lowering.js\";\nimport { isOxcJsxBranch, readOxcReturnExpressionFromStatement } from \"./oxc-expression-utils.js\";\nimport {\n collectOxcBodyJsxBindingNames,\n collectOxcReactiveDerivedFunctionNames,\n collectOxcReactiveReadAliases,\n containsOxcJsxSyntax,\n markOxcRenderValueExpressions,\n rewriteOxcReactiveAliasExpressionCode,\n} from \"./oxc-render-values.js\";\nimport { containsRawJsxInIr } from \"./oxc-raw-jsx.js\";\nimport type { AnalyzeModuleOptions, CompileTarget, Diagnostic } from \"./types.js\";\n\n/** Reports OXC analysis parity data used by compiler migration and diagnostics tests. */\nexport interface OxcParityResult {\n matches: boolean;\n oxc: {\n errors: string[];\n exportedComponents: string[];\n ir?: ModuleIr;\n usedTypescriptFallback: boolean;\n rawJsxDetected: boolean;\n };\n}\n\nconst oxcBodyLowerers: OxcBodyLowerers = createOxcBodyLowerers();\n\nfunction createOxcBodyLowerers(\n compatRuntimeImports: ReadonlyMap<string, ClientReferenceIr> = new Map(),\n): OxcBodyLowerers {\n return {\n lowerDomNodeExpression: lowerOxcDomNodeExpression,\n lowerCompatObjectExpression: lowerOxcCompatObjectExpression,\n lowerServerStringExpression: (code, expression, componentNames, target, diagnostics) =>\n lowerOxcServerStringExpression(\n code,\n expression,\n componentNames,\n target,\n diagnostics,\n compatRuntimeImports,\n ),\n };\n}\n\nfunction createOxcChildAnalysisContext(\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx?: OxcBodyStatementJsxMode,\n componentBodyBindings?: ReadonlyMap<string, Record<string, unknown>>,\n reactiveAliasBindings?: ReadonlyMap<string, string>,\n serverOutput?: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames?: Set<string>,\n bodyLowerers: OxcBodyLowerers = oxcBodyLowerers,\n): OxcChildAnalysisContext {\n return {\n componentNames,\n ...(componentCallNames === undefined ? {} : { componentCallNames }),\n target,\n ...(serverOutput === undefined ? {} : { serverOutput }),\n diagnostics,\n ...(bodyStatementJsx === undefined ? {} : { bodyStatementJsx }),\n ...(componentBodyBindings === undefined ? {} : { componentBodyBindings }),\n ...(reactiveAliasBindings === undefined ? {} : { reactiveAliasBindings }),\n bodyLowerers,\n lowerNestedJsxExpression: lowerOxcNestedJsxExpression,\n };\n}\n\n/** Compares OXC component discovery and IR output against parity expectations for one module. */\nexport function analyzeOxcParity(input: AnalyzeToIrInput): OxcParityResult {\n const oxc = parseSync(input.filename, input.code, {\n lang: \"tsx\",\n sourceType: \"module\",\n astType: \"ts\",\n });\n const oxcExportedComponents = collectOxcExportedComponents(oxc.program);\n const oxcOutput = analyzeOxcToIr(input.code, oxc.program, input.target, input.options);\n const rawJsxDetected = containsRawJsxInIr(oxcOutput.ir);\n\n return {\n matches:\n oxc.errors.length === 0 &&\n oxcOutput.diagnostics.length === 0 &&\n !rawJsxDetected &&\n arraysEqual(\n oxcExportedComponents,\n oxcOutput.ir.components\n .filter((component) => component.exported !== false)\n .map((component) => component.exportName),\n ),\n oxc: {\n errors: oxc.errors.map((error) => error.message),\n exportedComponents: oxcExportedComponents,\n ir: oxcOutput.ir,\n usedTypescriptFallback: false,\n rawJsxDetected,\n },\n };\n}\n\n/** Analyzes source code into compiler IR using OXC parsing and lowering. */\nexport function analyzeWithOxc(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(createCompilerModuleContextWithOxc(input), {\n target: input.target,\n ...(input.options === undefined ? {} : { options: input.options }),\n });\n}\n\n/** Analyzes a cached OXC compiler module context into compiler IR. */\nexport function analyzeCompilerModuleContextWithOxc(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n const analyzed = analyzeOxcToIr(context.code, context.program, input.target, input.options);\n\n return {\n ir: analyzed.ir,\n diagnostics: [\n ...context.parseErrors.map((error) => oxcParseErrorDiagnostic(context.code, error)),\n ...analyzed.diagnostics,\n ],\n usedTypescriptFallback: false,\n };\n}\n\nfunction oxcParseErrorDiagnostic(code: string, error: unknown): Diagnostic {\n const object = readObject(error);\n const firstLabel = readObject(readArray(object.labels)[0]);\n const loc =\n typeof firstLabel.start === \"number\"\n ? getOxcLocationFromOffset(code, firstLabel.start)\n : undefined;\n\n return {\n level: \"error\",\n code:\n object.message === \"Unexpected token\" ? \"MR_INVALID_JSX_EXPRESSION\" : \"MR_OXC_PARSE_ERROR\",\n message: typeof object.message === \"string\" ? object.message : \"Oxc parse error\",\n ...(loc === undefined ? {} : { loc }),\n };\n}\n\nfunction analyzeOxcToIr(\n code: string,\n program: unknown,\n target: CompileTarget,\n options?: AnalyzeModuleOptions,\n): { ir: ModuleIr; diagnostics: Diagnostic[] } {\n const body = readArray(readObject(program).body);\n const userImports: string[] = [];\n const moduleStatements: string[] = [];\n const moduleBindingNames = new Set<string>();\n const diagnostics: Diagnostic[] = [];\n const clientBoundaryImports = collectOxcClientBoundaryImportComponents(\n program,\n new Set(options?.clientBoundaryImports ?? []),\n new Set(options?.clientBoundaryFallbackImports ?? []),\n );\n const compatRuntimeImports = collectOxcCompatRuntimeImportComponents(program);\n const compatReactNodeReferences =\n options?.compatReactNodeReturnRenderMode === \"react-node\"\n ? collectOxcCompatReactNodeComponentReferences(program)\n : undefined;\n const localJsxReturnFunctionNames =\n target === \"server\" ? collectOxcLocalJsxReturnFunctionNames(program) : new Set<string>();\n const compatCreateElementNames =\n target === \"server\" ? collectCompatCreateElementNames(program) : new Set<string>();\n const compatRenderToStringNames =\n target === \"server\" ? collectCompatRenderToStringNames(program) : new Set<string>();\n const compatCreateElementLocalFunctionLikes =\n target === \"server\"\n ? collectCompatCreateElementLocalFunctionLikes(program)\n : new Map<string, Record<string, unknown>>();\n const compatRenderToStringLowerableTargets =\n target === \"server\"\n ? collectCompatRenderToStringLowerableTargets(\n code,\n body,\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n )\n : new Set<string>();\n const localJsxHelperHtmlParameters =\n target === \"server\"\n ? collectLocalJsxHelperHtmlParameters(program, localJsxReturnFunctionNames)\n : new Map<string, Set<number>>();\n const bodyLowerers = createOxcBodyLowerers(compatRuntimeImports);\n const moduleRenderValueBindings = collectOxcBodyJsxBindingNames(body);\n const reactiveDerivedFunctionNames = collectOxcReactiveDerivedFunctionNames(body);\n\n for (const statement of body) {\n const object = readObject(statement);\n\n if (object.type === \"ImportDeclaration\") {\n const importCode = formatStatement(code, statement);\n const source = readObject(object.source).value;\n\n if (importCode !== \"\" && !(target === \"server\" && isCssImportSource(source))) {\n userImports.push(importCode);\n }\n for (const bindingName of collectImportBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n continue;\n }\n\n if (\n isOxcJsxComponentStatement(statement, localJsxReturnFunctionNames) ||\n isCompatCreateElementComponentStatement(\n code,\n statement,\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n compatRenderToStringLowerableTargets,\n options?.serverOutput,\n ) ||\n (options?.compatReactNodeReturn === true && isOxcExportedFunctionLike(statement))\n ) {\n const declaration = readObject(readObject(statement).declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n for (const bindingName of collectBindingNames(declaration)) {\n moduleBindingNames.add(bindingName);\n }\n }\n continue;\n } else {\n if (isOxcUnsupportedExportedFunction(statement, options, localJsxReturnFunctionNames)) {\n diagnostics.push({\n level: \"error\",\n code: \"MR_UNSUPPORTED_COMPONENT_RETURN\",\n message: \"Exported component must return a JSX element or supported React node.\",\n });\n continue;\n }\n const loweredTopLevel = lowerOxcTopLevelStatement(\n code,\n statement,\n componentNamesFromProgram(program, moduleBindingNames),\n target,\n diagnostics,\n options,\n bodyLowerers,\n );\n const formattedStatement =\n loweredTopLevel ?? formatPreservedStatement(code, statement, options);\n\n if (\n loweredTopLevel === undefined &&\n containsOxcJsxSyntax(object) &&\n options?.topLevelJsx !== \"compat-object\" &&\n options?.topLevelJsx !== \"server-string\"\n ) {\n diagnostics.push(\n unsupportedTopLevelJsxInitializerDiagnostic(getOxcLocation(code, statement)),\n );\n }\n\n if (formattedStatement !== \"\") {\n moduleStatements.push(formattedStatement);\n }\n for (const bindingName of collectBindingNames(statement)) {\n moduleBindingNames.add(bindingName);\n }\n }\n }\n\n const componentNames = componentNamesFromProgram(program, moduleBindingNames);\n const componentCallNames =\n options?.serverOutput === \"stream\" ? componentCallNamesFromProgram(program) : undefined;\n const asyncComponentNames = collectOxcAsyncComponentNames(program);\n const components = body.flatMap((statement) =>\n analyzeOxcComponent(\n code,\n statement,\n componentNames,\n target,\n diagnostics,\n options?.bodyStatementJsx ?? \"dom-node\",\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n compatRenderToStringLowerableTargets,\n moduleRenderValueBindings,\n options?.compatReactNodeReturn === true,\n options?.serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n );\n\n for (const component of components) {\n markOxcAsyncComponentReferences(component.root, asyncComponentNames);\n markOxcClientReferences(component.root, clientBoundaryImports);\n markOxcCompatRuntimeReferences(component.root, compatRuntimeImports);\n if (compatReactNodeReferences !== undefined) {\n markOxcCompatReactNodeReferences(component.root, compatReactNodeReferences);\n }\n validateOxcNestedAwait(component.root, diagnostics);\n validateOxcAwaitCompatComponents(component.root, diagnostics, {\n allowCompatComponents: options?.awaitCompatComponents === \"lower\",\n });\n }\n\n const ir: ModuleIr = {\n userImports,\n moduleStatements,\n moduleBindingNames: Array.from(moduleBindingNames),\n components,\n };\n\n assignOxcAwaitIds(ir);\n\n return {\n ir,\n diagnostics,\n };\n}\n\nfunction isCssImportSource(source: unknown): boolean {\n return (\n typeof source === \"string\" && /\\.(?:css|pcss|postcss|scss|sass|less|styl|stylus)$/u.test(source)\n );\n}\n\nfunction componentNamesFromProgram(\n program: unknown,\n moduleBindingNames: ReadonlySet<string>,\n): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program),\n ...collectOxcExportedFunctionNames(program),\n ...collectOxcPlainComponentNames(program),\n ...moduleBindingNames,\n ]);\n}\n\nfunction componentCallNamesFromProgram(program: unknown): Set<string> {\n return new Set([\n ...collectOxcExportedComponents(program).filter((name) => name !== \"default\"),\n ...collectOxcPlainComponentNames(program),\n ]);\n}\n\nfunction collectLocalJsxHelperHtmlParameters(\n program: unknown,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n): Map<string, Set<number>> {\n const parameters = new Map<string, Set<number>>();\n\n if (localJsxReturnFunctionNames.size === 0) {\n return parameters;\n }\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\"\n ? readObject(object.declaration)\n : object;\n const body = readObject(declaration.body);\n\n if (body.type !== \"BlockStatement\") {\n continue;\n }\n\n for (const returnExpression of collectOxcReturnExpressions(body)) {\n const callExpression = unwrapOxcParentheses(returnExpression);\n if (callExpression.type !== \"CallExpression\") {\n continue;\n }\n\n const callee = unwrapOxcParentheses(readObject(callExpression.callee));\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !localJsxReturnFunctionNames.has(callee.name)\n ) {\n continue;\n }\n const calleeName = callee.name;\n\n readArray(callExpression.arguments).forEach((argument, index) => {\n if (!containsOxcJsxSyntax(readObject(argument))) {\n return;\n }\n\n const indexes = parameters.get(calleeName) ?? new Set<number>();\n indexes.add(index);\n parameters.set(calleeName, indexes);\n });\n }\n }\n\n return parameters;\n}\n\nfunction collectOxcReturnExpressions(\n statement: Record<string, unknown>,\n): Record<string, unknown>[] {\n if (statement.type === \"ReturnStatement\") {\n return [unwrapOxcParentheses(readObject(statement.argument))];\n }\n\n if (statement.type === \"BlockStatement\") {\n return readArray(statement.body).flatMap((child) =>\n collectOxcReturnExpressions(readObject(child)),\n );\n }\n\n if (statement.type === \"IfStatement\") {\n return [\n ...collectOxcReturnExpressions(readObject(statement.consequent)),\n ...collectOxcReturnExpressions(readObject(statement.alternate)),\n ];\n }\n\n if (statement.type === \"SwitchStatement\") {\n return readArray(statement.cases).flatMap((switchCase) =>\n readArray(readObject(switchCase).consequent).flatMap((child) =>\n collectOxcReturnExpressions(readObject(child)),\n ),\n );\n }\n\n return [];\n}\n\ninterface CompatCreateElementComponent {\n name: string;\n initializer: Record<string, unknown>;\n}\n\nfunction readCompatCreateElementFunctionLike(\n code: string,\n expression: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Record<string, unknown> | undefined {\n const functionLike = unwrapOxcComponentFunctionLikeInitializer(expression);\n\n return functionLike !== undefined &&\n hasLowerableCompatCreateElementReturn(code, functionLike, names)\n ? functionLike\n : undefined;\n}\n\nfunction readCompatCreateElementPlainComponent(\n code: string,\n statement: unknown,\n names: ReadonlySet<string>,\n): CompatCreateElementComponent | undefined {\n if (names.size === 0) {\n return undefined;\n }\n\n const object = readObject(statement);\n\n if (\n object.type === \"FunctionDeclaration\" &&\n hasLowerableCompatCreateElementReturn(code, object, names)\n ) {\n const id = readObject(object.id);\n return typeof id.name === \"string\" ? { name: id.name, initializer: object } : undefined;\n }\n\n if (object.type !== \"VariableDeclaration\") {\n return undefined;\n }\n\n for (const declarator of readArray(object.declarations)) {\n const declaratorObject = readObject(declarator);\n const id = readObject(declaratorObject.id);\n\n if (typeof id.name !== \"string\" || !/^[A-Z]/.test(id.name)) {\n continue;\n }\n\n const initializer = readCompatCreateElementFunctionLike(\n code,\n readObject(declaratorObject.init),\n names,\n );\n\n if (initializer !== undefined) {\n return { name: id.name, initializer };\n }\n }\n\n return undefined;\n}\n\nfunction collectCompatCreateElementLocalFunctionLikes(\n program: unknown,\n): Map<string, Record<string, unknown>> {\n const functionLikes = new Map<string, Record<string, unknown>>();\n\n for (const statement of readArray(readObject(program).body)) {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" ? readObject(object.declaration) : object;\n\n if (declaration.type === \"FunctionDeclaration\") {\n const id = readObject(declaration.id);\n\n if (typeof id.name === \"string\") {\n functionLikes.set(id.name, declaration);\n }\n continue;\n }\n\n if (declaration.type !== \"VariableDeclaration\") {\n continue;\n }\n\n for (const declarator of readArray(declaration.declarations)) {\n const declaratorObject = readObject(declarator);\n const id = readObject(declaratorObject.id);\n const initializer = unwrapOxcComponentFunctionLikeInitializer(\n readObject(declaratorObject.init),\n );\n\n if (typeof id.name === \"string\" && initializer !== undefined) {\n functionLikes.set(id.name, initializer);\n }\n }\n }\n\n return functionLikes;\n}\n\nfunction collectCompatRenderToStringLowerableTargets(\n code: string,\n body: readonly unknown[],\n createElementNames: ReadonlySet<string>,\n renderToStringNames: ReadonlySet<string>,\n localFunctionLikes: ReadonlyMap<string, Record<string, unknown>>,\n): Set<string> {\n const targets = new Set<string>();\n\n if (createElementNames.size === 0 || renderToStringNames.size === 0) {\n return targets;\n }\n\n for (const statement of body) {\n const functionLike = unwrapOxcStatementFunctionLike(statement);\n\n if (functionLike === undefined) {\n continue;\n }\n\n const targetName = readCompatRenderToStringWrapperTargetName(\n code,\n functionLike,\n renderToStringNames,\n );\n const targetFunctionLike =\n targetName === undefined ? undefined : localFunctionLikes.get(targetName);\n\n if (\n targetName !== undefined &&\n targetFunctionLike !== undefined &&\n analyzeCompatCreateElementFunctionRoot(code, targetFunctionLike, createElementNames) !==\n undefined\n ) {\n targets.add(targetName);\n }\n }\n\n return targets;\n}\n\nfunction unwrapOxcStatementFunctionLike(statement: unknown): Record<string, unknown> | undefined {\n const object = readObject(statement);\n const declaration =\n object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\"\n ? readObject(object.declaration)\n : object;\n\n if (declaration.type === \"FunctionDeclaration\") {\n return declaration;\n }\n\n if (declaration.type !== \"VariableDeclaration\") {\n return unwrapOxcComponentFunctionLikeInitializer(declaration);\n }\n\n for (const declarator of readArray(declaration.declarations)) {\n const initializer = unwrapOxcComponentFunctionLikeInitializer(\n readObject(readObject(declarator).init),\n );\n\n if (initializer !== undefined) {\n return initializer;\n }\n }\n\n return undefined;\n}\n\nfunction readCompatRenderToStringWrapperTargetName(\n code: string,\n functionLike: Record<string, unknown>,\n renderToStringNames: ReadonlySet<string>,\n): string | undefined {\n const expression = readCompatRenderToStringWrapperReturnExpression(functionLike);\n\n if (expression === undefined) {\n return undefined;\n }\n\n return readCompatRenderToStringTargetName(\n expression,\n renderToStringNames,\n collectFunctionShadowedNames(functionLike, renderToStringNames),\n );\n}\n\nfunction readCompatRenderToStringWrapperReturnExpression(\n functionLike: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const body = unwrapOxcParentheses(readObject(functionLike.body));\n\n if (body.type !== \"BlockStatement\") {\n return body;\n }\n\n for (const statement of readArray(body.body)) {\n const statementObject = readObject(statement);\n\n if (statementObject.type === \"ReturnStatement\") {\n return unwrapOxcParentheses(readObject(statementObject.argument));\n }\n }\n\n return undefined;\n}\n\nfunction readCompatRenderToStringTargetName(\n expression: Record<string, unknown>,\n renderToStringNames: ReadonlySet<string>,\n shadowedNames: ReadonlySet<string>,\n): string | undefined {\n if (\n renderToStringNames.size === 0 ||\n expression.type !== \"CallExpression\" ||\n expression.optional === true\n ) {\n return undefined;\n }\n\n const callee = unwrapOxcParentheses(readObject(expression.callee));\n\n if (\n callee.type !== \"Identifier\" ||\n typeof callee.name !== \"string\" ||\n !renderToStringNames.has(callee.name) ||\n shadowedNames.has(callee.name)\n ) {\n return undefined;\n }\n\n const args = readArray(expression.arguments);\n\n if (args.length !== 1) {\n return undefined;\n }\n\n const target = unwrapOxcParentheses(readObject(args[0]));\n\n return target.type === \"Identifier\" && typeof target.name === \"string\" ? target.name : undefined;\n}\n\nfunction hasCompatRenderToStringWrapperReturn(\n code: string,\n functionLike: Record<string, unknown>,\n renderToStringNames: ReadonlySet<string>,\n): boolean {\n return (\n readCompatRenderToStringWrapperTargetName(code, functionLike, renderToStringNames) !== undefined\n );\n}\n\nfunction analyzeCompatRenderToStringWrapperRoot(\n code: string,\n functionLike: Record<string, unknown>,\n returnExpression: Record<string, unknown>,\n createElementNames: ReadonlySet<string>,\n renderToStringNames: ReadonlySet<string>,\n localFunctionLikes: ReadonlyMap<string, Record<string, unknown>>,\n): ComponentIr[\"root\"] | undefined {\n const targetName = readCompatRenderToStringTargetName(\n returnExpression,\n renderToStringNames,\n collectFunctionShadowedNames(functionLike, renderToStringNames),\n );\n\n if (targetName === undefined) {\n return undefined;\n }\n\n const targetFunctionLike = localFunctionLikes.get(targetName);\n const lowered =\n targetFunctionLike === undefined\n ? undefined\n : analyzeCompatCreateElementFunctionRoot(code, targetFunctionLike, createElementNames);\n\n if (lowered !== undefined) {\n return lowered;\n }\n\n return {\n kind: \"expr\",\n code: normalizeOxcExpressionCode(readSource(code, returnExpression)),\n renderMode: \"html\",\n };\n}\n\nfunction isCompatCreateElementComponentStatement(\n code: string,\n statement: unknown,\n names: ReadonlySet<string>,\n renderToStringNames: ReadonlySet<string>,\n localFunctionLikes: ReadonlyMap<string, Record<string, unknown>>,\n renderToStringLowerableTargets: ReadonlySet<string>,\n serverOutput?: AnalyzeModuleOptions[\"serverOutput\"],\n): boolean {\n if (names.size === 0 && renderToStringNames.size === 0) {\n return false;\n }\n\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const functionLike = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n\n return (\n readCompatCreateElementFunctionLike(code, readObject(object.declaration), names) !==\n undefined ||\n (functionLike !== undefined &&\n hasCompatRenderToStringWrapperReturn(code, functionLike, renderToStringNames))\n );\n }\n\n if (object.type === \"ExportNamedDeclaration\") {\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"FunctionDeclaration\") {\n return (\n hasLowerableCompatCreateElementReturn(code, declaration, names) ||\n hasCompatRenderToStringWrapperReturn(code, declaration, renderToStringNames)\n );\n }\n\n return readCompatCreateElementPlainComponent(code, declaration, names) !== undefined;\n }\n\n const plainComponent = readCompatCreateElementPlainComponent(code, statement, names);\n\n if (serverOutput === \"stream\") {\n return (\n plainComponent !== undefined &&\n renderToStringLowerableTargets.has(plainComponent.name) &&\n localFunctionLikes.get(plainComponent.name) === plainComponent.initializer\n );\n }\n\n if (plainComponent !== undefined) {\n return true;\n }\n\n const functionLike = unwrapOxcStatementFunctionLike(statement);\n\n if (functionLike === undefined) {\n return false;\n }\n\n return hasCompatRenderToStringWrapperReturn(code, functionLike, renderToStringNames);\n}\n\nfunction analyzeOxcComponent(\n code: string,\n statement: unknown,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n compatCreateElementNames: ReadonlySet<string>,\n compatRenderToStringNames: ReadonlySet<string>,\n compatCreateElementLocalFunctionLikes: ReadonlyMap<string, Record<string, unknown>>,\n compatRenderToStringLowerableTargets: ReadonlySet<string>,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n localJsxHelperHtmlParameters: ReadonlyMap<string, ReadonlySet<number>>,\n): ComponentIr[] {\n const object = readObject(statement);\n\n if (object.type === \"ExportDefaultDeclaration\") {\n const declaration = unwrapOxcComponentFunctionLikeInitializer(readObject(object.declaration));\n\n if (\n declaration === undefined ||\n (!hasOxcFunctionLikeComponentReturn(declaration) &&\n !hasLowerableCompatCreateElementReturn(code, declaration, compatCreateElementNames) &&\n !hasCompatRenderToStringWrapperReturn(code, declaration, compatRenderToStringNames))\n ) {\n return [];\n }\n const id = readObject(declaration.id);\n const name = typeof id.name === \"string\" ? id.name : \"DefaultExport\";\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n name,\n declaration,\n \"default\",\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n true,\n ),\n ];\n }\n\n if (object.type !== \"ExportNamedDeclaration\") {\n const plainComponent =\n readOxcPlainComponent(statement) ??\n (serverOutput === \"stream\"\n ? undefined\n : readCompatCreateElementPlainComponent(code, statement, compatCreateElementNames));\n\n if (plainComponent === undefined) {\n return [];\n }\n\n if (compatRenderToStringLowerableTargets.has(plainComponent.name)) {\n return [];\n }\n\n return [\n {\n ...analyzeOxcFunctionLikeComponent(\n code,\n plainComponent.name,\n plainComponent.initializer,\n plainComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n exported: false,\n },\n ];\n }\n\n const declaration = readObject(object.declaration);\n\n if (declaration.type === \"VariableDeclaration\") {\n const variableComponent =\n readOxcVariableComponentDeclaration(declaration) ??\n readCompatCreateElementPlainComponent(code, declaration, compatCreateElementNames);\n\n if (variableComponent === undefined) {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n variableComponent.name,\n variableComponent.initializer,\n variableComponent.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n ];\n }\n\n if (\n declaration.type !== \"FunctionDeclaration\" ||\n (!compatReactNodeReturn &&\n !hasComponentReturn(declaration.body) &&\n !hasLocalJsxHelperCallReturn(declaration.body, localJsxReturnFunctionNames) &&\n !hasLowerableCompatCreateElementReturn(code, declaration, compatCreateElementNames) &&\n !hasCompatRenderToStringWrapperReturn(code, declaration, compatRenderToStringNames))\n ) {\n return [];\n }\n\n const id = readObject(declaration.id);\n\n if (typeof id.name !== \"string\") {\n return [];\n }\n\n return [\n analyzeOxcFunctionLikeComponent(\n code,\n id.name,\n declaration,\n id.name,\n componentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n moduleRenderValueBindings,\n compatReactNodeReturn,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n reactiveDerivedFunctionNames,\n localJsxReturnFunctionNames,\n localJsxHelperHtmlParameters,\n ),\n ];\n}\n\nfunction lowerOxcLocalJsxHelperCallExpressionCode(\n code: string,\n expression: Record<string, unknown>,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyLowerers: OxcBodyLowerers,\n): string {\n if (expression.type !== \"CallExpression\") {\n return readSource(code, expression);\n }\n\n const args = readArray(expression.arguments).map((argument) => {\n const object = unwrapOxcParentheses(readObject(argument));\n return containsOxcJsxSyntax(object)\n ? (bodyLowerers.lowerServerStringExpression(\n code,\n object,\n componentNames,\n target,\n diagnostics,\n ) ?? readSource(code, argument))\n : readSource(code, argument);\n });\n\n return `${readSource(code, readObject(expression.callee))}(${args.join(\", \")})`;\n}\n\nfunction analyzeOxcFunctionLikeComponent(\n code: string,\n name: string,\n functionLike: Record<string, unknown>,\n exportName: string,\n componentNames: Set<string>,\n target: CompileTarget,\n diagnostics: Diagnostic[],\n bodyStatementJsx: OxcBodyStatementJsxMode,\n compatCreateElementNames: ReadonlySet<string>,\n compatRenderToStringNames: ReadonlySet<string>,\n compatCreateElementLocalFunctionLikes: ReadonlyMap<string, Record<string, unknown>>,\n moduleRenderValueBindings: Set<string>,\n compatReactNodeReturn: boolean,\n serverOutput: AnalyzeModuleOptions[\"serverOutput\"],\n componentCallNames: Set<string> | undefined,\n bodyLowerers: OxcBodyLowerers,\n reactiveDerivedFunctionNames: ReadonlySet<string>,\n localJsxReturnFunctionNames: ReadonlySet<string>,\n localJsxHelperHtmlParameters: ReadonlyMap<string, ReadonlySet<number>>,\n exportDefault = false,\n): ComponentIr {\n const functionBody = readObject(functionLike.body);\n const body = functionBody.type === \"BlockStatement\" ? readArray(functionBody.body) : [];\n const earlyIfRootReturn =\n bodyStatementJsx === \"compat-object\"\n ? undefined\n : findOxcEarlyIfRootReturn(body, target === \"client\");\n const rootStatement =\n earlyIfRootReturn?.branchStatements[0] ??\n (bodyStatementJsx === \"compat-object\"\n ? body.find((bodyStatement) => readObject(bodyStatement).type === \"ReturnStatement\")\n : findOxcRootStatement(body));\n const returnStatement =\n readObject(rootStatement).type === \"ReturnStatement\" ? rootStatement : undefined;\n const expressionBody = unwrapOxcParentheses(readObject(functionLike.body));\n const returnExpression =\n returnStatement === undefined\n ? expressionBody\n : unwrapOxcParentheses(readObject(readObject(returnStatement).argument));\n const parameters = readArray(functionLike.params).map((param) =>\n readOxcParameterName(code, param),\n );\n const htmlParameterNames = new Set(\n [...(localJsxHelperHtmlParameters.get(name) ?? [])]\n .map((index) => parameters[index])\n .filter((parameter): parameter is string => parameter !== undefined),\n );\n const bodyComponentNames =\n /^[a-z]/.test(name) && componentNames.has(name)\n ? new Set([...componentNames].filter((componentName) => componentName !== name))\n : componentNames;\n const bodyStatements = body\n .filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n )\n .map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n bodyComponentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n );\n const componentBodyBindings = collectOxcVariableInitializers(body);\n const reactiveAliasBindings = collectOxcReactiveReadAliases(\n code,\n body,\n reactiveDerivedFunctionNames,\n );\n const childAnalysisContext = createOxcChildAnalysisContext(\n bodyComponentNames,\n target,\n diagnostics,\n bodyStatementJsx,\n componentBodyBindings,\n reactiveAliasBindings,\n serverOutput,\n componentCallNames,\n bodyLowerers,\n );\n const root =\n analyzeOxcEarlyIfRootReturn(code, earlyIfRootReturn, childAnalysisContext, bodyStatementJsx) ??\n analyzeOxcSwitchRootReturn(code, rootStatement, childAnalysisContext, bodyStatementJsx) ??\n (compatCreateElementNames.size === 0\n ? undefined\n : analyzeCompatCreateElementRoot(code, returnExpression, {\n names: compatCreateElementNames,\n shadowed: collectFunctionShadowedNames(functionLike, compatCreateElementNames),\n })) ??\n analyzeCompatRenderToStringWrapperRoot(\n code,\n functionLike,\n returnExpression,\n compatCreateElementNames,\n compatRenderToStringNames,\n compatCreateElementLocalFunctionLikes,\n ) ??\n (isJsxRoot(returnExpression.type) || returnExpression.type === \"JSXFragment\"\n ? analyzeOxcJsxNode(code, returnExpression, childAnalysisContext)\n : isOxcComponentCallExpression(returnExpression)\n ? analyzeOxcComponentCallExpression(code, returnExpression)\n : isOxcLocalJsxHelperCallExpression(returnExpression, localJsxReturnFunctionNames)\n ? {\n kind: \"expr\" as const,\n code: normalizeOxcExpressionCode(\n bodyStatementJsx === \"server-string\"\n ? lowerOxcLocalJsxHelperCallExpressionCode(\n code,\n returnExpression,\n bodyComponentNames,\n target,\n diagnostics,\n bodyLowerers,\n )\n : readSource(code, returnExpression),\n ),\n renderMode: \"html\" as const,\n }\n : (analyzeOxcDynamicRootReturn(\n code,\n returnExpression,\n childAnalysisContext,\n bodyStatementJsx,\n ) ?? {\n kind: \"expr\" as const,\n code: normalizeOxcExpressionCode(\n compatReactNodeReturn\n ? (lowerOxcCompatReactNodeExpression(\n code,\n returnExpression,\n componentNames,\n target,\n diagnostics,\n ) ??\n stripOxcGeneratedImports(\n transformJsxToCreateElementWithOxc(readSource(code, returnExpression)),\n ))\n : readSource(code, returnExpression),\n ),\n ...(compatReactNodeReturn ? { renderMode: \"react-node\" as const } : {}),\n }));\n markOxcRenderValueExpressions(\n [root],\n new Set([\n ...moduleRenderValueBindings,\n ...collectOxcBodyJsxBindingNames(\n body.filter(\n (bodyStatement) =>\n bodyStatement !== rootStatement &&\n earlyIfRootReturn?.branchStatements.includes(bodyStatement) !== true &&\n earlyIfRootReturn?.fallthroughBodyStatements.includes(bodyStatement) !== true &&\n bodyStatement !== earlyIfRootReturn?.fallthroughStatement,\n ),\n ),\n ...htmlParameterNames,\n ]),\n bodyStatementJsx === \"server-string\" ? \"html\" : \"dynamic\",\n );\n\n return {\n name,\n exportName,\n ...(exportDefault ? { exportDefault: true } : {}),\n ...(functionLike.async === true ? { async: true } : {}),\n parameters,\n bodyStatements,\n bindingNames: [...parameters, ...body.flatMap(collectBindingNames)],\n root,\n };\n}\n\ninterface OxcEarlyIfRootReturn {\n branchStatements: unknown[];\n fallthroughStatement: unknown;\n fallthroughBodyStatements: unknown[];\n branches: Array<{\n test: Record<string, unknown>;\n consequent: Record<string, unknown>;\n }>;\n fallthrough: Record<string, unknown>;\n}\n\nfunction findOxcEarlyIfRootReturn(\n body: readonly unknown[],\n allowFallthroughBodyStatements: boolean,\n): OxcEarlyIfRootReturn | undefined {\n for (let index = 0; index < body.length - 1; index += 1) {\n const branches: OxcEarlyIfRootReturn[\"branches\"] = [];\n const branchStatements: unknown[] = [];\n let cursor = index;\n\n while (cursor < body.length - 1) {\n const statement = readObject(body[cursor]);\n\n if (statement.type !== \"IfStatement\" || readObject(statement.alternate).type !== undefined) {\n break;\n }\n\n const consequent = readOxcPureReturnExpressionFromStatement(statement.consequent);\n\n if (consequent === undefined || !isOxcRootReturnExpression(consequent)) {\n break;\n }\n\n branches.push({\n test: readObject(statement.test),\n consequent,\n });\n branchStatements.push(body[cursor]);\n cursor += 1;\n }\n\n if (branches.length === 0) {\n continue;\n }\n\n const fallthroughStart = cursor;\n let fallthroughStatement = body[cursor];\n const fallthrough = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (fallthrough === undefined && allowFallthroughBodyStatements) {\n while (cursor < body.length) {\n fallthroughStatement = body[cursor];\n const candidate = readOxcReturnExpressionFromStatement(fallthroughStatement);\n\n if (candidate !== undefined) {\n if (!isOxcRootReturnExpression(candidate)) {\n break;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: body.slice(fallthroughStart, cursor),\n fallthroughStatement,\n branches,\n fallthrough: candidate,\n };\n }\n\n cursor += 1;\n }\n }\n\n if (fallthrough === undefined || !isOxcRootReturnExpression(fallthrough)) {\n continue;\n }\n\n return {\n branchStatements,\n fallthroughBodyStatements: [],\n fallthroughStatement,\n branches,\n fallthrough,\n };\n }\n\n return undefined;\n}\n\nfunction readOxcPureReturnExpressionFromStatement(\n statement: unknown,\n): Record<string, unknown> | undefined {\n const object = readObject(statement);\n\n if (object.type === \"ReturnStatement\") {\n return readOxcReturnExpressionFromStatement(statement);\n }\n\n if (object.type !== \"BlockStatement\") {\n return undefined;\n }\n\n const statements = readArray(object.body);\n if (statements.length !== 1) {\n return undefined;\n }\n\n return readOxcReturnExpressionFromStatement(statements[0]);\n}\n\nfunction isOxcRootReturnExpression(expression: Record<string, unknown>): boolean {\n return isOxcEmptyRootReturn(expression) || isOxcRenderableRootReturn(expression);\n}\n\nfunction isOxcEmptyRootReturn(expression: Record<string, unknown>): boolean {\n return expression.type === \"Literal\" && (expression.value === null || expression.value === false);\n}\n\nfunction isOxcRenderableRootReturn(expression: Record<string, unknown>): boolean {\n return (\n isJsxRoot(expression.type) ||\n expression.type === \"JSXFragment\" ||\n isOxcComponentCallExpression(expression) ||\n analyzeOxcDynamicRootReturnShape(expression)\n );\n}\n\nfunction analyzeOxcDynamicRootReturnShape(expression: Record<string, unknown>): boolean {\n if (expression.type === \"ConditionalExpression\") {\n return true;\n }\n\n return expression.type === \"LogicalExpression\" && isOxcJsxBranch(readObject(expression.right));\n}\n\nfunction findOxcRootStatement(body: readonly unknown[]): unknown | undefined {\n return body.find((bodyStatement) => {\n const object = readObject(bodyStatement);\n return object.type === \"ReturnStatement\" || isOxcSwitchRootReturnStatement(object);\n });\n}\n\nfunction isOxcSwitchRootReturnStatement(statement: Record<string, unknown>): boolean {\n if (statement.type !== \"SwitchStatement\") {\n return false;\n }\n\n return readArray(statement.cases).some((switchCase) =>\n readArray(readObject(switchCase).consequent).some(\n (child) => readObject(child).type === \"ReturnStatement\",\n ),\n );\n}\n\nfunction analyzeOxcSwitchRootReturn(\n code: string,\n statement: unknown,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const object = readObject(statement);\n\n if (object.type !== \"SwitchStatement\") {\n return undefined;\n }\n\n const discriminant = readSource(code, object.discriminant);\n const cases = readArray(object.cases).map((switchCase) => {\n const caseObject = readObject(switchCase);\n const returnStatement = readArray(caseObject.consequent)\n .map(readObject)\n .find((child) => child.type === \"ReturnStatement\");\n const argument =\n returnStatement === undefined\n ? undefined\n : unwrapOxcParentheses(readObject(returnStatement.argument));\n\n return {\n test: readObject(caseObject.test),\n children:\n argument === undefined\n ? undefined\n : analyzeOxcDynamicRootBranch(code, argument, context, bodyStatementJsx),\n };\n });\n\n if (cases.some((entry) => entry.children === undefined)) {\n return undefined;\n }\n\n const defaultCase = cases.find((entry) => entry.test.type === undefined);\n let fallback = defaultCase?.children ?? [];\n\n for (const entry of [...cases].reverse()) {\n if (entry.test.type === undefined) {\n continue;\n }\n\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: `${discriminant} === ${readSource(code, entry.test)}`,\n whenTrue: entry.children ?? [],\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction analyzeOxcEarlyIfRootReturn(\n code: string,\n earlyIfRootReturn: OxcEarlyIfRootReturn | undefined,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n if (earlyIfRootReturn === undefined) {\n return undefined;\n }\n\n let fallback = analyzeOxcDynamicRootBranch(\n code,\n earlyIfRootReturn.fallthrough,\n context,\n bodyStatementJsx,\n );\n\n if (earlyIfRootReturn.fallthroughBodyStatements.length > 0) {\n fallback = [\n {\n kind: \"fragment\",\n bodyStatements: earlyIfRootReturn.fallthroughBodyStatements.map(\n (bodyStatement) =>\n lowerOxcBodyStatementJsx(\n code,\n bodyStatement,\n context.componentNames,\n context.target,\n context.diagnostics,\n bodyStatementJsx,\n context.bodyLowerers,\n ) ?? formatOxcBodyStatement(code, bodyStatement, bodyStatementJsx),\n ),\n children: fallback,\n },\n ];\n }\n\n for (const branch of [...earlyIfRootReturn.branches].reverse()) {\n fallback = [\n {\n kind: \"conditional\",\n conditionCode: readOxcReactiveRootConditionCode(code, branch.test, context),\n whenTrue: analyzeOxcDynamicRootBranch(code, branch.consequent, context, bodyStatementJsx),\n whenFalse: fallback,\n },\n ];\n }\n\n return fallback.length === 1 ? fallback[0] : { kind: \"fragment\", children: fallback };\n}\n\nfunction readOxcReactiveRootConditionCode(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n): string {\n return (\n rewriteOxcReactiveAliasExpressionCode(code, expression, context.reactiveAliasBindings) ??\n readSource(code, expression)\n );\n}\n\nfunction analyzeOxcDynamicRootBranch(\n code: string,\n expression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"][] {\n if (expression.type === \"Literal\" && (expression.value === null || expression.value === false)) {\n return [];\n }\n\n return analyzeOxcExpressionChild(code, expression, context, bodyStatementJsx);\n}\n\nfunction analyzeOxcDynamicRootReturn(\n code: string,\n returnExpression: Record<string, unknown>,\n context: OxcChildAnalysisContext,\n bodyStatementJsx: OxcBodyStatementJsxMode,\n): ComponentIr[\"root\"] | undefined {\n const nodes = analyzeOxcExpressionChild(code, returnExpression, context, bodyStatementJsx);\n\n if (nodes.length !== 1) {\n return undefined;\n }\n\n const [root] = nodes;\n return root?.kind === \"conditional\" ? root : undefined;\n}\n\nfunction analyzeOxcComponentCallExpression(\n code: string,\n expression: Record<string, unknown>,\n): ComponentIr[\"root\"] {\n const callee = readObject(expression.callee);\n const args = readArray(expression.arguments);\n const firstArg = readObject(args[0]);\n\n return {\n kind: \"component\",\n name: readSource(code, callee),\n props:\n firstArg.type === undefined\n ? []\n : [\n {\n kind: \"spread-prop\" as const,\n code: normalizeOxcExpressionCode(readSource(code, firstArg)),\n },\n ],\n children: [],\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reckona/mreact-compiler",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.162",
|
|
4
4
|
"description": "Compiler passes and OXC-backed JSX analysis for mreact.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compiler",
|
|
@@ -50,6 +50,6 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"oxc-parser": "0.135.0",
|
|
52
52
|
"oxc-transform": "0.135.0",
|
|
53
|
-
"@reckona/mreact-shared": "0.0.
|
|
53
|
+
"@reckona/mreact-shared": "0.0.162"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -59,6 +59,7 @@ let currentReactSuspenseBoundaryHelperName: string = "_renderReactSuspenseBounda
|
|
|
59
59
|
let currentReactSuspenseOutOfOrderBoundaryHelperName: string =
|
|
60
60
|
"_renderReactSuspenseOutOfOrderBoundary";
|
|
61
61
|
let currentCompatRenderToStringHelperName: string = "_renderCompatToString";
|
|
62
|
+
let currentCompatChildHelperName: string | undefined;
|
|
62
63
|
let currentPropChildrenCollectState: CollectHtmlState | undefined;
|
|
63
64
|
|
|
64
65
|
export function emitServerStream(
|
|
@@ -78,6 +79,9 @@ export function emitServerStream(
|
|
|
78
79
|
"_renderReactSuspenseOutOfOrderBoundary",
|
|
79
80
|
);
|
|
80
81
|
const compatRenderToStringHelperName = allocateHelperName(ir, "_renderCompatToString");
|
|
82
|
+
const compatChildHelperName = usesCompatChildRender(ir)
|
|
83
|
+
? allocateHelperName(ir, "_renderCompatChild")
|
|
84
|
+
: undefined;
|
|
81
85
|
const streamNodeHelperName = allocateHelperName(ir, "_renderStreamNode");
|
|
82
86
|
const clientBoundaryHelperName = usesClientBoundary(ir, options.serverHydration === true)
|
|
83
87
|
? allocateHelperName(ir, "_renderClientBoundary")
|
|
@@ -94,6 +98,7 @@ export function emitServerStream(
|
|
|
94
98
|
currentReactSuspenseBoundaryHelperName = reactSuspenseBoundaryHelperName;
|
|
95
99
|
currentReactSuspenseOutOfOrderBoundaryHelperName = reactSuspenseOutOfOrderBoundaryHelperName;
|
|
96
100
|
currentCompatRenderToStringHelperName = compatRenderToStringHelperName;
|
|
101
|
+
currentCompatChildHelperName = compatChildHelperName;
|
|
97
102
|
const helper = emitEscapeHtmlHelper(escapeHelperName);
|
|
98
103
|
const urlSafeHelper = [
|
|
99
104
|
`function ${urlSafeHelperName}(name, value) {`,
|
|
@@ -159,6 +164,9 @@ export function emitServerStream(
|
|
|
159
164
|
renderReactSuspenseBoundary: reactSuspenseBoundaryHelperName,
|
|
160
165
|
renderReactSuspenseOutOfOrderBoundary: reactSuspenseOutOfOrderBoundaryHelperName,
|
|
161
166
|
renderToString: compatRenderToStringHelperName,
|
|
167
|
+
...(compatChildHelperName === undefined
|
|
168
|
+
? {}
|
|
169
|
+
: { renderChildToString: compatChildHelperName }),
|
|
162
170
|
};
|
|
163
171
|
const importLine = imports
|
|
164
172
|
.map(
|
|
@@ -228,10 +236,17 @@ function collectImports(ir: ModuleIr, serverBootstrap: ServerBootstrapMode): Run
|
|
|
228
236
|
});
|
|
229
237
|
}
|
|
230
238
|
|
|
231
|
-
|
|
239
|
+
const compatSpecifiers = [
|
|
240
|
+
...(hasCompatComponentReference(ir) || hasReactNodeRender(ir) || hasRawJsxDynamicRender(ir)
|
|
241
|
+
? ["renderToString"]
|
|
242
|
+
: []),
|
|
243
|
+
...(usesCompatChildRender(ir) ? ["renderChildToString"] : []),
|
|
244
|
+
];
|
|
245
|
+
|
|
246
|
+
if (compatSpecifiers.length > 0) {
|
|
232
247
|
imports.push({
|
|
233
248
|
source: "@reckona/mreact-compat",
|
|
234
|
-
specifiers:
|
|
249
|
+
specifiers: compatSpecifiers,
|
|
235
250
|
});
|
|
236
251
|
}
|
|
237
252
|
|
|
@@ -1122,6 +1137,10 @@ function collectHtmlParts(
|
|
|
1122
1137
|
return [{ kind: "stream-node", code: node.code, escapeHelperName }];
|
|
1123
1138
|
}
|
|
1124
1139
|
|
|
1140
|
+
if (node.renderMode === "compat-child" && currentCompatChildHelperName !== undefined) {
|
|
1141
|
+
return [{ kind: "raw-dynamic", code: `${currentCompatChildHelperName}(${node.code})` }];
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1125
1144
|
return [{ kind: "dynamic", code: node.code, escapeHelperName }];
|
|
1126
1145
|
}
|
|
1127
1146
|
|
|
@@ -1595,11 +1614,14 @@ function collectHtmlAttributeParts(
|
|
|
1595
1614
|
return [
|
|
1596
1615
|
{
|
|
1597
1616
|
kind: "raw-dynamic",
|
|
1598
|
-
code:
|
|
1599
|
-
attr.
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1617
|
+
code:
|
|
1618
|
+
attr.serialization === "compat"
|
|
1619
|
+
? emitCompatDynamicStyleAttributeExpression(attr.code, escapeHelperName)
|
|
1620
|
+
: emitDynamicStyleAttributeExpression(
|
|
1621
|
+
attr.code,
|
|
1622
|
+
escapeHelperName,
|
|
1623
|
+
escapeBatchHelperName,
|
|
1624
|
+
),
|
|
1603
1625
|
},
|
|
1604
1626
|
];
|
|
1605
1627
|
}
|
|
@@ -1617,7 +1639,10 @@ function collectHtmlAttributeParts(
|
|
|
1617
1639
|
return [
|
|
1618
1640
|
{
|
|
1619
1641
|
kind: "raw-dynamic",
|
|
1620
|
-
code:
|
|
1642
|
+
code:
|
|
1643
|
+
attr.serialization === "compat" && !isUrlAttribute(dynamicHtmlName)
|
|
1644
|
+
? emitCompatDynamicAttributeExpression(dynamicHtmlName, attr.code, escapeHelperName)
|
|
1645
|
+
: emitDynamicAttributeExpression(dynamicHtmlName, attr.code, escapeHelperName),
|
|
1621
1646
|
},
|
|
1622
1647
|
];
|
|
1623
1648
|
}
|
|
@@ -1767,6 +1792,35 @@ function emitDynamicAttributeExpression(
|
|
|
1767
1792
|
: `(() => { const _value = (${code}); return _value == null || _value === false ? "" : ${stringLiteral(` ${name}="`)} + ${escapeHelperName}(_value === true ? "" : _value) + ${stringLiteral('"')}; })()`;
|
|
1768
1793
|
}
|
|
1769
1794
|
|
|
1795
|
+
function emitCompatDynamicAttributeExpression(
|
|
1796
|
+
name: string,
|
|
1797
|
+
code: string,
|
|
1798
|
+
escapeHelperName: string,
|
|
1799
|
+
): string {
|
|
1800
|
+
const lowerCased = name.toLowerCase();
|
|
1801
|
+
const booleanishOrData =
|
|
1802
|
+
lowerCased.startsWith("aria-") ||
|
|
1803
|
+
lowerCased.startsWith("data-") ||
|
|
1804
|
+
lowerCased === "contenteditable" ||
|
|
1805
|
+
lowerCased === "draggable" ||
|
|
1806
|
+
lowerCased === "spellcheck";
|
|
1807
|
+
const booleanBranch = booleanishOrData
|
|
1808
|
+
? `return ${stringLiteral(` ${name}="`)} + (_value ? "true" : "false") + ${stringLiteral('"')};`
|
|
1809
|
+
: `return _value ? ${stringLiteral(` ${name}=""`)} : "";`;
|
|
1810
|
+
|
|
1811
|
+
return `(() => { const _value = (${code}); if (_value == null || typeof _value === "function") return ""; if (typeof _value === "boolean") { ${booleanBranch} } if (typeof _value === "object") return ""; return ${stringLiteral(` ${name}="`)} + ${escapeHelperName}(_value) + ${stringLiteral('"')}; })()`;
|
|
1812
|
+
}
|
|
1813
|
+
|
|
1814
|
+
function emitCompatDynamicStyleAttributeExpression(
|
|
1815
|
+
code: string,
|
|
1816
|
+
escapeHelperName: string,
|
|
1817
|
+
): string {
|
|
1818
|
+
const unitlessCheck =
|
|
1819
|
+
'_styleName === "flex" || _styleName === "fontWeight" || _styleName === "lineHeight" || _styleName === "opacity" || _styleName === "order" || _styleName === "zIndex" || _styleName === "zoom"';
|
|
1820
|
+
|
|
1821
|
+
return `(() => { const _value = (${code}); if (_value == null || typeof _value !== "object") return ""; let _style = ""; for (const _styleName in _value) { const _styleValue = _value[_styleName]; if (_styleValue == null || typeof _styleValue === "boolean" || _styleValue === "") continue; const _cssName = _styleName.startsWith("--") ? _styleName : _styleName.replace(/[A-Z]/g, (_char) => "-" + _char.toLowerCase()); const _css = typeof _styleValue !== "number" || _styleValue === 0 || (${unitlessCheck}) ? String(_styleValue) : _styleValue + "px"; _style += (_style === "" ? "" : ";") + ${escapeHelperName}(_cssName) + ":" + ${escapeHelperName}(_css); } return _style === "" ? "" : ${stringLiteral(' style="')} + _style + ${stringLiteral('"')}; })()`;
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1770
1824
|
function emitDynamicStyleAttributeExpression(
|
|
1771
1825
|
code: string,
|
|
1772
1826
|
escapeHelperName: string,
|
|
@@ -2450,6 +2504,47 @@ function containsReactNodeRender(node: JsxNodeIr): boolean {
|
|
|
2450
2504
|
return false;
|
|
2451
2505
|
}
|
|
2452
2506
|
|
|
2507
|
+
function usesCompatChildRender(ir: ModuleIr): boolean {
|
|
2508
|
+
return ir.components.some((component) => containsCompatChildRender(component.root));
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2511
|
+
function containsCompatChildRender(node: JsxNodeIr): boolean {
|
|
2512
|
+
if (node.kind === "expr") {
|
|
2513
|
+
return node.renderMode === "compat-child";
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
if (node.kind === "component") {
|
|
2517
|
+
return (
|
|
2518
|
+
node.children.some(containsCompatChildRender) ||
|
|
2519
|
+
node.props.some(
|
|
2520
|
+
(prop) => prop.kind === "render-prop" && prop.children.some(containsCompatChildRender),
|
|
2521
|
+
)
|
|
2522
|
+
);
|
|
2523
|
+
}
|
|
2524
|
+
|
|
2525
|
+
if (node.kind === "conditional") {
|
|
2526
|
+
return [...node.whenTrue, ...node.whenFalse].some(containsCompatChildRender);
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2529
|
+
if (node.kind === "list") {
|
|
2530
|
+
return node.children.some(containsCompatChildRender);
|
|
2531
|
+
}
|
|
2532
|
+
|
|
2533
|
+
if (node.kind === "element" || node.kind === "fragment") {
|
|
2534
|
+
return node.children.some(containsCompatChildRender);
|
|
2535
|
+
}
|
|
2536
|
+
|
|
2537
|
+
if (node.kind === "async-boundary") {
|
|
2538
|
+
return [
|
|
2539
|
+
...node.children,
|
|
2540
|
+
...(node.placeholderChildren ?? []),
|
|
2541
|
+
...(node.catchChildren ?? []),
|
|
2542
|
+
].some(containsCompatChildRender);
|
|
2543
|
+
}
|
|
2544
|
+
|
|
2545
|
+
return false;
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2453
2548
|
function containsRawJsxDynamicRender(node: JsxNodeIr): boolean {
|
|
2454
2549
|
if (node.kind === "expr") {
|
|
2455
2550
|
return node.renderMode !== "react-node" && looksLikeRawJsxExpression(node.code);
|