what-compiler 0.11.8 → 0.12.1
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 +6 -6
- package/dist/vite-plugin.min.js +6 -6
- package/index.d.ts +7 -7
- package/package.json +2 -2
- package/src/babel-plugin.js +71 -46
package/dist/babel-plugin.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Ie=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),ke=new Set(["once","capture","passive"]),Fe=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Je=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),O=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),ce=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),Xe=new Set(["For","Show","Switch","Match"]),Me=new Set(["what-framework/server","what-server","what-server/actions"]);function Le(e){let w=0xcbf29ce484222325n;for(let A=0;A<e.length;A++)w^=BigInt(e.charCodeAt(A)),w=BigInt.asUintN(64,w*0x100000001b3n);return w.toString(36)}function Ne(e,w){let A=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),_=String(w||"").replace(/\\/g,"/").replace(/\/+$/,"");return _&&A.startsWith(`${_}/`)?A.slice(_.length+1):A.replace(/^\.\//,"")}function k(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let w=e.split(/\r\n|\n|\r/),A=-1;for(let x=0;x<w.length;x++)/[^ \t]/.test(w[x])&&(A=x);if(A===-1)return"";let _="";for(let x=0;x<w.length;x++){let v=w[x].replace(/\t/g," "),j=x===0,R=x===w.length-1;j||(v=v.replace(/^ +/,"")),R||(v=v.replace(/ +$/,"")),v&&(x!==A&&(v+=" "),_+=v)}return _}function De({types:e}){let w=new Set,A=new Set;function _(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(t=>t!=="").length===0)}function x(i){let n=i.includes("|")?"|":"__",r=i.split(n),s=r[0],t=r.slice(1).filter(a=>Ie.has(a));return{eventName:s,modifiers:t}}function v(i){return i.startsWith("bind:")}function j(i){return i.slice(5)}function R(i){return/^[A-Z]/.test(i)}function M(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&R(n.name)}function P(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function fe(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function pe(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function G(i){return e.isJSXMemberExpression(i)?e.memberExpression(G(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function ue(i){let n=i.node.params;if(n.length!==1||!e.isObjectPattern(n[0]))return;let r=n[0],s=-1;for(let c=0;c<r.properties.length;c++){let p=r.properties[c];if(e.isRestElement(p))return;if(e.isObjectProperty(p)&&!p.computed&&e.isIdentifier(p.key,{name:"children"})){if(s!==-1||!e.isIdentifier(p.value))return;s=c}}if(s===-1)return;let t=i.scope.getBinding(r.properties[s].value.name);if(!t||t.constantViolations.length>0||t.referencePaths.length===0||!t.referencePaths.every(c=>{let p=c.parentPath;if(!p||!p.isJSXExpressionContainer())return!1;let d=p.parentPath;if(!d||!d.isJSXElement()||!M(d.node))return!1;let l=d.node.openingElement.name;return!(e.isJSXIdentifier(l)&&Xe.has(l.name))}))return;let o=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(o.typeAnnotation=r.typeAnnotation),n[0]=o;let u=r.properties.filter((c,p)=>p!==s);if(u.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let c=e.objectPattern(u);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(c,e.cloneNode(o))])),i.node._whatMovedProps=c}for(let c of t.referencePaths)c.replaceWith(e.memberExpression(e.cloneNode(o),e.identifier("children")));i.scope.crawl()}function de(i){return Fe.has(String(i).toLowerCase())}function C(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function z(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 me(i){return!!i&&i.length>2&&/^on/i.test(i)}function q(i,n){if(n.length===0)return i;let r=i;for(let s of n)switch(s){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 F(i,n){return n.has(i)}function Z(i){let n=new Set;function r(a){let o=a.init;if(!o||!e.isCallExpression(o))return;let u=o.callee,c="";if(e.isIdentifier(u)?c=u.name:e.isMemberExpression(u)&&e.isIdentifier(u.property)&&(c=u.property.name),ce.has(c)){let p=a.id;if(e.isIdentifier(p))n.add(p.name);else if(e.isArrayPattern(p))for(let d of p.elements)e.isIdentifier(d)&&n.add(d.name);else if(e.isObjectPattern(p))for(let d of p.properties)e.isObjectProperty(d)&&e.isIdentifier(d.value)&&n.add(d.value.name)}}function s(a){if(e.isObjectPattern(a))for(let o of a.properties)e.isObjectProperty(o)&&e.isIdentifier(o.value)?n.add(o.value.name):e.isRestElement(o)&&e.isIdentifier(o.argument)&&n.add(o.argument.name)}let t=i.scope;for(;t;){for(let o of Object.values(t.bindings))o.path.isVariableDeclarator()&&r(o.path.node);let a=t.path&&t.path.node;if(a){if(a.params)for(let o of a.params)s(o);a._whatMovedProps&&s(a._whatMovedProps)}t=t.parent}return n}function Pe(i){return Z(i)}function K(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?O.has(n.object.name):e.isIdentifier(n)?O.has(n.name):!1}function Q(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&F(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!O.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&F(i.callee.object.name,n)||K(i))return!1;if(i.arguments.some(s=>y(s,n,r)))return!0}return!1}function y(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&F(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!O.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&F(i.callee.object.name,n)?!0:K(i)?i.arguments.some(s=>y(s,n,r)):e.isIdentifier(i.callee)?i.arguments.some(s=>y(s,n,r)):y(i.callee,n,r)||i.arguments.some(s=>y(s,n,r)):e.isIdentifier(i)?F(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?y(i.object,n,r):e.isConditionalExpression(i)?y(i.test,n,r)||y(i.consequent,n,r)||y(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?y(i.left,n,r)||y(i.right,n,r):e.isUnaryExpression(i)?y(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(s=>y(s,n,r)):e.isObjectExpression(i)?i.properties.some(s=>e.isObjectProperty(s)&&y(s.value,n,r)):e.isArrayExpression(i)?i.elements.some(s=>s&&y(s,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function Y(i,n){let r=i,s=!1;if(e.isArrowFunctionExpression(i)&&i.params.length===0&&(r=i.body,s=!0),e.isConditionalExpression(r)){let a=T(r.consequent,n),o=T(r.alternate,n);if(a||o){let u=e.conditionalExpression(r.test,a||r.consequent,o||r.alternate);return s?e.arrowFunctionExpression([],u):u}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let a=T(r.right,n);if(a){let o=e.logicalExpression(r.operator,r.left,a);return s?e.arrowFunctionExpression([],o):o}return null}return T(r,n)}function T(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 s=null;if(e.isArrowFunctionExpression(r)){if(e.isExpression(r.body))s=r.body;else if(e.isBlockStatement(r.body)){let l=r.body.body.find(E=>e.isReturnStatement(E));l&&(s=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(E=>e.isReturnStatement(E));l&&(s=l.argument)}if(!s||!e.isJSXElement(s))return null;let t=s.openingElement.attributes,a=null;for(let l of t)if(e.isJSXAttribute(l)&&$(l)==="key"){a=l;break}if(!a)return null;let o=C(a.value);if(!o)return null;s.openingElement.attributes=t.filter(l=>l!==a);let u=i.callee.object,c=e.arrowFunctionExpression([],u),p=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([p],e.cloneNode(o,!0));return e.callExpression(e.identifier("_$mapArray"),[c,r,e.objectExpression([e.objectProperty(e.identifier("key"),d),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function W(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(M(i))return!1;for(let r of n.attributes){if(e.isJSXSpreadAttribute(r))return!1;let s=r.value;if(e.isJSXExpressionContainer(s))return!1}return i.children.every(W)}return!1}function ee(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function V(i){if(e.isJSXText(i)){let a=k(i.value);return a?ne(a):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(M(i))return"";let s=`<${r}`;for(let a of n.attributes){if(e.isJSXSpreadAttribute(a))continue;let o=$(a);if(o==="key"||me(o)||o.startsWith("bind:")||o.includes("|"))continue;let u=o;if(o==="className"&&(u="class"),o==="htmlFor"&&(u="for"),!a.value)s+=` ${u}`;else if(e.isStringLiteral(a.value))s+=` ${u}="${Ee(a.value.value)}"`;else if(e.isJSXExpressionContainer(a.value))continue}let t=i.openingElement.selfClosing;if(t&&de(r))return s+=">",s;if(t)return s+=`></${r}>`,s;s+=">";for(let a of i.children)if(e.isJSXText(a)){let o=k(a.value);o&&(s+=ne(o))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||(s+="<!--$-->"):e.isJSXElement(a)&&(M(a)?s+="<!--$-->":s+=V(a));return s+=`</${r}>`,s}function ne(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Ee(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function J(i,n){let{node:r}=i,s=r.openingElement,t=s.name.name;if(!P(t,n)){if(t==="For")return ge(i,n);if(t==="Show")return Se(i,n)}if(t==="Switch"&&(!P(t,n)||pe(r)))return be(i,n);if(M(r))return se(i,n);let a=s.attributes,o=r.children,u=o.every(W),c=a.every(f=>!ee(f)),p=a.every(f=>{if(e.isJSXSpreadAttribute(f))return!1;let g=$(f);return!g?.startsWith("on")&&!g?.startsWith("bind:")});if(u&&c&&p){let f=V(r);if(f){let g=te(n,f);return n.needsTemplate=!0,e.callExpression(e.identifier(g),[])}}let d=V(r);if(!d){let f=r.loc,g=n.filename||n.file?.opts?.filename||"<unknown>",b=f?`:${f.start.line}:${f.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${g}${b}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,B(i,n)}let l=te(n,d);n.needsTemplate=!0;let E=n.nextVarId(),m=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),e.callExpression(e.identifier(l),[]))])];return ie(m,E,a,n,t),re(m,E,o,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...m),e.identifier(E)}function B(i,n){let{node:r}=i,s=r.openingElement,t=s.name.name,a=s.attributes,o=r.children,u=[];for(let d of a){if(e.isJSXSpreadAttribute(d))continue;let l=$(d),E=C(d.value),m=z(l);u.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(m)?e.identifier(m):e.stringLiteral(m),E))}let c=[];for(let d of o)if(e.isJSXText(d)){let l=k(d.value);l&&c.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(d)?e.isJSXEmptyExpression(d.expression)||c.push(d.expression):e.isJSXElement(d)?c.push(J({node:d},n)):e.isJSXFragment(d)&&c.push(D({node:d},n));let p=u.length>0?e.objectExpression(u):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),p,...c])}let he=new Set(["input","textarea","select","option"]);function ie(i,n,r,s,t){function a(c,p){return c==="class"?(s.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),p])):c==="style"?(s.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),p])):c==="value"&&t&&he.has(t)?(s.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),p])):c==="checked"&&t==="input"?(s.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),p])):c.startsWith("data-")||c.startsWith("aria-")?(s.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),p])):(s.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),p]))}let o=!1;function u(){o||(o=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){s.needsSpread=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(n),c.argument])));continue}let p=$(c);if(p!=="key"){if(p==="ref"){let d=C(c.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",d),e.stringLiteral("function")),e.callExpression(e.cloneNode(d),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(d),e.identifier("current")),e.identifier(n)))));continue}if(p.startsWith("on")&&!p.includes("|")&&!_(p,s)){let d=p.slice(2).toLowerCase(),l=C(c.value);Je.has(d)?(s.needsDelegation=!0,s.delegatedEvents||(s.delegatedEvents=new Set),s.delegatedEvents.add(d),u(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${d}`)),l)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(d),l])));continue}if(p.startsWith("on")&&(p.includes("|")||_(p,s))){let{eventName:d,modifiers:l}=x(p),E=C(c.value),m=q(E,l),f=d.slice(2).toLowerCase(),g=l.filter(h=>ke.has(h)),b=[e.stringLiteral(f),m];if(g.length>0){let h=g.map(S=>e.objectProperty(e.identifier(S),e.booleanLiteral(!0)));b.push(e.objectExpression(h))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),b)));continue}if(v(p)){let d=j(p),l=c.value.expression;s.needsEffect=!0,d==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):d==="checked"&&(s.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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(c.value)){let d=c.value.expression,l=z(p);if(y(d,s.signalNames,s.importedIdentifiers)){s.needsEffect=!0;let E=e.isIdentifier(d)&&(F(d.name,s.signalNames)||s.importedIdentifiers&&s.importedIdentifiers.has(d.name))?e.callExpression(d,[]):d,m=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(l,E))]);Q(d,s.signalNames,s.importedIdentifiers)&&e.addComment(m,"leading"," @what-dev: effect wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(m))}else i.push(e.expressionStatement(a(l,d)))}}}}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 X(i,n,r){let s=null,t=!1;if(e.isConditionalExpression(i))s=i.test,t=!0;else if(e.isLogicalExpression(i)&&(i.operator==="&&"||i.operator==="||"))s=i.left;else return i;if(!y(s,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(H))return i;let o=r.nextMemoId();r.needsMemo=!0;let u=t?e.unaryExpression("!",e.unaryExpression("!",s)):s;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(o),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],u)]))]));let c=e.callExpression(e.identifier(o),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function re(i,n,r,s,t){let a=[],o=0;for(let l of r){if(e.isJSXText(l)){k(l.value)&&o++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;a.push({type:"expression",child:l,childIndex:o}),o++;continue}if(e.isJSXElement(l)){let E=l.openingElement.name.name;if(M(l)||E==="For"||E==="Show")a.push({type:"component",child:l,childIndex:o}),o++;else{let m=l.openingElement.attributes.some(ee)||l.openingElement.attributes.some(f=>!e.isJSXSpreadAttribute(f)&&$(f)?.startsWith("on"))||!l.children.every(W);a.push({type:"static",child:l,childIndex:o,hasAnythingDynamic:m}),o++}continue}e.isJSXFragment(l)&&a.push({type:"fragment",child:l})}let u=a.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=u.length>=2,p=new Map;if(c){let l=null,E=0;for(let m of u){let f=m.childIndex,g=t.nextVarId();p.set(f,g);let b;if(l===null)b=U(n,f);else{b=e.identifier(l);for(let h=E;h<f;h++)b=e.memberExpression(b,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),b)])),l=g,E=f}}function d(l){return p.has(l)?e.identifier(p.get(l)):U(n,l)}for(let l of a){if(l.type==="expression"){let E=l.child.expression,m=d(l.childIndex);t.needsInsert=!0;let f=Y(E,t);if(f){t.needsMapArray=!0;let b=e.isCallExpression(f)&&e.isIdentifier(f.callee)&&(f.callee.name==="_$mapArray"||f.callee.name==="mapArray"),h=e.isArrowFunctionExpression(f);h&&e.isExpression(f.body)?f.body=X(f.body,i,t):!b&&!h&&(f=X(f,i,t));let S=b||h?f:e.arrowFunctionExpression([],f);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),S,m])));continue}if(e.isCallExpression(E)&&e.isIdentifier(E.callee)&&(E.callee.name==="mapArray"||E.callee.name==="_$mapArray")){t.needsMapArray=!0,E.callee.name==="mapArray"&&(E.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),E,m])));continue}if(y(E,t.signalNames,t.importedIdentifiers)){E=X(E,i,t);let b=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],E),m]);Q(E,t.signalNames,t.importedIdentifiers)&&e.addComment(b,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(b))}else i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),E,m])));continue}if(l.type==="component"){let E=J({node:l.child},t),m=d(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),E,m])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let E;p.has(l.childIndex)?E=p.get(l.childIndex):(E=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),U(n,l.childIndex))]))),ie(i,E,l.child.openingElement.attributes,t,l.child.openingElement.name.name),re(i,E,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let E of l.child.children)if(e.isJSXExpressionContainer(E)&&!e.isJSXEmptyExpression(E.expression)){t.needsInsert=!0;let m=E.expression;y(m,t.signalNames,t.importedIdentifiers)?(m=X(m,i,t),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],m)])))):i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),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 s=0;s<n;s++)r=e.memberExpression(r,e.identifier("nextSibling"));return r}function se(i,n){let{node:r}=i,s=r.openingElement,t=G(s.name),a=s.attributes,o=r.children,u=null,c=[];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 I=S.slice(7);h.value?u={type:I,value:h.value.value}:u={type:I};continue}}c.push(h)}if(u){n.needsCreateComponent=!0,n.needsIsland=!0;let h=[e.objectProperty(e.identifier("component"),t),e.objectProperty(e.identifier("mode"),e.stringLiteral(u.type))];u.value&&h.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(u.value)));for(let S of c){if(e.isJSXSpreadAttribute(S))continue;let I=$(S),L=C(S.value);h.push(e.objectProperty(e.identifier(I),L))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(h),e.arrayExpression([])])}n.needsCreateComponent=!0;let p=[],d=!1,l=null;for(let h of c){if(e.isJSXSpreadAttribute(h)){d=!0,l=h.argument;continue}let S=$(h);if(S==="key")continue;if(v(S)){let L=j(S),N=h.value.expression;L==="value"?(p.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(N),[]))),p.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(N),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):L==="checked"&&(p.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(N),[]))),p.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(N),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:L,modifiers:N}=x(S),Ce=C(h.value),$e=q(Ce,N);p.push(e.objectProperty(e.identifier(L),$e));continue}let I=C(h.value);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(S)?e.identifier(S):e.stringLiteral(S),I))}let E=n._pendingSetup?n._pendingSetup.length:0,m=[],f=!1;for(let h of o)if(e.isJSXText(h)){let S=k(h.value);S&&m.push(e.stringLiteral(S))}else if(e.isJSXExpressionContainer(h))e.isJSXEmptyExpression(h.expression)||(f=!0,m.push(h.expression));else if(e.isJSXElement(h)){let S=h.openingElement.name.name;S!=="For"&&S!=="Show"&&S!=="Switch"&&(f=!0),m.push(J({node:h},n))}else e.isJSXFragment(h)&&(f=!0,m.push(D({node:h},n)));let g;d?p.length>0?g=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(p)]):g=l:p.length>0?g=e.objectExpression(p):g=e.nullLiteral();let b=e.arrayExpression(m);if(f){let h=n._pendingSetup?n._pendingSetup.splice(E):[];b=e.arrowFunctionExpression([],h.length>0?e.blockStatement([...h,e.returnStatement(b)]):b)}return e.callExpression(e.identifier("_$createComponent"),[t,g,b])}function ge(i,n){let{node:r}=i,s=r.openingElement.attributes,t=r.children,a=null,o=null;for(let p of s)if(e.isJSXAttribute(p)){let d=$(p);d==="each"?a=C(p.value):d==="key"&&(o=C(p.value))}if(!a)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,B(i,n);let u=null;for(let p of t)if(e.isJSXExpressionContainer(p)&&!e.isJSXEmptyExpression(p.expression)){u=p.expression;break}if(!u)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,B(i,n);n.needsMapArray=!0;let c=[a,u];return o&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),o)])),e.callExpression(e.identifier("_$mapArray"),c)}function Se(i,n){let{node:r}=i,s=r.openingElement.attributes,t=r.children,a=null,o=null;for(let m of s)if(e.isJSXAttribute(m)){let f=$(m);f==="when"?a=C(m.value):f==="fallback"&&(o=C(m.value))}if(!a)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let u=null;for(let m of t)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){u=m.expression;break}if(!u){let m=[];for(let f of t)if(e.isJSXText(f)){let g=k(f.value);g&&m.push(e.stringLiteral(g))}else e.isJSXElement(f)&&m.push(J({node:f},n));m.length===1?u=m[0]:m.length>1?u=e.arrayExpression(m):u=e.nullLiteral()}let c=oe(a,n),p=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(u),l=d?e.callExpression(u,[e.cloneNode(p)]):u,E=o||e.nullLiteral();if(y(c,n.signalNames,n.importedIdentifiers)){let m=n.nextMemoId();n.needsMemo=!0;let f=d?c:e.unaryExpression("!",e.unaryExpression("!",c));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],f)]))])),c=e.callExpression(e.identifier(m),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(p,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(p),l,E))]))}function oe(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&F(i.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(i.name))?e.callExpression(i,[]):i}function xe(i,n){let r=[];for(let s of i)if(e.isJSXText(s)){let t=k(s.value);t&&r.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(s)?e.isJSXEmptyExpression(s.expression)||r.push(s.expression):e.isJSXElement(s)?r.push(J({node:s},n)):e.isJSXFragment(s)&&r.push(D({node:s},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function be(i,n){let{node:r}=i,s=P(r.openingElement.name.name,n),t=f=>e.isJSXElement(f)&&e.isJSXIdentifier(f.openingElement.name,{name:"Match"})&&(s||!P("Match",n));if(!r.children.some(t)&&!fe(r.openingElement.name.name,n))return se(i,n);let a=f=>{let g=`<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>`;throw i.buildCodeFrameError?i.buildCodeFrameError(g):new Error(`[what-compiler] ${g}`)},o=null;for(let f of r.openingElement.attributes)e.isJSXSpreadAttribute(f)&&a("cannot take a spread attribute"),$(f)==="fallback"&&(o=C(f.value));let u=[];for(let f of r.children){if(e.isJSXText(f)){k(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")}t(f)||a("cannot mix other elements with its <Match> arms"),u.push(f)}u.length===0&&a("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let c=[];for(let f of u){let g=null;for(let I of f.openingElement.attributes)e.isJSXAttribute(I)&&$(I)==="when"&&(g=C(I.value));g||a('has a <Match> with no "when" prop');let b=n._pendingSetup.length,h=xe(f.children,n),S=n._pendingSetup.splice(b);S.length>0&&(h=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...S,e.returnStatement(h)])),[])),c.push([oe(g,n),h])}let p=c.some(([f])=>y(f,n.signalNames,n.importedIdentifiers)),d=o||e.nullLiteral();if(!p){let f=d;for(let g=c.length-1;g>=0;g--)f=e.conditionalExpression(c[g][0],c[g][1],f);return e.arrowFunctionExpression([],f)}let l=e.numericLiteral(-1);for(let f=c.length-1;f>=0;f--)l=e.conditionalExpression(c[f][0],e.numericLiteral(f),l);let E=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let m=d;for(let f=c.length-1;f>=0;f--)m=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(E),[]),e.numericLiteral(f)),c[f][1],m);return e.arrowFunctionExpression([],m)}function ye(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,s=Y(i,n);if(s){n.needsMapArray=!0;let a=e.isCallExpression(s)&&e.isIdentifier(s.callee)&&(s.callee.name==="_$mapArray"||s.callee.name==="mapArray");if(e.isArrowFunctionExpression(s)&&e.isExpression(s.body))return s.body=X(s.body,r,n),s;if(a)return s;let u=X(s,r,n);return e.arrowFunctionExpression([],u)}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):y(i,n.signalNames,n.importedIdentifiers)?(i=X(i,r,n),e.arrowFunctionExpression([],i)):i}function D(i,n){let{node:r}=i,s=r.children,t=[];for(let a of s)if(e.isJSXText(a)){let o=k(a.value);o&&t.push(e.stringLiteral(o))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||t.push(ye(a.expression,n)):e.isJSXElement(a)?t.push(J({node:a},n)):e.isJSXFragment(a)&&t.push(D({node:a},n));return t.length===1?t[0]:e.arrayExpression(t)}function te(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 ae(i,n,r){let s=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let a=t.get(s);a||(a=Z(i),t.set(s,a)),n.signalNames=a,n._pendingSetup=[];let o=r(i,n),u=n._pendingSetup;if(n._pendingSetup=[],u.length>0){let c=i,p=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(p=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!p?(c.insertBefore(u),i.replaceWith(o)):(u.push(e.returnStatement(o)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(u)),[])))}else i.replaceWith(o)}function we(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 ve(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 Ae(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 le(i,n,r,s,t){let a=i.node.loc?.start||{line:0,column:0},o=`${t}:${a.line}:${a.column+1}`,u=`${t}#${s}`,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 "${s}" at ${o}.`);let p={id:r,key:u,bindingName:s,filename:t,source:o,loc:a};if(n.serverActionIds.set(r,p),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(p)}catch(d){throw i.buildCodeFrameError(d instanceof Error?d.message:String(d))}}function _e(i,n){if(!ve(i,n))return;let r=we(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 s=i.node.arguments[1],t=Ae(s);if(t.property){t.value!==null&&le(i,n,t.value,r,n.serverActionFilename);return}let a=`wa1_${Le(`${n.serverActionFilename}#${r}`)}`;le(i,n,a,r,n.serverActionFilename);let o=e.objectProperty(e.identifier("id"),e.stringLiteral(a));s?e.isObjectExpression(s)?s.properties.unshift(o):i.node.arguments[1]=e.objectExpression([o,e.spreadElement(s)]):i.node.arguments.push(e.objectExpression([o]))}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._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.serverActionBindings=new Set,n.serverActionNamespaces=new Set,n.serverActionIds=new Map,n.serverActionFilename=Ne(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 s=r.source.value,t=s==="what-framework"||s.startsWith("what-framework/")||s==="what-core"||s.startsWith("what-core/"),a=t||s.startsWith("./")||s.startsWith("../");for(let o of r.specifiers){let u=null;(e.isImportSpecifier(o)&&e.isIdentifier(o.local)||e.isImportDefaultSpecifier(o)&&e.isIdentifier(o.local)||e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local))&&(u=o.local.name),u&&((a||/^(use|create)[A-Z]/.test(u))&&n.importedIdentifiers.add(u),t?n.whatImports.add(u):s.startsWith(".")||n.foreignImports.add(u)),Me.has(s)&&(e.isImportSpecifier(o)&&e.isIdentifier(o.imported,{name:"action"})&&e.isIdentifier(o.local)?n.serverActionBindings.add(o.local.name):e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local)&&n.serverActionNamespaces.add(o.local.name))}}i.traverse({Function(r){ue(r)},CallExpression(r){_e(r,n)},VariableDeclarator(r){let s=r.node.init;if(!s||!e.isCallExpression(s))return;let t=s.callee,a="";if(e.isIdentifier(t)?a=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(a=t.property.name),ce.has(a)){let o=r.node.id;if(e.isIdentifier(o))n.signalNames.add(o.name);else if(e.isArrayPattern(o))for(let u of o.elements)e.isIdentifier(u)&&n.signalNames.add(u.name);else if(e.isObjectPattern(o))for(let u of o.properties)e.isObjectProperty(u)&&e.isIdentifier(u.value)&&n.signalNames.add(u.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let a=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(a,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.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.needsDelegation&&r.push(e.importSpecifier(e.identifier("_$delegateEvents"),e.identifier("delegateEvents")));let s=[];if(n.needsH&&s.push(e.importSpecifier(e.identifier("h"),e.identifier("h"))),n.needsFragment&&s.push(e.importSpecifier(e.identifier("Fragment"),e.identifier("Fragment"))),n.needsIsland&&s.push(e.importSpecifier(e.identifier("Island"),e.identifier("Island"))),r.length>0){let t=null;for(let a of i.node.body)if(e.isImportDeclaration(a)&&(a.source.value==="what-framework/render"||a.source.value==="what-core/render")){t=a;break}if(t){let a=new Set(t.specifiers.filter(o=>e.isImportSpecifier(o)).map(o=>o.imported.name));for(let o of r)a.has(o.imported.name)||t.specifiers.push(o)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(s.length>0&&je(i,e,s),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let t=e.arrayExpression([...n.delegatedEvents].map(o=>e.stringLiteral(o))),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"),[t]))]));i.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),a])}}},JSXElement(i,n){ae(i,n,J)},JSXFragment(i,n){ae(i,n,D)}}}}function je(e,w,A){let _=null;for(let x of e.node.body)if(w.isImportDeclaration(x)&&(x.source.value==="what-core"||x.source.value==="what-framework")){_=x;break}if(_){let x=new Set(_.specifiers.filter(v=>w.isImportSpecifier(v)).map(v=>v.imported.name));for(let v of A)x.has(v.imported.name)||_.specifiers.push(v)}else{let x=w.importDeclaration(A,w.stringLiteral("what-framework"));e.unshiftContainer("body",x)}}export{De as default};
|
|
1
|
+
var Ce=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),$e=new Set(["once","capture","passive"]),Ie=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ke=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"]),le=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),Fe=new Set(["For","Show","Switch","Match"]),Je=new Set(["what-framework/server","what-server","what-server/actions"]);function Xe(e){let v=0xcbf29ce484222325n;for(let _=0;_<e.length;_++)v^=BigInt(e.charCodeAt(_)),v=BigInt.asUintN(64,v*0x100000001b3n);return v.toString(36)}function Me(e,v){let _=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),C=String(v||"").replace(/\\/g,"/").replace(/\/+$/,"");return C&&_.startsWith(`${C}/`)?_.slice(C.length+1):_.replace(/^\.\//,"")}function F(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let v=e.split(/\r\n|\n|\r/),_=-1;for(let b=0;b<v.length;b++)/[^ \t]/.test(v[b])&&(_=b);if(_===-1)return"";let C="";for(let b=0;b<v.length;b++){let A=v[b].replace(/\t/g," "),j=b===0,O=b===v.length-1;j||(A=A.replace(/^ +/,"")),O||(A=A.replace(/ +$/,"")),A&&(b!==_&&(A+=" "),C+=A)}return C}function Le({types:e}){let v=new Set,_=new Set;function C(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(t=>t!=="").length===0)}function b(i){let n=i.includes("|")?"|":"__",r=i.split(n),s=r[0],t=r.slice(1).filter(a=>Ce.has(a));return{eventName:s,modifiers:t}}function A(i){return i.startsWith("bind:")}function j(i){return i.slice(5)}function O(i){return/^[A-Z]/.test(i)}function L(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&O(n.name)}function D(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function ce(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function fe(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function U(i){return e.isJSXMemberExpression(i)?e.memberExpression(U(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function pe(i){let n=i.node.params;if(n.length!==1||!e.isObjectPattern(n[0]))return;let r=n[0],s=-1;for(let c=0;c<r.properties.length;c++){let d=r.properties[c];if(e.isRestElement(d))return;if(e.isObjectProperty(d)&&!d.computed&&e.isIdentifier(d.key,{name:"children"})){if(s!==-1||!e.isIdentifier(d.value))return;s=c}}if(s===-1)return;let t=i.scope.getBinding(r.properties[s].value.name);if(!t||t.constantViolations.length>0||t.referencePaths.length===0||!t.referencePaths.every(c=>{let d=c.parentPath;if(!d||!d.isJSXExpressionContainer())return!1;let f=d.parentPath;if(!f||!f.isJSXElement()||!L(f.node))return!1;let l=f.node.openingElement.name;return!(e.isJSXIdentifier(l)&&Fe.has(l.name))}))return;let o=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(o.typeAnnotation=r.typeAnnotation),n[0]=o;let u=r.properties.filter((c,d)=>d!==s);if(u.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let c=e.objectPattern(u);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(c,e.cloneNode(o))])),i.node._whatMovedProps=c}for(let c of t.referencePaths)c.replaceWith(e.memberExpression(e.cloneNode(o),e.identifier("children")));i.scope.crawl()}function ue(i){return Ie.has(String(i).toLowerCase())}function $(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function G(i){return i==="className"?"class":i==="htmlFor"?"for":i}function I(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 de(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 s of n)switch(s){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 J(i,n){return n.has(i)}function q(i){let n=new Set;function r(a){let o=a.init;if(!o||!e.isCallExpression(o))return;let u=o.callee,c="";if(e.isIdentifier(u)?c=u.name:e.isMemberExpression(u)&&e.isIdentifier(u.property)&&(c=u.property.name),le.has(c)){let d=a.id;if(e.isIdentifier(d))n.add(d.name);else if(e.isArrayPattern(d))for(let f of d.elements)e.isIdentifier(f)&&n.add(f.name);else if(e.isObjectPattern(d))for(let f of d.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&n.add(f.value.name)}}function s(a){if(e.isObjectPattern(a))for(let o of a.properties)e.isObjectProperty(o)&&e.isIdentifier(o.value)?n.add(o.value.name):e.isRestElement(o)&&e.isIdentifier(o.argument)&&n.add(o.argument.name)}let t=i.scope;for(;t;){for(let o of Object.values(t.bindings))o.path.isVariableDeclarator()&&r(o.path.node);let a=t.path&&t.path.node;if(a){if(a.params)for(let o of a.params)s(o);a._whatMovedProps&&s(a._whatMovedProps)}t=t.parent}return n}function je(i){return q(i)}function Z(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 K(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&J(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)&&J(i.callee.object.name,n)||Z(i))return!1;if(i.arguments.some(s=>y(s,n,r)))return!0}return!1}function y(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&J(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)&&J(i.callee.object.name,n)?!0:Z(i)?i.arguments.some(s=>y(s,n,r)):e.isIdentifier(i.callee)?i.arguments.some(s=>y(s,n,r)):y(i.callee,n,r)||i.arguments.some(s=>y(s,n,r)):e.isIdentifier(i)?J(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?y(i.object,n,r):e.isConditionalExpression(i)?y(i.test,n,r)||y(i.consequent,n,r)||y(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?y(i.left,n,r)||y(i.right,n,r):e.isUnaryExpression(i)?y(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(s=>y(s,n,r)):e.isObjectExpression(i)?i.properties.some(s=>e.isObjectProperty(s)&&y(s.value,n,r)):e.isArrayExpression(i)?i.elements.some(s=>s&&y(s,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function Q(i,n){let r=i,s=!1;if(e.isArrowFunctionExpression(i)&&i.params.length===0&&(r=i.body,s=!0),e.isConditionalExpression(r)){let a=P(r.consequent,n),o=P(r.alternate,n);if(a||o){let u=e.conditionalExpression(r.test,a||r.consequent,o||r.alternate);return s?e.arrowFunctionExpression([],u):u}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let a=P(r.right,n);if(a){let o=e.logicalExpression(r.operator,r.left,a);return s?e.arrowFunctionExpression([],o):o}return null}return P(r,n)}function P(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 s=null;if(e.isArrowFunctionExpression(r)){if(e.isExpression(r.body))s=r.body;else if(e.isBlockStatement(r.body)){let l=r.body.body.find(E=>e.isReturnStatement(E));l&&(s=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(E=>e.isReturnStatement(E));l&&(s=l.argument)}if(!s||!e.isJSXElement(s))return null;let t=s.openingElement.attributes,a=null;for(let l of t)if(e.isJSXAttribute(l)&&I(l)==="key"){a=l;break}if(!a)return null;let o=$(a.value);if(!o)return null;s.openingElement.attributes=t.filter(l=>l!==a);let u=i.callee.object,c=e.arrowFunctionExpression([],u),d=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),f=e.arrowFunctionExpression([d],e.cloneNode(o,!0));return e.callExpression(e.identifier("_$mapArray"),[c,r,e.objectExpression([e.objectProperty(e.identifier("key"),f),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function R(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(L(i))return!1;for(let r of n.attributes){if(e.isJSXSpreadAttribute(r))return!1;let s=r.value;if(e.isJSXExpressionContainer(s))return!1}return i.children.every(R)}return!1}function Y(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function W(i){if(e.isJSXText(i)){let a=F(i.value);return a?ee(a):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(L(i))return"";let s=`<${r}`;for(let a of n.attributes){if(e.isJSXSpreadAttribute(a))continue;let o=I(a);if(o==="key"||de(o)||o.startsWith("bind:")||o.includes("|"))continue;let u=o;if(o==="className"&&(u="class"),o==="htmlFor"&&(u="for"),!a.value)s+=` ${u}`;else if(e.isStringLiteral(a.value))s+=` ${u}="${me(a.value.value)}"`;else if(e.isJSXExpressionContainer(a.value))continue}let t=i.openingElement.selfClosing;if(t&&ue(r))return s+=">",s;if(t)return s+=`></${r}>`,s;s+=">";for(let a of i.children)if(e.isJSXText(a)){let o=F(a.value);o&&(s+=ee(o))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||(s+="<!--$-->"):e.isJSXElement(a)&&(L(a)?s+="<!--$-->":s+=W(a));return s+=`</${r}>`,s}function ee(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function me(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function X(i,n){let{node:r}=i,s=r.openingElement,t=s.name.name;if(!D(t,n)){if(t==="For")return he(i,n);if(t==="Show")return ge(i,n)}if(t==="Switch"&&(!D(t,n)||fe(r)))return xe(i,n);if(L(r))return re(i,n);let a=s.attributes,o=r.children,u=o.every(R),c=a.every(p=>!Y(p)),d=a.every(p=>{if(e.isJSXSpreadAttribute(p))return!1;let h=I(p);return!h?.startsWith("on")&&!h?.startsWith("bind:")});if(u&&c&&d){let p=W(r);if(p){let h=oe(n,p);return n.needsTemplate=!0,e.callExpression(e.identifier(h),[])}}let f=W(r);if(!f){let p=r.loc,h=n.filename||n.file?.opts?.filename||"<unknown>",g=p?`:${p.start.line}:${p.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${h}${g}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,V(i,n)}let l=oe(n,f);n.needsTemplate=!0;let E=n.nextVarId(),m=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),e.callExpression(e.identifier(l),[]))])];return ne(m,E,a,n,t),ie(m,E,o,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...m),e.identifier(E)}function V(i,n){let{node:r}=i,s=r.openingElement,t=s.name.name,a=s.attributes,o=r.children,u=[];for(let f of a){if(e.isJSXSpreadAttribute(f))continue;let l=I(f),E=$(f.value),m=G(l);u.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(m)?e.identifier(m):e.stringLiteral(m),E))}let c=[];for(let f of o)if(e.isJSXText(f)){let l=F(f.value);l&&c.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(f)?e.isJSXEmptyExpression(f.expression)||c.push(f.expression):e.isJSXElement(f)?c.push(X({node:f},n)):e.isJSXFragment(f)&&c.push(N({node:f},n));let d=u.length>0?e.objectExpression(u):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),d,...c])}let Ee=new Set(["input","textarea","select","option"]);function ne(i,n,r,s,t){function a(c,d){return c==="class"?(s.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),d])):c==="style"?(s.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),d])):c==="value"&&t&&Ee.has(t)?(s.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),d])):c==="checked"&&t==="input"?(s.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),d])):c.startsWith("data-")||c.startsWith("aria-")?(s.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),d])):(s.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),d]))}let o=!1;function u(){o||(o=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){s.needsSpread=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(n),c.argument])));continue}let d=I(c);if(d!=="key"){if(d==="ref"){let f=$(c.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",f),e.stringLiteral("function")),e.callExpression(e.cloneNode(f),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(f),e.identifier("current")),e.identifier(n)))));continue}if(d.startsWith("on")&&!d.includes("|")&&!C(d,s)){let f=d.slice(2).toLowerCase(),l=$(c.value);ke.has(f)?(s.needsDelegation=!0,s.delegatedEvents||(s.delegatedEvents=new Set),s.delegatedEvents.add(f),u(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${f}`)),l)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(f),l])));continue}if(d.startsWith("on")&&(d.includes("|")||C(d,s))){let{eventName:f,modifiers:l}=b(d),E=$(c.value),m=z(E,l),p=f.slice(2).toLowerCase(),h=l.filter(x=>$e.has(x)),g=[e.stringLiteral(p),m];if(h.length>0){let x=h.map(w=>e.objectProperty(e.identifier(w),e.booleanLiteral(!0)));g.push(e.objectExpression(x))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),g)));continue}if(A(d)){let f=j(d),l=c.value.expression;s.needsEffect=!0,f==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):f==="checked"&&(s.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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(c.value)){let f=c.value.expression,l=G(d);if(y(f,s.signalNames,s.importedIdentifiers)){s.needsEffect=!0;let E=e.isIdentifier(f)&&(J(f.name,s.signalNames)||s.importedIdentifiers&&s.importedIdentifiers.has(f.name))?e.callExpression(f,[]):f,m=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(l,E))]);K(f,s.signalNames,s.importedIdentifiers)&&e.addComment(m,"leading"," @what-dev: effect wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(m))}else i.push(e.expressionStatement(a(l,f)))}}}}function B(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(B);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"&&B(r))return!0}return!1}function M(i,n,r){let s=null,t=!1;if(e.isConditionalExpression(i))s=i.test,t=!0;else if(e.isLogicalExpression(i)&&(i.operator==="&&"||i.operator==="||"))s=i.left;else return i;if(!y(s,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(B))return i;let o=r.nextMemoId();r.needsMemo=!0;let u=t?e.unaryExpression("!",e.unaryExpression("!",s)):s;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(o),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],u)]))]));let c=e.callExpression(e.identifier(o),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function ie(i,n,r,s,t){let a=[],o=0;for(let l of r){if(e.isJSXText(l)){F(l.value)&&o++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;a.push({type:"expression",child:l,childIndex:o}),o++;continue}if(e.isJSXElement(l)){let E=l.openingElement.name.name;if(L(l)||E==="For"||E==="Show")a.push({type:"component",child:l,childIndex:o}),o++;else{let m=l.openingElement.attributes.some(Y)||l.openingElement.attributes.some(p=>!e.isJSXSpreadAttribute(p)&&I(p)?.startsWith("on"))||!l.children.every(R);a.push({type:"static",child:l,childIndex:o,hasAnythingDynamic:m}),o++}continue}e.isJSXFragment(l)&&a.push({type:"fragment",child:l})}let u=a.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=u.length>=2,d=new Map;if(c){let l=null,E=0;for(let m of u){let p=m.childIndex,h=t.nextVarId();d.set(p,h);let g;if(l===null)g=H(n,p);else{g=e.identifier(l);for(let x=E;x<p;x++)g=e.memberExpression(g,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),g)])),l=h,E=p}}function f(l){return d.has(l)?e.identifier(d.get(l)):H(n,l)}for(let l of a){if(l.type==="expression"){let E=l.child.expression,m=f(l.childIndex);t.needsInsert=!0;let p=Q(E,t);if(p){t.needsMapArray=!0;let g=e.isCallExpression(p)&&e.isIdentifier(p.callee)&&(p.callee.name==="_$mapArray"||p.callee.name==="mapArray"),x=e.isArrowFunctionExpression(p);x&&e.isExpression(p.body)?p.body=M(p.body,i,t):!g&&!x&&(p=M(p,i,t));let w=g||x?p:e.arrowFunctionExpression([],p);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),w,m])));continue}if(e.isCallExpression(E)&&e.isIdentifier(E.callee)&&(E.callee.name==="mapArray"||E.callee.name==="_$mapArray")){t.needsMapArray=!0,E.callee.name==="mapArray"&&(E.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),E,m])));continue}if(y(E,t.signalNames,t.importedIdentifiers)){E=M(E,i,t);let g=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],E),m]);K(E,t.signalNames,t.importedIdentifiers)&&e.addComment(g,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(g))}else i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),E,m])));continue}if(l.type==="component"){let E=X({node:l.child},t),m=f(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),E,m])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let E;d.has(l.childIndex)?E=d.get(l.childIndex):(E=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),H(n,l.childIndex))]))),ne(i,E,l.child.openingElement.attributes,t,l.child.openingElement.name.name),ie(i,E,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let E of l.child.children)if(e.isJSXExpressionContainer(E)&&!e.isJSXEmptyExpression(E.expression)){t.needsInsert=!0;let m=E.expression;y(m,t.signalNames,t.importedIdentifiers)?(m=M(m,i,t),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],m)])))):i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),m])))}}}}function H(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 s=0;s<n;s++)r=e.memberExpression(r,e.identifier("nextSibling"));return r}function re(i,n){let{node:r}=i,s=r.openingElement,t=U(s.name),a=s.attributes,o=r.children,u=null,c=[];for(let h of a){if(e.isJSXAttribute(h)){let g;if(e.isJSXNamespacedName(h.name)?g=`${h.name.namespace.name}:${h.name.name.name}`:g=h.name.name,g&&typeof g=="string"&&g.startsWith("client:")){let x=g.slice(7);h.value?u={type:x,value:h.value.value}:u={type:x};continue}}c.push(h)}function d(){let h=n._pendingSetup?n._pendingSetup.length:0,g=[],x=!1;for(let S of o)if(e.isJSXText(S)){let k=F(S.value);k&&g.push(e.stringLiteral(k))}else if(e.isJSXExpressionContainer(S))e.isJSXEmptyExpression(S.expression)||(x=!0,g.push(S.expression));else if(e.isJSXElement(S)){let k=S.openingElement.name.name;k!=="For"&&k!=="Show"&&k!=="Switch"&&(x=!0),g.push(X({node:S},n))}else e.isJSXFragment(S)&&(x=!0,g.push(N({node:S},n)));let w=e.arrayExpression(g);if(x){let S=n._pendingSetup?n._pendingSetup.splice(h):[];w=e.arrowFunctionExpression([],S.length>0?e.blockStatement([...S,e.returnStatement(w)]):w)}return w}if(u){n.needsCreateComponent=!0,n.needsIsland=!0;let h=[e.objectProperty(e.identifier("component"),t),e.objectProperty(e.identifier("mode"),e.stringLiteral(u.type))];u.value&&h.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(u.value)));let g=null;for(let w of c){if(e.isJSXSpreadAttribute(w)){g=w.argument;continue}let S=I(w);if(S==="key")continue;let k=$(w.value);h.push(e.objectProperty(e.identifier(S),k))}let x=g?e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),g,e.objectExpression(h)]):e.objectExpression(h);return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),x,d()])}n.needsCreateComponent=!0;let f=[],l=!1,E=null;for(let h of c){if(e.isJSXSpreadAttribute(h)){l=!0,E=h.argument;continue}let g=I(h);if(g==="key")continue;if(A(g)){let w=j(g),S=h.value.expression;w==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(S),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(S),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):w==="checked"&&(f.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(S),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(S),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(g.startsWith("on")&&(g.includes("|")||C(g,n))){let{eventName:w,modifiers:S}=b(g),k=$(h.value),_e=z(k,S);f.push(e.objectProperty(e.identifier(w),_e));continue}let x=$(h.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(g)?e.identifier(g):e.stringLiteral(g),x))}let m;l?f.length>0?m=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),E,e.objectExpression(f)]):m=E:f.length>0?m=e.objectExpression(f):m=e.nullLiteral();let p=d();return e.callExpression(e.identifier("_$createComponent"),[t,m,p])}function he(i,n){let{node:r}=i,s=r.openingElement.attributes,t=r.children,a=null,o=null;for(let d of s)if(e.isJSXAttribute(d)){let f=I(d);f==="each"?a=$(d.value):f==="key"&&(o=$(d.value))}if(!a)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,V(i,n);let u=null;for(let d of t)if(e.isJSXExpressionContainer(d)&&!e.isJSXEmptyExpression(d.expression)){u=d.expression;break}if(!u)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,V(i,n);n.needsMapArray=!0;let c=[a,u];return o&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),o)])),e.callExpression(e.identifier("_$mapArray"),c)}function ge(i,n){let{node:r}=i,s=r.openingElement.attributes,t=r.children,a=null,o=null;for(let m of s)if(e.isJSXAttribute(m)){let p=I(m);p==="when"?a=$(m.value):p==="fallback"&&(o=$(m.value))}if(!a)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let u=null;for(let m of t)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){u=m.expression;break}if(!u){let m=[];for(let p of t)if(e.isJSXText(p)){let h=F(p.value);h&&m.push(e.stringLiteral(h))}else e.isJSXElement(p)&&m.push(X({node:p},n));m.length===1?u=m[0]:m.length>1?u=e.arrayExpression(m):u=e.nullLiteral()}let c=se(a,n),d=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),f=e.isFunction(u),l=f?e.callExpression(u,[e.cloneNode(d)]):u,E=o||e.nullLiteral();if(y(c,n.signalNames,n.importedIdentifiers)){let m=n.nextMemoId();n.needsMemo=!0;let p=f?c:e.unaryExpression("!",e.unaryExpression("!",c));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))])),c=e.callExpression(e.identifier(m),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(d,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(d),l,E))]))}function se(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&J(i.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(i.name))?e.callExpression(i,[]):i}function Se(i,n){let r=[];for(let s of i)if(e.isJSXText(s)){let t=F(s.value);t&&r.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(s)?e.isJSXEmptyExpression(s.expression)||r.push(s.expression):e.isJSXElement(s)?r.push(X({node:s},n)):e.isJSXFragment(s)&&r.push(N({node:s},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function xe(i,n){let{node:r}=i,s=D(r.openingElement.name.name,n),t=p=>e.isJSXElement(p)&&e.isJSXIdentifier(p.openingElement.name,{name:"Match"})&&(s||!D("Match",n));if(!r.children.some(t)&&!ce(r.openingElement.name.name,n))return re(i,n);let a=p=>{let h=`<Switch> ${p}. The compiler needs to read its arms statically. Write them out: <Switch fallback={...}><Match when={a}>\u2026</Match><Match when={b}>\u2026</Match></Switch>`;throw i.buildCodeFrameError?i.buildCodeFrameError(h):new Error(`[what-compiler] ${h}`)},o=null;for(let p of r.openingElement.attributes)e.isJSXSpreadAttribute(p)&&a("cannot take a spread attribute"),I(p)==="fallback"&&(o=$(p.value));let u=[];for(let p of r.children){if(e.isJSXText(p)){F(p.value)&&a("cannot mix text with its <Match> arms");continue}if(e.isJSXExpressionContainer(p)){if(e.isJSXEmptyExpression(p.expression))continue;a("cannot read its arms from an expression child")}t(p)||a("cannot mix other elements with its <Match> arms"),u.push(p)}u.length===0&&a("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let c=[];for(let p of u){let h=null;for(let S of p.openingElement.attributes)e.isJSXAttribute(S)&&I(S)==="when"&&(h=$(S.value));h||a('has a <Match> with no "when" prop');let g=n._pendingSetup.length,x=Se(p.children,n),w=n._pendingSetup.splice(g);w.length>0&&(x=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...w,e.returnStatement(x)])),[])),c.push([se(h,n),x])}let d=c.some(([p])=>y(p,n.signalNames,n.importedIdentifiers)),f=o||e.nullLiteral();if(!d){let p=f;for(let h=c.length-1;h>=0;h--)p=e.conditionalExpression(c[h][0],c[h][1],p);return e.arrowFunctionExpression([],p)}let l=e.numericLiteral(-1);for(let p=c.length-1;p>=0;p--)l=e.conditionalExpression(c[p][0],e.numericLiteral(p),l);let E=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let m=f;for(let p=c.length-1;p>=0;p--)m=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(E),[]),e.numericLiteral(p)),c[p][1],m);return e.arrowFunctionExpression([],m)}function be(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,s=Q(i,n);if(s){n.needsMapArray=!0;let a=e.isCallExpression(s)&&e.isIdentifier(s.callee)&&(s.callee.name==="_$mapArray"||s.callee.name==="mapArray");if(e.isArrowFunctionExpression(s)&&e.isExpression(s.body))return s.body=M(s.body,r,n),s;if(a)return s;let u=M(s,r,n);return e.arrowFunctionExpression([],u)}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):y(i,n.signalNames,n.importedIdentifiers)?(i=M(i,r,n),e.arrowFunctionExpression([],i)):i}function N(i,n){let{node:r}=i,s=r.children,t=[];for(let a of s)if(e.isJSXText(a)){let o=F(a.value);o&&t.push(e.stringLiteral(o))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||t.push(be(a.expression,n)):e.isJSXElement(a)?t.push(X({node:a},n)):e.isJSXFragment(a)&&t.push(N({node:a},n));return t.length===1?t[0]:e.arrayExpression(t)}function oe(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 te(i,n,r){let s=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let a=t.get(s);a||(a=q(i),t.set(s,a)),n.signalNames=a,n._pendingSetup=[];let o=r(i,n),u=n._pendingSetup;if(n._pendingSetup=[],u.length>0){let c=i,d=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(d=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!d?(c.insertBefore(u),i.replaceWith(o)):(u.push(e.returnStatement(o)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(u)),[])))}else i.replaceWith(o)}function ye(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 we(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 ve(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 ae(i,n,r,s,t){let a=i.node.loc?.start||{line:0,column:0},o=`${t}:${a.line}:${a.column+1}`,u=`${t}#${s}`,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 "${s}" at ${o}.`);let d={id:r,key:u,bindingName:s,filename:t,source:o,loc:a};if(n.serverActionIds.set(r,d),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(d)}catch(f){throw i.buildCodeFrameError(f instanceof Error?f.message:String(f))}}function Ae(i,n){if(!we(i,n))return;let r=ye(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 s=i.node.arguments[1],t=ve(s);if(t.property){t.value!==null&&ae(i,n,t.value,r,n.serverActionFilename);return}let a=`wa1_${Xe(`${n.serverActionFilename}#${r}`)}`;ae(i,n,a,r,n.serverActionFilename);let o=e.objectProperty(e.identifier("id"),e.stringLiteral(a));s?e.isObjectExpression(s)?s.properties.unshift(o):i.node.arguments[1]=e.objectExpression([o,e.spreadElement(s)]):i.node.arguments.push(e.objectExpression([o]))}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._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.serverActionBindings=new Set,n.serverActionNamespaces=new Set,n.serverActionIds=new Map,n.serverActionFilename=Me(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 s=r.source.value,t=s==="what-framework"||s.startsWith("what-framework/")||s==="what-core"||s.startsWith("what-core/"),a=t||s.startsWith("./")||s.startsWith("../");for(let o of r.specifiers){let u=null;(e.isImportSpecifier(o)&&e.isIdentifier(o.local)||e.isImportDefaultSpecifier(o)&&e.isIdentifier(o.local)||e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local))&&(u=o.local.name),u&&((a||/^(use|create)[A-Z]/.test(u))&&n.importedIdentifiers.add(u),t?n.whatImports.add(u):s.startsWith(".")||n.foreignImports.add(u)),Je.has(s)&&(e.isImportSpecifier(o)&&e.isIdentifier(o.imported,{name:"action"})&&e.isIdentifier(o.local)?n.serverActionBindings.add(o.local.name):e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local)&&n.serverActionNamespaces.add(o.local.name))}}i.traverse({Function(r){pe(r)},CallExpression(r){Ae(r,n)},VariableDeclarator(r){let s=r.node.init;if(!s||!e.isCallExpression(s))return;let t=s.callee,a="";if(e.isIdentifier(t)?a=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(a=t.property.name),le.has(a)){let o=r.node.id;if(e.isIdentifier(o))n.signalNames.add(o.name);else if(e.isArrayPattern(o))for(let u of o.elements)e.isIdentifier(u)&&n.signalNames.add(u.name);else if(e.isObjectPattern(o))for(let u of o.properties)e.isObjectProperty(u)&&e.isIdentifier(u.value)&&n.signalNames.add(u.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let a=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(a,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.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.needsDelegation&&r.push(e.importSpecifier(e.identifier("_$delegateEvents"),e.identifier("delegateEvents")));let s=[];if(n.needsH&&s.push(e.importSpecifier(e.identifier("h"),e.identifier("h"))),n.needsFragment&&s.push(e.importSpecifier(e.identifier("Fragment"),e.identifier("Fragment"))),n.needsIsland&&s.push(e.importSpecifier(e.identifier("Island"),e.identifier("Island"))),r.length>0){let t=null;for(let a of i.node.body)if(e.isImportDeclaration(a)&&(a.source.value==="what-framework/render"||a.source.value==="what-core/render")){t=a;break}if(t){let a=new Set(t.specifiers.filter(o=>e.isImportSpecifier(o)).map(o=>o.imported.name));for(let o of r)a.has(o.imported.name)||t.specifiers.push(o)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(s.length>0&&Ne(i,e,s),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let t=e.arrayExpression([...n.delegatedEvents].map(o=>e.stringLiteral(o))),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"),[t]))]));i.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),a])}}},JSXElement(i,n){te(i,n,X)},JSXFragment(i,n){te(i,n,N)}}}}function Ne(e,v,_){let C=null;for(let b of e.node.body)if(v.isImportDeclaration(b)&&(b.source.value==="what-core"||b.source.value==="what-framework")){C=b;break}if(C){let b=new Set(C.specifiers.filter(A=>v.isImportSpecifier(A)).map(A=>A.imported.name));for(let A of _)b.has(A.imported.name)||C.specifiers.push(A)}else{let b=v.importDeclaration(_,v.stringLiteral("what-framework"));e.unshiftContainer("body",b)}}export{Le as default};
|
package/dist/index.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var ze=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Ge=new Set(["once","capture","passive"]),qe=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Ze=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),ne=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),Ce=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),Ke=new Set(["For","Show","Switch","Match"]),Ye=new Set(["what-framework/server","what-server","what-server/actions"]);function Qe(e){let m=0xcbf29ce484222325n;for(let x=0;x<e.length;x++)m^=BigInt(e.charCodeAt(x)),m=BigInt.asUintN(64,m*0x100000001b3n);return m.toString(36)}function en(e,m){let x=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),C=String(m||"").replace(/\\/g,"/").replace(/\/+$/,"");return C&&x.startsWith(`${C}/`)?x.slice(C.length+1):x.replace(/^\.\//,"")}function W(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let m=e.split(/\r\n|\n|\r/),x=-1;for(let _=0;_<m.length;_++)/[^ \t]/.test(m[_])&&(x=_);if(x===-1)return"";let C="";for(let _=0;_<m.length;_++){let $=m[_].replace(/\t/g," "),L=_===0,P=_===m.length-1;L||($=$.replace(/^ +/,"")),P||($=$.replace(/ +$/,"")),$&&(_!==x&&($+=" "),C+=$)}return C}function ie({types:e}){let m=new Set,x=new Set;function C(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(s=>s!=="").length===0)}function _(i){let n=i.includes("|")?"|":"__",r=i.split(n),o=r[0],s=r.slice(1).filter(a=>ze.has(a));return{eventName:o,modifiers:s}}function $(i){return i.startsWith("bind:")}function L(i){return i.slice(5)}function P(i){return/^[A-Z]/.test(i)}function M(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&P(n.name)}function k(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function S(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function T(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function A(i){return e.isJSXMemberExpression(i)?e.memberExpression(A(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function X(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 p=r.properties[c];if(e.isRestElement(p))return;if(e.isObjectProperty(p)&&!p.computed&&e.isIdentifier(p.key,{name:"children"})){if(o!==-1||!e.isIdentifier(p.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 p=c.parentPath;if(!p||!p.isJSXExpressionContainer())return!1;let d=p.parentPath;if(!d||!d.isJSXElement()||!M(d.node))return!1;let l=d.node.openingElement.name;return!(e.isJSXIdentifier(l)&&Ke.has(l.name))}))return;let t=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(t.typeAnnotation=r.typeAnnotation),n[0]=t;let u=r.properties.filter((c,p)=>p!==o);if(u.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let c=e.objectPattern(u);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(c,e.cloneNode(t))])),i.node._whatMovedProps=c}for(let c of s.referencePaths)c.replaceWith(e.memberExpression(e.cloneNode(t),e.identifier("children")));i.scope.crawl()}function j(i){return qe.has(String(i).toLowerCase())}function N(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function b(i){return i==="className"?"class":i==="htmlFor"?"for":i}function y(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 J(i){return!!i&&i.length>2&&/^on/i.test(i)}function U(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 D(i,n){return n.has(i)}function Q(i){let n=new Set;function r(a){let t=a.init;if(!t||!e.isCallExpression(t))return;let u=t.callee,c="";if(e.isIdentifier(u)?c=u.name:e.isMemberExpression(u)&&e.isIdentifier(u.property)&&(c=u.property.name),Ce.has(c)){let p=a.id;if(e.isIdentifier(p))n.add(p.name);else if(e.isArrayPattern(p))for(let d of p.elements)e.isIdentifier(d)&&n.add(d.name);else if(e.isObjectPattern(p))for(let d of p.properties)e.isObjectProperty(d)&&e.isIdentifier(d.value)&&n.add(d.value.name)}}function o(a){if(e.isObjectPattern(a))for(let t of a.properties)e.isObjectProperty(t)&&e.isIdentifier(t.value)?n.add(t.value.name):e.isRestElement(t)&&e.isIdentifier(t.argument)&&n.add(t.argument.name)}let s=i.scope;for(;s;){for(let t of Object.values(s.bindings))t.path.isVariableDeclarator()&&r(t.path.node);let a=s.path&&s.path.node;if(a){if(a.params)for(let t of a.params)o(t);a._whatMovedProps&&o(a._whatMovedProps)}s=s.parent}return n}function O(i){return Q(i)}function q(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?ne.has(n.object.name):e.isIdentifier(n)?ne.has(n.name):!1}function te(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&D(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ne.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&D(i.callee.object.name,n)||q(i))return!1;if(i.arguments.some(o=>F(o,n,r)))return!0}return!1}function F(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&D(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ne.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&D(i.callee.object.name,n)?!0:q(i)?i.arguments.some(o=>F(o,n,r)):e.isIdentifier(i.callee)?i.arguments.some(o=>F(o,n,r)):F(i.callee,n,r)||i.arguments.some(o=>F(o,n,r)):e.isIdentifier(i)?D(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?F(i.object,n,r):e.isConditionalExpression(i)?F(i.test,n,r)||F(i.consequent,n,r)||F(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?F(i.left,n,r)||F(i.right,n,r):e.isUnaryExpression(i)?F(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>F(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&F(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&F(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function ge(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=ee(r.consequent,n),t=ee(r.alternate,n);if(a||t){let u=e.conditionalExpression(r.test,a||r.consequent,t||r.alternate);return o?e.arrowFunctionExpression([],u):u}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let a=ee(r.right,n);if(a){let t=e.logicalExpression(r.operator,r.left,a);return o?e.arrowFunctionExpression([],t):t}return null}return ee(r,n)}function ee(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 l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}if(!o||!e.isJSXElement(o))return null;let s=o.openingElement.attributes,a=null;for(let l of s)if(e.isJSXAttribute(l)&&y(l)==="key"){a=l;break}if(!a)return null;let t=N(a.value);if(!t)return null;o.openingElement.attributes=s.filter(l=>l!==a);let u=i.callee.object,c=e.arrowFunctionExpression([],u),p=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([p],e.cloneNode(t,!0));return e.callExpression(e.identifier("_$mapArray"),[c,r,e.objectExpression([e.objectProperty(e.identifier("key"),d),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function se(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(M(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(se)}return!1}function Ee(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function ae(i){if(e.isJSXText(i)){let a=W(i.value);return a?xe(a):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(M(i))return"";let o=`<${r}`;for(let a of n.attributes){if(e.isJSXSpreadAttribute(a))continue;let t=y(a);if(t==="key"||J(t)||t.startsWith("bind:")||t.includes("|"))continue;let u=t;if(t==="className"&&(u="class"),t==="htmlFor"&&(u="for"),!a.value)o+=` ${u}`;else if(e.isStringLiteral(a.value))o+=` ${u}="${Ne(a.value.value)}"`;else if(e.isJSXExpressionContainer(a.value))continue}let s=i.openingElement.selfClosing;if(s&&j(r))return o+=">",o;if(s)return o+=`></${r}>`,o;o+=">";for(let a of i.children)if(e.isJSXText(a)){let t=W(a.value);t&&(o+=xe(t))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||(o+="<!--$-->"):e.isJSXElement(a)&&(M(a)?o+="<!--$-->":o+=ae(a));return o+=`</${r}>`,o}function xe(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Ne(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function V(i,n){let{node:r}=i,o=r.openingElement,s=o.name.name;if(!k(s,n)){if(s==="For")return Te(i,n);if(s==="Show")return Oe(i,n)}if(s==="Switch"&&(!k(s,n)||T(r)))return je(i,n);if(M(r))return Se(i,n);let a=o.attributes,t=r.children,u=t.every(se),c=a.every(f=>!Ee(f)),p=a.every(f=>{if(e.isJSXSpreadAttribute(f))return!1;let w=y(f);return!w?.startsWith("on")&&!w?.startsWith("bind:")});if(u&&c&&p){let f=ae(r);if(f){let w=ve(n,f);return n.needsTemplate=!0,e.callExpression(e.identifier(w),[])}}let d=ae(r);if(!d){let f=r.loc,w=n.filename||n.file?.opts?.filename||"<unknown>",I=f?`:${f.start.line}:${f.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${s}> at ${w}${I}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,le(i,n)}let l=ve(n,d);n.needsTemplate=!0;let g=n.nextVarId(),h=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier(l),[]))])];return be(h,g,a,n,s),ye(h,g,t,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...h),e.identifier(g)}function le(i,n){let{node:r}=i,o=r.openingElement,s=o.name.name,a=o.attributes,t=r.children,u=[];for(let d of a){if(e.isJSXSpreadAttribute(d))continue;let l=y(d),g=N(d.value),h=b(l);u.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),g))}let c=[];for(let d of t)if(e.isJSXText(d)){let l=W(d.value);l&&c.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(d)?e.isJSXEmptyExpression(d.expression)||c.push(d.expression):e.isJSXElement(d)?c.push(V({node:d},n)):e.isJSXFragment(d)&&c.push(Z({node:d},n));let p=u.length>0?e.objectExpression(u):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(s),p,...c])}let Je=new Set(["input","textarea","select","option"]);function be(i,n,r,o,s){function a(c,p){return c==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),p])):c==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),p])):c==="value"&&s&&Je.has(s)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),p])):c==="checked"&&s==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),p])):c.startsWith("data-")||c.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),p])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),p]))}let t=!1;function u(){t||(t=!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 p=y(c);if(p!=="key"){if(p==="ref"){let d=N(c.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",d),e.stringLiteral("function")),e.callExpression(e.cloneNode(d),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(d),e.identifier("current")),e.identifier(n)))));continue}if(p.startsWith("on")&&!p.includes("|")&&!C(p,o)){let d=p.slice(2).toLowerCase(),l=N(c.value);Ze.has(d)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(d),u(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${d}`)),l)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(d),l])));continue}if(p.startsWith("on")&&(p.includes("|")||C(p,o))){let{eventName:d,modifiers:l}=_(p),g=N(c.value),h=U(g,l),f=d.slice(2).toLowerCase(),w=l.filter(E=>Ge.has(E)),I=[e.stringLiteral(f),h];if(w.length>0){let E=w.map(v=>e.objectProperty(e.identifier(v),e.booleanLiteral(!0)));I.push(e.objectExpression(E))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),I)));continue}if($(p)){let d=L(p),l=c.value.expression;o.needsEffect=!0,d==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):d==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(c.value)){let d=c.value.expression,l=b(p);if(F(d,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let g=e.isIdentifier(d)&&(D(d.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(d.name))?e.callExpression(d,[]):d,h=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(l,g))]);te(d,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(l,d)))}}}}function ce(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(ce);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"&&ce(r))return!0}return!1}function B(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(!F(o,r.signalNames,r.importedIdentifiers)||!(s?[i.consequent,i.alternate]:[i.right]).some(ce))return i;let t=r.nextMemoId();r.needsMemo=!0;let u=s?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],u)]))]));let c=e.callExpression(e.identifier(t),[]);return s?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function ye(i,n,r,o,s){let a=[],t=0;for(let l of r){if(e.isJSXText(l)){W(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 g=l.openingElement.name.name;if(M(l)||g==="For"||g==="Show")a.push({type:"component",child:l,childIndex:t}),t++;else{let h=l.openingElement.attributes.some(Ee)||l.openingElement.attributes.some(f=>!e.isJSXSpreadAttribute(f)&&y(f)?.startsWith("on"))||!l.children.every(se);a.push({type:"static",child:l,childIndex:t,hasAnythingDynamic:h}),t++}continue}e.isJSXFragment(l)&&a.push({type:"fragment",child:l})}let u=a.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=u.length>=2,p=new Map;if(c){let l=null,g=0;for(let h of u){let f=h.childIndex,w=s.nextVarId();p.set(f,w);let I;if(l===null)I=fe(n,f);else{I=e.identifier(l);for(let E=g;E<f;E++)I=e.memberExpression(I,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(w),I)])),l=w,g=f}}function d(l){return p.has(l)?e.identifier(p.get(l)):fe(n,l)}for(let l of a){if(l.type==="expression"){let g=l.child.expression,h=d(l.childIndex);s.needsInsert=!0;let f=ge(g,s);if(f){s.needsMapArray=!0;let I=e.isCallExpression(f)&&e.isIdentifier(f.callee)&&(f.callee.name==="_$mapArray"||f.callee.name==="mapArray"),E=e.isArrowFunctionExpression(f);E&&e.isExpression(f.body)?f.body=B(f.body,i,s):!I&&!E&&(f=B(f,i,s));let v=I||E?f:e.arrowFunctionExpression([],f);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),v,h])));continue}if(e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="mapArray"||g.callee.name==="_$mapArray")){s.needsMapArray=!0,g.callee.name==="mapArray"&&(g.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(F(g,s.signalNames,s.importedIdentifiers)){g=B(g,i,s);let I=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],g),h]);te(g,s.signalNames,s.importedIdentifiers)&&e.addComment(I,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(I))}else i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(l.type==="component"){let g=V({node:l.child},s),h=d(l.childIndex);s.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let g;p.has(l.childIndex)?g=p.get(l.childIndex):(g=s.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),fe(n,l.childIndex))]))),be(i,g,l.child.openingElement.attributes,s,l.child.openingElement.name.name),ye(i,g,l.child.children,l.child,s);continue}if(l.type==="fragment"){for(let g of l.child.children)if(e.isJSXExpressionContainer(g)&&!e.isJSXEmptyExpression(g.expression)){s.needsInsert=!0;let h=g.expression;F(h,s.signalNames,s.importedIdentifiers)?(h=B(h,i,s),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],h)])))):i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),h])))}}}}function fe(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=A(o.name),a=o.attributes,t=r.children,u=null,c=[];for(let E of a){if(e.isJSXAttribute(E)){let v;if(e.isJSXNamespacedName(E.name)?v=`${E.name.namespace.name}:${E.name.name.name}`:v=E.name.name,v&&typeof v=="string"&&v.startsWith("client:")){let R=v.slice(7);E.value?u={type:R,value:E.value.value}:u={type:R};continue}}c.push(E)}if(u){n.needsCreateComponent=!0,n.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),s),e.objectProperty(e.identifier("mode"),e.stringLiteral(u.type))];u.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(u.value)));for(let v of c){if(e.isJSXSpreadAttribute(v))continue;let R=y(v),z=N(v.value);E.push(e.objectProperty(e.identifier(R),z))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(E),e.arrayExpression([])])}n.needsCreateComponent=!0;let p=[],d=!1,l=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){d=!0,l=E.argument;continue}let v=y(E);if(v==="key")continue;if($(v)){let z=L(v),G=E.value.expression;z==="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"))]))))):z==="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(v.startsWith("on")&&(v.includes("|")||C(v,n))){let{eventName:z,modifiers:G}=_(v),Be=N(E.value),Ue=U(Be,G);p.push(e.objectProperty(e.identifier(z),Ue));continue}let R=N(E.value);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(v)?e.identifier(v):e.stringLiteral(v),R))}let g=n._pendingSetup?n._pendingSetup.length:0,h=[],f=!1;for(let E of t)if(e.isJSXText(E)){let v=W(E.value);v&&h.push(e.stringLiteral(v))}else if(e.isJSXExpressionContainer(E))e.isJSXEmptyExpression(E.expression)||(f=!0,h.push(E.expression));else if(e.isJSXElement(E)){let v=E.openingElement.name.name;v!=="For"&&v!=="Show"&&v!=="Switch"&&(f=!0),h.push(V({node:E},n))}else e.isJSXFragment(E)&&(f=!0,h.push(Z({node:E},n)));let w;d?p.length>0?w=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(p)]):w=l:p.length>0?w=e.objectExpression(p):w=e.nullLiteral();let I=e.arrayExpression(h);if(f){let E=n._pendingSetup?n._pendingSetup.splice(g):[];I=e.arrowFunctionExpression([],E.length>0?e.blockStatement([...E,e.returnStatement(I)]):I)}return e.callExpression(e.identifier("_$createComponent"),[s,w,I])}function Te(i,n){let{node:r}=i,o=r.openingElement.attributes,s=r.children,a=null,t=null;for(let p of o)if(e.isJSXAttribute(p)){let d=y(p);d==="each"?a=N(p.value):d==="key"&&(t=N(p.value))}if(!a)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,le(i,n);let u=null;for(let p of s)if(e.isJSXExpressionContainer(p)&&!e.isJSXEmptyExpression(p.expression)){u=p.expression;break}if(!u)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,le(i,n);n.needsMapArray=!0;let c=[a,u];return t&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),t)])),e.callExpression(e.identifier("_$mapArray"),c)}function Oe(i,n){let{node:r}=i,o=r.openingElement.attributes,s=r.children,a=null,t=null;for(let h of o)if(e.isJSXAttribute(h)){let f=y(h);f==="when"?a=N(h.value):f==="fallback"&&(t=N(h.value))}if(!a)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let u=null;for(let h of s)if(e.isJSXExpressionContainer(h)&&!e.isJSXEmptyExpression(h.expression)){u=h.expression;break}if(!u){let h=[];for(let f of s)if(e.isJSXText(f)){let w=W(f.value);w&&h.push(e.stringLiteral(w))}else e.isJSXElement(f)&&h.push(V({node:f},n));h.length===1?u=h[0]:h.length>1?u=e.arrayExpression(h):u=e.nullLiteral()}let c=we(a,n),p=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(u),l=d?e.callExpression(u,[e.cloneNode(p)]):u,g=t||e.nullLiteral();if(F(c,n.signalNames,n.importedIdentifiers)){let h=n.nextMemoId();n.needsMemo=!0;let f=d?c:e.unaryExpression("!",e.unaryExpression("!",c));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],f)]))])),c=e.callExpression(e.identifier(h),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(p,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(p),l,g))]))}function we(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&D(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=W(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(V({node:o},n)):e.isJSXFragment(o)&&r.push(Z({node:o},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function je(i,n){let{node:r}=i,o=k(r.openingElement.name.name,n),s=f=>e.isJSXElement(f)&&e.isJSXIdentifier(f.openingElement.name,{name:"Match"})&&(o||!k("Match",n));if(!r.children.some(s)&&!S(r.openingElement.name.name,n))return Se(i,n);let a=f=>{let w=`<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>`;throw i.buildCodeFrameError?i.buildCodeFrameError(w):new Error(`[what-compiler] ${w}`)},t=null;for(let f of r.openingElement.attributes)e.isJSXSpreadAttribute(f)&&a("cannot take a spread attribute"),y(f)==="fallback"&&(t=N(f.value));let u=[];for(let f of r.children){if(e.isJSXText(f)){W(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"),u.push(f)}u.length===0&&a("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let c=[];for(let f of u){let w=null;for(let R of f.openingElement.attributes)e.isJSXAttribute(R)&&y(R)==="when"&&(w=N(R.value));w||a('has a <Match> with no "when" prop');let I=n._pendingSetup.length,E=Xe(f.children,n),v=n._pendingSetup.splice(I);v.length>0&&(E=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...v,e.returnStatement(E)])),[])),c.push([we(w,n),E])}let p=c.some(([f])=>F(f,n.signalNames,n.importedIdentifiers)),d=t||e.nullLiteral();if(!p){let f=d;for(let w=c.length-1;w>=0;w--)f=e.conditionalExpression(c[w][0],c[w][1],f);return e.arrowFunctionExpression([],f)}let l=e.numericLiteral(-1);for(let f=c.length-1;f>=0;f--)l=e.conditionalExpression(c[f][0],e.numericLiteral(f),l);let g=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let h=d;for(let f=c.length-1;f>=0;f--)h=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(g),[]),e.numericLiteral(f)),c[f][1],h);return e.arrowFunctionExpression([],h)}function De(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=ge(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=B(o.body,r,n),o;if(a)return o;let u=B(o,r,n);return e.arrowFunctionExpression([],u)}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):F(i,n.signalNames,n.importedIdentifiers)?(i=B(i,r,n),e.arrowFunctionExpression([],i)):i}function Z(i,n){let{node:r}=i,o=r.children,s=[];for(let a of o)if(e.isJSXText(a)){let t=W(a.value);t&&s.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||s.push(De(a.expression,n)):e.isJSXElement(a)?s.push(V({node:a},n)):e.isJSXFragment(a)&&s.push(Z({node:a},n));return s.length===1?s[0]:e.arrayExpression(s)}function ve(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 _e(i,n,r){let o=i.scope,s=n._signalNamesCache;s||(s=n._signalNamesCache=new WeakMap);let a=s.get(o);a||(a=Q(i),s.set(o,a)),n.signalNames=a,n._pendingSetup=[];let t=r(i,n),u=n._pendingSetup;if(n._pendingSetup=[],u.length>0){let c=i,p=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(p=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!p?(c.insertBefore(u),i.replaceWith(t)):(u.push(e.returnStatement(t)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(u)),[])))}else i.replaceWith(t)}function Re(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 We(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 He(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 $e(i,n,r,o,s){let a=i.node.loc?.start||{line:0,column:0},t=`${s}:${a.line}:${a.column+1}`,u=`${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 ${t}.`);let p={id:r,key:u,bindingName:o,filename:s,source:t,loc:a};if(n.serverActionIds.set(r,p),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(p)}catch(d){throw i.buildCodeFrameError(d instanceof Error?d.message:String(d))}}function Ve(i,n){if(!We(i,n))return;let r=Re(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=He(o);if(s.property){s.value!==null&&$e(i,n,s.value,r,n.serverActionFilename);return}let a=`wa1_${Qe(`${n.serverActionFilename}#${r}`)}`;$e(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.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._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.serverActionBindings=new Set,n.serverActionNamespaces=new Set,n.serverActionIds=new Map,n.serverActionFilename=en(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/"),a=s||o.startsWith("./")||o.startsWith("../");for(let t of r.specifiers){let u=null;(e.isImportSpecifier(t)&&e.isIdentifier(t.local)||e.isImportDefaultSpecifier(t)&&e.isIdentifier(t.local)||e.isImportNamespaceSpecifier(t)&&e.isIdentifier(t.local))&&(u=t.local.name),u&&((a||/^(use|create)[A-Z]/.test(u))&&n.importedIdentifiers.add(u),s?n.whatImports.add(u):o.startsWith(".")||n.foreignImports.add(u)),Ye.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){X(r)},CallExpression(r){Ve(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),Ce.has(a)){let t=r.node.id;if(e.isIdentifier(t))n.signalNames.add(t.name);else if(e.isArrayPattern(t))for(let u of t.elements)e.isIdentifier(u)&&n.signalNames.add(u.name);else if(e.isObjectPattern(t))for(let u of t.properties)e.isObjectProperty(u)&&e.isIdentifier(u.value)&&n.signalNames.add(u.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.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&&nn(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){_e(i,n,V)},JSXFragment(i,n){_e(i,n,Z)}}}}function nn(e,m,x){let C=null;for(let _ of e.node.body)if(m.isImportDeclaration(_)&&(_.source.value==="what-core"||_.source.value==="what-framework")){C=_;break}if(C){let _=new Set(C.specifiers.filter($=>m.isImportSpecifier($)).map($=>$.imported.name));for(let $ of x)_.has($.imported.name)||C.specifiers.push($)}else{let _=m.importDeclaration(x,m.stringLiteral("what-framework"));e.unshiftContainer("body",_)}}import Y from"path";import{transformSync as an}from"@babel/core";import K from"fs";import H from"path";var ke=new Set([".jsx",".tsx",".js",".ts"]),rn=new Set(["_layout","_error","_loading","_404"]);function Me(e){let m=[],x=[],C=[];function _(L,P=""){if(!K.existsSync(L))return;let M=K.readdirSync(L,{withFileTypes:!0});for(let k of M){let S=H.join(L,k.name);if(k.isDirectory()){if(k.name.match(/^\((.+)\)$/)){_(S,P);continue}if(k.name==="api"&&P===""){$(S,"/api");continue}_(S,P+"/"+re(k.name));continue}let T=H.extname(k.name);if(!ke.has(T))continue;let A=H.basename(k.name,T);if(A==="_layout"){x.push({filePath:S,urlPrefix:P||"/"});continue}if(rn.has(A))continue;let X=re(A),j=A==="index"?P||"/":P+"/"+X;m.push({filePath:S,routePath:Ae(j),isDynamic:j.includes(":")||j.includes("*")})}}function $(L,P){if(!K.existsSync(L))return;let M=K.readdirSync(L,{withFileTypes:!0});for(let k of M){let S=H.join(L,k.name);if(k.isDirectory()){$(S,P+"/"+re(k.name));continue}let T=H.extname(k.name);if(!ke.has(T))continue;let A=H.basename(k.name,T),X=re(A),j=A==="index"?P:P+"/"+X;C.push({filePath:S,routePath:Ae(j)})}}return _(e),m.sort((L,P)=>{let M=Ie(L.routePath),k=Ie(P.routePath);return M-k}),{pages:m,layouts:x,apiRoutes:C}}function re(e){let m=e.match(/^\[\.\.\.(\w+)\]$/);if(m)return"*"+m[1];let x=e.match(/^\[(\w+)\]$/);return x?":"+x[1]:e.toLowerCase()}function Ae(e){let m=e.replace(/\/+/g,"/");return m.length>1&&m.endsWith("/")&&(m=m.slice(0,-1)),m||"/"}function Ie(e){return e.includes("*")?100:e.includes(":")?10:0}function Fe(e){let m=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!m)return{mode:"client"};try{let x=m[1].replace(/'/g,'"').replace(/(\w+)\s*:/g,'"$1":').replace(/,\s*}/g,"}").replace(/\/\/[^\n]*/g,"");return{mode:"client",...JSON.parse(x)}}catch{return{mode:"client"}}}function on(e){return{hasLoader:/export\s+(?:async\s+)?(?:const|let|var|function)\s+loader\b/.test(e),hasGetStaticPaths:/export\s+(?:async\s+)?(?:const|let|var|function)\s+getStaticPaths\b/.test(e),hasPageConfig:/export\s+const\s+page\b/.test(e)}}function ue(e,m){let{pages:x,layouts:C,apiRoutes:_}=Me(e),$=[],L=[],P=new Map;C.forEach((S,T)=>{let A=`_layout${T}`,X=pe(S.filePath,m);$.push(`import ${A} from '${X}';`),P.set(S.urlPrefix,A)}),x.forEach((S,T)=>{let A=`_page${T}`,X=pe(S.filePath,m);$.push(`import ${A} from '${X}';`);let j={mode:"client"},N={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let J=K.readFileSync(S.filePath,"utf-8");j=Fe(J),N=on(J)}catch{}let b=tn(S.routePath,P),y={path:S.routePath,component:A,mode:j.mode||"client",layout:b||null,hasLoader:N.hasLoader};L.push(y)});let M=[];return _.forEach((S,T)=>{let A=`_api${T}`,X=pe(S.filePath,m);$.push(`import * as ${A} from '${X}';`),M.push({path:S.routePath,handlers:A})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",...$,"","export const routes = [",...L.map(S=>` { path: '${S.path}', component: ${S.component}, mode: '${S.mode}'${S.layout?`, layout: ${S.layout}`:""}${S.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...M.map(S=>` { path: '${S.path}', handlers: ${S.handlers} },`),"];","","export const pageModes = {",...L.map(S=>` '${S.path}': '${S.mode}',`),"};"].join(`
|
|
2
|
-
`)}function
|
|
1
|
+
var Be=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Ue=new Set(["once","capture","passive"]),ze=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Ge=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),ee=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),$e=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),qe=new Set(["For","Show","Switch","Match"]),Ze=new Set(["what-framework/server","what-server","what-server/actions"]);function Ke(e){let m=0xcbf29ce484222325n;for(let b=0;b<e.length;b++)m^=BigInt(e.charCodeAt(b)),m=BigInt.asUintN(64,m*0x100000001b3n);return m.toString(36)}function Ye(e,m){let b=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),C=String(m||"").replace(/\\/g,"/").replace(/\/+$/,"");return C&&b.startsWith(`${C}/`)?b.slice(C.length+1):b.replace(/^\.\//,"")}function H(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let m=e.split(/\r\n|\n|\r/),b=-1;for(let v=0;v<m.length;v++)/[^ \t]/.test(m[v])&&(b=v);if(b===-1)return"";let C="";for(let v=0;v<m.length;v++){let _=m[v].replace(/\t/g," "),L=v===0,P=v===m.length-1;L||(_=_.replace(/^ +/,"")),P||(_=_.replace(/ +$/,"")),_&&(v!==b&&(_+=" "),C+=_)}return C}function ne({types:e}){let m=new Set,b=new Set;function C(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(t=>t!=="").length===0)}function v(i){let n=i.includes("|")?"|":"__",r=i.split(n),o=r[0],t=r.slice(1).filter(a=>Be.has(a));return{eventName:o,modifiers:t}}function _(i){return i.startsWith("bind:")}function L(i){return i.slice(5)}function P(i){return/^[A-Z]/.test(i)}function M(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&P(n.name)}function k(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function w(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function T(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function I(i){return e.isJSXMemberExpression(i)?e.memberExpression(I(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function j(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 d=r.properties[c];if(e.isRestElement(d))return;if(e.isObjectProperty(d)&&!d.computed&&e.isIdentifier(d.key,{name:"children"})){if(o!==-1||!e.isIdentifier(d.value))return;o=c}}if(o===-1)return;let t=i.scope.getBinding(r.properties[o].value.name);if(!t||t.constantViolations.length>0||t.referencePaths.length===0||!t.referencePaths.every(c=>{let d=c.parentPath;if(!d||!d.isJSXExpressionContainer())return!1;let f=d.parentPath;if(!f||!f.isJSXElement()||!M(f.node))return!1;let l=f.node.openingElement.name;return!(e.isJSXIdentifier(l)&&qe.has(l.name))}))return;let s=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(s.typeAnnotation=r.typeAnnotation),n[0]=s;let u=r.properties.filter((c,d)=>d!==o);if(u.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let c=e.objectPattern(u);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(c,e.cloneNode(s))])),i.node._whatMovedProps=c}for(let c of t.referencePaths)c.replaceWith(e.memberExpression(e.cloneNode(s),e.identifier("children")));i.scope.crawl()}function D(i){return ze.has(String(i).toLowerCase())}function N(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function y(i){return i==="className"?"class":i==="htmlFor"?"for":i}function S(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 O(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 R(i,n){return n.has(i)}function Y(i){let n=new Set;function r(a){let s=a.init;if(!s||!e.isCallExpression(s))return;let u=s.callee,c="";if(e.isIdentifier(u)?c=u.name:e.isMemberExpression(u)&&e.isIdentifier(u.property)&&(c=u.property.name),$e.has(c)){let d=a.id;if(e.isIdentifier(d))n.add(d.name);else if(e.isArrayPattern(d))for(let f of d.elements)e.isIdentifier(f)&&n.add(f.name);else if(e.isObjectPattern(d))for(let f of d.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&n.add(f.value.name)}}function o(a){if(e.isObjectPattern(a))for(let s of a.properties)e.isObjectProperty(s)&&e.isIdentifier(s.value)?n.add(s.value.name):e.isRestElement(s)&&e.isIdentifier(s.argument)&&n.add(s.argument.name)}let t=i.scope;for(;t;){for(let s of Object.values(t.bindings))s.path.isVariableDeclarator()&&r(s.path.node);let a=t.path&&t.path.node;if(a){if(a.params)for(let s of a.params)o(s);a._whatMovedProps&&o(a._whatMovedProps)}t=t.parent}return n}function X(i){return Y(i)}function G(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?ee.has(n.object.name):e.isIdentifier(n)?ee.has(n.name):!1}function oe(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&R(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ee.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&R(i.callee.object.name,n)||G(i))return!1;if(i.arguments.some(o=>F(o,n,r)))return!0}return!1}function F(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&R(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ee.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&R(i.callee.object.name,n)?!0:G(i)?i.arguments.some(o=>F(o,n,r)):e.isIdentifier(i.callee)?i.arguments.some(o=>F(o,n,r)):F(i.callee,n,r)||i.arguments.some(o=>F(o,n,r)):e.isIdentifier(i)?R(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?F(i.object,n,r):e.isConditionalExpression(i)?F(i.test,n,r)||F(i.consequent,n,r)||F(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?F(i.left,n,r)||F(i.right,n,r):e.isUnaryExpression(i)?F(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>F(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&F(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&F(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function he(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=Q(r.consequent,n),s=Q(r.alternate,n);if(a||s){let u=e.conditionalExpression(r.test,a||r.consequent,s||r.alternate);return o?e.arrowFunctionExpression([],u):u}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let a=Q(r.right,n);if(a){let s=e.logicalExpression(r.operator,r.left,a);return o?e.arrowFunctionExpression([],s):s}return null}return Q(r,n)}function Q(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 l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}if(!o||!e.isJSXElement(o))return null;let t=o.openingElement.attributes,a=null;for(let l of t)if(e.isJSXAttribute(l)&&S(l)==="key"){a=l;break}if(!a)return null;let s=N(a.value);if(!s)return null;o.openingElement.attributes=t.filter(l=>l!==a);let u=i.callee.object,c=e.arrowFunctionExpression([],u),d=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),f=e.arrowFunctionExpression([d],e.cloneNode(s,!0));return e.callExpression(e.identifier("_$mapArray"),[c,r,e.objectExpression([e.objectProperty(e.identifier("key"),f),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function se(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(M(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(se)}return!1}function ge(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function te(i){if(e.isJSXText(i)){let a=H(i.value);return a?Ee(a):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(M(i))return"";let o=`<${r}`;for(let a of n.attributes){if(e.isJSXSpreadAttribute(a))continue;let s=S(a);if(s==="key"||O(s)||s.startsWith("bind:")||s.includes("|"))continue;let u=s;if(s==="className"&&(u="class"),s==="htmlFor"&&(u="for"),!a.value)o+=` ${u}`;else if(e.isStringLiteral(a.value))o+=` ${u}="${Pe(a.value.value)}"`;else if(e.isJSXExpressionContainer(a.value))continue}let t=i.openingElement.selfClosing;if(t&&D(r))return o+=">",o;if(t)return o+=`></${r}>`,o;o+=">";for(let a of i.children)if(e.isJSXText(a)){let s=H(a.value);s&&(o+=Ee(s))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||(o+="<!--$-->"):e.isJSXElement(a)&&(M(a)?o+="<!--$-->":o+=te(a));return o+=`</${r}>`,o}function Ee(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Pe(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function B(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name;if(!k(t,n)){if(t==="For")return Je(i,n);if(t==="Show")return Oe(i,n)}if(t==="Switch"&&(!k(t,n)||T(r)))return Xe(i,n);if(M(r))return ye(i,n);let a=o.attributes,s=r.children,u=s.every(se),c=a.every(p=>!ge(p)),d=a.every(p=>{if(e.isJSXSpreadAttribute(p))return!1;let E=S(p);return!E?.startsWith("on")&&!E?.startsWith("bind:")});if(u&&c&&d){let p=te(r);if(p){let E=we(n,p);return n.needsTemplate=!0,e.callExpression(e.identifier(E),[])}}let f=te(r);if(!f){let p=r.loc,E=n.filename||n.file?.opts?.filename||"<unknown>",x=p?`:${p.start.line}:${p.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${E}${x}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,ae(i,n)}let l=we(n,f);n.needsTemplate=!0;let g=n.nextVarId(),h=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier(l),[]))])];return xe(h,g,a,n,t),be(h,g,s,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...h),e.identifier(g)}function ae(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name,a=o.attributes,s=r.children,u=[];for(let f of a){if(e.isJSXSpreadAttribute(f))continue;let l=S(f),g=N(f.value),h=y(l);u.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),g))}let c=[];for(let f of s)if(e.isJSXText(f)){let l=H(f.value);l&&c.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(f)?e.isJSXEmptyExpression(f.expression)||c.push(f.expression):e.isJSXElement(f)?c.push(B({node:f},n)):e.isJSXFragment(f)&&c.push(q({node:f},n));let d=u.length>0?e.objectExpression(u):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),d,...c])}let Ne=new Set(["input","textarea","select","option"]);function xe(i,n,r,o,t){function a(c,d){return c==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),d])):c==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),d])):c==="value"&&t&&Ne.has(t)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),d])):c==="checked"&&t==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),d])):c.startsWith("data-")||c.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),d])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),d]))}let s=!1;function u(){s||(s=!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 d=S(c);if(d!=="key"){if(d==="ref"){let f=N(c.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",f),e.stringLiteral("function")),e.callExpression(e.cloneNode(f),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(f),e.identifier("current")),e.identifier(n)))));continue}if(d.startsWith("on")&&!d.includes("|")&&!C(d,o)){let f=d.slice(2).toLowerCase(),l=N(c.value);Ge.has(f)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(f),u(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${f}`)),l)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(f),l])));continue}if(d.startsWith("on")&&(d.includes("|")||C(d,o))){let{eventName:f,modifiers:l}=v(d),g=N(c.value),h=z(g,l),p=f.slice(2).toLowerCase(),E=l.filter(A=>Ue.has(A)),x=[e.stringLiteral(p),h];if(E.length>0){let A=E.map(J=>e.objectProperty(e.identifier(J),e.booleanLiteral(!0)));x.push(e.objectExpression(A))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),x)));continue}if(_(d)){let f=L(d),l=c.value.expression;o.needsEffect=!0,f==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):f==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(c.value)){let f=c.value.expression,l=y(d);if(F(f,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let g=e.isIdentifier(f)&&(R(f.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(f.name))?e.callExpression(f,[]):f,h=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(l,g))]);oe(f,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(l,f)))}}}}function le(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(le);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"&&le(r))return!0}return!1}function U(i,n,r){let o=null,t=!1;if(e.isConditionalExpression(i))o=i.test,t=!0;else if(e.isLogicalExpression(i)&&(i.operator==="&&"||i.operator==="||"))o=i.left;else return i;if(!F(o,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(le))return i;let s=r.nextMemoId();r.needsMemo=!0;let u=t?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(s),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],u)]))]));let c=e.callExpression(e.identifier(s),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function be(i,n,r,o,t){let a=[],s=0;for(let l of r){if(e.isJSXText(l)){H(l.value)&&s++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;a.push({type:"expression",child:l,childIndex:s}),s++;continue}if(e.isJSXElement(l)){let g=l.openingElement.name.name;if(M(l)||g==="For"||g==="Show")a.push({type:"component",child:l,childIndex:s}),s++;else{let h=l.openingElement.attributes.some(ge)||l.openingElement.attributes.some(p=>!e.isJSXSpreadAttribute(p)&&S(p)?.startsWith("on"))||!l.children.every(se);a.push({type:"static",child:l,childIndex:s,hasAnythingDynamic:h}),s++}continue}e.isJSXFragment(l)&&a.push({type:"fragment",child:l})}let u=a.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=u.length>=2,d=new Map;if(c){let l=null,g=0;for(let h of u){let p=h.childIndex,E=t.nextVarId();d.set(p,E);let x;if(l===null)x=ce(n,p);else{x=e.identifier(l);for(let A=g;A<p;A++)x=e.memberExpression(x,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),x)])),l=E,g=p}}function f(l){return d.has(l)?e.identifier(d.get(l)):ce(n,l)}for(let l of a){if(l.type==="expression"){let g=l.child.expression,h=f(l.childIndex);t.needsInsert=!0;let p=he(g,t);if(p){t.needsMapArray=!0;let x=e.isCallExpression(p)&&e.isIdentifier(p.callee)&&(p.callee.name==="_$mapArray"||p.callee.name==="mapArray"),A=e.isArrowFunctionExpression(p);A&&e.isExpression(p.body)?p.body=U(p.body,i,t):!x&&!A&&(p=U(p,i,t));let J=x||A?p:e.arrowFunctionExpression([],p);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),J,h])));continue}if(e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="mapArray"||g.callee.name==="_$mapArray")){t.needsMapArray=!0,g.callee.name==="mapArray"&&(g.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(F(g,t.signalNames,t.importedIdentifiers)){g=U(g,i,t);let x=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],g),h]);oe(g,t.signalNames,t.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),g,h])));continue}if(l.type==="component"){let g=B({node:l.child},t),h=f(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let g;d.has(l.childIndex)?g=d.get(l.childIndex):(g=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),ce(n,l.childIndex))]))),xe(i,g,l.child.openingElement.attributes,t,l.child.openingElement.name.name),be(i,g,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let g of l.child.children)if(e.isJSXExpressionContainer(g)&&!e.isJSXEmptyExpression(g.expression)){t.needsInsert=!0;let h=g.expression;F(h,t.signalNames,t.importedIdentifiers)?(h=U(h,i,t),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],h)])))):i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),h])))}}}}function ce(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 ye(i,n){let{node:r}=i,o=r.openingElement,t=I(o.name),a=o.attributes,s=r.children,u=null,c=[];for(let E of a){if(e.isJSXAttribute(E)){let x;if(e.isJSXNamespacedName(E.name)?x=`${E.name.namespace.name}:${E.name.name.name}`:x=E.name.name,x&&typeof x=="string"&&x.startsWith("client:")){let A=x.slice(7);E.value?u={type:A,value:E.value.value}:u={type:A};continue}}c.push(E)}function d(){let E=n._pendingSetup?n._pendingSetup.length:0,x=[],A=!1;for(let $ of s)if(e.isJSXText($)){let W=H($.value);W&&x.push(e.stringLiteral(W))}else if(e.isJSXExpressionContainer($))e.isJSXEmptyExpression($.expression)||(A=!0,x.push($.expression));else if(e.isJSXElement($)){let W=$.openingElement.name.name;W!=="For"&&W!=="Show"&&W!=="Switch"&&(A=!0),x.push(B({node:$},n))}else e.isJSXFragment($)&&(A=!0,x.push(q({node:$},n)));let J=e.arrayExpression(x);if(A){let $=n._pendingSetup?n._pendingSetup.splice(E):[];J=e.arrowFunctionExpression([],$.length>0?e.blockStatement([...$,e.returnStatement(J)]):J)}return J}if(u){n.needsCreateComponent=!0,n.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),t),e.objectProperty(e.identifier("mode"),e.stringLiteral(u.type))];u.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(u.value)));let x=null;for(let J of c){if(e.isJSXSpreadAttribute(J)){x=J.argument;continue}let $=S(J);if($==="key")continue;let W=N(J.value);E.push(e.objectProperty(e.identifier($),W))}let A=x?e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),x,e.objectExpression(E)]):e.objectExpression(E);return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),A,d()])}n.needsCreateComponent=!0;let f=[],l=!1,g=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){l=!0,g=E.argument;continue}let x=S(E);if(x==="key")continue;if(_(x)){let J=L(x),$=E.value.expression;J==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode($),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode($),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):J==="checked"&&(f.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode($),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode($),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(x.startsWith("on")&&(x.includes("|")||C(x,n))){let{eventName:J,modifiers:$}=v(x),W=N(E.value),Ve=z(W,$);f.push(e.objectProperty(e.identifier(J),Ve));continue}let A=N(E.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(x)?e.identifier(x):e.stringLiteral(x),A))}let h;l?f.length>0?h=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),g,e.objectExpression(f)]):h=g:f.length>0?h=e.objectExpression(f):h=e.nullLiteral();let p=d();return e.callExpression(e.identifier("_$createComponent"),[t,h,p])}function Je(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,a=null,s=null;for(let d of o)if(e.isJSXAttribute(d)){let f=S(d);f==="each"?a=N(d.value):f==="key"&&(s=N(d.value))}if(!a)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,ae(i,n);let u=null;for(let d of t)if(e.isJSXExpressionContainer(d)&&!e.isJSXEmptyExpression(d.expression)){u=d.expression;break}if(!u)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,ae(i,n);n.needsMapArray=!0;let c=[a,u];return s&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),s)])),e.callExpression(e.identifier("_$mapArray"),c)}function Oe(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,a=null,s=null;for(let h of o)if(e.isJSXAttribute(h)){let p=S(h);p==="when"?a=N(h.value):p==="fallback"&&(s=N(h.value))}if(!a)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let u=null;for(let h of t)if(e.isJSXExpressionContainer(h)&&!e.isJSXEmptyExpression(h.expression)){u=h.expression;break}if(!u){let h=[];for(let p of t)if(e.isJSXText(p)){let E=H(p.value);E&&h.push(e.stringLiteral(E))}else e.isJSXElement(p)&&h.push(B({node:p},n));h.length===1?u=h[0]:h.length>1?u=e.arrayExpression(h):u=e.nullLiteral()}let c=Se(a,n),d=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),f=e.isFunction(u),l=f?e.callExpression(u,[e.cloneNode(d)]):u,g=s||e.nullLiteral();if(F(c,n.signalNames,n.importedIdentifiers)){let h=n.nextMemoId();n.needsMemo=!0;let p=f?c:e.unaryExpression("!",e.unaryExpression("!",c));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))])),c=e.callExpression(e.identifier(h),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(d,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(d),l,g))]))}function Se(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&R(i.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(i.name))?e.callExpression(i,[]):i}function Te(i,n){let r=[];for(let o of i)if(e.isJSXText(o)){let t=H(o.value);t&&r.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||r.push(o.expression):e.isJSXElement(o)?r.push(B({node:o},n)):e.isJSXFragment(o)&&r.push(q({node:o},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function Xe(i,n){let{node:r}=i,o=k(r.openingElement.name.name,n),t=p=>e.isJSXElement(p)&&e.isJSXIdentifier(p.openingElement.name,{name:"Match"})&&(o||!k("Match",n));if(!r.children.some(t)&&!w(r.openingElement.name.name,n))return ye(i,n);let a=p=>{let E=`<Switch> ${p}. The compiler needs to read its arms statically. Write them out: <Switch fallback={...}><Match when={a}>\u2026</Match><Match when={b}>\u2026</Match></Switch>`;throw i.buildCodeFrameError?i.buildCodeFrameError(E):new Error(`[what-compiler] ${E}`)},s=null;for(let p of r.openingElement.attributes)e.isJSXSpreadAttribute(p)&&a("cannot take a spread attribute"),S(p)==="fallback"&&(s=N(p.value));let u=[];for(let p of r.children){if(e.isJSXText(p)){H(p.value)&&a("cannot mix text with its <Match> arms");continue}if(e.isJSXExpressionContainer(p)){if(e.isJSXEmptyExpression(p.expression))continue;a("cannot read its arms from an expression child")}t(p)||a("cannot mix other elements with its <Match> arms"),u.push(p)}u.length===0&&a("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let c=[];for(let p of u){let E=null;for(let $ of p.openingElement.attributes)e.isJSXAttribute($)&&S($)==="when"&&(E=N($.value));E||a('has a <Match> with no "when" prop');let x=n._pendingSetup.length,A=Te(p.children,n),J=n._pendingSetup.splice(x);J.length>0&&(A=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...J,e.returnStatement(A)])),[])),c.push([Se(E,n),A])}let d=c.some(([p])=>F(p,n.signalNames,n.importedIdentifiers)),f=s||e.nullLiteral();if(!d){let p=f;for(let E=c.length-1;E>=0;E--)p=e.conditionalExpression(c[E][0],c[E][1],p);return e.arrowFunctionExpression([],p)}let l=e.numericLiteral(-1);for(let p=c.length-1;p>=0;p--)l=e.conditionalExpression(c[p][0],e.numericLiteral(p),l);let g=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let h=f;for(let p=c.length-1;p>=0;p--)h=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(g),[]),e.numericLiteral(p)),c[p][1],h);return e.arrowFunctionExpression([],h)}function je(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=he(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=U(o.body,r,n),o;if(a)return o;let u=U(o,r,n);return e.arrowFunctionExpression([],u)}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):F(i,n.signalNames,n.importedIdentifiers)?(i=U(i,r,n),e.arrowFunctionExpression([],i)):i}function q(i,n){let{node:r}=i,o=r.children,t=[];for(let a of o)if(e.isJSXText(a)){let s=H(a.value);s&&t.push(e.stringLiteral(s))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||t.push(je(a.expression,n)):e.isJSXElement(a)?t.push(B({node:a},n)):e.isJSXFragment(a)&&t.push(q({node:a},n));return t.length===1?t[0]:e.arrayExpression(t)}function we(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 ve(i,n,r){let o=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let a=t.get(o);a||(a=Y(i),t.set(o,a)),n.signalNames=a,n._pendingSetup=[];let s=r(i,n),u=n._pendingSetup;if(n._pendingSetup=[],u.length>0){let c=i,d=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(d=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!d?(c.insertBefore(u),i.replaceWith(s)):(u.push(e.returnStatement(s)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(u)),[])))}else i.replaceWith(s)}function De(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 Re(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 We(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 _e(i,n,r,o,t){let a=i.node.loc?.start||{line:0,column:0},s=`${t}:${a.line}:${a.column+1}`,u=`${t}#${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 ${s}.`);let d={id:r,key:u,bindingName:o,filename:t,source:s,loc:a};if(n.serverActionIds.set(r,d),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(d)}catch(f){throw i.buildCodeFrameError(f instanceof Error?f.message:String(f))}}function He(i,n){if(!Re(i,n))return;let r=De(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],t=We(o);if(t.property){t.value!==null&&_e(i,n,t.value,r,n.serverActionFilename);return}let a=`wa1_${Ke(`${n.serverActionFilename}#${r}`)}`;_e(i,n,a,r,n.serverActionFilename);let s=e.objectProperty(e.identifier("id"),e.stringLiteral(a));o?e.isObjectExpression(o)?o.properties.unshift(s):i.node.arguments[1]=e.objectExpression([s,e.spreadElement(o)]):i.node.arguments.push(e.objectExpression([s]))}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._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.serverActionBindings=new Set,n.serverActionNamespaces=new Set,n.serverActionIds=new Map,n.serverActionFilename=Ye(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,t=o==="what-framework"||o.startsWith("what-framework/")||o==="what-core"||o.startsWith("what-core/"),a=t||o.startsWith("./")||o.startsWith("../");for(let s of r.specifiers){let u=null;(e.isImportSpecifier(s)&&e.isIdentifier(s.local)||e.isImportDefaultSpecifier(s)&&e.isIdentifier(s.local)||e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local))&&(u=s.local.name),u&&((a||/^(use|create)[A-Z]/.test(u))&&n.importedIdentifiers.add(u),t?n.whatImports.add(u):o.startsWith(".")||n.foreignImports.add(u)),Ze.has(o)&&(e.isImportSpecifier(s)&&e.isIdentifier(s.imported,{name:"action"})&&e.isIdentifier(s.local)?n.serverActionBindings.add(s.local.name):e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local)&&n.serverActionNamespaces.add(s.local.name))}}i.traverse({Function(r){j(r)},CallExpression(r){He(r,n)},VariableDeclarator(r){let o=r.node.init;if(!o||!e.isCallExpression(o))return;let t=o.callee,a="";if(e.isIdentifier(t)?a=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(a=t.property.name),$e.has(a)){let s=r.node.id;if(e.isIdentifier(s))n.signalNames.add(s.name);else if(e.isArrayPattern(s))for(let u of s.elements)e.isIdentifier(u)&&n.signalNames.add(u.name);else if(e.isObjectPattern(s))for(let u of s.properties)e.isObjectProperty(u)&&e.isIdentifier(u.value)&&n.signalNames.add(u.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let a=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(a,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.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.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 t=null;for(let a of i.node.body)if(e.isImportDeclaration(a)&&(a.source.value==="what-framework/render"||a.source.value==="what-core/render")){t=a;break}if(t){let a=new Set(t.specifiers.filter(s=>e.isImportSpecifier(s)).map(s=>s.imported.name));for(let s of r)a.has(s.imported.name)||t.specifiers.push(s)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(o.length>0&&Qe(i,e,o),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let t=e.arrayExpression([...n.delegatedEvents].map(s=>e.stringLiteral(s))),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"),[t]))]));i.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),a])}}},JSXElement(i,n){ve(i,n,B)},JSXFragment(i,n){ve(i,n,q)}}}}function Qe(e,m,b){let C=null;for(let v of e.node.body)if(m.isImportDeclaration(v)&&(v.source.value==="what-core"||v.source.value==="what-framework")){C=v;break}if(C){let v=new Set(C.specifiers.filter(_=>m.isImportSpecifier(_)).map(_=>_.imported.name));for(let _ of b)v.has(_.imported.name)||C.specifiers.push(_)}else{let v=m.importDeclaration(b,m.stringLiteral("what-framework"));e.unshiftContainer("body",v)}}import K from"path";import{transformSync as sn}from"@babel/core";import Z from"fs";import V from"path";var Ce=new Set([".jsx",".tsx",".js",".ts"]),en=new Set(["_layout","_error","_loading","_404"]);function Ie(e){let m=[],b=[],C=[];function v(L,P=""){if(!Z.existsSync(L))return;let M=Z.readdirSync(L,{withFileTypes:!0});for(let k of M){let w=V.join(L,k.name);if(k.isDirectory()){if(k.name.match(/^\((.+)\)$/)){v(w,P);continue}if(k.name==="api"&&P===""){_(w,"/api");continue}v(w,P+"/"+ie(k.name));continue}let T=V.extname(k.name);if(!Ce.has(T))continue;let I=V.basename(k.name,T);if(I==="_layout"){b.push({filePath:w,urlPrefix:P||"/"});continue}if(en.has(I))continue;let j=ie(I),D=I==="index"?P||"/":P+"/"+j;m.push({filePath:w,routePath:ke(D),isDynamic:D.includes(":")||D.includes("*")})}}function _(L,P){if(!Z.existsSync(L))return;let M=Z.readdirSync(L,{withFileTypes:!0});for(let k of M){let w=V.join(L,k.name);if(k.isDirectory()){_(w,P+"/"+ie(k.name));continue}let T=V.extname(k.name);if(!Ce.has(T))continue;let I=V.basename(k.name,T),j=ie(I),D=I==="index"?P:P+"/"+j;C.push({filePath:w,routePath:ke(D)})}}return v(e),m.sort((L,P)=>{let M=Ae(L.routePath),k=Ae(P.routePath);return M-k}),{pages:m,layouts:b,apiRoutes:C}}function ie(e){let m=e.match(/^\[\.\.\.(\w+)\]$/);if(m)return"*"+m[1];let b=e.match(/^\[(\w+)\]$/);return b?":"+b[1]:e.toLowerCase()}function ke(e){let m=e.replace(/\/+/g,"/");return m.length>1&&m.endsWith("/")&&(m=m.slice(0,-1)),m||"/"}function Ae(e){return e.includes("*")?100:e.includes(":")?10:0}function Me(e){let m=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!m)return{mode:"client"};try{let b=m[1].replace(/'/g,'"').replace(/(\w+)\s*:/g,'"$1":').replace(/,\s*}/g,"}").replace(/\/\/[^\n]*/g,"");return{mode:"client",...JSON.parse(b)}}catch{return{mode:"client"}}}function nn(e){return{hasLoader:/export\s+(?:async\s+)?(?:const|let|var|function)\s+loader\b/.test(e),hasGetStaticPaths:/export\s+(?:async\s+)?(?:const|let|var|function)\s+getStaticPaths\b/.test(e),hasPageConfig:/export\s+const\s+page\b/.test(e)}}function pe(e,m){let{pages:b,layouts:C,apiRoutes:v}=Ie(e),_=[],L=[],P=new Map;C.forEach((w,T)=>{let I=`_layout${T}`,j=fe(w.filePath,m);_.push(`import ${I} from '${j}';`),P.set(w.urlPrefix,I)}),b.forEach((w,T)=>{let I=`_page${T}`,j=fe(w.filePath,m);_.push(`import ${I} from '${j}';`);let D={mode:"client"},N={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let O=Z.readFileSync(w.filePath,"utf-8");D=Me(O),N=nn(O)}catch{}let y=rn(w.routePath,P),S={path:w.routePath,component:I,mode:D.mode||"client",layout:y||null,hasLoader:N.hasLoader};L.push(S)});let M=[];return v.forEach((w,T)=>{let I=`_api${T}`,j=fe(w.filePath,m);_.push(`import * as ${I} from '${j}';`),M.push({path:w.routePath,handlers:I})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",..._,"","export const routes = [",...L.map(w=>` { path: '${w.path}', component: ${w.component}, mode: '${w.mode}'${w.layout?`, layout: ${w.layout}`:""}${w.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...M.map(w=>` { path: '${w.path}', handlers: ${w.handlers} },`),"];","","export const pageModes = {",...L.map(w=>` '${w.path}': '${w.mode}',`),"};"].join(`
|
|
2
|
+
`)}function fe(e,m){return"/"+V.relative(m,e).split(V.sep).join("/")}function rn(e,m){let b=e.split("/").filter(Boolean);for(;b.length>0;){let C="/"+b.join("/");if(m.has(C))return m.get(C);b.pop()}return m.has("/")?m.get("/"):null}var on=`
|
|
3
3
|
:host {
|
|
4
4
|
position: fixed;
|
|
5
5
|
inset: 0;
|
|
@@ -185,12 +185,12 @@ var ze=new Set(["preventDefault","stopPropagation","once","capture","passive","s
|
|
|
185
185
|
white-space: pre-wrap;
|
|
186
186
|
line-height: 1.5;
|
|
187
187
|
}
|
|
188
|
-
`,
|
|
188
|
+
`,bn=`
|
|
189
189
|
class WhatErrorOverlay extends HTMLElement {
|
|
190
190
|
constructor(err) {
|
|
191
191
|
super();
|
|
192
192
|
this.root = this.attachShadow({ mode: 'open' });
|
|
193
|
-
this.root.innerHTML = '<style>${
|
|
193
|
+
this.root.innerHTML = '<style>${on}</style>';
|
|
194
194
|
this._err = err;
|
|
195
195
|
this.show(err);
|
|
196
196
|
}
|
|
@@ -380,7 +380,7 @@ class WhatErrorOverlay extends HTMLElement {
|
|
|
380
380
|
if (!customElements.get('what-error-overlay')) {
|
|
381
381
|
customElements.define('what-error-overlay', WhatErrorOverlay);
|
|
382
382
|
}
|
|
383
|
-
`;function
|
|
383
|
+
`;function Fe(e){let m=e.ws.send.bind(e.ws);e.ws.send=function(b){return b?.type==="error"&&b.err?.plugin==="vite-plugin-what"&&(b.err._isCompilerError=!0),m(b)}}var Le="virtual:what-routes",re="\0"+Le,tn=/(?:from\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"]|import\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"])/,an=/\.[cm]?[jt]sx?$/;function de(e,m){return e?Array.isArray(e)?e.some(b=>de(b,m)):e instanceof RegExp?(e.lastIndex=0,e.test(m)):typeof e=="function"?e(m):!1:!1}function ln({rolldownVersion:e,viteVersion:m}={}){let b=parseInt(String(m??""),10);return!!e||Number.isFinite(b)&&b>=8?{oxc:{jsx:"preserve"}}:{esbuild:{jsx:"preserve"}}}var ue=null;function cn(){return ue||(ue=import("vite").then(e=>e.version||"").catch(()=>"")),ue}var fn=/export\s+(?:default\s+)?function\s+([A-Z]\w*)/,pn=/(?:store|signal|state|context|util|helper|lib|config)\b/i;function me(e={}){let{include:m=/\.[jt]sx$/,exclude:b=/node_modules/,sourceMaps:C=!0,production:v=!0,pages:_="src/pages",hot:L=!v,prodBundles:P=!0}=e,M="",k="",w=null,T=!1,I=new Map;function j(y){let S=I.get(y.id);if(S&&S.key!==y.key)throw new Error(`Duplicate server action ID "${y.id}". First declared by "${S.bindingName}" at ${S.source}; conflicts with "${y.bindingName}" at ${y.source}.`);I.set(y.id,y)}function D(y){for(let[S,O]of I)O.filename===y&&I.delete(S)}function N(y){let S=y.replace(/[?#].*$/,"");return M?K.relative(M,S).split(K.sep).join("/"):S}return{name:"vite-plugin-what",configResolved(y){M=y.root,k=K.resolve(M,_),T=y.command==="serve"},configureServer(y){w=y,Fe(y),y.watcher.on("add",S=>{if(S.startsWith(k)){let O=y.moduleGraph.getModuleById(re);O&&(y.moduleGraph.invalidateModule(O),y.ws.send({type:"full-reload"}))}}),y.watcher.on("unlink",S=>{if(D(N(S)),S.startsWith(k)){let O=y.moduleGraph.getModuleById(re);O&&(y.moduleGraph.invalidateModule(O),y.ws.send({type:"full-reload"}))}})},resolveId(y){if(y===Le)return re},load(y){if(y===re)return pe(k,M)},transform(y,S){let O=S.replace(/[?#].*$/,""),z=de(m,O),R=an.test(O),Y=R&&tn.test(y);if(b&&de(b,O)||(R&&D(N(O)),!z&&!Y))return null;try{let X=sn(y,{filename:S,sourceMaps:C,configFile:!1,babelrc:!1,plugins:[[ne,{production:v,projectRoot:M||process.cwd(),onActionId:j}]],parserOpts:{plugins:["jsx","typescript"]}});if(!X||!X.code)return null;let G=X.code;return L&&T&&!v&&un(y,S)&&(G+=mn(S)),{code:G,map:X.map}}catch(X){throw X.plugin="vite-plugin-what",X.id||(X.id=S),X.loc===void 0&&X._loc&&(X.loc={file:S,line:X._loc.line,column:X._loc.column}),console.error(`[what] Error transforming ${S}:`,X.message),X}},handleHotUpdate({file:y,server:S,modules:O}){if(L&&m.test(y)&&!(b&&b.test(y))&&dn(y))return S.ws.send({type:"full-reload"}),[]},async config(y,{mode:S,command:O}){let z=O==="build"&&S==="production"&&P,R=ln({rolldownVersion:this?.meta?.rolldownVersion,viteVersion:await cn()});return{...z?{resolve:{conditions:["production"]}}:{},...R,optimizeDeps:{exclude:["what-framework","what-core","what-compiler","what-router"]}}}}}function un(e,m){return!!(fn.test(e)||m.includes("/pages/")||m.includes("\\pages\\"))}function dn(e){let m=K.basename(e,K.extname(e));return pn.test(m)}function mn(e){return`
|
|
384
384
|
|
|
385
385
|
// --- What Framework HMR Boundary ---
|
|
386
386
|
if (import.meta.hot) {
|
|
@@ -393,4 +393,4 @@ if (import.meta.hot) {
|
|
|
393
393
|
}
|
|
394
394
|
});
|
|
395
395
|
}
|
|
396
|
-
`}import{h as
|
|
396
|
+
`}import{h as Mn,Fragment as Fn,mount as Ln,Island as Pn}from"what-core";export{Fn as Fragment,Pn as Island,ne as babelPlugin,Me as extractPageConfig,pe as generateRoutesModule,Mn as h,Ln as mount,Ie as scanPages,me as vitePlugin,me as what};
|
package/dist/vite-plugin.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Y from"path";import{transformSync as tn}from"@babel/core";var Ve=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Be=new Set(["once","capture","passive"]),Ue=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ze=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),ne=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),_e=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),Ge=new Set(["For","Show","Switch","Match"]),qe=new Set(["what-framework/server","what-server","what-server/actions"]);function Ze(e){let m=0xcbf29ce484222325n;for(let x=0;x<e.length;x++)m^=BigInt(e.charCodeAt(x)),m=BigInt.asUintN(64,m*0x100000001b3n);return m.toString(36)}function Ke(e,m){let x=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),C=String(m||"").replace(/\\/g,"/").replace(/\/+$/,"");return C&&x.startsWith(`${C}/`)?x.slice(C.length+1):x.replace(/^\.\//,"")}function W(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let m=e.split(/\r\n|\n|\r/),x=-1;for(let _=0;_<m.length;_++)/[^ \t]/.test(m[_])&&(x=_);if(x===-1)return"";let C="";for(let _=0;_<m.length;_++){let $=m[_].replace(/\t/g," "),F=_===0,P=_===m.length-1;F||($=$.replace(/^ +/,"")),P||($=$.replace(/ +$/,"")),$&&(_!==x&&($+=" "),C+=$)}return C}function fe({types:e}){let m=new Set,x=new Set;function C(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(t=>t!=="").length===0)}function _(i){let n=i.includes("|")?"|":"__",r=i.split(n),o=r[0],t=r.slice(1).filter(a=>Ve.has(a));return{eventName:o,modifiers:t}}function $(i){return i.startsWith("bind:")}function F(i){return i.slice(5)}function P(i){return/^[A-Z]/.test(i)}function L(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&P(n.name)}function k(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function S(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function T(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function A(i){return e.isJSXMemberExpression(i)?e.memberExpression(A(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function X(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 p=r.properties[c];if(e.isRestElement(p))return;if(e.isObjectProperty(p)&&!p.computed&&e.isIdentifier(p.key,{name:"children"})){if(o!==-1||!e.isIdentifier(p.value))return;o=c}}if(o===-1)return;let t=i.scope.getBinding(r.properties[o].value.name);if(!t||t.constantViolations.length>0||t.referencePaths.length===0||!t.referencePaths.every(c=>{let p=c.parentPath;if(!p||!p.isJSXExpressionContainer())return!1;let d=p.parentPath;if(!d||!d.isJSXElement()||!L(d.node))return!1;let l=d.node.openingElement.name;return!(e.isJSXIdentifier(l)&&Ge.has(l.name))}))return;let s=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(s.typeAnnotation=r.typeAnnotation),n[0]=s;let u=r.properties.filter((c,p)=>p!==o);if(u.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let c=e.objectPattern(u);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(c,e.cloneNode(s))])),i.node._whatMovedProps=c}for(let c of t.referencePaths)c.replaceWith(e.memberExpression(e.cloneNode(s),e.identifier("children")));i.scope.crawl()}function j(i){return Ue.has(String(i).toLowerCase())}function N(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function b(i){return i==="className"?"class":i==="htmlFor"?"for":i}function y(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 J(i){return!!i&&i.length>2&&/^on/i.test(i)}function U(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 D(i,n){return n.has(i)}function Q(i){let n=new Set;function r(a){let s=a.init;if(!s||!e.isCallExpression(s))return;let u=s.callee,c="";if(e.isIdentifier(u)?c=u.name:e.isMemberExpression(u)&&e.isIdentifier(u.property)&&(c=u.property.name),_e.has(c)){let p=a.id;if(e.isIdentifier(p))n.add(p.name);else if(e.isArrayPattern(p))for(let d of p.elements)e.isIdentifier(d)&&n.add(d.name);else if(e.isObjectPattern(p))for(let d of p.properties)e.isObjectProperty(d)&&e.isIdentifier(d.value)&&n.add(d.value.name)}}function o(a){if(e.isObjectPattern(a))for(let s of a.properties)e.isObjectProperty(s)&&e.isIdentifier(s.value)?n.add(s.value.name):e.isRestElement(s)&&e.isIdentifier(s.argument)&&n.add(s.argument.name)}let t=i.scope;for(;t;){for(let s of Object.values(t.bindings))s.path.isVariableDeclarator()&&r(s.path.node);let a=t.path&&t.path.node;if(a){if(a.params)for(let s of a.params)o(s);a._whatMovedProps&&o(a._whatMovedProps)}t=t.parent}return n}function O(i){return Q(i)}function q(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?ne.has(n.object.name):e.isIdentifier(n)?ne.has(n.name):!1}function oe(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&D(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ne.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&D(i.callee.object.name,n)||q(i))return!1;if(i.arguments.some(o=>M(o,n,r)))return!0}return!1}function M(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&D(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ne.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&D(i.callee.object.name,n)?!0:q(i)?i.arguments.some(o=>M(o,n,r)):e.isIdentifier(i.callee)?i.arguments.some(o=>M(o,n,r)):M(i.callee,n,r)||i.arguments.some(o=>M(o,n,r)):e.isIdentifier(i)?D(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?M(i.object,n,r):e.isConditionalExpression(i)?M(i.test,n,r)||M(i.consequent,n,r)||M(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?M(i.left,n,r)||M(i.right,n,r):e.isUnaryExpression(i)?M(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>M(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&M(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&M(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function me(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=ee(r.consequent,n),s=ee(r.alternate,n);if(a||s){let u=e.conditionalExpression(r.test,a||r.consequent,s||r.alternate);return o?e.arrowFunctionExpression([],u):u}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let a=ee(r.right,n);if(a){let s=e.logicalExpression(r.operator,r.left,a);return o?e.arrowFunctionExpression([],s):s}return null}return ee(r,n)}function ee(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 l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}if(!o||!e.isJSXElement(o))return null;let t=o.openingElement.attributes,a=null;for(let l of t)if(e.isJSXAttribute(l)&&y(l)==="key"){a=l;break}if(!a)return null;let s=N(a.value);if(!s)return null;o.openingElement.attributes=t.filter(l=>l!==a);let u=i.callee.object,c=e.arrowFunctionExpression([],u),p=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([p],e.cloneNode(s,!0));return e.callExpression(e.identifier("_$mapArray"),[c,r,e.objectExpression([e.objectProperty(e.identifier("key"),d),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function se(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(L(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(se)}return!1}function he(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function te(i){if(e.isJSXText(i)){let a=W(i.value);return a?ge(a):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(L(i))return"";let o=`<${r}`;for(let a of n.attributes){if(e.isJSXSpreadAttribute(a))continue;let s=y(a);if(s==="key"||J(s)||s.startsWith("bind:")||s.includes("|"))continue;let u=s;if(s==="className"&&(u="class"),s==="htmlFor"&&(u="for"),!a.value)o+=` ${u}`;else if(e.isStringLiteral(a.value))o+=` ${u}="${Me(a.value.value)}"`;else if(e.isJSXExpressionContainer(a.value))continue}let t=i.openingElement.selfClosing;if(t&&j(r))return o+=">",o;if(t)return o+=`></${r}>`,o;o+=">";for(let a of i.children)if(e.isJSXText(a)){let s=W(a.value);s&&(o+=ge(s))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||(o+="<!--$-->"):e.isJSXElement(a)&&(L(a)?o+="<!--$-->":o+=te(a));return o+=`</${r}>`,o}function ge(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Me(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function V(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name;if(!k(t,n)){if(t==="For")return Pe(i,n);if(t==="Show")return Ne(i,n)}if(t==="Switch"&&(!k(t,n)||T(r)))return Te(i,n);if(L(r))return be(i,n);let a=o.attributes,s=r.children,u=s.every(se),c=a.every(f=>!he(f)),p=a.every(f=>{if(e.isJSXSpreadAttribute(f))return!1;let w=y(f);return!w?.startsWith("on")&&!w?.startsWith("bind:")});if(u&&c&&p){let f=te(r);if(f){let w=Se(n,f);return n.needsTemplate=!0,e.callExpression(e.identifier(w),[])}}let d=te(r);if(!d){let f=r.loc,w=n.filename||n.file?.opts?.filename||"<unknown>",I=f?`:${f.start.line}:${f.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${w}${I}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,ae(i,n)}let l=Se(n,d);n.needsTemplate=!0;let g=n.nextVarId(),h=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier(l),[]))])];return Ee(h,g,a,n,t),xe(h,g,s,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...h),e.identifier(g)}function ae(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name,a=o.attributes,s=r.children,u=[];for(let d of a){if(e.isJSXSpreadAttribute(d))continue;let l=y(d),g=N(d.value),h=b(l);u.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),g))}let c=[];for(let d of s)if(e.isJSXText(d)){let l=W(d.value);l&&c.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(d)?e.isJSXEmptyExpression(d.expression)||c.push(d.expression):e.isJSXElement(d)?c.push(V({node:d},n)):e.isJSXFragment(d)&&c.push(Z({node:d},n));let p=u.length>0?e.objectExpression(u):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),p,...c])}let Fe=new Set(["input","textarea","select","option"]);function Ee(i,n,r,o,t){function a(c,p){return c==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),p])):c==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),p])):c==="value"&&t&&Fe.has(t)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),p])):c==="checked"&&t==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),p])):c.startsWith("data-")||c.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),p])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),p]))}let s=!1;function u(){s||(s=!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 p=y(c);if(p!=="key"){if(p==="ref"){let d=N(c.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",d),e.stringLiteral("function")),e.callExpression(e.cloneNode(d),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(d),e.identifier("current")),e.identifier(n)))));continue}if(p.startsWith("on")&&!p.includes("|")&&!C(p,o)){let d=p.slice(2).toLowerCase(),l=N(c.value);ze.has(d)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(d),u(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${d}`)),l)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(d),l])));continue}if(p.startsWith("on")&&(p.includes("|")||C(p,o))){let{eventName:d,modifiers:l}=_(p),g=N(c.value),h=U(g,l),f=d.slice(2).toLowerCase(),w=l.filter(E=>Be.has(E)),I=[e.stringLiteral(f),h];if(w.length>0){let E=w.map(v=>e.objectProperty(e.identifier(v),e.booleanLiteral(!0)));I.push(e.objectExpression(E))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),I)));continue}if($(p)){let d=F(p),l=c.value.expression;o.needsEffect=!0,d==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):d==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(c.value)){let d=c.value.expression,l=b(p);if(M(d,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let g=e.isIdentifier(d)&&(D(d.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(d.name))?e.callExpression(d,[]):d,h=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(l,g))]);oe(d,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(l,d)))}}}}function le(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(le);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"&&le(r))return!0}return!1}function B(i,n,r){let o=null,t=!1;if(e.isConditionalExpression(i))o=i.test,t=!0;else if(e.isLogicalExpression(i)&&(i.operator==="&&"||i.operator==="||"))o=i.left;else return i;if(!M(o,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(le))return i;let s=r.nextMemoId();r.needsMemo=!0;let u=t?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(s),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],u)]))]));let c=e.callExpression(e.identifier(s),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function xe(i,n,r,o,t){let a=[],s=0;for(let l of r){if(e.isJSXText(l)){W(l.value)&&s++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;a.push({type:"expression",child:l,childIndex:s}),s++;continue}if(e.isJSXElement(l)){let g=l.openingElement.name.name;if(L(l)||g==="For"||g==="Show")a.push({type:"component",child:l,childIndex:s}),s++;else{let h=l.openingElement.attributes.some(he)||l.openingElement.attributes.some(f=>!e.isJSXSpreadAttribute(f)&&y(f)?.startsWith("on"))||!l.children.every(se);a.push({type:"static",child:l,childIndex:s,hasAnythingDynamic:h}),s++}continue}e.isJSXFragment(l)&&a.push({type:"fragment",child:l})}let u=a.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=u.length>=2,p=new Map;if(c){let l=null,g=0;for(let h of u){let f=h.childIndex,w=t.nextVarId();p.set(f,w);let I;if(l===null)I=ce(n,f);else{I=e.identifier(l);for(let E=g;E<f;E++)I=e.memberExpression(I,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(w),I)])),l=w,g=f}}function d(l){return p.has(l)?e.identifier(p.get(l)):ce(n,l)}for(let l of a){if(l.type==="expression"){let g=l.child.expression,h=d(l.childIndex);t.needsInsert=!0;let f=me(g,t);if(f){t.needsMapArray=!0;let I=e.isCallExpression(f)&&e.isIdentifier(f.callee)&&(f.callee.name==="_$mapArray"||f.callee.name==="mapArray"),E=e.isArrowFunctionExpression(f);E&&e.isExpression(f.body)?f.body=B(f.body,i,t):!I&&!E&&(f=B(f,i,t));let v=I||E?f:e.arrowFunctionExpression([],f);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),v,h])));continue}if(e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="mapArray"||g.callee.name==="_$mapArray")){t.needsMapArray=!0,g.callee.name==="mapArray"&&(g.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(M(g,t.signalNames,t.importedIdentifiers)){g=B(g,i,t);let I=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],g),h]);oe(g,t.signalNames,t.importedIdentifiers)&&e.addComment(I,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(I))}else i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(l.type==="component"){let g=V({node:l.child},t),h=d(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let g;p.has(l.childIndex)?g=p.get(l.childIndex):(g=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),ce(n,l.childIndex))]))),Ee(i,g,l.child.openingElement.attributes,t,l.child.openingElement.name.name),xe(i,g,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let g of l.child.children)if(e.isJSXExpressionContainer(g)&&!e.isJSXEmptyExpression(g.expression)){t.needsInsert=!0;let h=g.expression;M(h,t.signalNames,t.importedIdentifiers)?(h=B(h,i,t),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],h)])))):i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),h])))}}}}function ce(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 be(i,n){let{node:r}=i,o=r.openingElement,t=A(o.name),a=o.attributes,s=r.children,u=null,c=[];for(let E of a){if(e.isJSXAttribute(E)){let v;if(e.isJSXNamespacedName(E.name)?v=`${E.name.namespace.name}:${E.name.name.name}`:v=E.name.name,v&&typeof v=="string"&&v.startsWith("client:")){let R=v.slice(7);E.value?u={type:R,value:E.value.value}:u={type:R};continue}}c.push(E)}if(u){n.needsCreateComponent=!0,n.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),t),e.objectProperty(e.identifier("mode"),e.stringLiteral(u.type))];u.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(u.value)));for(let v of c){if(e.isJSXSpreadAttribute(v))continue;let R=y(v),z=N(v.value);E.push(e.objectProperty(e.identifier(R),z))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(E),e.arrayExpression([])])}n.needsCreateComponent=!0;let p=[],d=!1,l=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){d=!0,l=E.argument;continue}let v=y(E);if(v==="key")continue;if($(v)){let z=F(v),G=E.value.expression;z==="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"))]))))):z==="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(v.startsWith("on")&&(v.includes("|")||C(v,n))){let{eventName:z,modifiers:G}=_(v),We=N(E.value),He=U(We,G);p.push(e.objectProperty(e.identifier(z),He));continue}let R=N(E.value);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(v)?e.identifier(v):e.stringLiteral(v),R))}let g=n._pendingSetup?n._pendingSetup.length:0,h=[],f=!1;for(let E of s)if(e.isJSXText(E)){let v=W(E.value);v&&h.push(e.stringLiteral(v))}else if(e.isJSXExpressionContainer(E))e.isJSXEmptyExpression(E.expression)||(f=!0,h.push(E.expression));else if(e.isJSXElement(E)){let v=E.openingElement.name.name;v!=="For"&&v!=="Show"&&v!=="Switch"&&(f=!0),h.push(V({node:E},n))}else e.isJSXFragment(E)&&(f=!0,h.push(Z({node:E},n)));let w;d?p.length>0?w=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(p)]):w=l:p.length>0?w=e.objectExpression(p):w=e.nullLiteral();let I=e.arrayExpression(h);if(f){let E=n._pendingSetup?n._pendingSetup.splice(g):[];I=e.arrowFunctionExpression([],E.length>0?e.blockStatement([...E,e.returnStatement(I)]):I)}return e.callExpression(e.identifier("_$createComponent"),[t,w,I])}function Pe(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,a=null,s=null;for(let p of o)if(e.isJSXAttribute(p)){let d=y(p);d==="each"?a=N(p.value):d==="key"&&(s=N(p.value))}if(!a)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,ae(i,n);let u=null;for(let p of t)if(e.isJSXExpressionContainer(p)&&!e.isJSXEmptyExpression(p.expression)){u=p.expression;break}if(!u)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,ae(i,n);n.needsMapArray=!0;let c=[a,u];return s&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),s)])),e.callExpression(e.identifier("_$mapArray"),c)}function Ne(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,a=null,s=null;for(let h of o)if(e.isJSXAttribute(h)){let f=y(h);f==="when"?a=N(h.value):f==="fallback"&&(s=N(h.value))}if(!a)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let u=null;for(let h of t)if(e.isJSXExpressionContainer(h)&&!e.isJSXEmptyExpression(h.expression)){u=h.expression;break}if(!u){let h=[];for(let f of t)if(e.isJSXText(f)){let w=W(f.value);w&&h.push(e.stringLiteral(w))}else e.isJSXElement(f)&&h.push(V({node:f},n));h.length===1?u=h[0]:h.length>1?u=e.arrayExpression(h):u=e.nullLiteral()}let c=ye(a,n),p=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(u),l=d?e.callExpression(u,[e.cloneNode(p)]):u,g=s||e.nullLiteral();if(M(c,n.signalNames,n.importedIdentifiers)){let h=n.nextMemoId();n.needsMemo=!0;let f=d?c:e.unaryExpression("!",e.unaryExpression("!",c));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],f)]))])),c=e.callExpression(e.identifier(h),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(p,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(p),l,g))]))}function ye(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&D(i.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(i.name))?e.callExpression(i,[]):i}function Je(i,n){let r=[];for(let o of i)if(e.isJSXText(o)){let t=W(o.value);t&&r.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||r.push(o.expression):e.isJSXElement(o)?r.push(V({node:o},n)):e.isJSXFragment(o)&&r.push(Z({node:o},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function Te(i,n){let{node:r}=i,o=k(r.openingElement.name.name,n),t=f=>e.isJSXElement(f)&&e.isJSXIdentifier(f.openingElement.name,{name:"Match"})&&(o||!k("Match",n));if(!r.children.some(t)&&!S(r.openingElement.name.name,n))return be(i,n);let a=f=>{let w=`<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>`;throw i.buildCodeFrameError?i.buildCodeFrameError(w):new Error(`[what-compiler] ${w}`)},s=null;for(let f of r.openingElement.attributes)e.isJSXSpreadAttribute(f)&&a("cannot take a spread attribute"),y(f)==="fallback"&&(s=N(f.value));let u=[];for(let f of r.children){if(e.isJSXText(f)){W(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")}t(f)||a("cannot mix other elements with its <Match> arms"),u.push(f)}u.length===0&&a("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let c=[];for(let f of u){let w=null;for(let R of f.openingElement.attributes)e.isJSXAttribute(R)&&y(R)==="when"&&(w=N(R.value));w||a('has a <Match> with no "when" prop');let I=n._pendingSetup.length,E=Je(f.children,n),v=n._pendingSetup.splice(I);v.length>0&&(E=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...v,e.returnStatement(E)])),[])),c.push([ye(w,n),E])}let p=c.some(([f])=>M(f,n.signalNames,n.importedIdentifiers)),d=s||e.nullLiteral();if(!p){let f=d;for(let w=c.length-1;w>=0;w--)f=e.conditionalExpression(c[w][0],c[w][1],f);return e.arrowFunctionExpression([],f)}let l=e.numericLiteral(-1);for(let f=c.length-1;f>=0;f--)l=e.conditionalExpression(c[f][0],e.numericLiteral(f),l);let g=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let h=d;for(let f=c.length-1;f>=0;f--)h=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(g),[]),e.numericLiteral(f)),c[f][1],h);return e.arrowFunctionExpression([],h)}function Oe(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=me(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=B(o.body,r,n),o;if(a)return o;let u=B(o,r,n);return e.arrowFunctionExpression([],u)}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):M(i,n.signalNames,n.importedIdentifiers)?(i=B(i,r,n),e.arrowFunctionExpression([],i)):i}function Z(i,n){let{node:r}=i,o=r.children,t=[];for(let a of o)if(e.isJSXText(a)){let s=W(a.value);s&&t.push(e.stringLiteral(s))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||t.push(Oe(a.expression,n)):e.isJSXElement(a)?t.push(V({node:a},n)):e.isJSXFragment(a)&&t.push(Z({node:a},n));return t.length===1?t[0]:e.arrayExpression(t)}function Se(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 we(i,n,r){let o=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let a=t.get(o);a||(a=Q(i),t.set(o,a)),n.signalNames=a,n._pendingSetup=[];let s=r(i,n),u=n._pendingSetup;if(n._pendingSetup=[],u.length>0){let c=i,p=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(p=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!p?(c.insertBefore(u),i.replaceWith(s)):(u.push(e.returnStatement(s)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(u)),[])))}else i.replaceWith(s)}function Xe(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 De(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 ve(i,n,r,o,t){let a=i.node.loc?.start||{line:0,column:0},s=`${t}:${a.line}:${a.column+1}`,u=`${t}#${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 ${s}.`);let p={id:r,key:u,bindingName:o,filename:t,source:s,loc:a};if(n.serverActionIds.set(r,p),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(p)}catch(d){throw i.buildCodeFrameError(d instanceof Error?d.message:String(d))}}function Re(i,n){if(!je(i,n))return;let r=Xe(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],t=De(o);if(t.property){t.value!==null&&ve(i,n,t.value,r,n.serverActionFilename);return}let a=`wa1_${Ze(`${n.serverActionFilename}#${r}`)}`;ve(i,n,a,r,n.serverActionFilename);let s=e.objectProperty(e.identifier("id"),e.stringLiteral(a));o?e.isObjectExpression(o)?o.properties.unshift(s):i.node.arguments[1]=e.objectExpression([s,e.spreadElement(o)]):i.node.arguments.push(e.objectExpression([s]))}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._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.serverActionBindings=new Set,n.serverActionNamespaces=new Set,n.serverActionIds=new Map,n.serverActionFilename=Ke(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,t=o==="what-framework"||o.startsWith("what-framework/")||o==="what-core"||o.startsWith("what-core/"),a=t||o.startsWith("./")||o.startsWith("../");for(let s of r.specifiers){let u=null;(e.isImportSpecifier(s)&&e.isIdentifier(s.local)||e.isImportDefaultSpecifier(s)&&e.isIdentifier(s.local)||e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local))&&(u=s.local.name),u&&((a||/^(use|create)[A-Z]/.test(u))&&n.importedIdentifiers.add(u),t?n.whatImports.add(u):o.startsWith(".")||n.foreignImports.add(u)),qe.has(o)&&(e.isImportSpecifier(s)&&e.isIdentifier(s.imported,{name:"action"})&&e.isIdentifier(s.local)?n.serverActionBindings.add(s.local.name):e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local)&&n.serverActionNamespaces.add(s.local.name))}}i.traverse({Function(r){X(r)},CallExpression(r){Re(r,n)},VariableDeclarator(r){let o=r.node.init;if(!o||!e.isCallExpression(o))return;let t=o.callee,a="";if(e.isIdentifier(t)?a=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(a=t.property.name),_e.has(a)){let s=r.node.id;if(e.isIdentifier(s))n.signalNames.add(s.name);else if(e.isArrayPattern(s))for(let u of s.elements)e.isIdentifier(u)&&n.signalNames.add(u.name);else if(e.isObjectPattern(s))for(let u of s.properties)e.isObjectProperty(u)&&e.isIdentifier(u.value)&&n.signalNames.add(u.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let a=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(a,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.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.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 t=null;for(let a of i.node.body)if(e.isImportDeclaration(a)&&(a.source.value==="what-framework/render"||a.source.value==="what-core/render")){t=a;break}if(t){let a=new Set(t.specifiers.filter(s=>e.isImportSpecifier(s)).map(s=>s.imported.name));for(let s of r)a.has(s.imported.name)||t.specifiers.push(s)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(o.length>0&&Ye(i,e,o),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let t=e.arrayExpression([...n.delegatedEvents].map(s=>e.stringLiteral(s))),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"),[t]))]));i.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),a])}}},JSXElement(i,n){we(i,n,V)},JSXFragment(i,n){we(i,n,Z)}}}}function Ye(e,m,x){let C=null;for(let _ of e.node.body)if(m.isImportDeclaration(_)&&(_.source.value==="what-core"||_.source.value==="what-framework")){C=_;break}if(C){let _=new Set(C.specifiers.filter($=>m.isImportSpecifier($)).map($=>$.imported.name));for(let $ of x)_.has($.imported.name)||C.specifiers.push($)}else{let _=m.importDeclaration(x,m.stringLiteral("what-framework"));e.unshiftContainer("body",_)}}import K from"fs";import H from"path";var $e=new Set([".jsx",".tsx",".js",".ts"]),Qe=new Set(["_layout","_error","_loading","_404"]);function en(e){let m=[],x=[],C=[];function _(F,P=""){if(!K.existsSync(F))return;let L=K.readdirSync(F,{withFileTypes:!0});for(let k of L){let S=H.join(F,k.name);if(k.isDirectory()){if(k.name.match(/^\((.+)\)$/)){_(S,P);continue}if(k.name==="api"&&P===""){$(S,"/api");continue}_(S,P+"/"+ie(k.name));continue}let T=H.extname(k.name);if(!$e.has(T))continue;let A=H.basename(k.name,T);if(A==="_layout"){x.push({filePath:S,urlPrefix:P||"/"});continue}if(Qe.has(A))continue;let X=ie(A),j=A==="index"?P||"/":P+"/"+X;m.push({filePath:S,routePath:Ce(j),isDynamic:j.includes(":")||j.includes("*")})}}function $(F,P){if(!K.existsSync(F))return;let L=K.readdirSync(F,{withFileTypes:!0});for(let k of L){let S=H.join(F,k.name);if(k.isDirectory()){$(S,P+"/"+ie(k.name));continue}let T=H.extname(k.name);if(!$e.has(T))continue;let A=H.basename(k.name,T),X=ie(A),j=A==="index"?P:P+"/"+X;C.push({filePath:S,routePath:Ce(j)})}}return _(e),m.sort((F,P)=>{let L=ke(F.routePath),k=ke(P.routePath);return L-k}),{pages:m,layouts:x,apiRoutes:C}}function ie(e){let m=e.match(/^\[\.\.\.(\w+)\]$/);if(m)return"*"+m[1];let x=e.match(/^\[(\w+)\]$/);return x?":"+x[1]:e.toLowerCase()}function Ce(e){let m=e.replace(/\/+/g,"/");return m.length>1&&m.endsWith("/")&&(m=m.slice(0,-1)),m||"/"}function ke(e){return e.includes("*")?100:e.includes(":")?10:0}function nn(e){let m=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!m)return{mode:"client"};try{let x=m[1].replace(/'/g,'"').replace(/(\w+)\s*:/g,'"$1":').replace(/,\s*}/g,"}").replace(/\/\/[^\n]*/g,"");return{mode:"client",...JSON.parse(x)}}catch{return{mode:"client"}}}function rn(e){return{hasLoader:/export\s+(?:async\s+)?(?:const|let|var|function)\s+loader\b/.test(e),hasGetStaticPaths:/export\s+(?:async\s+)?(?:const|let|var|function)\s+getStaticPaths\b/.test(e),hasPageConfig:/export\s+const\s+page\b/.test(e)}}function Ae(e,m){let{pages:x,layouts:C,apiRoutes:_}=en(e),$=[],F=[],P=new Map;C.forEach((S,T)=>{let A=`_layout${T}`,X=pe(S.filePath,m);$.push(`import ${A} from '${X}';`),P.set(S.urlPrefix,A)}),x.forEach((S,T)=>{let A=`_page${T}`,X=pe(S.filePath,m);$.push(`import ${A} from '${X}';`);let j={mode:"client"},N={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let J=K.readFileSync(S.filePath,"utf-8");j=nn(J),N=rn(J)}catch{}let b=on(S.routePath,P),y={path:S.routePath,component:A,mode:j.mode||"client",layout:b||null,hasLoader:N.hasLoader};F.push(y)});let L=[];return _.forEach((S,T)=>{let A=`_api${T}`,X=pe(S.filePath,m);$.push(`import * as ${A} from '${X}';`),L.push({path:S.routePath,handlers:A})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",...$,"","export const routes = [",...F.map(S=>` { path: '${S.path}', component: ${S.component}, mode: '${S.mode}'${S.layout?`, layout: ${S.layout}`:""}${S.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...L.map(S=>` { path: '${S.path}', handlers: ${S.handlers} },`),"];","","export const pageModes = {",...F.map(S=>` '${S.path}': '${S.mode}',`),"};"].join(`
|
|
2
|
-
`)}function
|
|
1
|
+
import K from"path";import{transformSync as on}from"@babel/core";var We=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),He=new Set(["once","capture","passive"]),Ve=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"]),ee=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),ve=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),Ue=new Set(["For","Show","Switch","Match"]),ze=new Set(["what-framework/server","what-server","what-server/actions"]);function Ge(e){let m=0xcbf29ce484222325n;for(let b=0;b<e.length;b++)m^=BigInt(e.charCodeAt(b)),m=BigInt.asUintN(64,m*0x100000001b3n);return m.toString(36)}function qe(e,m){let b=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),C=String(m||"").replace(/\\/g,"/").replace(/\/+$/,"");return C&&b.startsWith(`${C}/`)?b.slice(C.length+1):b.replace(/^\.\//,"")}function H(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let m=e.split(/\r\n|\n|\r/),b=-1;for(let v=0;v<m.length;v++)/[^ \t]/.test(m[v])&&(b=v);if(b===-1)return"";let C="";for(let v=0;v<m.length;v++){let _=m[v].replace(/\t/g," "),F=v===0,P=v===m.length-1;F||(_=_.replace(/^ +/,"")),P||(_=_.replace(/ +$/,"")),_&&(v!==b&&(_+=" "),C+=_)}return C}function ce({types:e}){let m=new Set,b=new Set;function C(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(t=>t!=="").length===0)}function v(i){let n=i.includes("|")?"|":"__",r=i.split(n),o=r[0],t=r.slice(1).filter(a=>We.has(a));return{eventName:o,modifiers:t}}function _(i){return i.startsWith("bind:")}function F(i){return i.slice(5)}function P(i){return/^[A-Z]/.test(i)}function L(i){let n=i.openingElement?i.openingElement.name:i.name;return e.isJSXMemberExpression(n)?!0:e.isJSXIdentifier(n)&&P(n.name)}function k(i,n){return!!(n.foreignImports&&n.foreignImports.has(i))}function w(i,n){return!!(n.whatImports&&n.whatImports.has(i))}function T(i){return i.children.some(n=>e.isJSXElement(n)&&e.isJSXIdentifier(n.openingElement.name,{name:"Match"}))}function I(i){return e.isJSXMemberExpression(i)?e.memberExpression(I(i.object),e.identifier(i.property.name)):e.identifier(i.name)}function j(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 d=r.properties[c];if(e.isRestElement(d))return;if(e.isObjectProperty(d)&&!d.computed&&e.isIdentifier(d.key,{name:"children"})){if(o!==-1||!e.isIdentifier(d.value))return;o=c}}if(o===-1)return;let t=i.scope.getBinding(r.properties[o].value.name);if(!t||t.constantViolations.length>0||t.referencePaths.length===0||!t.referencePaths.every(c=>{let d=c.parentPath;if(!d||!d.isJSXExpressionContainer())return!1;let f=d.parentPath;if(!f||!f.isJSXElement()||!L(f.node))return!1;let l=f.node.openingElement.name;return!(e.isJSXIdentifier(l)&&Ue.has(l.name))}))return;let s=i.scope.generateUidIdentifier("props");r.typeAnnotation&&(s.typeAnnotation=r.typeAnnotation),n[0]=s;let u=r.properties.filter((c,d)=>d!==o);if(u.length>0){e.isBlockStatement(i.node.body)||(i.node.body=e.blockStatement([e.returnStatement(i.node.body)]));let c=e.objectPattern(u);i.node.body.body.unshift(e.variableDeclaration("const",[e.variableDeclarator(c,e.cloneNode(s))])),i.node._whatMovedProps=c}for(let c of t.referencePaths)c.replaceWith(e.memberExpression(e.cloneNode(s),e.identifier("children")));i.scope.crawl()}function D(i){return Ve.has(String(i).toLowerCase())}function N(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function y(i){return i==="className"?"class":i==="htmlFor"?"for":i}function S(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 O(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 R(i,n){return n.has(i)}function Y(i){let n=new Set;function r(a){let s=a.init;if(!s||!e.isCallExpression(s))return;let u=s.callee,c="";if(e.isIdentifier(u)?c=u.name:e.isMemberExpression(u)&&e.isIdentifier(u.property)&&(c=u.property.name),ve.has(c)){let d=a.id;if(e.isIdentifier(d))n.add(d.name);else if(e.isArrayPattern(d))for(let f of d.elements)e.isIdentifier(f)&&n.add(f.name);else if(e.isObjectPattern(d))for(let f of d.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&n.add(f.value.name)}}function o(a){if(e.isObjectPattern(a))for(let s of a.properties)e.isObjectProperty(s)&&e.isIdentifier(s.value)?n.add(s.value.name):e.isRestElement(s)&&e.isIdentifier(s.argument)&&n.add(s.argument.name)}let t=i.scope;for(;t;){for(let s of Object.values(t.bindings))s.path.isVariableDeclarator()&&r(s.path.node);let a=t.path&&t.path.node;if(a){if(a.params)for(let s of a.params)o(s);a._whatMovedProps&&o(a._whatMovedProps)}t=t.parent}return n}function X(i){return Y(i)}function G(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?ee.has(n.object.name):e.isIdentifier(n)?ee.has(n.name):!1}function re(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&R(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ee.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&R(i.callee.object.name,n)||G(i))return!1;if(i.arguments.some(o=>M(o,n,r)))return!0}return!1}function M(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&R(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!ee.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&R(i.callee.object.name,n)?!0:G(i)?i.arguments.some(o=>M(o,n,r)):e.isIdentifier(i.callee)?i.arguments.some(o=>M(o,n,r)):M(i.callee,n,r)||i.arguments.some(o=>M(o,n,r)):e.isIdentifier(i)?R(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?M(i.object,n,r):e.isConditionalExpression(i)?M(i.test,n,r)||M(i.consequent,n,r)||M(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?M(i.left,n,r)||M(i.right,n,r):e.isUnaryExpression(i)?M(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>M(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&M(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&M(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function de(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=Q(r.consequent,n),s=Q(r.alternate,n);if(a||s){let u=e.conditionalExpression(r.test,a||r.consequent,s||r.alternate);return o?e.arrowFunctionExpression([],u):u}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let a=Q(r.right,n);if(a){let s=e.logicalExpression(r.operator,r.left,a);return o?e.arrowFunctionExpression([],s):s}return null}return Q(r,n)}function Q(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 l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(g=>e.isReturnStatement(g));l&&(o=l.argument)}if(!o||!e.isJSXElement(o))return null;let t=o.openingElement.attributes,a=null;for(let l of t)if(e.isJSXAttribute(l)&&S(l)==="key"){a=l;break}if(!a)return null;let s=N(a.value);if(!s)return null;o.openingElement.attributes=t.filter(l=>l!==a);let u=i.callee.object,c=e.arrowFunctionExpression([],u),d=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),f=e.arrowFunctionExpression([d],e.cloneNode(s,!0));return e.callExpression(e.identifier("_$mapArray"),[c,r,e.objectExpression([e.objectProperty(e.identifier("key"),f),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function oe(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement;if(L(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(oe)}return!1}function me(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function se(i){if(e.isJSXText(i)){let a=H(i.value);return a?he(a):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(L(i))return"";let o=`<${r}`;for(let a of n.attributes){if(e.isJSXSpreadAttribute(a))continue;let s=S(a);if(s==="key"||O(s)||s.startsWith("bind:")||s.includes("|"))continue;let u=s;if(s==="className"&&(u="class"),s==="htmlFor"&&(u="for"),!a.value)o+=` ${u}`;else if(e.isStringLiteral(a.value))o+=` ${u}="${Le(a.value.value)}"`;else if(e.isJSXExpressionContainer(a.value))continue}let t=i.openingElement.selfClosing;if(t&&D(r))return o+=">",o;if(t)return o+=`></${r}>`,o;o+=">";for(let a of i.children)if(e.isJSXText(a)){let s=H(a.value);s&&(o+=he(s))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||(o+="<!--$-->"):e.isJSXElement(a)&&(L(a)?o+="<!--$-->":o+=se(a));return o+=`</${r}>`,o}function he(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Le(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function B(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name;if(!k(t,n)){if(t==="For")return Fe(i,n);if(t==="Show")return Pe(i,n)}if(t==="Switch"&&(!k(t,n)||T(r)))return Je(i,n);if(L(r))return xe(i,n);let a=o.attributes,s=r.children,u=s.every(oe),c=a.every(p=>!me(p)),d=a.every(p=>{if(e.isJSXSpreadAttribute(p))return!1;let E=S(p);return!E?.startsWith("on")&&!E?.startsWith("bind:")});if(u&&c&&d){let p=se(r);if(p){let E=ye(n,p);return n.needsTemplate=!0,e.callExpression(e.identifier(E),[])}}let f=se(r);if(!f){let p=r.loc,E=n.filename||n.file?.opts?.filename||"<unknown>",x=p?`:${p.start.line}:${p.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${E}${x}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,te(i,n)}let l=ye(n,f);n.needsTemplate=!0;let g=n.nextVarId(),h=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier(l),[]))])];return ge(h,g,a,n,t),Ee(h,g,s,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...h),e.identifier(g)}function te(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name,a=o.attributes,s=r.children,u=[];for(let f of a){if(e.isJSXSpreadAttribute(f))continue;let l=S(f),g=N(f.value),h=y(l);u.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),g))}let c=[];for(let f of s)if(e.isJSXText(f)){let l=H(f.value);l&&c.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(f)?e.isJSXEmptyExpression(f.expression)||c.push(f.expression):e.isJSXElement(f)?c.push(B({node:f},n)):e.isJSXFragment(f)&&c.push(q({node:f},n));let d=u.length>0?e.objectExpression(u):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),d,...c])}let Me=new Set(["input","textarea","select","option"]);function ge(i,n,r,o,t){function a(c,d){return c==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),d])):c==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),d])):c==="value"&&t&&Me.has(t)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),d])):c==="checked"&&t==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),d])):c.startsWith("data-")||c.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),d])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),d]))}let s=!1;function u(){s||(s=!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 d=S(c);if(d!=="key"){if(d==="ref"){let f=N(c.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",f),e.stringLiteral("function")),e.callExpression(e.cloneNode(f),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(f),e.identifier("current")),e.identifier(n)))));continue}if(d.startsWith("on")&&!d.includes("|")&&!C(d,o)){let f=d.slice(2).toLowerCase(),l=N(c.value);Be.has(f)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(f),u(),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`$$${f}`)),l)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(f),l])));continue}if(d.startsWith("on")&&(d.includes("|")||C(d,o))){let{eventName:f,modifiers:l}=v(d),g=N(c.value),h=z(g,l),p=f.slice(2).toLowerCase(),E=l.filter(A=>He.has(A)),x=[e.stringLiteral(p),h];if(E.length>0){let A=E.map(J=>e.objectProperty(e.identifier(J),e.booleanLiteral(!0)));x.push(e.objectExpression(A))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),x)));continue}if(_(d)){let f=F(d),l=c.value.expression;o.needsEffect=!0,f==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):f==="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(l),[])))]))),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(l),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(c.value)){let f=c.value.expression,l=y(d);if(M(f,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let g=e.isIdentifier(f)&&(R(f.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(f.name))?e.callExpression(f,[]):f,h=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(l,g))]);re(f,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(l,f)))}}}}function ae(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(ae);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"&&ae(r))return!0}return!1}function U(i,n,r){let o=null,t=!1;if(e.isConditionalExpression(i))o=i.test,t=!0;else if(e.isLogicalExpression(i)&&(i.operator==="&&"||i.operator==="||"))o=i.left;else return i;if(!M(o,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(ae))return i;let s=r.nextMemoId();r.needsMemo=!0;let u=t?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(s),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],u)]))]));let c=e.callExpression(e.identifier(s),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function Ee(i,n,r,o,t){let a=[],s=0;for(let l of r){if(e.isJSXText(l)){H(l.value)&&s++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;a.push({type:"expression",child:l,childIndex:s}),s++;continue}if(e.isJSXElement(l)){let g=l.openingElement.name.name;if(L(l)||g==="For"||g==="Show")a.push({type:"component",child:l,childIndex:s}),s++;else{let h=l.openingElement.attributes.some(me)||l.openingElement.attributes.some(p=>!e.isJSXSpreadAttribute(p)&&S(p)?.startsWith("on"))||!l.children.every(oe);a.push({type:"static",child:l,childIndex:s,hasAnythingDynamic:h}),s++}continue}e.isJSXFragment(l)&&a.push({type:"fragment",child:l})}let u=a.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=u.length>=2,d=new Map;if(c){let l=null,g=0;for(let h of u){let p=h.childIndex,E=t.nextVarId();d.set(p,E);let x;if(l===null)x=le(n,p);else{x=e.identifier(l);for(let A=g;A<p;A++)x=e.memberExpression(x,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),x)])),l=E,g=p}}function f(l){return d.has(l)?e.identifier(d.get(l)):le(n,l)}for(let l of a){if(l.type==="expression"){let g=l.child.expression,h=f(l.childIndex);t.needsInsert=!0;let p=de(g,t);if(p){t.needsMapArray=!0;let x=e.isCallExpression(p)&&e.isIdentifier(p.callee)&&(p.callee.name==="_$mapArray"||p.callee.name==="mapArray"),A=e.isArrowFunctionExpression(p);A&&e.isExpression(p.body)?p.body=U(p.body,i,t):!x&&!A&&(p=U(p,i,t));let J=x||A?p:e.arrowFunctionExpression([],p);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),J,h])));continue}if(e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="mapArray"||g.callee.name==="_$mapArray")){t.needsMapArray=!0,g.callee.name==="mapArray"&&(g.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(M(g,t.signalNames,t.importedIdentifiers)){g=U(g,i,t);let x=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],g),h]);re(g,t.signalNames,t.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),g,h])));continue}if(l.type==="component"){let g=B({node:l.child},t),h=f(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),g,h])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let g;d.has(l.childIndex)?g=d.get(l.childIndex):(g=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),le(n,l.childIndex))]))),ge(i,g,l.child.openingElement.attributes,t,l.child.openingElement.name.name),Ee(i,g,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let g of l.child.children)if(e.isJSXExpressionContainer(g)&&!e.isJSXEmptyExpression(g.expression)){t.needsInsert=!0;let h=g.expression;M(h,t.signalNames,t.importedIdentifiers)?(h=U(h,i,t),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],h)])))):i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),h])))}}}}function le(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 xe(i,n){let{node:r}=i,o=r.openingElement,t=I(o.name),a=o.attributes,s=r.children,u=null,c=[];for(let E of a){if(e.isJSXAttribute(E)){let x;if(e.isJSXNamespacedName(E.name)?x=`${E.name.namespace.name}:${E.name.name.name}`:x=E.name.name,x&&typeof x=="string"&&x.startsWith("client:")){let A=x.slice(7);E.value?u={type:A,value:E.value.value}:u={type:A};continue}}c.push(E)}function d(){let E=n._pendingSetup?n._pendingSetup.length:0,x=[],A=!1;for(let $ of s)if(e.isJSXText($)){let W=H($.value);W&&x.push(e.stringLiteral(W))}else if(e.isJSXExpressionContainer($))e.isJSXEmptyExpression($.expression)||(A=!0,x.push($.expression));else if(e.isJSXElement($)){let W=$.openingElement.name.name;W!=="For"&&W!=="Show"&&W!=="Switch"&&(A=!0),x.push(B({node:$},n))}else e.isJSXFragment($)&&(A=!0,x.push(q({node:$},n)));let J=e.arrayExpression(x);if(A){let $=n._pendingSetup?n._pendingSetup.splice(E):[];J=e.arrowFunctionExpression([],$.length>0?e.blockStatement([...$,e.returnStatement(J)]):J)}return J}if(u){n.needsCreateComponent=!0,n.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),t),e.objectProperty(e.identifier("mode"),e.stringLiteral(u.type))];u.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(u.value)));let x=null;for(let J of c){if(e.isJSXSpreadAttribute(J)){x=J.argument;continue}let $=S(J);if($==="key")continue;let W=N(J.value);E.push(e.objectProperty(e.identifier($),W))}let A=x?e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),x,e.objectExpression(E)]):e.objectExpression(E);return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),A,d()])}n.needsCreateComponent=!0;let f=[],l=!1,g=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){l=!0,g=E.argument;continue}let x=S(E);if(x==="key")continue;if(_(x)){let J=F(x),$=E.value.expression;J==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode($),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode($),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):J==="checked"&&(f.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode($),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode($),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(x.startsWith("on")&&(x.includes("|")||C(x,n))){let{eventName:J,modifiers:$}=v(x),W=N(E.value),Re=z(W,$);f.push(e.objectProperty(e.identifier(J),Re));continue}let A=N(E.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(x)?e.identifier(x):e.stringLiteral(x),A))}let h;l?f.length>0?h=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),g,e.objectExpression(f)]):h=g:f.length>0?h=e.objectExpression(f):h=e.nullLiteral();let p=d();return e.callExpression(e.identifier("_$createComponent"),[t,h,p])}function Fe(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,a=null,s=null;for(let d of o)if(e.isJSXAttribute(d)){let f=S(d);f==="each"?a=N(d.value):f==="key"&&(s=N(d.value))}if(!a)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,te(i,n);let u=null;for(let d of t)if(e.isJSXExpressionContainer(d)&&!e.isJSXEmptyExpression(d.expression)){u=d.expression;break}if(!u)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,te(i,n);n.needsMapArray=!0;let c=[a,u];return s&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),s)])),e.callExpression(e.identifier("_$mapArray"),c)}function Pe(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,a=null,s=null;for(let h of o)if(e.isJSXAttribute(h)){let p=S(h);p==="when"?a=N(h.value):p==="fallback"&&(s=N(h.value))}if(!a)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let u=null;for(let h of t)if(e.isJSXExpressionContainer(h)&&!e.isJSXEmptyExpression(h.expression)){u=h.expression;break}if(!u){let h=[];for(let p of t)if(e.isJSXText(p)){let E=H(p.value);E&&h.push(e.stringLiteral(E))}else e.isJSXElement(p)&&h.push(B({node:p},n));h.length===1?u=h[0]:h.length>1?u=e.arrayExpression(h):u=e.nullLiteral()}let c=be(a,n),d=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),f=e.isFunction(u),l=f?e.callExpression(u,[e.cloneNode(d)]):u,g=s||e.nullLiteral();if(M(c,n.signalNames,n.importedIdentifiers)){let h=n.nextMemoId();n.needsMemo=!0;let p=f?c:e.unaryExpression("!",e.unaryExpression("!",c));n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))])),c=e.callExpression(e.identifier(h),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(d,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(d),l,g))]))}function be(i,n){return e.isCallExpression(i)?i:e.isArrowFunctionExpression(i)&&e.isExpression(i.body)?i.body:e.isIdentifier(i)&&(n.signalNames&&R(i.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(i.name))?e.callExpression(i,[]):i}function Ne(i,n){let r=[];for(let o of i)if(e.isJSXText(o)){let t=H(o.value);t&&r.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||r.push(o.expression):e.isJSXElement(o)?r.push(B({node:o},n)):e.isJSXFragment(o)&&r.push(q({node:o},n));return r.length===0?e.nullLiteral():r.length===1?r[0]:e.arrayExpression(r)}function Je(i,n){let{node:r}=i,o=k(r.openingElement.name.name,n),t=p=>e.isJSXElement(p)&&e.isJSXIdentifier(p.openingElement.name,{name:"Match"})&&(o||!k("Match",n));if(!r.children.some(t)&&!w(r.openingElement.name.name,n))return xe(i,n);let a=p=>{let E=`<Switch> ${p}. The compiler needs to read its arms statically. Write them out: <Switch fallback={...}><Match when={a}>\u2026</Match><Match when={b}>\u2026</Match></Switch>`;throw i.buildCodeFrameError?i.buildCodeFrameError(E):new Error(`[what-compiler] ${E}`)},s=null;for(let p of r.openingElement.attributes)e.isJSXSpreadAttribute(p)&&a("cannot take a spread attribute"),S(p)==="fallback"&&(s=N(p.value));let u=[];for(let p of r.children){if(e.isJSXText(p)){H(p.value)&&a("cannot mix text with its <Match> arms");continue}if(e.isJSXExpressionContainer(p)){if(e.isJSXEmptyExpression(p.expression))continue;a("cannot read its arms from an expression child")}t(p)||a("cannot mix other elements with its <Match> arms"),u.push(p)}u.length===0&&a("has no <Match> arms"),n._pendingSetup||(n._pendingSetup=[]);let c=[];for(let p of u){let E=null;for(let $ of p.openingElement.attributes)e.isJSXAttribute($)&&S($)==="when"&&(E=N($.value));E||a('has a <Match> with no "when" prop');let x=n._pendingSetup.length,A=Ne(p.children,n),J=n._pendingSetup.splice(x);J.length>0&&(A=e.callExpression(e.arrowFunctionExpression([],e.blockStatement([...J,e.returnStatement(A)])),[])),c.push([be(E,n),A])}let d=c.some(([p])=>M(p,n.signalNames,n.importedIdentifiers)),f=s||e.nullLiteral();if(!d){let p=f;for(let E=c.length-1;E>=0;E--)p=e.conditionalExpression(c[E][0],c[E][1],p);return e.arrowFunctionExpression([],p)}let l=e.numericLiteral(-1);for(let p=c.length-1;p>=0;p--)l=e.conditionalExpression(c[p][0],e.numericLiteral(p),l);let g=n.nextMemoId();n.needsMemo=!0,n._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(g),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],l)]))]));let h=f;for(let p=c.length-1;p>=0;p--)h=e.conditionalExpression(e.binaryExpression("===",e.callExpression(e.identifier(g),[]),e.numericLiteral(p)),c[p][1],h);return e.arrowFunctionExpression([],h)}function Oe(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=de(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=U(o.body,r,n),o;if(a)return o;let u=U(o,r,n);return e.arrowFunctionExpression([],u)}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):M(i,n.signalNames,n.importedIdentifiers)?(i=U(i,r,n),e.arrowFunctionExpression([],i)):i}function q(i,n){let{node:r}=i,o=r.children,t=[];for(let a of o)if(e.isJSXText(a)){let s=H(a.value);s&&t.push(e.stringLiteral(s))}else e.isJSXExpressionContainer(a)?e.isJSXEmptyExpression(a.expression)||t.push(Oe(a.expression,n)):e.isJSXElement(a)?t.push(B({node:a},n)):e.isJSXFragment(a)&&t.push(q({node:a},n));return t.length===1?t[0]:e.arrayExpression(t)}function ye(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 Se(i,n,r){let o=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let a=t.get(o);a||(a=Y(i),t.set(o,a)),n.signalNames=a,n._pendingSetup=[];let s=r(i,n),u=n._pendingSetup;if(n._pendingSetup=[],u.length>0){let c=i,d=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(d=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!d?(c.insertBefore(u),i.replaceWith(s)):(u.push(e.returnStatement(s)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(u)),[])))}else i.replaceWith(s)}function Te(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 Xe(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 je(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 we(i,n,r,o,t){let a=i.node.loc?.start||{line:0,column:0},s=`${t}:${a.line}:${a.column+1}`,u=`${t}#${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 ${s}.`);let d={id:r,key:u,bindingName:o,filename:t,source:s,loc:a};if(n.serverActionIds.set(r,d),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(d)}catch(f){throw i.buildCodeFrameError(f instanceof Error?f.message:String(f))}}function De(i,n){if(!Xe(i,n))return;let r=Te(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],t=je(o);if(t.property){t.value!==null&&we(i,n,t.value,r,n.serverActionFilename);return}let a=`wa1_${Ge(`${n.serverActionFilename}#${r}`)}`;we(i,n,a,r,n.serverActionFilename);let s=e.objectProperty(e.identifier("id"),e.stringLiteral(a));o?e.isObjectExpression(o)?o.properties.unshift(s):i.node.arguments[1]=e.objectExpression([s,e.spreadElement(o)]):i.node.arguments.push(e.objectExpression([s]))}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._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,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,t=o==="what-framework"||o.startsWith("what-framework/")||o==="what-core"||o.startsWith("what-core/"),a=t||o.startsWith("./")||o.startsWith("../");for(let s of r.specifiers){let u=null;(e.isImportSpecifier(s)&&e.isIdentifier(s.local)||e.isImportDefaultSpecifier(s)&&e.isIdentifier(s.local)||e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local))&&(u=s.local.name),u&&((a||/^(use|create)[A-Z]/.test(u))&&n.importedIdentifiers.add(u),t?n.whatImports.add(u):o.startsWith(".")||n.foreignImports.add(u)),ze.has(o)&&(e.isImportSpecifier(s)&&e.isIdentifier(s.imported,{name:"action"})&&e.isIdentifier(s.local)?n.serverActionBindings.add(s.local.name):e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local)&&n.serverActionNamespaces.add(s.local.name))}}i.traverse({Function(r){j(r)},CallExpression(r){De(r,n)},VariableDeclarator(r){let o=r.node.init;if(!o||!e.isCallExpression(o))return;let t=o.callee,a="";if(e.isIdentifier(t)?a=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(a=t.property.name),ve.has(a)){let s=r.node.id;if(e.isIdentifier(s))n.signalNames.add(s.name);else if(e.isArrayPattern(s))for(let u of s.elements)e.isIdentifier(u)&&n.signalNames.add(u.name);else if(e.isObjectPattern(s))for(let u of s.properties)e.isObjectProperty(u)&&e.isIdentifier(u.value)&&n.signalNames.add(u.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let a=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(a,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.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.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 t=null;for(let a of i.node.body)if(e.isImportDeclaration(a)&&(a.source.value==="what-framework/render"||a.source.value==="what-core/render")){t=a;break}if(t){let a=new Set(t.specifiers.filter(s=>e.isImportSpecifier(s)).map(s=>s.imported.name));for(let s of r)a.has(s.imported.name)||t.specifiers.push(s)}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 t=e.arrayExpression([...n.delegatedEvents].map(s=>e.stringLiteral(s))),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"),[t]))]));i.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),a])}}},JSXElement(i,n){Se(i,n,B)},JSXFragment(i,n){Se(i,n,q)}}}}function Ze(e,m,b){let C=null;for(let v of e.node.body)if(m.isImportDeclaration(v)&&(v.source.value==="what-core"||v.source.value==="what-framework")){C=v;break}if(C){let v=new Set(C.specifiers.filter(_=>m.isImportSpecifier(_)).map(_=>_.imported.name));for(let _ of b)v.has(_.imported.name)||C.specifiers.push(_)}else{let v=m.importDeclaration(b,m.stringLiteral("what-framework"));e.unshiftContainer("body",v)}}import Z from"fs";import V from"path";var _e=new Set([".jsx",".tsx",".js",".ts"]),Ke=new Set(["_layout","_error","_loading","_404"]);function Ye(e){let m=[],b=[],C=[];function v(F,P=""){if(!Z.existsSync(F))return;let L=Z.readdirSync(F,{withFileTypes:!0});for(let k of L){let w=V.join(F,k.name);if(k.isDirectory()){if(k.name.match(/^\((.+)\)$/)){v(w,P);continue}if(k.name==="api"&&P===""){_(w,"/api");continue}v(w,P+"/"+ne(k.name));continue}let T=V.extname(k.name);if(!_e.has(T))continue;let I=V.basename(k.name,T);if(I==="_layout"){b.push({filePath:w,urlPrefix:P||"/"});continue}if(Ke.has(I))continue;let j=ne(I),D=I==="index"?P||"/":P+"/"+j;m.push({filePath:w,routePath:$e(D),isDynamic:D.includes(":")||D.includes("*")})}}function _(F,P){if(!Z.existsSync(F))return;let L=Z.readdirSync(F,{withFileTypes:!0});for(let k of L){let w=V.join(F,k.name);if(k.isDirectory()){_(w,P+"/"+ne(k.name));continue}let T=V.extname(k.name);if(!_e.has(T))continue;let I=V.basename(k.name,T),j=ne(I),D=I==="index"?P:P+"/"+j;C.push({filePath:w,routePath:$e(D)})}}return v(e),m.sort((F,P)=>{let L=Ce(F.routePath),k=Ce(P.routePath);return L-k}),{pages:m,layouts:b,apiRoutes:C}}function ne(e){let m=e.match(/^\[\.\.\.(\w+)\]$/);if(m)return"*"+m[1];let b=e.match(/^\[(\w+)\]$/);return b?":"+b[1]:e.toLowerCase()}function $e(e){let m=e.replace(/\/+/g,"/");return m.length>1&&m.endsWith("/")&&(m=m.slice(0,-1)),m||"/"}function Ce(e){return e.includes("*")?100:e.includes(":")?10:0}function Qe(e){let m=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!m)return{mode:"client"};try{let b=m[1].replace(/'/g,'"').replace(/(\w+)\s*:/g,'"$1":').replace(/,\s*}/g,"}").replace(/\/\/[^\n]*/g,"");return{mode:"client",...JSON.parse(b)}}catch{return{mode:"client"}}}function en(e){return{hasLoader:/export\s+(?:async\s+)?(?:const|let|var|function)\s+loader\b/.test(e),hasGetStaticPaths:/export\s+(?:async\s+)?(?:const|let|var|function)\s+getStaticPaths\b/.test(e),hasPageConfig:/export\s+const\s+page\b/.test(e)}}function ke(e,m){let{pages:b,layouts:C,apiRoutes:v}=Ye(e),_=[],F=[],P=new Map;C.forEach((w,T)=>{let I=`_layout${T}`,j=fe(w.filePath,m);_.push(`import ${I} from '${j}';`),P.set(w.urlPrefix,I)}),b.forEach((w,T)=>{let I=`_page${T}`,j=fe(w.filePath,m);_.push(`import ${I} from '${j}';`);let D={mode:"client"},N={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let O=Z.readFileSync(w.filePath,"utf-8");D=Qe(O),N=en(O)}catch{}let y=nn(w.routePath,P),S={path:w.routePath,component:I,mode:D.mode||"client",layout:y||null,hasLoader:N.hasLoader};F.push(S)});let L=[];return v.forEach((w,T)=>{let I=`_api${T}`,j=fe(w.filePath,m);_.push(`import * as ${I} from '${j}';`),L.push({path:w.routePath,handlers:I})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",..._,"","export const routes = [",...F.map(w=>` { path: '${w.path}', component: ${w.component}, mode: '${w.mode}'${w.layout?`, layout: ${w.layout}`:""}${w.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...L.map(w=>` { path: '${w.path}', handlers: ${w.handlers} },`),"];","","export const pageModes = {",...F.map(w=>` '${w.path}': '${w.mode}',`),"};"].join(`
|
|
2
|
+
`)}function fe(e,m){return"/"+V.relative(m,e).split(V.sep).join("/")}function nn(e,m){let b=e.split("/").filter(Boolean);for(;b.length>0;){let C="/"+b.join("/");if(m.has(C))return m.get(C);b.pop()}return m.has("/")?m.get("/"):null}var rn=`
|
|
3
3
|
:host {
|
|
4
4
|
position: fixed;
|
|
5
5
|
inset: 0;
|
|
@@ -185,12 +185,12 @@ import Y from"path";import{transformSync as tn}from"@babel/core";var Ve=new Set(
|
|
|
185
185
|
white-space: pre-wrap;
|
|
186
186
|
line-height: 1.5;
|
|
187
187
|
}
|
|
188
|
-
`,
|
|
188
|
+
`,bn=`
|
|
189
189
|
class WhatErrorOverlay extends HTMLElement {
|
|
190
190
|
constructor(err) {
|
|
191
191
|
super();
|
|
192
192
|
this.root = this.attachShadow({ mode: 'open' });
|
|
193
|
-
this.root.innerHTML = '<style>${
|
|
193
|
+
this.root.innerHTML = '<style>${rn}</style>';
|
|
194
194
|
this._err = err;
|
|
195
195
|
this.show(err);
|
|
196
196
|
}
|
|
@@ -380,7 +380,7 @@ class WhatErrorOverlay extends HTMLElement {
|
|
|
380
380
|
if (!customElements.get('what-error-overlay')) {
|
|
381
381
|
customElements.define('what-error-overlay', WhatErrorOverlay);
|
|
382
382
|
}
|
|
383
|
-
`;function
|
|
383
|
+
`;function Ae(e){let m=e.ws.send.bind(e.ws);e.ws.send=function(b){return b?.type==="error"&&b.err?.plugin==="vite-plugin-what"&&(b.err._isCompilerError=!0),m(b)}}var Ie="virtual:what-routes",ie="\0"+Ie,sn=/(?:from\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"]|import\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"])/,tn=/\.[cm]?[jt]sx?$/;function ue(e,m){return e?Array.isArray(e)?e.some(b=>ue(b,m)):e instanceof RegExp?(e.lastIndex=0,e.test(m)):typeof e=="function"?e(m):!1:!1}function an({rolldownVersion:e,viteVersion:m}={}){let b=parseInt(String(m??""),10);return!!e||Number.isFinite(b)&&b>=8?{oxc:{jsx:"preserve"}}:{esbuild:{jsx:"preserve"}}}var pe=null;function ln(){return pe||(pe=import("vite").then(e=>e.version||"").catch(()=>"")),pe}var cn=/export\s+(?:default\s+)?function\s+([A-Z]\w*)/,fn=/(?:store|signal|state|context|util|helper|lib|config)\b/i;function pn(e={}){let{include:m=/\.[jt]sx$/,exclude:b=/node_modules/,sourceMaps:C=!0,production:v=!0,pages:_="src/pages",hot:F=!v,prodBundles:P=!0}=e,L="",k="",w=null,T=!1,I=new Map;function j(y){let S=I.get(y.id);if(S&&S.key!==y.key)throw new Error(`Duplicate server action ID "${y.id}". First declared by "${S.bindingName}" at ${S.source}; conflicts with "${y.bindingName}" at ${y.source}.`);I.set(y.id,y)}function D(y){for(let[S,O]of I)O.filename===y&&I.delete(S)}function N(y){let S=y.replace(/[?#].*$/,"");return L?K.relative(L,S).split(K.sep).join("/"):S}return{name:"vite-plugin-what",configResolved(y){L=y.root,k=K.resolve(L,_),T=y.command==="serve"},configureServer(y){w=y,Ae(y),y.watcher.on("add",S=>{if(S.startsWith(k)){let O=y.moduleGraph.getModuleById(ie);O&&(y.moduleGraph.invalidateModule(O),y.ws.send({type:"full-reload"}))}}),y.watcher.on("unlink",S=>{if(D(N(S)),S.startsWith(k)){let O=y.moduleGraph.getModuleById(ie);O&&(y.moduleGraph.invalidateModule(O),y.ws.send({type:"full-reload"}))}})},resolveId(y){if(y===Ie)return ie},load(y){if(y===ie)return ke(k,L)},transform(y,S){let O=S.replace(/[?#].*$/,""),z=ue(m,O),R=tn.test(O),Y=R&&sn.test(y);if(b&&ue(b,O)||(R&&D(N(O)),!z&&!Y))return null;try{let X=on(y,{filename:S,sourceMaps:C,configFile:!1,babelrc:!1,plugins:[[ce,{production:v,projectRoot:L||process.cwd(),onActionId:j}]],parserOpts:{plugins:["jsx","typescript"]}});if(!X||!X.code)return null;let G=X.code;return F&&T&&!v&&un(y,S)&&(G+=mn(S)),{code:G,map:X.map}}catch(X){throw X.plugin="vite-plugin-what",X.id||(X.id=S),X.loc===void 0&&X._loc&&(X.loc={file:S,line:X._loc.line,column:X._loc.column}),console.error(`[what] Error transforming ${S}:`,X.message),X}},handleHotUpdate({file:y,server:S,modules:O}){if(F&&m.test(y)&&!(b&&b.test(y))&&dn(y))return S.ws.send({type:"full-reload"}),[]},async config(y,{mode:S,command:O}){let z=O==="build"&&S==="production"&&P,R=an({rolldownVersion:this?.meta?.rolldownVersion,viteVersion:await ln()});return{...z?{resolve:{conditions:["production"]}}:{},...R,optimizeDeps:{exclude:["what-framework","what-core","what-compiler","what-router"]}}}}}function un(e,m){return!!(cn.test(e)||m.includes("/pages/")||m.includes("\\pages\\"))}function dn(e){let m=K.basename(e,K.extname(e));return fn.test(m)}function mn(e){return`
|
|
384
384
|
|
|
385
385
|
// --- What Framework HMR Boundary ---
|
|
386
386
|
if (import.meta.hot) {
|
|
@@ -393,4 +393,4 @@ if (import.meta.hot) {
|
|
|
393
393
|
}
|
|
394
394
|
});
|
|
395
395
|
}
|
|
396
|
-
`}export{
|
|
396
|
+
`}export{pn as default,an as jsxPreserveConfig,pn as what};
|
package/index.d.ts
CHANGED
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
// (src/index.js). Types the surface that is actually exported so vite.config /
|
|
3
3
|
// babel.config authoring against what-compiler is type-checked, not `any`.
|
|
4
4
|
|
|
5
|
-
export { default as babelPlugin } from './babel';
|
|
6
|
-
export { default as vitePlugin, what } from './vite';
|
|
7
|
-
export * from './runtime';
|
|
5
|
+
export { default as babelPlugin } from './babel.js';
|
|
6
|
+
export { default as vitePlugin, what } from './vite.js';
|
|
7
|
+
export * from './runtime.js';
|
|
8
8
|
export {
|
|
9
9
|
scanPages,
|
|
10
10
|
extractPageConfig,
|
|
11
11
|
generateRoutesModule,
|
|
12
|
-
} from './file-router';
|
|
12
|
+
} from './file-router.js';
|
|
13
13
|
|
|
14
|
-
export type { WhatVitePluginOptions, WhatVitePlugin } from './vite';
|
|
15
|
-
export type { BabelPluginPass } from './babel';
|
|
14
|
+
export type { WhatVitePluginOptions, WhatVitePlugin } from './vite.js';
|
|
15
|
+
export type { BabelPluginPass } from './babel.js';
|
|
16
16
|
export type {
|
|
17
17
|
ScannedRoutes,
|
|
18
18
|
ScannedPage,
|
|
19
19
|
PageConfig,
|
|
20
20
|
PageExports,
|
|
21
|
-
} from './file-router';
|
|
21
|
+
} from './file-router.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "what-compiler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "JSX compiler for What Framework - transforms JSX to optimized DOM operations",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"license": "MIT",
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@babel/core": "^7.0.0",
|
|
52
|
-
"what-core": "^0.
|
|
52
|
+
"what-core": "^0.12.1"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"src",
|
package/src/babel-plugin.js
CHANGED
|
@@ -1654,6 +1654,58 @@ export default function whatBabelPlugin({ types: t }) {
|
|
|
1654
1654
|
filteredAttrs.push(attr);
|
|
1655
1655
|
}
|
|
1656
1656
|
|
|
1657
|
+
// Transform children.
|
|
1658
|
+
// Element children build their DOM at the call site, i.e. before the parent
|
|
1659
|
+
// component ever runs, so a <Provider> publishes its context value too late
|
|
1660
|
+
// for its own subtree. Collect the element setup and emit it behind a
|
|
1661
|
+
// zero-arg factory instead; the runtime calls the factory while the parent
|
|
1662
|
+
// is on the component stack. An expression child is deferred for the same
|
|
1663
|
+
// reason: it is the shape a wrapper forwards its own children through, and
|
|
1664
|
+
// reading it while the argument list is built happens before the component
|
|
1665
|
+
// it is being handed to has run. Text children have nothing to defer.
|
|
1666
|
+
//
|
|
1667
|
+
// Shared by the island branch and the regular component branch: an island is
|
|
1668
|
+
// still a component, and `<Panel client:visible>...</Panel>` must keep its
|
|
1669
|
+
// children rather than silently dropping them.
|
|
1670
|
+
function transformComponentChildren() {
|
|
1671
|
+
const setupMark = state._pendingSetup ? state._pendingSetup.length : 0;
|
|
1672
|
+
const transformedChildren = [];
|
|
1673
|
+
let deferChildren = false;
|
|
1674
|
+
for (const child of children) {
|
|
1675
|
+
if (t.isJSXText(child)) {
|
|
1676
|
+
const text = normalizeJsxText(child.value);
|
|
1677
|
+
if (text) transformedChildren.push(t.stringLiteral(text));
|
|
1678
|
+
} else if (t.isJSXExpressionContainer(child)) {
|
|
1679
|
+
if (!t.isJSXEmptyExpression(child.expression)) {
|
|
1680
|
+
deferChildren = true;
|
|
1681
|
+
transformedChildren.push(child.expression);
|
|
1682
|
+
}
|
|
1683
|
+
} else if (t.isJSXElement(child)) {
|
|
1684
|
+
// <For>/<Show>/<Switch> lower to an inserter or a thunk (already lazy).
|
|
1685
|
+
const childTag = child.openingElement.name.name;
|
|
1686
|
+
if (childTag !== 'For' && childTag !== 'Show' && childTag !== 'Switch') deferChildren = true;
|
|
1687
|
+
transformedChildren.push(transformElementFineGrained({ node: child }, state));
|
|
1688
|
+
} else if (t.isJSXFragment(child)) {
|
|
1689
|
+
deferChildren = true;
|
|
1690
|
+
transformedChildren.push(transformFragmentFineGrained({ node: child }, state));
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
|
|
1694
|
+
let childrenArg = t.arrayExpression(transformedChildren);
|
|
1695
|
+
if (deferChildren) {
|
|
1696
|
+
// Hoisted element setup emitted while transforming these children belongs
|
|
1697
|
+
// inside the factory, not before the enclosing statement.
|
|
1698
|
+
const setup = state._pendingSetup ? state._pendingSetup.splice(setupMark) : [];
|
|
1699
|
+
childrenArg = t.arrowFunctionExpression(
|
|
1700
|
+
[],
|
|
1701
|
+
setup.length > 0
|
|
1702
|
+
? t.blockStatement([...setup, t.returnStatement(childrenArg)])
|
|
1703
|
+
: childrenArg
|
|
1704
|
+
);
|
|
1705
|
+
}
|
|
1706
|
+
return childrenArg;
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1657
1709
|
if (clientDirective) {
|
|
1658
1710
|
state.needsCreateComponent = true;
|
|
1659
1711
|
state.needsIsland = true;
|
|
@@ -1669,16 +1721,32 @@ export default function whatBabelPlugin({ types: t }) {
|
|
|
1669
1721
|
);
|
|
1670
1722
|
}
|
|
1671
1723
|
|
|
1724
|
+
let islandSpread = null;
|
|
1672
1725
|
for (const attr of filteredAttrs) {
|
|
1673
|
-
if (t.isJSXSpreadAttribute(attr))
|
|
1726
|
+
if (t.isJSXSpreadAttribute(attr)) {
|
|
1727
|
+
// A spread used to be dropped on the floor here, so
|
|
1728
|
+
// `<Chart client:visible {...config} />` lost every prop in `config`.
|
|
1729
|
+
islandSpread = attr.argument;
|
|
1730
|
+
continue;
|
|
1731
|
+
}
|
|
1674
1732
|
const attrName = getAttrName(attr);
|
|
1733
|
+
if (attrName === 'key') continue;
|
|
1675
1734
|
const value = getAttributeValue(attr.value);
|
|
1676
1735
|
islandProps.push(t.objectProperty(t.identifier(attrName), value));
|
|
1677
1736
|
}
|
|
1678
1737
|
|
|
1738
|
+
// Spread first, explicit attributes second, so a written-out prop wins over
|
|
1739
|
+
// the same key coming from the spread (JSX evaluation order).
|
|
1740
|
+
const islandPropsExpr = islandSpread
|
|
1741
|
+
? t.callExpression(
|
|
1742
|
+
t.memberExpression(t.identifier('Object'), t.identifier('assign')),
|
|
1743
|
+
[t.objectExpression([]), islandSpread, t.objectExpression(islandProps)]
|
|
1744
|
+
)
|
|
1745
|
+
: t.objectExpression(islandProps);
|
|
1746
|
+
|
|
1679
1747
|
return t.callExpression(
|
|
1680
1748
|
t.identifier('_$createComponent'),
|
|
1681
|
-
[t.identifier('Island'),
|
|
1749
|
+
[t.identifier('Island'), islandPropsExpr, transformComponentChildren()]
|
|
1682
1750
|
);
|
|
1683
1751
|
}
|
|
1684
1752
|
|
|
@@ -1769,38 +1837,6 @@ export default function whatBabelPlugin({ types: t }) {
|
|
|
1769
1837
|
);
|
|
1770
1838
|
}
|
|
1771
1839
|
|
|
1772
|
-
// Transform children.
|
|
1773
|
-
// Element children build their DOM at the call site, i.e. before the parent
|
|
1774
|
-
// component ever runs, so a <Provider> publishes its context value too late
|
|
1775
|
-
// for its own subtree. Collect the element setup and emit it behind a
|
|
1776
|
-
// zero-arg factory instead; the runtime calls the factory while the parent
|
|
1777
|
-
// is on the component stack. An expression child is deferred for the same
|
|
1778
|
-
// reason: it is the shape a wrapper forwards its own children through, and
|
|
1779
|
-
// reading it while the argument list is built happens before the component
|
|
1780
|
-
// it is being handed to has run. Text children have nothing to defer.
|
|
1781
|
-
const setupMark = state._pendingSetup ? state._pendingSetup.length : 0;
|
|
1782
|
-
const transformedChildren = [];
|
|
1783
|
-
let deferChildren = false;
|
|
1784
|
-
for (const child of children) {
|
|
1785
|
-
if (t.isJSXText(child)) {
|
|
1786
|
-
const text = normalizeJsxText(child.value);
|
|
1787
|
-
if (text) transformedChildren.push(t.stringLiteral(text));
|
|
1788
|
-
} else if (t.isJSXExpressionContainer(child)) {
|
|
1789
|
-
if (!t.isJSXEmptyExpression(child.expression)) {
|
|
1790
|
-
deferChildren = true;
|
|
1791
|
-
transformedChildren.push(child.expression);
|
|
1792
|
-
}
|
|
1793
|
-
} else if (t.isJSXElement(child)) {
|
|
1794
|
-
// <For>/<Show>/<Switch> lower to an inserter or a thunk (already lazy).
|
|
1795
|
-
const childTag = child.openingElement.name.name;
|
|
1796
|
-
if (childTag !== 'For' && childTag !== 'Show' && childTag !== 'Switch') deferChildren = true;
|
|
1797
|
-
transformedChildren.push(transformElementFineGrained({ node: child }, state));
|
|
1798
|
-
} else if (t.isJSXFragment(child)) {
|
|
1799
|
-
deferChildren = true;
|
|
1800
|
-
transformedChildren.push(transformFragmentFineGrained({ node: child }, state));
|
|
1801
|
-
}
|
|
1802
|
-
}
|
|
1803
|
-
|
|
1804
1840
|
let propsExpr;
|
|
1805
1841
|
if (hasSpread) {
|
|
1806
1842
|
if (props.length > 0) {
|
|
@@ -1817,18 +1853,7 @@ export default function whatBabelPlugin({ types: t }) {
|
|
|
1817
1853
|
propsExpr = t.nullLiteral();
|
|
1818
1854
|
}
|
|
1819
1855
|
|
|
1820
|
-
|
|
1821
|
-
if (deferChildren) {
|
|
1822
|
-
// Hoisted element setup emitted while transforming these children belongs
|
|
1823
|
-
// inside the factory, not before the enclosing statement.
|
|
1824
|
-
const setup = state._pendingSetup ? state._pendingSetup.splice(setupMark) : [];
|
|
1825
|
-
childrenArg = t.arrowFunctionExpression(
|
|
1826
|
-
[],
|
|
1827
|
-
setup.length > 0
|
|
1828
|
-
? t.blockStatement([...setup, t.returnStatement(childrenArg)])
|
|
1829
|
-
: childrenArg
|
|
1830
|
-
);
|
|
1831
|
-
}
|
|
1856
|
+
const childrenArg = transformComponentChildren();
|
|
1832
1857
|
|
|
1833
1858
|
return t.callExpression(t.identifier('_$createComponent'), [componentRef, propsExpr, childrenArg]);
|
|
1834
1859
|
}
|