what-compiler 0.13.4 → 0.13.5
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/babel-plugin.min.js +1 -1
- package/dist/index.min.js +21 -15
- package/dist/vite-plugin.min.js +21 -15
- package/package.json +2 -2
- package/src/babel-plugin.js +376 -147
- package/src/vite-plugin.js +111 -10
package/dist/babel-plugin.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Je=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Xe=new Set(["once","capture","passive"]),Me=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Ne=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),T=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),fe=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),De=new Set(["For","Show","Switch","Match"]),je=new Set(["what-framework/server","what-server","what-server/actions"]);function Le(e){let _=0xcbf29ce484222325n;for(let I=0;I<e.length;I++)_^=BigInt(e.charCodeAt(I)),_=BigInt.asUintN(64,_*0x100000001b3n);return _.toString(36)}function Pe(e,_){let I=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),C=String(_||"").replace(/\\/g,"/").replace(/\/+$/,"");return C&&I.startsWith(`${C}/`)?I.slice(C.length+1):I.replace(/^\.\//,"")}function F(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let _=e.split(/\r\n|\n|\r/),I=-1;for(let y=0;y<_.length;y++)/[^ \t]/.test(_[y])&&(I=y);if(I===-1)return"";let C="";for(let y=0;y<_.length;y++){let A=_[y].replace(/\t/g," "),P=y===0,W=y===_.length-1;P||(A=A.replace(/^ +/,"")),W||(A=A.replace(/ +$/,"")),A&&(y!==I&&(A+=" "),C+=A)}return C}function Oe({types:e}){let _=new Set,I=new Set;function C(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(s=>s!=="").length===0)}function y(i){let n=i.includes("|")?"|":"__",r=i.split(n),o=r[0],s=r.slice(1).filter(t=>Je.has(t));return{eventName:o,modifiers:s}}function A(i){return i.startsWith("bind:")}function P(i){return i.slice(5)}function W(i){return/^[A-Z]/.test(i)}function z(i,n,r){if(typeof i?.buildCodeFrameError=="function")return i.buildCodeFrameError(r);let o=i?.node;if(o&&typeof n?.file?.buildCodeFrameError=="function")return n.file.buildCodeFrameError(o,r);let s=o?.loc?.start,t=n?.filename||n?.file?.opts?.filename||"<unknown>";return new Error(`[what-compiler] ${r} (${s?`${t}:${s.line}:${s.column+1}`:t})`)}function j(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&W(n.name)}function O(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function pe(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function ue(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function q(i){return e.isJSXMemberExpression(i)?e.memberExpression(q(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function de(i){let n=i.node.params;if(n.length!==1||!e.isObjectPattern(n[0]))return;let r=n[0],o=-1;for(let c=0;c<r.properties.length;c++){let E=r.properties[c];if(e.isRestElement(E))return;if(e.isObjectProperty(E)&&!E.computed&&e.isIdentifier(E.key,{name:"children"})){if(o!==-1||!e.isIdentifier(E.value))return;o=c}}if(o===-1)return;let s=i.scope.getBinding(r.properties[o].value.name);if(!s||s.constantViolations.length>0||s.referencePaths.length===0||!s.referencePaths.every(c=>{let E=c.parentPath;if(!E||!E.isJSXExpressionContainer())return!1;let u=E.parentPath;if(!u||!u.isJSXElement()||!j(u.node))return!1;let g=u.node.openingElement.name;return!(e.isJSXIdentifier(g)&&De.has(g.name))}))return;let a=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(a.typeAnnotation=r.typeAnnotation),n[0]=a;let l=r.properties.filter((c,E)=>E!==o);if(l.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let c=e.objectPattern(l);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(c,e.cloneNode(a))])),i.node._whatMovedProps=c}for(let c of s.referencePaths)c.replaceWith(e.memberExpression(e.cloneNode(a),e.identifier("children")));i.scope.crawl()}function me(i){return Me.has(String(i).toLowerCase())}function k(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function K(i){return i==="className"?"class":i==="htmlFor"?"for":i}function $(i){return e.isJSXNamespacedName(i.name)?`${i.name.namespace.name}:${i.name.name.name}`:typeof i.name.name=="string"?i.name.name:String(i.name.name)}function Ee(i){return!!i&&i.length>2&&/^on/i.test(i)}function Z(i,n){if(n.length===0)return i;let r=i;for(let o of n)switch(o){case"preventDefault":r=e.arrowFunctionExpression([e.identifier("e")],e.blockStatement([e.expressionStatement(e.callExpression(e.memberExpression(e.identifier("e"),e.identifier("preventDefault")),[])),e.expressionStatement(e.callExpression(r,[e.identifier("e")]))]));break;case"stopPropagation":r=e.arrowFunctionExpression([e.identifier("e")],e.blockStatement([e.expressionStatement(e.callExpression(e.memberExpression(e.identifier("e"),e.identifier("stopPropagation")),[])),e.expressionStatement(e.callExpression(r,[e.identifier("e")]))]));break;case"self":r=e.arrowFunctionExpression([e.identifier("e")],e.blockStatement([e.ifStatement(e.binaryExpression("===",e.memberExpression(e.identifier("e"),e.identifier("target")),e.memberExpression(e.identifier("e"),e.identifier("currentTarget"))),e.expressionStatement(e.callExpression(r,[e.identifier("e")])))]));break;case"once":case"capture":case"passive":break}return r}function N(i,n){return n.has(i)}function he(i){let n=new Set,r=new Set;n.fromDestructuredProps=r;function o(a){let l=a.init;if(!l||!e.isCallExpression(l))return;let c=l.callee,E="";if(e.isIdentifier(c)?E=c.name:e.isMemberExpression(c)&&e.isIdentifier(c.property)&&(E=c.property.name),fe.has(E)){let u=a.id;if(e.isIdentifier(u))n.add(u.name);else if(e.isArrayPattern(u))for(let g of u.elements)e.isIdentifier(g)&&n.add(g.name);else if(e.isObjectPattern(u))for(let g of u.properties)e.isObjectProperty(g)&&e.isIdentifier(g.value)&&n.add(g.value.name)}}function s(a){if(e.isObjectPattern(a))for(let l of a.properties)e.isObjectProperty(l)&&e.isIdentifier(l.value)?(n.add(l.value.name),r.add(l.value.name)):e.isRestElement(l)&&e.isIdentifier(l.argument)&&(n.add(l.argument.name),r.add(l.argument.name))}let t=i.scope;for(;t;){for(let l of Object.values(t.bindings))l.path.isVariableDeclarator()&&o(l.path.node);let a=t.path&&t.path.node;if(a){if(a.params)for(let l of a.params)s(l);a._whatMovedProps&&s(a._whatMovedProps)}t=t.parent}return n}function Q(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?T.has(n.object.name):e.isIdentifier(n)?T.has(n.name):!1}function Y(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&N(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!T.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&N(i.callee.object.name,n)||Q(i))return!1;if(i.arguments.some(o=>w(o,n,r)))return!0}return!1}function w(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&N(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!T.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&N(i.callee.object.name,n)?!0:Q(i)?i.arguments.some(o=>w(o,n,r)):e.isIdentifier(i.callee)?i.arguments.some(o=>w(o,n,r)):w(i.callee,n,r)||i.arguments.some(o=>w(o,n,r)):e.isIdentifier(i)?N(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?w(i.object,n,r):e.isConditionalExpression(i)?w(i.test,n,r)||w(i.consequent,n,r)||w(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?w(i.left,n,r)||w(i.right,n,r):e.isUnaryExpression(i)?w(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>w(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&w(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&w(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function X(i,n){if(!i||typeof i!="object")return n;switch(i.type){case"Identifier":n.add(i.name);break;case"AssignmentPattern":X(i.left,n);break;case"RestElement":X(i.argument,n);break;case"ArrayPattern":for(let r of i.elements)X(r,n);break;case"ObjectPattern":for(let r of i.properties)X(r.type==="RestElement"?r.argument:r.value,n);break;default:break}return n}function ge(i){let n=new Set;for(let o=1;o<i.params.length;o++)X(i.params[o],n);let r=o=>{if(!(!o||typeof o!="object")){if(Array.isArray(o)){o.forEach(r);return}switch(o.type){case"VariableDeclaration":for(let s of o.declarations)X(s.id,n);return;case"FunctionDeclaration":case"ClassDeclaration":o.id&&n.add(o.id.name);return;case"FunctionExpression":case"ArrowFunctionExpression":case"ClassExpression":return;case"CatchClause":X(o.param,n),r(o.body);return;case"ForStatement":case"ForInStatement":case"ForOfStatement":r(o.init),r(o.left),r(o.body);return;default:break}for(let s of Object.keys(o)){if(s==="loc"||s==="start"||s==="end"||s==="type"||s==="leadingComments"||s==="trailingComments"||s==="innerComments")continue;let t=o[s];t&&typeof t=="object"&&r(t)}}};e.isBlockStatement(i.body)&&r(i.body.body);for(let o of X(i.params[0],new Set))n.delete(o);return n}function xe(i,n){if(n.size===0)return null;let r=null,o=s=>{if(!(r||!s||typeof s!="object")){if(Array.isArray(s)){s.forEach(o);return}if(s.type==="Identifier"){n.has(s.name)&&(r=s.name);return}for(let t of Object.keys(s)){if(t==="loc"||t==="start"||t==="end"||t==="type"||t==="leadingComments"||t==="trailingComments"||t==="innerComments"||s.type==="MemberExpression"&&t==="property"&&!s.computed||(s.type==="ObjectProperty"||s.type==="ObjectMethod")&&t==="key"&&!s.computed)continue;let a=s[t];a&&typeof a=="object"&&o(a)}}};return o(i),r}function ee(i,n){let r=i,o=!1;if(e.isArrowFunctionExpression(i)&&i.params.length===0&&(r=i.body,o=!0),e.isConditionalExpression(r)){let t=R(r.consequent,n),a=R(r.alternate,n);if(t||a){let l=e.conditionalExpression(r.test,t||r.consequent,a||r.alternate);return o?e.arrowFunctionExpression([],l):l}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let t=R(r.right,n);if(t){let a=e.logicalExpression(r.operator,r.left,t);return o?e.arrowFunctionExpression([],a):a}return null}return R(r,n)}function R(i,n){if(!e.isCallExpression(i)||!e.isMemberExpression(i.callee)||!e.isIdentifier(i.callee.property,{name:"map"})||i.arguments.length<1)return null;let r=i.arguments[0];if(!e.isArrowFunctionExpression(r)&&!e.isFunctionExpression(r))return null;let o=null;if(e.isArrowFunctionExpression(r)){if(e.isExpression(r.body))o=r.body;else if(e.isBlockStatement(r.body)){let p=r.body.body.find(f=>e.isReturnStatement(f));p&&(o=p.argument)}}else if(e.isFunctionExpression(r)){let p=r.body.body.find(f=>e.isReturnStatement(f));p&&(o=p.argument)}if(!o||!e.isJSXElement(o))return null;let s=o.openingElement.attributes,t=null;for(let p of s)if(e.isJSXAttribute(p)&&$(p)==="key"){t=p;break}if(!t)return null;let a=k(t.value);if(!a)return null;let l=ge(r);if(xe(a,l)){let p=e.isIdentifier(a)&&r.params[1]&&e.isIdentifier(r.params[1],{name:a.name});return null}o.openingElement.attributes=s.filter(p=>p!==t);let E=i.callee.object,u=e.arrowFunctionExpression([],E),g=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([g],e.cloneNode(a,!0));return e.callExpression(e.identifier("_$mapArray"),[u,r,e.objectExpression([e.objectProperty(e.identifier("key"),d),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function V(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(j(i))return!1;for(let r of n.attributes){if(e.isJSXSpreadAttribute(r))return!1;let o=r.value;if(e.isJSXExpressionContainer(o))return!1}return i.children.every(V)}return!1}function ne(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function B(i){if(e.isJSXText(i)){let t=F(i.value);return t?ie(t):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(j(i))return"";let o=`<${r}`;for(let t of n.attributes){if(e.isJSXSpreadAttribute(t))continue;let a=$(t);if(a==="key"||Ee(a)||a.startsWith("bind:")||a.includes("|"))continue;let l=a;if(a==="className"&&(l="class"),a==="htmlFor"&&(l="for"),!t.value)o+=` ${l}`;else if(e.isStringLiteral(t.value))o+=` ${l}="${Se(t.value.value)}"`;else if(e.isJSXExpressionContainer(t.value))continue}let s=i.openingElement.selfClosing;if(s&&me(r))return o+=">",o;if(s)return o+=`></${r}>`,o;o+=">";for(let t of i.children)if(e.isJSXText(t)){let a=F(t.value);a&&(o+=ie(a))}else e.isJSXExpressionContainer(t)?e.isJSXEmptyExpression(t.expression)||(o+="<!--$-->"):e.isJSXElement(t)?j(t)?o+="<!--$-->":o+=B(t):e.isJSXFragment(t)&&(o+="<!--$-->");return o+=`</${r}>`,o}function ie(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Se(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function M(i,n){let{node:r}=i,o=r.openingElement,s=o.name.name;if(!O(s,n)){if(s==="For")return ve(i,n);if(s==="Show")return we(i,n)}if(s==="Switch"&&(!O(s,n)||ue(r)))return Ae(i,n);if(j(r))return se(i,n);let t=o.attributes,a=r.children,l=a.every(V),c=t.every(f=>!ne(f)),E=t.every(f=>{if(e.isJSXSpreadAttribute(f))return!1;let m=$(f);return!m?.startsWith("on")&&!m?.startsWith("bind:")});if(l&&c&&E){let f=B(r);if(f){let m=ae(n,f);return n.needsTemplate=!0,e.callExpression(e.identifier(m),[])}}let u=B(r);if(!u){let f=r.loc,m=n.filename||n.file?.opts?.filename||"<unknown>",h=f?`:${f.start.line}:${f.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${s}> at ${m}${h}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,G(i,n)}let g=ae(n,u);n.needsTemplate=!0;let d=n.nextVarId(),p=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(d),e.callExpression(e.identifier(g),[]))])];return re(p,d,t,n,s),oe(p,d,a,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...p),e.identifier(d)}function G(i,n){let{node:r}=i,o=r.openingElement,s=o.name.name,t=o.attributes,a=r.children,l=[];for(let u of t){if(e.isJSXSpreadAttribute(u))continue;let g=$(u),d=k(u.value),p=K(g);l.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(p)?e.identifier(p):e.stringLiteral(p),d))}let c=[];for(let u of a)if(e.isJSXText(u)){let g=F(u.value);g&&c.push(e.stringLiteral(g))}else e.isJSXExpressionContainer(u)?e.isJSXEmptyExpression(u.expression)||c.push(u.expression):e.isJSXElement(u)?c.push(M({node:u},n)):e.isJSXFragment(u)&&c.push(L({node:u},n));let E=l.length>0?e.objectExpression(l):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(s),E,...c])}let be=new Set(["input","textarea","select","option"]);function re(i,n,r,o,s){function t(c,E){return c==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),E])):c==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),E])):c==="value"&&s&&be.has(s)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),E])):c==="checked"&&s==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),E])):c.startsWith("data-")||c.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),E])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),E]))}let a=!1;function l(){a||(a=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){o.needsSpread=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(n),c.argument])));continue}let E=$(c);if(E!=="key"){if(E==="ref"){let u=k(c.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",u),e.stringLiteral("function")),e.callExpression(e.cloneNode(u),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(u),e.identifier("current")),e.identifier(n)))));continue}if(E.startsWith("on")&&!E.includes("|")&&!C(E,o)){let u=E.slice(2).toLowerCase(),g=k(c.value);Ne.has(u)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(u),l(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${u}`)),g)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(u),g])));continue}if(E.startsWith("on")&&(E.includes("|")||C(E,o))){let{eventName:u,modifiers:g}=y(E),d=k(c.value),p=Z(d,g),f=u.slice(2).toLowerCase(),m=g.filter(x=>Xe.has(x)),h=[e.stringLiteral(f),p];if(m.length>0){let x=m.map(S=>e.objectProperty(e.identifier(S),e.booleanLiteral(!0)));h.push(e.objectExpression(x))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),h)));continue}if(A(E)){let u=P(E),g=c.value.expression;o.needsEffect=!0,u==="value"?(i.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier("value")),e.callExpression(e.cloneNode(g),[])))]))),i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral("input"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(g),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):u==="checked"&&(o.needsEffect=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier("checked")),e.callExpression(e.cloneNode(g),[])))]))),i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral("change"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(g),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(c.value)){let u=c.value.expression,g=K(E);if(w(u,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let d=o.signalNames&&o.signalNames.fromDestructuredProps,p=e.isIdentifier(u)&&!(d&&d.has(u.name))&&(N(u.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(u.name))?e.callExpression(u,[]):u,f=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],t(g,p))]);Y(u,o.signalNames,o.importedIdentifiers)&&e.addComment(f,"leading"," @what-dev: effect wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(f))}else i.push(e.expressionStatement(t(g,u)))}}}}function H(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(H);if(i.type==="JSXElement"||i.type==="JSXFragment"||i.type==="CallExpression"&&i.callee&&i.callee.type==="Identifier"&&(i.callee.name==="_$mapArray"||i.callee.name==="mapArray"))return!0;for(let n of Object.keys(i)){if(n==="loc"||n==="start"||n==="end"||n==="leadingComments"||n==="trailingComments"||n==="innerComments")continue;let r=i[n];if(r&&typeof r=="object"&&H(r))return!0}return!1}function ye(i){let n=i.parent;return n?e.isLogicalExpression(n)?i.key==="right":e.isConditionalExpression(n)?i.key==="consequent"||i.key==="alternate":e.isOptionalCallExpression(n)||e.isOptionalMemberExpression(n)?i.key!=="callee"&&i.key!=="object":!1:!1}function D(i,n,r){let o=null,s=!1;if(e.isConditionalExpression(i))o=i.test,s=!0;else if(e.isLogicalExpression(i)&&(i.operator==="&&"||i.operator==="||"))o=i.left;else return i;if(!w(o,r.signalNames,r.importedIdentifiers)||!(s?[i.consequent,i.alternate]:[i.right]).some(H))return i;let a=r.nextMemoId();r.needsMemo=!0;let l=s?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let c=e.callExpression(e.identifier(a),[]);return s?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function oe(i,n,r,o,s){let t=[],a=0;for(let d of r){if(e.isJSXText(d)){F(d.value)&&a++;continue}if(e.isJSXExpressionContainer(d)){if(e.isJSXEmptyExpression(d.expression))continue;t.push({type:"expression",child:d,childIndex:a}),a++;continue}if(e.isJSXElement(d)){let p=d.openingElement.name.name;if(j(d)||p==="For"||p==="Show")t.push({type:"component",child:d,childIndex:a}),a++;else{let f=d.openingElement.attributes.some(ne)||d.openingElement.attributes.some(m=>!e.isJSXSpreadAttribute(m)&&$(m)?.startsWith("on"))||!d.children.every(V);t.push({type:"static",child:d,childIndex:a,hasAnythingDynamic:f}),a++}continue}e.isJSXFragment(d)&&(t.push({type:"fragment",child:d,childIndex:a}),a++)}let l=t.filter(d=>d.type==="expression"||d.type==="component"||d.type==="fragment"||d.type==="static"&&d.hasAnythingDynamic),c=l.length>=2,E=new Map;if(c){let d=null,p=0;for(let f of l){let m=f.childIndex,h=s.nextVarId();E.set(m,h);let x;if(d===null)x=U(n,m);else{x=e.identifier(d);for(let S=p;S<m;S++)x=e.memberExpression(x,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),x)])),d=h,p=m}}function u(d){return E.has(d)?e.identifier(E.get(d)):U(n,d)}for(let d of t){if(d.type==="expression"){let p=d.child.expression,f=u(d.childIndex);s.needsInsert=!0;let m=ee(p,s);if(m){s.needsMapArray=!0;let x=e.isCallExpression(m)&&e.isIdentifier(m.callee)&&(m.callee.name==="_$mapArray"||m.callee.name==="mapArray"),S=e.isArrowFunctionExpression(m);S&&e.isExpression(m.body)?m.body=D(m.body,i,s):!x&&!S&&(m=D(m,i,s));let b=x||S?m:e.arrowFunctionExpression([],m);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),b,f])));continue}if(e.isCallExpression(p)&&e.isIdentifier(p.callee)&&(p.callee.name==="mapArray"||p.callee.name==="_$mapArray")){s.needsMapArray=!0,p.callee.name==="mapArray"&&(p.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),p,f])));continue}if(w(p,s.signalNames,s.importedIdentifiers)){p=D(p,i,s);let x=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],p),f]);Y(p,s.signalNames,s.importedIdentifiers)&&e.addComment(x,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(x))}else i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),p,f])));continue}if(d.type==="component"){let p=M({node:d.child},s),f=u(d.childIndex);s.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),p,f])));continue}if(d.type==="static"&&d.hasAnythingDynamic){let p;E.has(d.childIndex)?p=E.get(d.childIndex):(p=s.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(p),U(n,d.childIndex))]))),re(i,p,d.child.openingElement.attributes,s,d.child.openingElement.name.name),oe(i,p,d.child.children,d.child,s);continue}if(d.type==="fragment"){let p=d.childIndex,f=u(p);if(!e.isIdentifier(f)){let m=s.nextVarId();i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),f)])),f=e.identifier(m)}g(i,n,d.child,f,s)}}function g(d,p,f,m,h){for(let x of f.children){if(e.isJSXText(x)){let S=F(x.value);if(!S)continue;h.needsInsert=!0,d.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(p),e.stringLiteral(S),m])));continue}if(e.isJSXFragment(x)){g(d,p,x,m,h);continue}if(e.isJSXElement(x)){h.needsInsert=!0,d.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(p),M({node:x},h),m])));continue}if(e.isJSXExpressionContainer(x)&&!e.isJSXEmptyExpression(x.expression)){h.needsInsert=!0;let S=x.expression;w(S,h.signalNames,h.importedIdentifiers)&&(S=D(S,d,h),S=e.arrowFunctionExpression([],S)),d.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(p),S,m])))}}}}function U(i,n){if(n===0)return e.memberExpression(e.identifier(i),e.identifier("firstChild"));let r=e.memberExpression(e.identifier(i),e.identifier("firstChild"));for(let o=0;o<n;o++)r=e.memberExpression(r,e.identifier("nextSibling"));return r}function se(i,n){let{node:r}=i,o=r.openingElement,s=q(o.name),t=o.attributes,a=r.children,l=null,c=[];for(let m of t){if(e.isJSXAttribute(m)){let h;if(e.isJSXNamespacedName(m.name)?h=`${m.name.namespace.name}:${m.name.name.name}`:h=m.name.name,h&&typeof h=="string"&&h.startsWith("client:")){let x=h.slice(7);m.value?l={type:x,value:m.value.value}:l={type:x};continue}}c.push(m)}function E(){let m=n._pendingSetup?n._pendingSetup.length:0,h=[],x=!1;for(let b of a)if(e.isJSXText(b)){let v=F(b.value);v&&h.push(e.stringLiteral(v))}else if(e.isJSXExpressionContainer(b))e.isJSXEmptyExpression(b.expression)||(x=!0,h.push(b.expression));else if(e.isJSXElement(b)){let v=b.openingElement.name.name;v!=="For"&&v!=="Show"&&v!=="Switch"&&(x=!0),h.push(M({node:b},n))}else e.isJSXFragment(b)&&(x=!0,h.push(L({node:b},n)));let S=e.arrayExpression(h);if(x){let b=n._pendingSetup?n._pendingSetup.splice(m):[];S=e.arrowFunctionExpression([],b.length>0?e.blockStatement([...b,e.returnStatement(S)]):S)}return S}if(l){n.needsCreateComponent=!0,n.needsIsland=!0;let m=[e.objectProperty(e.identifier("component"),s),e.objectProperty(e.identifier("mode"),e.stringLiteral(l.type))];l.value&&m.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(l.value)));let h=null;for(let S of c){if(e.isJSXSpreadAttribute(S)){h=S.argument;continue}let b=$(S);if(b==="key")continue;let v=k(S.value);m.push(e.objectProperty(e.identifier(b),v))}let x=h?e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),h,e.objectExpression(m)]):e.objectExpression(m);return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),x,E()])}n.needsCreateComponent=!0;let u=[],g=!1,d=null;for(let m of c){if(e.isJSXSpreadAttribute(m)){g=!0,d=m.argument;continue}let h=$(m);if(h==="key")continue;if(A(h)){let S=P(h),b=m.value.expression;S==="value"?(u.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(b),[]))),u.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(b),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):S==="checked"&&(u.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(b),[]))),u.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(b),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(h.startsWith("on")&&(h.includes("|")||C(h,n))){let{eventName:S,modifiers:b}=y(h),v=k(m.value),J=Z(v,b);u.push(e.objectProperty(e.identifier(S),J));continue}let x=k(m.value);u.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),x))}let p;g?u.length>0?p=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),d,e.objectExpression(u)]):p=d:u.length>0?p=e.objectExpression(u):p=e.nullLiteral();let f=E();return e.callExpression(e.identifier("_$createComponent"),[s,p,f])}function ve(i,n){let{node:r}=i,o=r.openingElement.attributes,s=r.children,t=null,a=null,l=null;for(let v of o)if(e.isJSXAttribute(v)){let J=$(v);J==="each"?t=k(v.value):J==="key"?a=k(v.value):J==="fallback"&&(l=k(v.value))}if(!t)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,G(i,n);let c=null;for(let v of s)if(e.isJSXExpressionContainer(v)&&!e.isJSXEmptyExpression(v.expression)){c=v.expression;break}if(!c)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,G(i,n);n.needsMapArray=!0;let E=v=>{let J=[v,c];return a&&J.push(e.objectExpression([e.objectProperty(e.identifier("key"),a)])),e.callExpression(e.identifier("_$mapArray"),J)};if(!l)return E(t);n._pendingSetup||(n._pendingSetup=[]);let u=n.nextForIndex(),g=`_each$${u}`,d=`_for$${u}`,p=`_fb$${u}`,f=n.nextMemoId();n.needsMemo=!0,n.needsInsert=!0;let m=i.scope?i.scope.generateUidIdentifier("list"):e.identifier("_list"),h=e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",e.identifier(g)),e.stringLiteral("function")),e.callExpression(e.identifier(g),[]),e.identifier(g));n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),t)]),e.variableDeclaration("const",[e.variableDeclarator(e.identifier(f),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(m,h)]),e.returnStatement(e.unaryExpression("!",e.unaryExpression("!",e.logicalExpression("&&",e.cloneNode(m),e.memberExpression(e.cloneNode(m),e.identifier("length"))))))]))]))]),e.variableDeclaration("const",[e.variableDeclarator(e.identifier(d),E(e.identifier(g)))]),e.variableDeclaration("const",[e.variableDeclarator(e.identifier(p),e.arrowFunctionExpression([],e.conditionalExpression(e.callExpression(e.identifier(f),[]),e.nullLiteral(),l)))]));let x=e.identifier("_parent"),S=e.identifier("_marker"),b=e.identifier("_end");return e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.arrowFunctionExpression([x,S],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(b,e.callExpression(e.identifier(d),[e.cloneNode(x),e.cloneNode(S)]))]),e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.cloneNode(x),e.arrayExpression([e.identifier(p)]),e.cloneNode(S)])),e.returnStatement(e.cloneNode(b))])),e.identifier(d)])}function we(i,n){let{node:r}=i,o=r.openingElement.attributes,s=r.children,t=null,a=null;for(let p of o)if(e.isJSXAttribute(p)){let f=$(p);f==="when"?t=k(p.value):f==="fallback"&&(a=k(p.value))}if(!t)throw z(i,n,'<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let l=null;for(let p of s)if(e.isJSXExpressionContainer(p)&&!e.isJSXEmptyExpression(p.expression)){l=p.expression;break}if(!l){n._pendingSetup||(n._pendingSetup=[]);let p=n._pendingSetup.length,f=[];for(let h of s)if(e.isJSXText(h)){let x=F(h.value);x&&f.push(e.stringLiteral(x))}else e.isJSXElement(h)&&f.push(M({node:h},n));f.length===1?l=f[0]:f.length>1?l=e.arrayExpression(f):l=e.nullLiteral();let m=n._pendingSetup.splice(p);m.length>0&&(l=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...m,e.returnStatement(l)])),[]))}let c=te(t,n),E=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),u=e.isFunction(l),g=u?e.callExpression(l,[e.cloneNode(E)]):l,d=a||e.nullLiteral();if(w(c,n.signalNames,n.importedIdentifiers)){let p=n.nextMemoId();n.needsMemo=!0;let f=u?c:e.unaryExpression("!",e.unaryExpression("!",c));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(p),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],f)]))])),c=e.callExpression(e.identifier(p),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(E,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(E),g,d))]))}function te(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&N(i.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(i.name))?e.callExpression(i,[]):i}function _e(i,n){let r=[];for(let o of i)if(e.isJSXText(o)){let s=F(o.value);s&&r.push(e.stringLiteral(s))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||r.push(o.expression):e.isJSXElement(o)?r.push(M({node:o},n)):e.isJSXFragment(o)&&r.push(L({node:o},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function Ae(i,n){let{node:r}=i,o=O(r.openingElement.name.name,n),s=f=>e.isJSXElement(f)&&e.isJSXIdentifier(f.openingElement.name,{name:"Match"})&&(o||!O("Match",n));if(!r.children.some(s)&&!pe(r.openingElement.name.name,n))return se(i,n);let t=f=>{throw z(i,n,`<Switch> ${f}. The compiler needs to read its arms statically. Write them out: <Switch fallback={...}><Match when={a}>\u2026</Match><Match when={b}>\u2026</Match></Switch>`)},a=null;for(let f of r.openingElement.attributes)e.isJSXSpreadAttribute(f)&&t("cannot take a spread attribute"),$(f)==="fallback"&&(a=k(f.value));let l=[];for(let f of r.children){if(e.isJSXText(f)){F(f.value)&&t("cannot mix text with its <Match> arms");continue}if(e.isJSXExpressionContainer(f)){if(e.isJSXEmptyExpression(f.expression))continue;t("cannot read its arms from an expression child")}s(f)||t("cannot mix other elements with its <Match> arms"),l.push(f)}l.length===0&&t("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let c=[];for(let f of l){let m=null;for(let b of f.openingElement.attributes)e.isJSXAttribute(b)&&$(b)==="when"&&(m=k(b.value));m||t('has a <Match> with no "when" prop');let h=n._pendingSetup.length,x=_e(f.children,n),S=n._pendingSetup.splice(h);S.length>0&&(x=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...S,e.returnStatement(x)])),[])),c.push([te(m,n),x])}let E=c.some(([f])=>w(f,n.signalNames,n.importedIdentifiers)),u=a||e.nullLiteral();if(!E){let f=u;for(let m=c.length-1;m>=0;m--)f=e.conditionalExpression(c[m][0],c[m][1],f);return e.arrowFunctionExpression([],f)}let g=e.numericLiteral(-1);for(let f=c.length-1;f>=0;f--)g=e.conditionalExpression(c[f][0],e.numericLiteral(f),g);let d=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(d),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],g)]))]));let p=u;for(let f=c.length-1;f>=0;f--)p=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(d),[]),e.numericLiteral(f)),c[f][1],p);return e.arrowFunctionExpression([],p)}function Ie(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=ee(i,n);if(o){n.needsMapArray=!0;let t=e.isCallExpression(o)&&e.isIdentifier(o.callee)&&(o.callee.name==="_$mapArray"||o.callee.name==="mapArray");if(e.isArrowFunctionExpression(o)&&e.isExpression(o.body))return o.body=D(o.body,r,n),o;if(t)return o;let l=D(o,r,n);return e.arrowFunctionExpression([],l)}return e.isCallExpression(i)&&e.isIdentifier(i.callee)&&(i.callee.name==="mapArray"||i.callee.name==="_$mapArray")?(n.needsMapArray=!0,i.callee.name==="mapArray"&&(i.callee.name="_$mapArray"),i):w(i,n.signalNames,n.importedIdentifiers)?(i=D(i,r,n),e.arrowFunctionExpression([],i)):i}function L(i,n){let{node:r}=i,o=r.children,s=[];for(let t of o)if(e.isJSXText(t)){let a=F(t.value);a&&s.push(e.stringLiteral(a))}else e.isJSXExpressionContainer(t)?e.isJSXEmptyExpression(t.expression)||s.push(Ie(t.expression,n)):e.isJSXElement(t)?s.push(M({node:t},n)):e.isJSXFragment(t)&&s.push(L({node:t},n));return s.length===1?s[0]:e.arrayExpression(s)}function ae(i,n){if(i.templateMap.has(n))return i.templateMap.get(n);let r=`_tmpl$${i.templateCount++}`;return i.templateMap.set(n,r),i.templates.push({id:r,html:n}),r}function le(i,n,r){let o=i.scope,s=n._signalNamesCache;s||(s=n._signalNamesCache=new WeakMap);let t=s.get(o);t||(t=he(i),s.set(o,t)),n.signalNames=t,n._pendingSetup=[];let a=r(i,n),l=n._pendingSetup;if(n._pendingSetup=[],l.length>0){let c=i,E=!1,u=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(E=!0),ye(c)&&(u=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!E&&!u?(c.insertBefore(l),i.replaceWith(a)):(l.push(e.returnStatement(a)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(l)),[])))}else i.replaceWith(a)}function Ce(i){let n=i.parentPath;if(n?.isVariableDeclarator()&&e.isIdentifier(n.node.id))return n.node.id.name;if(n?.isAssignmentExpression()&&e.isIdentifier(n.node.left))return n.node.left.name;if(n?.isExportDefaultDeclaration())return"default";if(n?.isObjectProperty()&&!n.node.computed){if(e.isIdentifier(n.node.key))return n.node.key.name;if(e.isStringLiteral(n.node.key))return n.node.key.value}return null}function ke(i,n){let r=i.node.callee;return e.isIdentifier(r)?n.serverActionBindings.has(r.name):e.isMemberExpression(r)&&!r.computed&&e.isIdentifier(r.object)&&e.isIdentifier(r.property,{name:"action"})&&n.serverActionNamespaces.has(r.object.name)}function $e(i){if(!e.isObjectExpression(i))return{property:null,value:null};for(let n of i.properties)if(!(!e.isObjectProperty(n)||(e.isIdentifier(n.key)&&!n.computed?n.key.name:e.isStringLiteral(n.key)?n.key.value:null)!=="id"))return e.isStringLiteral(n.value)?{property:n,value:n.value.value}:e.isTemplateLiteral(n.value)&&n.value.expressions.length===0?{property:n,value:n.value.quasis[0]?.value.cooked||""}:{property:n,value:null};return{property:null,value:null}}function ce(i,n,r,o,s){let t=i.node.loc?.start||{line:0,column:0},a=`${s}:${t.line}:${t.column+1}`,l=`${s}#${o}`,c=n.serverActionIds.get(r);if(c)throw i.buildCodeFrameError(`Duplicate server action ID "${r}". First declared by "${c.bindingName}" at ${c.source}; conflicts with "${o}" at ${a}.`);let E={id:r,key:l,bindingName:o,filename:s,source:a,loc:t};if(n.serverActionIds.set(r,E),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(E)}catch(u){throw i.buildCodeFrameError(u instanceof Error?u.message:String(u))}}function Fe(i,n){if(!ke(i,n))return;let r=Ce(i);if(!r){n.opts?.production||console.warn(`[what-compiler] Could not derive a stable server action ID at ${n.serverActionFilename}:${i.node.loc?.start.line||0}. Assign action(...) to a named local or export, or pass { id } explicitly.`);return}let o=i.node.arguments[1],s=$e(o);if(s.property){s.value!==null&&ce(i,n,s.value,r,n.serverActionFilename);return}let t=`wa1_${Le(`${n.serverActionFilename}#${r}`)}`;ce(i,n,t,r,n.serverActionFilename);let a=e.objectProperty(e.identifier("id"),e.stringLiteral(t));o?e.isObjectExpression(o)?o.properties.unshift(a):i.node.arguments[1]=e.objectExpression([a,e.spreadElement(o)]):i.node.arguments.push(e.objectExpression([a]))}return{name:"what-jsx-transform",visitor:{Program:{enter(i,n){n.needsTemplate=!1,n.needsInsert=!1,n.needsEffect=!1,n.needsMapArray=!1,n.needsSpread=!1,n.needsSetProp=!1,n.needsMemo=!1,n.needsSetClass=!1,n.needsSetStyle=!1,n.needsSetAttr=!1,n.needsSetValue=!1,n.needsSetChecked=!1,n.needsH=!1,n.needsCreateComponent=!1,n.needsFragment=!1,n.needsIsland=!1,n.needsDelegation=!1,n.delegatedEvents=new Set,n.templates=[],n.templateMap=new Map,n.templateCount=0,n._varCounter=0,n._memoCounter=0,n._listCounter=0,n._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.nextForIndex=()=>n._listCounter++,n.serverActionBindings=new Set,n.serverActionNamespaces=new Set,n.serverActionIds=new Map,n.serverActionFilename=Pe(n.file?.opts?.filename,n.opts?.projectRoot||n.file?.opts?.cwd),n.signalNames=new Set,n.importedIdentifiers=new Set,n.whatImports=new Set,n.foreignImports=new Set;for(let r of i.node.body)if(e.isImportDeclaration(r)){let o=r.source.value,s=o==="what-framework"||o.startsWith("what-framework/")||o==="what-core"||o.startsWith("what-core/"),t=s||o.startsWith("./")||o.startsWith("../");for(let a of r.specifiers){let l=null;(e.isImportSpecifier(a)&&e.isIdentifier(a.local)||e.isImportDefaultSpecifier(a)&&e.isIdentifier(a.local)||e.isImportNamespaceSpecifier(a)&&e.isIdentifier(a.local))&&(l=a.local.name),l&&((t||/^(use|create)[A-Z]/.test(l))&&n.importedIdentifiers.add(l),s?n.whatImports.add(l):o.startsWith(".")||n.foreignImports.add(l)),je.has(o)&&(e.isImportSpecifier(a)&&e.isIdentifier(a.imported,{name:"action"})&&e.isIdentifier(a.local)?n.serverActionBindings.add(a.local.name):e.isImportNamespaceSpecifier(a)&&e.isIdentifier(a.local)&&n.serverActionNamespaces.add(a.local.name))}}i.traverse({Function(r){de(r)},CallExpression(r){Fe(r,n)},VariableDeclarator(r){let o=r.node.init;if(!o||!e.isCallExpression(o))return;let s=o.callee,t="";if(e.isIdentifier(s)?t=s.name:e.isMemberExpression(s)&&e.isIdentifier(s.property)&&(t=s.property.name),fe.has(t)){let a=r.node.id;if(e.isIdentifier(a))n.signalNames.add(a.name);else if(e.isArrayPattern(a))for(let l of a.elements)e.isIdentifier(l)&&n.signalNames.add(l.name);else if(e.isObjectPattern(a))for(let l of a.properties)e.isObjectProperty(l)&&e.isIdentifier(l.value)&&n.signalNames.add(l.value.name)}}})},exit(i,n){for(let s of n.templates.reverse()){let t=e.callExpression(e.identifier("_$template"),[e.stringLiteral(s.html)]);e.addComment(t,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(s.id),t)]))}let r=[];n.needsTemplate&&r.push(e.importSpecifier(e.identifier("_$template"),e.identifier("_$template"))),n.needsInsert&&r.push(e.importSpecifier(e.identifier("_$insert"),e.identifier("insert"))),n.needsEffect&&r.push(e.importSpecifier(e.identifier("_$effect"),e.identifier("effect"))),n.needsMapArray&&r.push(e.importSpecifier(e.identifier("_$mapArray"),e.identifier("mapArray"))),n.needsSpread&&r.push(e.importSpecifier(e.identifier("_$spread"),e.identifier("spread"))),n.needsSetProp&&r.push(e.importSpecifier(e.identifier("_$setProp"),e.identifier("setProp"))),n.needsMemo&&r.push(e.importSpecifier(e.identifier("_$memo"),e.identifier("memo"))),n.needsSetClass&&r.push(e.importSpecifier(e.identifier("_$setClass"),e.identifier("setClass"))),n.needsSetStyle&&r.push(e.importSpecifier(e.identifier("_$setStyle"),e.identifier("setStyle"))),n.needsSetAttr&&r.push(e.importSpecifier(e.identifier("_$setAttr"),e.identifier("setAttr"))),n.needsSetValue&&r.push(e.importSpecifier(e.identifier("_$setValue"),e.identifier("setValue"))),n.needsSetChecked&&r.push(e.importSpecifier(e.identifier("_$setChecked"),e.identifier("setChecked"))),n.needsCreateComponent&&r.push(e.importSpecifier(e.identifier("_$createComponent"),e.identifier("_$createComponent"))),n.needsDelegation&&r.push(e.importSpecifier(e.identifier("_$delegateEvents"),e.identifier("delegateEvents")));let o=[];if(n.needsH&&o.push(e.importSpecifier(e.identifier("h"),e.identifier("h"))),n.needsFragment&&o.push(e.importSpecifier(e.identifier("Fragment"),e.identifier("Fragment"))),n.needsIsland&&o.push(e.importSpecifier(e.identifier("Island"),e.identifier("Island"))),r.length>0){let s=null;for(let t of i.node.body)if(e.isImportDeclaration(t)&&(t.source.value==="what-framework/render"||t.source.value==="what-core/render")){s=t;break}if(s){let t=new Set(s.specifiers.filter(a=>e.isImportSpecifier(a)).map(a=>a.imported.name));for(let a of r)t.has(a.imported.name)||s.specifiers.push(a)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(o.length>0&&Re(i,e,o),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let s=e.arrayExpression([...n.delegatedEvents].map(a=>e.stringLiteral(a))),t=e.functionDeclaration(e.identifier("_$delegate$"),[],e.blockStatement([e.ifStatement(e.identifier("_$delegated$"),e.returnStatement()),e.expressionStatement(e.assignmentExpression("=",e.identifier("_$delegated$"),e.booleanLiteral(!0))),e.expressionStatement(e.callExpression(e.identifier("_$delegateEvents"),[s]))]));i.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),t])}}},JSXElement(i,n){le(i,n,M)},JSXFragment(i,n){le(i,n,L)}}}}function Re(e,_,I){let C=null;for(let y of e.node.body)if(_.isImportDeclaration(y)&&(y.source.value==="what-core"||y.source.value==="what-framework")){C=y;break}if(C){let y=new Set(C.specifiers.filter(A=>_.isImportSpecifier(A)).map(A=>A.imported.name));for(let A of I)y.has(A.imported.name)||C.specifiers.push(A)}else{let y=_.importDeclaration(I,_.stringLiteral("what-framework"));e.unshiftContainer("body",y)}}export{Oe as default};
|
|
1
|
+
var Re=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Ve=new Set(["once","capture","passive"]),We=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Be=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),W=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),Ue=new Set(["toString","toLocaleString","valueOf","toJSON","toUpperCase","toLowerCase","toLocaleUpperCase","toLocaleLowerCase","trim","trimStart","trimEnd","toFixed","toPrecision","toExponential","toISOString","toUTCString","toDateString","toTimeString","toLocaleDateString","toLocaleTimeString","slice","reverse","sort","flat","concat","join"]),he=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),He=new Set(["For","Show","Switch","Match"]),Ge=new Set(["what-framework/server","what-server","what-server/actions"]);function Se(e){return e==="what-framework"||e.startsWith("what-framework/")||e==="what-core"||e.startsWith("what-core/")}function ze(e){let _=0xcbf29ce484222325n;for(let k=0;k<e.length;k++)_^=BigInt(e.charCodeAt(k)),_=BigInt.asUintN(64,_*0x100000001b3n);return _.toString(36)}function qe(e,_){let k=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),$=String(_||"").replace(/\\/g,"/").replace(/\/+$/,"");return $&&k.startsWith(`${$}/`)?k.slice($.length+1):k.replace(/^\.\//,"")}function J(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let _=e.split(/\r\n|\n|\r/),k=-1;for(let y=0;y<_.length;y++)/[^ \t]/.test(_[y])&&(k=y);if(k===-1)return"";let $="";for(let y=0;y<_.length;y++){let C=_[y].replace(/\t/g," "),T=y===0,B=y===_.length-1;T||(C=C.replace(/^ +/,"")),B||(C=C.replace(/ +$/,"")),C&&(y!==k&&(C+=" "),$+=C)}return $}function Ke({types:e}){let _=new Set,k=new Set;function $(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(s=>s!=="").length===0)}function y(i){let n=i.includes("|")?"|":"__",r=i.split(n),o=r[0],s=r.slice(1).filter(a=>Re.has(a));return{eventName:o,modifiers:s}}function C(i){return i.startsWith("bind:")}function T(i){return i.slice(5)}function B(i){return/^[A-Z]/.test(i)}function Z(i,n,r){if(typeof i?.buildCodeFrameError=="function")return i.buildCodeFrameError(r);let o=i?.node;if(o&&typeof n?.file?.buildCodeFrameError=="function")return n.file.buildCodeFrameError(o,r);let s=o?.loc?.start,a=n?.filename||n?.file?.opts?.filename||"<unknown>";return new Error(`[what-compiler] ${r} (${s?`${a}:${s.line}:${s.column+1}`:a})`)}function D(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&B(n.name)}function R(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function ge(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function xe(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function be(i){let n=i.parentPath;return!n||typeof n.isCallExpression!="function"||!n.isCallExpression()||n.node.arguments[0]!==i.node?!1:ye(n.node.callee,n.scope)}function ye(i,n){return e.isMemberExpression(i)&&!i.computed&&e.isIdentifier(i.property,{name:"hydrate"})&&e.isIdentifier(i.object)?Q(n.getBinding(i.object.name),e.isImportNamespaceSpecifier,null):e.isIdentifier(i)?Q(n.getBinding(i.name),e.isImportSpecifier,"hydrate"):!1}function Q(i,n,r){if(!i||i.kind!=="module"||!i.path)return!1;let o=i.path.node;if(!n(o))return!1;if(r!==null){let a=o.imported;if((e.isIdentifier(a)?a.name:e.isStringLiteral(a)?a.value:null)!==r)return!1}let s=i.path.parent;return e.isImportDeclaration(s)&&Se(s.source.value)}function Y(i){return e.isJSXMemberExpression(i)?e.memberExpression(Y(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function ve(i){let n=i.node.params;if(n.length!==1||!e.isObjectPattern(n[0]))return;let r=n[0],o=-1;for(let u=0;u<r.properties.length;u++){let E=r.properties[u];if(e.isRestElement(E))return;if(e.isObjectProperty(E)&&!E.computed&&e.isIdentifier(E.key,{name:"children"})){if(o!==-1||!e.isIdentifier(E.value))return;o=u}}if(o===-1)return;let s=i.scope.getBinding(r.properties[o].value.name);if(!s||s.constantViolations.length>0||s.referencePaths.length===0||!s.referencePaths.every(u=>{let E=u.parentPath;if(!E||!E.isJSXExpressionContainer())return!1;let d=E.parentPath;if(!d||!d.isJSXElement()||!D(d.node))return!1;let l=d.node.openingElement.name;return!(e.isJSXIdentifier(l)&&He.has(l.name))}))return;let t=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(t.typeAnnotation=r.typeAnnotation),n[0]=t;let c=r.properties.filter((u,E)=>E!==o);if(c.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let u=e.objectPattern(c);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(u,e.cloneNode(t))])),i.node._whatMovedProps=u}for(let u of s.referencePaths)u.replaceWith(e.memberExpression(e.cloneNode(t),e.identifier("children")));i.scope.crawl()}function we(i){return We.has(String(i).toLowerCase())}function A(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function j(i){return i==="className"?"class":i==="htmlFor"?"for":i}function ee(i,n){let r=j(F(i[n]));for(let o=n+1;o<i.length;o+=1){let s=i[o];if(!e.isJSXSpreadAttribute(s)&&j(F(s))===r)return!0}return!1}function F(i){return e.isJSXNamespacedName(i.name)?`${i.name.namespace.name}:${i.name.name.name}`:typeof i.name.name=="string"?i.name.name:String(i.name.name)}function ne(i){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(i)?e.identifier(i):e.stringLiteral(i)}function Ie(i){return!!i&&i.length>2&&/^on/i.test(i)}function ie(i,n){if(n.length===0)return i;let r=i;for(let o of n)switch(o){case"preventDefault":r=e.arrowFunctionExpression([e.identifier("e")],e.blockStatement([e.expressionStatement(e.callExpression(e.memberExpression(e.identifier("e"),e.identifier("preventDefault")),[])),e.expressionStatement(e.callExpression(r,[e.identifier("e")]))]));break;case"stopPropagation":r=e.arrowFunctionExpression([e.identifier("e")],e.blockStatement([e.expressionStatement(e.callExpression(e.memberExpression(e.identifier("e"),e.identifier("stopPropagation")),[])),e.expressionStatement(e.callExpression(r,[e.identifier("e")]))]));break;case"self":r=e.arrowFunctionExpression([e.identifier("e")],e.blockStatement([e.ifStatement(e.binaryExpression("===",e.memberExpression(e.identifier("e"),e.identifier("target")),e.memberExpression(e.identifier("e"),e.identifier("currentTarget"))),e.expressionStatement(e.callExpression(r,[e.identifier("e")])))]));break;case"once":case"capture":case"passive":break}return r}function N(i,n){return n.has(i)}function _e(i){let n=new Set,r=new Set;n.fromDestructuredProps=r;function o(t){let c=t.init;if(!c||!e.isCallExpression(c))return;let u=c.callee,E="";if(e.isIdentifier(u)?E=u.name:e.isMemberExpression(u)&&e.isIdentifier(u.property)&&(E=u.property.name),he.has(E)){let d=t.id;if(e.isIdentifier(d))n.add(d.name);else if(e.isArrayPattern(d))for(let l of d.elements)e.isIdentifier(l)&&n.add(l.name);else if(e.isObjectPattern(d))for(let l of d.properties)e.isObjectProperty(l)&&e.isIdentifier(l.value)&&n.add(l.value.name)}}function s(t){if(e.isObjectPattern(t))for(let c of t.properties)e.isObjectProperty(c)&&e.isIdentifier(c.value)?(n.add(c.value.name),r.add(c.value.name)):e.isRestElement(c)&&e.isIdentifier(c.argument)&&(n.add(c.argument.name),r.add(c.argument.name))}let a=i.scope;for(;a;){for(let c of Object.values(a.bindings))c.path.isVariableDeclarator()&&o(c.path.node);let t=a.path&&a.path.node;if(t){if(t.params)for(let c of t.params)s(c);t._whatMovedProps&&s(t._whatMovedProps)}a=a.parent}return n}function Ce(i){return e.isMemberExpression(i.callee)&&!i.callee.computed&&e.isIdentifier(i.callee.property)&&Ue.has(i.callee.property.name)}function re(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?W.has(n.object.name):e.isIdentifier(n)?W.has(n.name):!1}function oe(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&N(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!W.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&N(i.callee.object.name,n)||re(i))return!1;if(i.arguments.some(o=>w(o,n,r)))return!0}return!1}function w(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&N(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!W.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&N(i.callee.object.name,n)?!0:re(i)?i.arguments.some(o=>w(o,n,r)):i.arguments.length===0&&!Ce(i)?!0:e.isIdentifier(i.callee)?i.arguments.some(o=>w(o,n,r)):w(i.callee,n,r)||i.arguments.some(o=>w(o,n,r)):e.isIdentifier(i)?N(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?w(i.object,n,r):e.isConditionalExpression(i)?w(i.test,n,r)||w(i.consequent,n,r)||w(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?w(i.left,n,r)||w(i.right,n,r):e.isUnaryExpression(i)?w(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>w(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&w(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&w(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function M(i,n){if(!i||typeof i!="object")return n;switch(i.type){case"Identifier":n.add(i.name);break;case"AssignmentPattern":M(i.left,n);break;case"RestElement":M(i.argument,n);break;case"ArrayPattern":for(let r of i.elements)M(r,n);break;case"ObjectPattern":for(let r of i.properties)M(r.type==="RestElement"?r.argument:r.value,n);break;default:break}return n}function Ae(i){let n=new Set;for(let o=1;o<i.params.length;o++)M(i.params[o],n);let r=o=>{if(!(!o||typeof o!="object")){if(Array.isArray(o)){o.forEach(r);return}switch(o.type){case"VariableDeclaration":for(let s of o.declarations)M(s.id,n);return;case"FunctionDeclaration":case"ClassDeclaration":o.id&&n.add(o.id.name);return;case"FunctionExpression":case"ArrowFunctionExpression":case"ClassExpression":return;case"CatchClause":M(o.param,n),r(o.body);return;case"ForStatement":case"ForInStatement":case"ForOfStatement":r(o.init),r(o.left),r(o.body);return;default:break}for(let s of Object.keys(o)){if(s==="loc"||s==="start"||s==="end"||s==="type"||s==="leadingComments"||s==="trailingComments"||s==="innerComments")continue;let a=o[s];a&&typeof a=="object"&&r(a)}}};e.isBlockStatement(i.body)&&r(i.body.body);for(let o of M(i.params[0],new Set))n.delete(o);return n}function ke(i,n){if(n.size===0)return null;let r=null,o=s=>{if(!(r||!s||typeof s!="object")){if(Array.isArray(s)){s.forEach(o);return}if(s.type==="Identifier"){n.has(s.name)&&(r=s.name);return}for(let a of Object.keys(s)){if(a==="loc"||a==="start"||a==="end"||a==="type"||a==="leadingComments"||a==="trailingComments"||a==="innerComments"||s.type==="MemberExpression"&&a==="property"&&!s.computed||(s.type==="ObjectProperty"||s.type==="ObjectMethod")&&a==="key"&&!s.computed)continue;let t=s[a];t&&typeof t=="object"&&o(t)}}};return o(i),r}function se(i,n){let r=i,o=!1;if(e.isArrowFunctionExpression(i)&&i.params.length===0&&(r=i.body,o=!0),e.isConditionalExpression(r)){let a=V(r.consequent,n),t=V(r.alternate,n);if(a||t){let c=e.conditionalExpression(r.test,a||r.consequent,t||r.alternate);return o?e.arrowFunctionExpression([],c):c}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let a=V(r.right,n);if(a){let t=e.logicalExpression(r.operator,r.left,a);return o?e.arrowFunctionExpression([],t):t}return null}return V(r,n)}function V(i,n){if(!e.isCallExpression(i)||!e.isMemberExpression(i.callee)||!e.isIdentifier(i.callee.property,{name:"map"})||i.arguments.length<1)return null;let r=i.arguments[0];if(!e.isArrowFunctionExpression(r)&&!e.isFunctionExpression(r))return null;let o=null;if(e.isArrowFunctionExpression(r)){if(e.isExpression(r.body))o=r.body;else if(e.isBlockStatement(r.body)){let m=r.body.body.find(f=>e.isReturnStatement(f));m&&(o=m.argument)}}else if(e.isFunctionExpression(r)){let m=r.body.body.find(f=>e.isReturnStatement(f));m&&(o=m.argument)}if(!o||!e.isJSXElement(o))return null;let s=o.openingElement.attributes,a=null;for(let m of s)if(e.isJSXAttribute(m)&&F(m)==="key"){a=m;break}if(!a)return null;let t=A(a.value);if(!t)return null;let c=Ae(r);if(ke(t,c)){let m=e.isIdentifier(t)&&r.params[1]&&e.isIdentifier(r.params[1],{name:t.name});return null}o.openingElement.attributes=s.filter(m=>m!==a);let E=i.callee.object,d=e.arrowFunctionExpression([],E),l=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),p=e.arrowFunctionExpression([l],e.cloneNode(t,!0));return e.callExpression(e.identifier("_$mapArray"),[d,r,e.objectExpression([e.objectProperty(e.identifier("key"),p),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function U(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(D(i))return!1;for(let r of n.attributes){if(e.isJSXSpreadAttribute(r))return!1;let o=r.value;if(e.isJSXExpressionContainer(o))return!1}return i.children.every(U)}return!1}function te(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function H(i,n=[]){for(let r of i.children){if(e.isJSXText(r)){let o=J(r.value);o&&n.push({kind:"text",text:o});continue}if(e.isJSXFragment(r)){H(r,n);continue}if(e.isJSXExpressionContainer(r)){e.isJSXEmptyExpression(r.expression)||n.push({kind:"expression",child:r});continue}e.isJSXElement(r)&&n.push({kind:"element",child:r})}return n}function G(i){if(e.isJSXText(i)){let t=J(i.value);return t?ae(t):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(D(i))return"";let o=`<${r}`,s=n.attributes.findIndex(t=>e.isJSXSpreadAttribute(t));for(let[t,c]of n.attributes.entries()){if(e.isJSXSpreadAttribute(c)||s!==-1&&t>s||ee(n.attributes,t))continue;let u=F(c);if(u==="key"||Ie(u)||u.startsWith("bind:")||u.includes("|"))continue;let E=u;if(u==="className"&&(E="class"),u==="htmlFor"&&(E="for"),!c.value)o+=` ${E}`;else if(e.isStringLiteral(c.value))o+=` ${E}="${$e(c.value.value)}"`;else if(e.isJSXExpressionContainer(c.value))continue}let a=i.openingElement.selfClosing;if(a&&we(r))return o+=">",o;if(a)return o+=`></${r}>`,o;o+=">";for(let t of i.children)if(e.isJSXText(t)){let c=J(t.value);c&&(o+=ae(c))}else e.isJSXExpressionContainer(t)?e.isJSXEmptyExpression(t.expression)||(o+="<!--$-->"):e.isJSXElement(t)?D(t)?o+="<!--$-->":o+=G(t):e.isJSXFragment(t)&&(o+="<!--$-->".repeat(H(t).length));return o+=`</${r}>`,o}function ae(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function $e(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function X(i,n){let{node:r}=i,o=r.openingElement,s=o.name.name;if(!R(s,n)){if(s==="For")return Me(i,n);if(s==="Show")return Ne(i,n)}if(s==="Switch"&&(!R(s,n)||xe(r)))return De(i,n);if(D(r))return fe(i,n);let a=o.attributes,t=r.children,c=t.every(U),u=a.every(f=>!te(f)),E=a.every(f=>{if(e.isJSXSpreadAttribute(f))return!1;let x=F(f);return!x?.startsWith("on")&&!x?.startsWith("bind:")});if(c&&u&&E){let f=G(r);if(f){let x=de(n,f);return n.needsTemplate=!0,e.callExpression(e.identifier(x),[])}}let d=G(r);if(!d){let f=r.loc,x=n.filename||n.file?.opts?.filename||"<unknown>",h=f?`:${f.start.line}:${f.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${s}> at ${x}${h}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,z(i,n)}let l=de(n,d);n.needsTemplate=!0;let p=n.nextVarId(),m=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(p),e.callExpression(e.identifier(l),[]))])];return le(m,p,a,n,s),ce(m,p,t,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...m),e.identifier(p)}function z(i,n){let{node:r}=i,o=r.openingElement,s=o.name.name,a=o.attributes,t=r.children,c=[];for(let d of a){if(e.isJSXSpreadAttribute(d))continue;let l=F(d),p=A(d.value),m=j(l);c.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(m)?e.identifier(m):e.stringLiteral(m),p))}let u=[];for(let d of t)if(e.isJSXText(d)){let l=J(d.value);l&&u.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(d)?e.isJSXEmptyExpression(d.expression)||u.push(d.expression):e.isJSXElement(d)?u.push(X({node:d},n)):e.isJSXFragment(d)&&u.push(P({node:d},n));let E=c.length>0?e.objectExpression(c):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(s),E,...u])}let Fe=new Set(["input","textarea","select","option"]);function le(i,n,r,o,s){function a(E,d){return E==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),d])):E==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),d])):E==="value"&&s&&Fe.has(s)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),d])):E==="checked"&&s==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),d])):E.startsWith("data-")||E.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(E),d])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(E),d]))}let t=!1;function c(){t||(t=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}let u=!1;for(let[E,d]of r.entries()){if(e.isJSXSpreadAttribute(d)){u=!0,o.needsSpread=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(n),d.argument])));continue}if(ee(r,E))continue;let l=F(d);if(l!=="key"){if(l==="ref"){let p=A(d.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",p),e.stringLiteral("function")),e.callExpression(e.cloneNode(p),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(p),e.identifier("current")),e.identifier(n)))));continue}if(l.startsWith("on")&&!l.includes("|")&&!$(l,o)){let p=l.slice(2).toLowerCase(),m=A(d.value);Be.has(p)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(p),c(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${p}`)),m)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(p),m])));continue}if(l.startsWith("on")&&(l.includes("|")||$(l,o))){let{eventName:p,modifiers:m}=y(l),f=A(d.value),x=ie(f,m),h=p.slice(2).toLowerCase(),S=m.filter(v=>Ve.has(v)),b=[e.stringLiteral(h),x];if(S.length>0){let v=S.map(g=>e.objectProperty(e.identifier(g),e.booleanLiteral(!0)));b.push(e.objectExpression(v))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),b)));continue}if(C(l)){let p=T(l),m=d.value.expression;o.needsEffect=!0,p==="value"?(i.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier("value")),e.callExpression(e.cloneNode(m),[])))]))),i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral("input"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(m),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):p==="checked"&&(o.needsEffect=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier("checked")),e.callExpression(e.cloneNode(m),[])))]))),i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral("change"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(m),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(d.value)){let p=d.value.expression,m=j(l);if(w(p,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let f=o.signalNames&&o.signalNames.fromDestructuredProps,x=e.isIdentifier(p)&&!(f&&f.has(p.name))&&(N(p.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(p.name))?e.callExpression(p,[]):p,h=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(m,x))]);oe(p,o.signalNames,o.importedIdentifiers)&&e.addComment(h,"leading"," @what-dev: effect wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(h))}else i.push(e.expressionStatement(a(m,p)));continue}u&&i.push(e.expressionStatement(a(j(l),A(d.value))))}}}function q(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(q);if(i.type==="JSXElement"||i.type==="JSXFragment"||i.type==="CallExpression"&&i.callee&&i.callee.type==="Identifier"&&(i.callee.name==="_$mapArray"||i.callee.name==="mapArray"))return!0;for(let n of Object.keys(i)){if(n==="loc"||n==="start"||n==="end"||n==="leadingComments"||n==="trailingComments"||n==="innerComments")continue;let r=i[n];if(r&&typeof r=="object"&&q(r))return!0}return!1}function Je(i){let n=i.parent;return n?e.isLogicalExpression(n)?i.key==="right":e.isConditionalExpression(n)?i.key==="consequent"||i.key==="alternate":e.isOptionalCallExpression(n)||e.isOptionalMemberExpression(n)?i.key!=="callee"&&i.key!=="object":!1:!1}function L(i,n,r){let o=null,s=!1;if(e.isConditionalExpression(i))o=i.test,s=!0;else if(e.isLogicalExpression(i)&&(i.operator==="&&"||i.operator==="||"))o=i.left;else return i;if(!w(o,r.signalNames,r.importedIdentifiers)||!(s?[i.consequent,i.alternate]:[i.right]).some(q))return i;let t=r.nextMemoId();r.needsMemo=!0;let c=s?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],c)]))]));let u=e.callExpression(e.identifier(t),[]);return s?e.conditionalExpression(u,i.consequent,i.alternate):e.logicalExpression(i.operator,u,i.right)}function ce(i,n,r,o,s){let a=[],t=0;for(let l of r){if(e.isJSXText(l)){J(l.value)&&t++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;a.push({type:"expression",child:l,childIndex:t}),t++;continue}if(e.isJSXElement(l)){let p=l.openingElement.name.name;if(D(l)||p==="For"||p==="Show")a.push({type:"component",child:l,childIndex:t}),t++;else{let m=l.openingElement.attributes.some(te)||l.openingElement.attributes.some(f=>!e.isJSXSpreadAttribute(f)&&F(f)?.startsWith("on"))||!l.children.every(U);a.push({type:"static",child:l,childIndex:t,hasAnythingDynamic:m}),t++}continue}if(e.isJSXFragment(l))for(let p of H(l))p.kind==="text"?a.push({type:"fragmentText",text:p.text,childIndex:t}):p.kind==="expression"?a.push({type:"expression",child:p.child,childIndex:t}):a.push({type:"component",child:p.child,childIndex:t}),t++}let c=a.filter(l=>l.type==="expression"||l.type==="component"||l.type==="fragmentText"||l.type==="static"&&l.hasAnythingDynamic),u=c.length>=2,E=new Map;if(u){let l=null,p=0;for(let m of c){let f=m.childIndex,x=s.nextVarId();E.set(f,x);let h;if(l===null)h=K(n,f);else{h=e.identifier(l);for(let S=p;S<f;S++)h=e.memberExpression(h,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(x),h)])),l=x,p=f}}function d(l){return E.has(l)?e.identifier(E.get(l)):K(n,l)}for(let l of a){if(l.type==="expression"){let p=l.child.expression,m=d(l.childIndex);s.needsInsert=!0;let f=se(p,s);if(f){s.needsMapArray=!0;let h=e.isCallExpression(f)&&e.isIdentifier(f.callee)&&(f.callee.name==="_$mapArray"||f.callee.name==="mapArray"),S=e.isArrowFunctionExpression(f);S&&e.isExpression(f.body)?f.body=L(f.body,i,s):!h&&!S&&(f=L(f,i,s));let b=h||S?f:e.arrowFunctionExpression([],f);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),b,m])));continue}if(e.isCallExpression(p)&&e.isIdentifier(p.callee)&&(p.callee.name==="mapArray"||p.callee.name==="_$mapArray")){s.needsMapArray=!0,p.callee.name==="mapArray"&&(p.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),p,m])));continue}if(w(p,s.signalNames,s.importedIdentifiers)){p=L(p,i,s);let h=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],p),m]);oe(p,s.signalNames,s.importedIdentifiers)&&e.addComment(h,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(h))}else i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),p,m])));continue}if(l.type==="component"){let p=X({node:l.child},s),m=d(l.childIndex);s.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),p,m])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let p;E.has(l.childIndex)?p=E.get(l.childIndex):(p=s.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(p),K(n,l.childIndex))]))),le(i,p,l.child.openingElement.attributes,s,l.child.openingElement.name.name),ce(i,p,l.child.children,l.child,s);continue}if(l.type==="fragmentText"){s.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.stringLiteral(l.text),d(l.childIndex)])));continue}}}function K(i,n){if(n===0)return e.memberExpression(e.identifier(i),e.identifier("firstChild"));let r=e.memberExpression(e.identifier(i),e.identifier("firstChild"));for(let o=0;o<n;o++)r=e.memberExpression(r,e.identifier("nextSibling"));return r}function fe(i,n){let{node:r}=i,o=r.openingElement,s=Y(o.name),a=o.attributes,t=r.children,c=null,u=[];for(let h of a){if(e.isJSXAttribute(h)){let S;if(e.isJSXNamespacedName(h.name)?S=`${h.name.namespace.name}:${h.name.name.name}`:S=h.name.name,S&&typeof S=="string"&&S.startsWith("client:")){let b=S.slice(7);h.value?c={type:b,value:h.value.value}:c={type:b};continue}}u.push(h)}function E(){let h=n._pendingSetup?n._pendingSetup.length:0,S=[],b=!1;for(let g of t)if(e.isJSXText(g)){let I=J(g.value);I&&S.push(e.stringLiteral(I))}else if(e.isJSXExpressionContainer(g))e.isJSXEmptyExpression(g.expression)||(b=!0,S.push(ue(g.expression,n)));else if(e.isJSXElement(g)){let I=g.openingElement.name.name;I!=="For"&&I!=="Show"&&I!=="Switch"&&(b=!0),S.push(X({node:g},n))}else e.isJSXFragment(g)&&(b=!0,S.push(P({node:g},n)));let v=e.arrayExpression(S);if(b){let g=n._pendingSetup?n._pendingSetup.splice(h):[];v=e.arrowFunctionExpression([],g.length>0?e.blockStatement([...g,e.returnStatement(v)]):v)}return v}if(c){n.needsCreateComponent=!0,n.needsIsland=!0;let h=[e.objectProperty(e.identifier("component"),s),e.objectProperty(e.identifier("mode"),e.stringLiteral(c.type))];c.value&&h.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(c.value)));let S=[],b=[],v=()=>{b.length>0&&(S.push(e.objectExpression(b)),b=[])};for(let I of u){if(e.isJSXSpreadAttribute(I)){v(),S.push(I.argument);continue}let O=F(I);if(O==="key")continue;let Te=A(I.value);b.push(e.objectProperty(ne(O),Te))}let g;return S.length===0?g=e.objectExpression([...b,...h]):(v(),g=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),...S,e.objectExpression(h)])),e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),g,E()])}let d=be(i);d?n.needsComponentVNode=!0:n.needsCreateComponent=!0;let l=[],p=[],m=()=>{p.length>0&&(l.push(e.objectExpression(p)),p=[])};for(let h of u){if(e.isJSXSpreadAttribute(h)){m(),l.push(h.argument);continue}let S=F(h);if(S==="key")continue;if(C(S)){let v=T(S),g=h.value.expression;v==="value"?(p.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(g),[]))),p.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(g),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):v==="checked"&&(p.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(g),[]))),p.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(g),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(S.startsWith("on")&&(S.includes("|")||$(S,n))){let{eventName:v,modifiers:g}=y(S),I=A(h.value),O=ie(I,g);p.push(e.objectProperty(e.identifier(v),O));continue}let b=A(h.value);p.push(e.objectProperty(ne(S),b))}m();let f;l.length===0?f=e.nullLiteral():l.length===1&&e.isObjectExpression(l[0])?f=l[0]:f=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),...l]);let x=E();return e.callExpression(e.identifier(d?"_$componentVNode":"_$createComponent"),[s,f,x])}function Me(i,n){let{node:r}=i,o=r.openingElement.attributes,s=r.children,a=null,t=null,c=null;for(let g of o)if(e.isJSXAttribute(g)){let I=F(g);I==="each"?a=A(g.value):I==="key"?t=A(g.value):I==="fallback"&&(c=A(g.value))}if(!a)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,z(i,n);let u=null;for(let g of s)if(e.isJSXExpressionContainer(g)&&!e.isJSXEmptyExpression(g.expression)){u=g.expression;break}if(!u)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,z(i,n);n.needsMapArray=!0;let E=g=>{let I=[g,u];return t&&I.push(e.objectExpression([e.objectProperty(e.identifier("key"),t)])),e.callExpression(e.identifier("_$mapArray"),I)};if(!c)return E(a);n._pendingSetup||(n._pendingSetup=[]);let d=n.nextForIndex(),l=`_each$${d}`,p=`_for$${d}`,m=`_fb$${d}`,f=n.nextMemoId();n.needsMemo=!0,n.needsInsert=!0;let x=i.scope?i.scope.generateUidIdentifier("list"):e.identifier("_list"),h=e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",e.identifier(l)),e.stringLiteral("function")),e.callExpression(e.identifier(l),[]),e.identifier(l));n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(l),a)]),e.variableDeclaration("const",[e.variableDeclarator(e.identifier(f),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(x,h)]),e.returnStatement(e.unaryExpression("!",e.unaryExpression("!",e.logicalExpression("&&",e.cloneNode(x),e.memberExpression(e.cloneNode(x),e.identifier("length"))))))]))]))]),e.variableDeclaration("const",[e.variableDeclarator(e.identifier(p),E(e.identifier(l)))]),e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.arrowFunctionExpression([],e.conditionalExpression(e.callExpression(e.identifier(f),[]),e.nullLiteral(),c)))]));let S=e.identifier("_parent"),b=e.identifier("_marker"),v=e.identifier("_end");return e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.arrowFunctionExpression([S,b],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(v,e.callExpression(e.identifier(p),[e.cloneNode(S),e.cloneNode(b)]))]),e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.cloneNode(S),e.arrayExpression([e.identifier(m)]),e.cloneNode(b)])),e.returnStatement(e.cloneNode(v))])),e.identifier(p)])}function Ne(i,n){let{node:r}=i,o=r.openingElement.attributes,s=r.children,a=null,t=null;for(let m of o)if(e.isJSXAttribute(m)){let f=F(m);f==="when"?a=A(m.value):f==="fallback"&&(t=A(m.value))}if(!a)throw Z(i,n,'<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let c=null;for(let m of s)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){c=m.expression;break}if(!c){n._pendingSetup||(n._pendingSetup=[]);let m=n._pendingSetup.length,f=[];for(let h of s)if(e.isJSXText(h)){let S=J(h.value);S&&f.push(e.stringLiteral(S))}else e.isJSXElement(h)&&f.push(X({node:h},n));f.length===1?c=f[0]:f.length>1?c=e.arrayExpression(f):c=e.nullLiteral();let x=n._pendingSetup.splice(m);x.length>0&&(c=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...x,e.returnStatement(c)])),[]))}let u=pe(a,n),E=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(c),l=d?e.callExpression(c,[e.cloneNode(E)]):c,p=t||e.nullLiteral();if(w(u,n.signalNames,n.importedIdentifiers)){let m=n.nextMemoId();n.needsMemo=!0;let f=d?u:e.unaryExpression("!",e.unaryExpression("!",u));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],f)]))])),u=e.callExpression(e.identifier(m),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(E,u)]),e.returnStatement(e.conditionalExpression(e.cloneNode(E),l,p))]))}function pe(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&N(i.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(i.name))?e.callExpression(i,[]):i}function Xe(i,n){let r=[];for(let o of i)if(e.isJSXText(o)){let s=J(o.value);s&&r.push(e.stringLiteral(s))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||r.push(o.expression):e.isJSXElement(o)?r.push(X({node:o},n)):e.isJSXFragment(o)&&r.push(P({node:o},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function De(i,n){let{node:r}=i,o=R(r.openingElement.name.name,n),s=f=>e.isJSXElement(f)&&e.isJSXIdentifier(f.openingElement.name,{name:"Match"})&&(o||!R("Match",n));if(!r.children.some(s)&&!ge(r.openingElement.name.name,n))return fe(i,n);let a=f=>{throw Z(i,n,`<Switch> ${f}. The compiler needs to read its arms statically. Write them out: <Switch fallback={...}><Match when={a}>\u2026</Match><Match when={b}>\u2026</Match></Switch>`)},t=null;for(let f of r.openingElement.attributes)e.isJSXSpreadAttribute(f)&&a("cannot take a spread attribute"),F(f)==="fallback"&&(t=A(f.value));let c=[];for(let f of r.children){if(e.isJSXText(f)){J(f.value)&&a("cannot mix text with its <Match> arms");continue}if(e.isJSXExpressionContainer(f)){if(e.isJSXEmptyExpression(f.expression))continue;a("cannot read its arms from an expression child")}s(f)||a("cannot mix other elements with its <Match> arms"),c.push(f)}c.length===0&&a("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let u=[];for(let f of c){let x=null;for(let v of f.openingElement.attributes)e.isJSXAttribute(v)&&F(v)==="when"&&(x=A(v.value));x||a('has a <Match> with no "when" prop');let h=n._pendingSetup.length,S=Xe(f.children,n),b=n._pendingSetup.splice(h);b.length>0&&(S=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...b,e.returnStatement(S)])),[])),u.push([pe(x,n),S])}let E=u.some(([f])=>w(f,n.signalNames,n.importedIdentifiers)),d=t||e.nullLiteral();if(!E){let f=d;for(let x=u.length-1;x>=0;x--)f=e.conditionalExpression(u[x][0],u[x][1],f);return e.arrowFunctionExpression([],f)}let l=e.numericLiteral(-1);for(let f=u.length-1;f>=0;f--)l=e.conditionalExpression(u[f][0],e.numericLiteral(f),l);let p=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(p),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let m=d;for(let f=u.length-1;f>=0;f--)m=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(p),[]),e.numericLiteral(f)),u[f][1],m);return e.arrowFunctionExpression([],m)}function ue(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=se(i,n);if(o){n.needsMapArray=!0;let a=e.isCallExpression(o)&&e.isIdentifier(o.callee)&&(o.callee.name==="_$mapArray"||o.callee.name==="mapArray");if(e.isArrowFunctionExpression(o)&&e.isExpression(o.body))return o.body=L(o.body,r,n),o;if(a)return o;let c=L(o,r,n);return e.arrowFunctionExpression([],c)}return e.isCallExpression(i)&&e.isIdentifier(i.callee)&&(i.callee.name==="mapArray"||i.callee.name==="_$mapArray")?(n.needsMapArray=!0,i.callee.name==="mapArray"&&(i.callee.name="_$mapArray"),i):w(i,n.signalNames,n.importedIdentifiers)?(i=L(i,r,n),e.arrowFunctionExpression([],i)):i}function P(i,n){let{node:r}=i,o=r.children,s=[];for(let a of o)if(e.isJSXText(a)){let t=J(a.value);t&&s.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||s.push(ue(a.expression,n)):e.isJSXElement(a)?s.push(X({node:a},n)):e.isJSXFragment(a)&&s.push(P({node:a},n));return s.length===1?s[0]:e.arrayExpression(s)}function de(i,n){if(i.templateMap.has(n))return i.templateMap.get(n);let r=`_tmpl$${i.templateCount++}`;return i.templateMap.set(n,r),i.templates.push({id:r,html:n}),r}function me(i,n,r){let o=i.scope,s=n._signalNamesCache;s||(s=n._signalNamesCache=new WeakMap);let a=s.get(o);a||(a=_e(i),s.set(o,a)),n.signalNames=a,n._pendingSetup=[];let t=r(i,n),c=n._pendingSetup;if(n._pendingSetup=[],c.length>0){let u=i,E=!1,d=!1;for(;u&&!u.isStatement();)(u.isArrowFunctionExpression()||u.isFunctionExpression())&&(E=!0),Je(u)&&(d=!0),u=u.parentPath;u&&u.isStatement()&&(u.listKey==="body"||u.listKey==="consequent")&&Array.isArray(u.container)&&!E&&!d?(u.insertBefore(c),i.replaceWith(t)):(c.push(e.returnStatement(t)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(c)),[])))}else i.replaceWith(t)}function Le(i){let n=i.parentPath;if(n?.isVariableDeclarator()&&e.isIdentifier(n.node.id))return n.node.id.name;if(n?.isAssignmentExpression()&&e.isIdentifier(n.node.left))return n.node.left.name;if(n?.isExportDefaultDeclaration())return"default";if(n?.isObjectProperty()&&!n.node.computed){if(e.isIdentifier(n.node.key))return n.node.key.name;if(e.isStringLiteral(n.node.key))return n.node.key.value}return null}function je(i,n){let r=i.node.callee;return e.isIdentifier(r)?n.serverActionBindings.has(r.name):e.isMemberExpression(r)&&!r.computed&&e.isIdentifier(r.object)&&e.isIdentifier(r.property,{name:"action"})&&n.serverActionNamespaces.has(r.object.name)}function Pe(i){if(!e.isObjectExpression(i))return{property:null,value:null};for(let n of i.properties)if(!(!e.isObjectProperty(n)||(e.isIdentifier(n.key)&&!n.computed?n.key.name:e.isStringLiteral(n.key)?n.key.value:null)!=="id"))return e.isStringLiteral(n.value)?{property:n,value:n.value.value}:e.isTemplateLiteral(n.value)&&n.value.expressions.length===0?{property:n,value:n.value.quasis[0]?.value.cooked||""}:{property:n,value:null};return{property:null,value:null}}function Ee(i,n,r,o,s){let a=i.node.loc?.start||{line:0,column:0},t=`${s}:${a.line}:${a.column+1}`,c=`${s}#${o}`,u=n.serverActionIds.get(r);if(u)throw i.buildCodeFrameError(`Duplicate server action ID "${r}". First declared by "${u.bindingName}" at ${u.source}; conflicts with "${o}" at ${t}.`);let E={id:r,key:c,bindingName:o,filename:s,source:t,loc:a};if(n.serverActionIds.set(r,E),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(E)}catch(d){throw i.buildCodeFrameError(d instanceof Error?d.message:String(d))}}function Oe(i,n){if(!je(i,n))return;let r=Le(i);if(!r){n.opts?.production||console.warn(`[what-compiler] Could not derive a stable server action ID at ${n.serverActionFilename}:${i.node.loc?.start.line||0}. Assign action(...) to a named local or export, or pass { id } explicitly.`);return}let o=i.node.arguments[1],s=Pe(o);if(s.property){s.value!==null&&Ee(i,n,s.value,r,n.serverActionFilename);return}let a=`wa1_${ze(`${n.serverActionFilename}#${r}`)}`;Ee(i,n,a,r,n.serverActionFilename);let t=e.objectProperty(e.identifier("id"),e.stringLiteral(a));o?e.isObjectExpression(o)?o.properties.unshift(t):i.node.arguments[1]=e.objectExpression([t,e.spreadElement(o)]):i.node.arguments.push(e.objectExpression([t]))}return{name:"what-jsx-transform",visitor:{Program:{enter(i,n){n.needsTemplate=!1,n.needsInsert=!1,n.needsEffect=!1,n.needsMapArray=!1,n.needsSpread=!1,n.needsSetProp=!1,n.needsMemo=!1,n.needsSetClass=!1,n.needsSetStyle=!1,n.needsSetAttr=!1,n.needsSetValue=!1,n.needsSetChecked=!1,n.needsH=!1,n.needsCreateComponent=!1,n.needsComponentVNode=!1,n.needsFragment=!1,n.needsIsland=!1,n.needsDelegation=!1,n.delegatedEvents=new Set,n.templates=[],n.templateMap=new Map,n.templateCount=0,n._varCounter=0,n._memoCounter=0,n._listCounter=0,n._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.nextForIndex=()=>n._listCounter++,n.serverActionBindings=new Set,n.serverActionNamespaces=new Set,n.serverActionIds=new Map,n.serverActionFilename=qe(n.file?.opts?.filename,n.opts?.projectRoot||n.file?.opts?.cwd),n.signalNames=new Set,n.importedIdentifiers=new Set,n.whatImports=new Set,n.foreignImports=new Set;for(let r of i.node.body)if(e.isImportDeclaration(r)){let o=r.source.value,s=Se(o),a=s||o.startsWith("./")||o.startsWith("../");for(let t of r.specifiers){let c=null;(e.isImportSpecifier(t)&&e.isIdentifier(t.local)||e.isImportDefaultSpecifier(t)&&e.isIdentifier(t.local)||e.isImportNamespaceSpecifier(t)&&e.isIdentifier(t.local))&&(c=t.local.name),c&&((a||/^(use|create)[A-Z]/.test(c))&&n.importedIdentifiers.add(c),s?n.whatImports.add(c):o.startsWith(".")||n.foreignImports.add(c)),Ge.has(o)&&(e.isImportSpecifier(t)&&e.isIdentifier(t.imported,{name:"action"})&&e.isIdentifier(t.local)?n.serverActionBindings.add(t.local.name):e.isImportNamespaceSpecifier(t)&&e.isIdentifier(t.local)&&n.serverActionNamespaces.add(t.local.name))}}i.traverse({Function(r){ve(r)},CallExpression(r){Oe(r,n)},VariableDeclarator(r){let o=r.node.init;if(!o||!e.isCallExpression(o))return;let s=o.callee,a="";if(e.isIdentifier(s)?a=s.name:e.isMemberExpression(s)&&e.isIdentifier(s.property)&&(a=s.property.name),he.has(a)){let t=r.node.id;if(e.isIdentifier(t))n.signalNames.add(t.name);else if(e.isArrayPattern(t))for(let c of t.elements)e.isIdentifier(c)&&n.signalNames.add(c.name);else if(e.isObjectPattern(t))for(let c of t.properties)e.isObjectProperty(c)&&e.isIdentifier(c.value)&&n.signalNames.add(c.value.name)}}})},exit(i,n){for(let s of n.templates.reverse()){let a=e.callExpression(e.identifier("_$template"),[e.stringLiteral(s.html)]);e.addComment(a,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(s.id),a)]))}let r=[];n.needsTemplate&&r.push(e.importSpecifier(e.identifier("_$template"),e.identifier("_$template"))),n.needsInsert&&r.push(e.importSpecifier(e.identifier("_$insert"),e.identifier("insert"))),n.needsEffect&&r.push(e.importSpecifier(e.identifier("_$effect"),e.identifier("effect"))),n.needsMapArray&&r.push(e.importSpecifier(e.identifier("_$mapArray"),e.identifier("mapArray"))),n.needsSpread&&r.push(e.importSpecifier(e.identifier("_$spread"),e.identifier("spread"))),n.needsSetProp&&r.push(e.importSpecifier(e.identifier("_$setProp"),e.identifier("setProp"))),n.needsMemo&&r.push(e.importSpecifier(e.identifier("_$memo"),e.identifier("memo"))),n.needsSetClass&&r.push(e.importSpecifier(e.identifier("_$setClass"),e.identifier("setClass"))),n.needsSetStyle&&r.push(e.importSpecifier(e.identifier("_$setStyle"),e.identifier("setStyle"))),n.needsSetAttr&&r.push(e.importSpecifier(e.identifier("_$setAttr"),e.identifier("setAttr"))),n.needsSetValue&&r.push(e.importSpecifier(e.identifier("_$setValue"),e.identifier("setValue"))),n.needsSetChecked&&r.push(e.importSpecifier(e.identifier("_$setChecked"),e.identifier("setChecked"))),n.needsCreateComponent&&r.push(e.importSpecifier(e.identifier("_$createComponent"),e.identifier("_$createComponent"))),n.needsComponentVNode&&r.push(e.importSpecifier(e.identifier("_$componentVNode"),e.identifier("_$componentVNode"))),n.needsDelegation&&r.push(e.importSpecifier(e.identifier("_$delegateEvents"),e.identifier("delegateEvents")));let o=[];if(n.needsH&&o.push(e.importSpecifier(e.identifier("h"),e.identifier("h"))),n.needsFragment&&o.push(e.importSpecifier(e.identifier("Fragment"),e.identifier("Fragment"))),n.needsIsland&&o.push(e.importSpecifier(e.identifier("Island"),e.identifier("Island"))),r.length>0){let s=null;for(let a of i.node.body)if(e.isImportDeclaration(a)&&(a.source.value==="what-framework/render"||a.source.value==="what-core/render")){s=a;break}if(s){let a=new Set(s.specifiers.filter(t=>e.isImportSpecifier(t)).map(t=>t.imported.name));for(let t of r)a.has(t.imported.name)||s.specifiers.push(t)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(o.length>0&&Ze(i,e,o),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let s=e.arrayExpression([...n.delegatedEvents].map(t=>e.stringLiteral(t))),a=e.functionDeclaration(e.identifier("_$delegate$"),[],e.blockStatement([e.ifStatement(e.identifier("_$delegated$"),e.returnStatement()),e.expressionStatement(e.assignmentExpression("=",e.identifier("_$delegated$"),e.booleanLiteral(!0))),e.expressionStatement(e.callExpression(e.identifier("_$delegateEvents"),[s]))]));i.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),a])}}},JSXElement(i,n){me(i,n,X)},JSXFragment(i,n){me(i,n,P)}}}}function Ze(e,_,k){let $=null;for(let y of e.node.body)if(_.isImportDeclaration(y)&&(y.source.value==="what-core"||y.source.value==="what-framework")){$=y;break}if($){let y=new Set($.specifiers.filter(C=>_.isImportSpecifier(C)).map(C=>C.imported.name));for(let C of k)y.has(C.imported.name)||$.specifiers.push(C)}else{let y=_.importDeclaration(k,_.stringLiteral("what-framework"));e.unshiftContainer("body",y)}}export{Ke as default};
|