what-compiler 0.11.5 → 0.11.7
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/package.json +2 -2
- package/src/babel-plugin.js +157 -0
- package/src/vite-plugin.js +60 -4
package/dist/babel-plugin.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var pe=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),ue=new Set(["once","capture","passive"]),de=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),me=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),P=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),ie=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]);function J(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let v=e.split(/\r\n|\n|\r/),$=-1;for(let S=0;S<v.length;S++)/[^ \t]/.test(v[S])&&($=S);if($===-1)return"";let _="";for(let S=0;S<v.length;S++){let y=v[S].replace(/\t/g," "),L=S===0,k=S===v.length-1;L||(y=y.replace(/^ +/,"")),k||(y=y.replace(/ +$/,"")),y&&(S!==$&&(y+=" "),_+=y)}return _}function Ee({types:e}){let v=new Set,$=new Set;function _(i,n){return!(!i.includes("__")||!i.startsWith("on")||i.split("__").slice(1).filter(t=>t!=="").length===0)}function S(i){let n=i.includes("|")?"|":"__",r=i.split(n),s=r[0],t=r.slice(1).filter(o=>pe.has(o));return{eventName:s,modifiers:t}}function y(i){return i.startsWith("bind:")}function L(i){return i.slice(5)}function k(i){return/^[A-Z]/.test(i)}function ne(i){return de.has(String(i).toLowerCase())}function w(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function V(i){return i==="className"?"class":i==="htmlFor"?"for":i}function A(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 B(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 H(i){let n=new Set;function r(t){let o=t.init;if(!o||!e.isCallExpression(o))return;let a=o.callee,p="";if(e.isIdentifier(a)?p=a.name:e.isMemberExpression(a)&&e.isIdentifier(a.property)&&(p=a.property.name),ie.has(p)){let c=t.id;if(e.isIdentifier(c))n.add(c.name);else if(e.isArrayPattern(c))for(let f of c.elements)e.isIdentifier(f)&&n.add(f.name);else if(e.isObjectPattern(c))for(let f of c.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&n.add(f.value.name)}}let s=i.scope;for(;s;){for(let o of Object.values(s.bindings))o.path.isVariableDeclarator()&&r(o.path.node);let t=s.path&&s.path.node;if(t&&t.params){for(let o of t.params)if(e.isObjectPattern(o))for(let a of o.properties)e.isObjectProperty(a)&&e.isIdentifier(a.value)?n.add(a.value.name):e.isRestElement(a)&&e.isIdentifier(a.argument)&&n.add(a.argument.name)}s=s.parent}return n}function xe(i){return H(i)}function U(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?P.has(n.object.name):e.isIdentifier(n)?P.has(n.name):!1}function z(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)&&!P.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&F(i.callee.object.name,n)||U(i))return!1;if(i.arguments.some(s=>g(s,n,r)))return!0}return!1}function g(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)&&!P.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&F(i.callee.object.name,n)?!0:U(i)?i.arguments.some(s=>g(s,n,r)):e.isIdentifier(i.callee)?i.arguments.some(s=>g(s,n,r)):g(i.callee,n,r)||i.arguments.some(s=>g(s,n,r)):e.isIdentifier(i)?F(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?g(i.object,n,r):e.isConditionalExpression(i)?g(i.test,n,r)||g(i.consequent,n,r)||g(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?g(i.left,n,r)||g(i.right,n,r):e.isUnaryExpression(i)?g(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(s=>g(s,n,r)):e.isObjectExpression(i)?i.properties.some(s=>e.isObjectProperty(s)&&g(s.value,n,r)):e.isArrayExpression(i)?i.elements.some(s=>s&&g(s,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function G(i,n){let r=i,s=!1;if(e.isArrowFunctionExpression(i)&&i.params.length===0&&(r=i.body,s=!0),e.isConditionalExpression(r)){let o=D(r.consequent,n),a=D(r.alternate,n);if(o||a){let p=e.conditionalExpression(r.test,o||r.consequent,a||r.alternate);return s?e.arrowFunctionExpression([],p):p}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let o=D(r.right,n);if(o){let a=e.logicalExpression(r.operator,r.left,o);return s?e.arrowFunctionExpression([],a):a}return null}return D(r,n)}function D(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(u=>e.isReturnStatement(u));l&&(s=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(u=>e.isReturnStatement(u));l&&(s=l.argument)}if(!s||!e.isJSXElement(s))return null;let t=s.openingElement.attributes,o=null;for(let l of t)if(e.isJSXAttribute(l)&&A(l)==="key"){o=l;break}if(!o)return null;let a=w(o.value);if(!a)return null;s.openingElement.attributes=t.filter(l=>l!==o);let p=i.callee.object,c=e.arrowFunctionExpression([],p),f=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([f],e.cloneNode(a,!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 j(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement,r=n.name.name;if(k(r))return!1;for(let s of n.attributes){if(e.isJSXSpreadAttribute(s))return!1;let t=s.value;if(e.isJSXExpressionContainer(t))return!1}return i.children.every(j)}return!1}function q(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function T(i){if(e.isJSXText(i)){let o=J(i.value);return o?Z(o):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(k(r))return"";let s=`<${r}`;for(let o of n.attributes){if(e.isJSXSpreadAttribute(o))continue;let a=A(o);if(a==="key"||a.startsWith("on")||a.startsWith("bind:")||a.includes("|"))continue;let p=a;if(a==="className"&&(p="class"),a==="htmlFor"&&(p="for"),!o.value)s+=` ${p}`;else if(e.isStringLiteral(o.value))s+=` ${p}="${re(o.value.value)}"`;else if(e.isJSXExpressionContainer(o.value))continue}let t=i.openingElement.selfClosing;if(t&&ne(r))return s+=">",s;if(t)return s+=`></${r}>`,s;s+=">";for(let o of i.children)if(e.isJSXText(o)){let a=J(o.value);a&&(s+=Z(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||(s+="<!--$-->"):e.isJSXElement(o)&&(k(o.openingElement.name.name)?s+="<!--$-->":s+=T(o));return s+=`</${r}>`,s}function Z(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function re(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(t==="For")return te(i,n);if(t==="Show")return ae(i,n);if(k(t))return oe(i,n);let o=s.attributes,a=r.children,p=a.every(j),c=o.every(E=>!q(E)),f=o.every(E=>{if(e.isJSXSpreadAttribute(E))return!1;let h=A(E);return!h?.startsWith("on")&&!h?.startsWith("bind:")});if(p&&c&&f){let E=T(r);if(E){let h=Y(n,E);return n.needsTemplate=!0,e.callExpression(e.identifier(h),[])}}let d=T(r);if(!d){let E=r.loc,h=n.filename||n.file?.opts?.filename||"<unknown>",x=E?`:${E.start.line}:${E.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${h}${x}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,O(i,n)}let l=Y(n,d);n.needsTemplate=!0;let u=n.nextVarId(),m=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(u),e.callExpression(e.identifier(l),[]))])];return K(m,u,o,n,t),Q(m,u,a,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...m),e.identifier(u)}function O(i,n){let{node:r}=i,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=[];for(let d of o){if(e.isJSXSpreadAttribute(d))continue;let l=A(d),u=w(d.value),m=V(l);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(m)?e.identifier(m):e.stringLiteral(m),u))}let c=[];for(let d of a)if(e.isJSXText(d)){let l=J(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(X({node:d},n)):e.isJSXFragment(d)&&c.push(M({node:d},n));let f=p.length>0?e.objectExpression(p):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),f,...c])}let se=new Set(["input","textarea","select","option"]);function K(i,n,r,s,t){function o(c,f){return c==="class"?(s.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),f])):c==="style"?(s.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),f])):c==="value"&&t&&se.has(t)?(s.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),f])):c==="checked"&&t==="input"?(s.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),f])):c.startsWith("data-")||c.startsWith("aria-")?(s.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),f])):(s.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),f]))}let a=!1;function p(){a||(a=!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 f=A(c);if(f!=="key"){if(f==="ref"){let d=w(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(f.startsWith("on")&&!f.includes("|")&&!_(f,s)){let d=f.slice(2).toLowerCase(),l=w(c.value);me.has(d)?(s.needsDelegation=!0,s.delegatedEvents||(s.delegatedEvents=new Set),s.delegatedEvents.add(d),p(),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(f.startsWith("on")&&(f.includes("|")||_(f,s))){let{eventName:d,modifiers:l}=S(f),u=w(c.value),m=B(u,l),E=d.slice(2).toLowerCase(),h=l.filter(b=>ue.has(b)),x=[e.stringLiteral(E),m];if(h.length>0){let b=h.map(C=>e.objectProperty(e.identifier(C),e.booleanLiteral(!0)));x.push(e.objectExpression(b))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),x)));continue}if(y(f)){let d=L(f),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=V(f);if(g(d,s.signalNames,s.importedIdentifiers)){s.needsEffect=!0;let u=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([],o(l,u))]);z(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(o(l,d)))}}}}function R(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(R);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"&&R(r))return!0}return!1}function I(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(!g(s,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(R))return i;let a=r.nextMemoId();r.needsMemo=!0;let p=t?e.unaryExpression("!",e.unaryExpression("!",s)):s;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))]));let c=e.callExpression(e.identifier(a),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function Q(i,n,r,s,t){let o=[],a=0;for(let l of r){if(e.isJSXText(l)){J(l.value)&&a++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;o.push({type:"expression",child:l,childIndex:a}),a++;continue}if(e.isJSXElement(l)){let u=l.openingElement.name.name;if(k(u)||u==="For"||u==="Show")o.push({type:"component",child:l,childIndex:a}),a++;else{let m=l.openingElement.attributes.some(q)||l.openingElement.attributes.some(E=>!e.isJSXSpreadAttribute(E)&&A(E)?.startsWith("on"))||!l.children.every(j);o.push({type:"static",child:l,childIndex:a,hasAnythingDynamic:m}),a++}continue}e.isJSXFragment(l)&&o.push({type:"fragment",child:l})}let p=o.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=p.length>=2,f=new Map;if(c){let l=null,u=0;for(let m of p){let E=m.childIndex,h=t.nextVarId();f.set(E,h);let x;if(l===null)x=W(n,E);else{x=e.identifier(l);for(let b=u;b<E;b++)x=e.memberExpression(x,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),x)])),l=h,u=E}}function d(l){return f.has(l)?e.identifier(f.get(l)):W(n,l)}for(let l of o){if(l.type==="expression"){let u=l.child.expression,m=d(l.childIndex);t.needsInsert=!0;let E=G(u,t);if(E){t.needsMapArray=!0;let x=e.isCallExpression(E)&&e.isIdentifier(E.callee)&&(E.callee.name==="_$mapArray"||E.callee.name==="mapArray"),b=e.isArrowFunctionExpression(E);b&&e.isExpression(E.body)?E.body=I(E.body,i,t):!x&&!b&&(E=I(E,i,t));let C=x||b?E:e.arrowFunctionExpression([],E);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),C,m])));continue}if(e.isCallExpression(u)&&e.isIdentifier(u.callee)&&(u.callee.name==="mapArray"||u.callee.name==="_$mapArray")){t.needsMapArray=!0,u.callee.name==="mapArray"&&(u.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),u,m])));continue}if(g(u,t.signalNames,t.importedIdentifiers)){u=I(u,i,t);let x=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],u),m]);z(u,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),u,m])));continue}if(l.type==="component"){let u=X({node:l.child},t),m=d(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),u,m])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let u;f.has(l.childIndex)?u=f.get(l.childIndex):(u=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(u),W(n,l.childIndex))]))),K(i,u,l.child.openingElement.attributes,t,l.child.openingElement.name.name),Q(i,u,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let u of l.child.children)if(e.isJSXExpressionContainer(u)&&!e.isJSXEmptyExpression(u.expression)){t.needsInsert=!0;let m=u.expression;g(m,t.signalNames,t.importedIdentifiers)?(m=I(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 W(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 oe(i,n){let{node:r}=i,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=null,c=[];for(let h of o){if(e.isJSXAttribute(h)){let x;if(e.isJSXNamespacedName(h.name)?x=`${h.name.namespace.name}:${h.name.name.name}`:x=h.name.name,x&&typeof x=="string"&&x.startsWith("client:")){let b=x.slice(7);h.value?p={type:b,value:h.value.value}:p={type:b};continue}}c.push(h)}if(p){n.needsCreateComponent=!0,n.needsIsland=!0;let h=[e.objectProperty(e.identifier("component"),e.identifier(t)),e.objectProperty(e.identifier("mode"),e.stringLiteral(p.type))];p.value&&h.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(p.value)));for(let x of c){if(e.isJSXSpreadAttribute(x))continue;let b=A(x),C=w(x.value);h.push(e.objectProperty(e.identifier(b),C))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(h),e.arrayExpression([])])}n.needsCreateComponent=!0;let f=[],d=!1,l=null;for(let h of c){if(e.isJSXSpreadAttribute(h)){d=!0,l=h.argument;continue}let x=A(h);if(x==="key")continue;if(y(x)){let C=L(x),N=h.value.expression;C==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(N),[]))),f.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"))]))))):C==="checked"&&(f.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(N),[]))),f.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(x.startsWith("on")&&(x.includes("|")||_(x,n))){let{eventName:C,modifiers:N}=S(x),ce=w(h.value),fe=B(ce,N);f.push(e.objectProperty(e.identifier(C),fe));continue}let b=w(h.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(x)?e.identifier(x):e.stringLiteral(x),b))}let u=[];for(let h of a)if(e.isJSXText(h)){let x=J(h.value);x&&u.push(e.stringLiteral(x))}else e.isJSXExpressionContainer(h)?e.isJSXEmptyExpression(h.expression)||u.push(h.expression):e.isJSXElement(h)?u.push(X({node:h},n)):e.isJSXFragment(h)&&u.push(M({node:h},n));let m;d?f.length>0?m=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(f)]):m=l:f.length>0?m=e.objectExpression(f):m=e.nullLiteral();let E=u.length>0?e.arrayExpression(u):e.arrayExpression([]);return e.callExpression(e.identifier("_$createComponent"),[e.identifier(t),m,E])}function te(i,n){let{node:r}=i,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let f of s)if(e.isJSXAttribute(f)){let d=A(f);d==="each"?o=w(f.value):d==="key"&&(a=w(f.value))}if(!o)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,O(i,n);let p=null;for(let f of t)if(e.isJSXExpressionContainer(f)&&!e.isJSXEmptyExpression(f.expression)){p=f.expression;break}if(!p)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,O(i,n);n.needsMapArray=!0;let c=[o,p];return a&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),a)])),e.callExpression(e.identifier("_$mapArray"),c)}function ae(i,n){let{node:r}=i,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let m of s)if(e.isJSXAttribute(m)){let E=A(m);E==="when"?o=w(m.value):E==="fallback"&&(a=w(m.value))}if(!o)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let p=null;for(let m of t)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){p=m.expression;break}if(!p){let m=[];for(let E of t)if(e.isJSXText(E)){let h=J(E.value);h&&m.push(e.stringLiteral(h))}else e.isJSXElement(E)&&m.push(X({node:E},n));m.length===1?p=m[0]:m.length>1?p=e.arrayExpression(m):p=e.nullLiteral()}let c;e.isCallExpression(o)?c=o:e.isArrowFunctionExpression(o)&&e.isExpression(o.body)?c=o.body:e.isIdentifier(o)&&(n.signalNames&&F(o.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(o.name))?c=e.callExpression(o,[]):c=o;let f=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(p),l=d?e.callExpression(p,[e.cloneNode(f)]):p,u=a||e.nullLiteral();if(g(c,n.signalNames,n.importedIdentifiers)){let m=n.nextMemoId();n.needsMemo=!0;let E=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([],E)]))])),c=e.callExpression(e.identifier(m),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(f,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(f),l,u))]))}function le(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,s=G(i,n);if(s){n.needsMapArray=!0;let o=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=I(s.body,r,n),s;if(o)return s;let p=I(s,r,n);return e.arrowFunctionExpression([],p)}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):g(i,n.signalNames,n.importedIdentifiers)?(i=I(i,r,n),e.arrowFunctionExpression([],i)):i}function M(i,n){let{node:r}=i,s=r.children,t=[];for(let o of s)if(e.isJSXText(o)){let a=J(o.value);a&&t.push(e.stringLiteral(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||t.push(le(o.expression,n)):e.isJSXElement(o)?t.push(X({node:o},n)):e.isJSXFragment(o)&&t.push(M({node:o},n));return t.length===1?t[0]:e.arrayExpression(t)}function Y(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 ee(i,n,r){let s=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let o=t.get(s);o||(o=H(i),t.set(s,o)),n.signalNames=o,n._pendingSetup=[];let a=r(i,n),p=n._pendingSetup;if(n._pendingSetup=[],p.length>0){let c=i,f=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(f=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!f?(c.insertBefore(p),i.replaceWith(a)):(p.push(e.returnStatement(a)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(p)),[])))}else i.replaceWith(a)}return{name:"what-jsx-transform",visitor:{Program:{enter(i,n){n.needsTemplate=!1,n.needsInsert=!1,n.needsEffect=!1,n.needsMapArray=!1,n.needsSpread=!1,n.needsSetProp=!1,n.needsMemo=!1,n.needsSetClass=!1,n.needsSetStyle=!1,n.needsSetAttr=!1,n.needsSetValue=!1,n.needsSetChecked=!1,n.needsH=!1,n.needsCreateComponent=!1,n.needsFragment=!1,n.needsIsland=!1,n.needsDelegation=!1,n.delegatedEvents=new Set,n.templates=[],n.templateMap=new Map,n.templateCount=0,n._varCounter=0,n._memoCounter=0,n._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.nextMemoId=()=>`_c$${n._memoCounter++}`,n.signalNames=new Set,n.importedIdentifiers=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/")||s.startsWith("./")||s.startsWith("../");for(let o of r.specifiers){let a=null;(e.isImportSpecifier(o)&&e.isIdentifier(o.local)||e.isImportDefaultSpecifier(o)&&e.isIdentifier(o.local)||e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local))&&(a=o.local.name),a&&(t||/^(use|create)[A-Z]/.test(a))&&n.importedIdentifiers.add(a)}}i.traverse({VariableDeclarator(r){let s=r.node.init;if(!s||!e.isCallExpression(s))return;let t=s.callee,o="";if(e.isIdentifier(t)?o=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(o=t.property.name),ie.has(o)){let a=r.node.id;if(e.isIdentifier(a))n.signalNames.add(a.name);else if(e.isArrayPattern(a))for(let p of a.elements)e.isIdentifier(p)&&n.signalNames.add(p.name);else if(e.isObjectPattern(a))for(let p of a.properties)e.isObjectProperty(p)&&e.isIdentifier(p.value)&&n.signalNames.add(p.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let o=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(o,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.id),o)]))}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 o of i.node.body)if(e.isImportDeclaration(o)&&(o.source.value==="what-framework/render"||o.source.value==="what-core/render")){t=o;break}if(t){let o=new Set(t.specifiers.filter(a=>e.isImportSpecifier(a)).map(a=>a.imported.name));for(let a of r)o.has(a.imported.name)||t.specifiers.push(a)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(s.length>0&&he(i,e,s),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let t=e.arrayExpression([...n.delegatedEvents].map(a=>e.stringLiteral(a))),o=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))]),o])}}},JSXElement(i,n){ee(i,n,X)},JSXFragment(i,n){ee(i,n,M)}}}}function he(e,v,$){let _=null;for(let S of e.node.body)if(v.isImportDeclaration(S)&&(S.source.value==="what-core"||S.source.value==="what-framework")){_=S;break}if(_){let S=new Set(_.specifiers.filter(y=>v.isImportSpecifier(y)).map(y=>y.imported.name));for(let y of $)S.has(y.imported.name)||_.specifiers.push(y)}else{let S=v.importDeclaration($,v.stringLiteral("what-framework"));e.unshiftContainer("body",S)}}export{Ee as default};
|
|
1
|
+
var he=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),xe=new Set(["once","capture","passive"]),ge=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Se=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),M=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),ne=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),ye=new Set(["what-framework/server","what-server","what-server/actions"]);function be(e){let y=0xcbf29ce484222325n;for(let w=0;w<e.length;w++)y^=BigInt(e.charCodeAt(w)),y=BigInt.asUintN(64,y*0x100000001b3n);return y.toString(36)}function ve(e,y){let w=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),A=String(y||"").replace(/\\/g,"/").replace(/\/+$/,"");return A&&w.startsWith(`${A}/`)?w.slice(A.length+1):w.replace(/^\.\//,"")}function J(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let y=e.split(/\r\n|\n|\r/),w=-1;for(let g=0;g<y.length;g++)/[^ \t]/.test(y[g])&&(w=g);if(w===-1)return"";let A="";for(let g=0;g<y.length;g++){let b=y[g].replace(/\t/g," "),L=g===0,I=g===y.length-1;L||(b=b.replace(/^ +/,"")),I||(b=b.replace(/ +$/,"")),b&&(g!==w&&(b+=" "),A+=b)}return A}function we({types:e}){let y=new Set,w=new Set;function A(n,i){return!(!n.includes("__")||!n.startsWith("on")||n.split("__").slice(1).filter(t=>t!=="").length===0)}function g(n){let i=n.includes("|")?"|":"__",r=n.split(i),s=r[0],t=r.slice(1).filter(o=>he.has(o));return{eventName:s,modifiers:t}}function b(n){return n.startsWith("bind:")}function L(n){return n.slice(5)}function I(n){return/^[A-Z]/.test(n)}function re(n){return ge.has(String(n).toLowerCase())}function $(n){return n?e.isJSXExpressionContainer(n)?n.expression:e.isStringLiteral(n)?n:e.stringLiteral(n.value||""):e.booleanLiteral(!0)}function W(n){return n==="className"?"class":n==="htmlFor"?"for":n}function C(n){return e.isJSXNamespacedName(n.name)?`${n.name.namespace.name}:${n.name.name.name}`:typeof n.name.name=="string"?n.name.name:String(n.name.name)}function B(n,i){if(i.length===0)return n;let r=n;for(let s of i)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 k(n,i){return i.has(n)}function H(n){let i=new Set;function r(t){let o=t.init;if(!o||!e.isCallExpression(o))return;let a=o.callee,p="";if(e.isIdentifier(a)?p=a.name:e.isMemberExpression(a)&&e.isIdentifier(a.property)&&(p=a.property.name),ne.has(p)){let c=t.id;if(e.isIdentifier(c))i.add(c.name);else if(e.isArrayPattern(c))for(let f of c.elements)e.isIdentifier(f)&&i.add(f.name);else if(e.isObjectPattern(c))for(let f of c.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&i.add(f.value.name)}}let s=n.scope;for(;s;){for(let o of Object.values(s.bindings))o.path.isVariableDeclarator()&&r(o.path.node);let t=s.path&&s.path.node;if(t&&t.params){for(let o of t.params)if(e.isObjectPattern(o))for(let a of o.properties)e.isObjectProperty(a)&&e.isIdentifier(a.value)?i.add(a.value.name):e.isRestElement(a)&&e.isIdentifier(a.argument)&&i.add(a.argument.name)}s=s.parent}return i}function $e(n){return H(n)}function U(n){if(!e.isCallExpression(n))return!1;let i=n.callee;return e.isMemberExpression(i)&&e.isIdentifier(i.object)?M.has(i.object.name):e.isIdentifier(i)?M.has(i.name):!1}function z(n,i,r){if(!i)return!1;if(e.isCallExpression(n)){if(e.isIdentifier(n.callee)&&k(n.callee.name,i)||r&&e.isIdentifier(n.callee)&&r.has(n.callee.name)&&!M.has(n.callee.name)||e.isMemberExpression(n.callee)&&e.isIdentifier(n.callee.object)&&k(n.callee.object.name,i)||U(n))return!1;if(n.arguments.some(s=>S(s,i,r)))return!0}return!1}function S(n,i,r){return i||(i=new Set),e.isCallExpression(n)?e.isIdentifier(n.callee)&&k(n.callee.name,i)||r&&e.isIdentifier(n.callee)&&r.has(n.callee.name)&&!M.has(n.callee.name)||e.isMemberExpression(n.callee)&&e.isIdentifier(n.callee.object)&&k(n.callee.object.name,i)?!0:U(n)?n.arguments.some(s=>S(s,i,r)):e.isIdentifier(n.callee)?n.arguments.some(s=>S(s,i,r)):S(n.callee,i,r)||n.arguments.some(s=>S(s,i,r)):e.isIdentifier(n)?k(n.name,i)||r&&r.has(n.name):e.isMemberExpression(n)?S(n.object,i,r):e.isConditionalExpression(n)?S(n.test,i,r)||S(n.consequent,i,r)||S(n.alternate,i,r):e.isBinaryExpression(n)||e.isLogicalExpression(n)?S(n.left,i,r)||S(n.right,i,r):e.isUnaryExpression(n)?S(n.argument,i,r):e.isTemplateLiteral(n)?n.expressions.some(s=>S(s,i,r)):e.isObjectExpression(n)?n.properties.some(s=>e.isObjectProperty(s)&&S(s.value,i,r)):e.isArrayExpression(n)?n.elements.some(s=>s&&S(s,i,r)):(e.isArrowFunctionExpression(n)||e.isFunctionExpression(n),!1)}function q(n,i){let r=n,s=!1;if(e.isArrowFunctionExpression(n)&&n.params.length===0&&(r=n.body,s=!0),e.isConditionalExpression(r)){let o=D(r.consequent,i),a=D(r.alternate,i);if(o||a){let p=e.conditionalExpression(r.test,o||r.consequent,a||r.alternate);return s?e.arrowFunctionExpression([],p):p}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let o=D(r.right,i);if(o){let a=e.logicalExpression(r.operator,r.left,o);return s?e.arrowFunctionExpression([],a):a}return null}return D(r,i)}function D(n,i){if(!e.isCallExpression(n)||!e.isMemberExpression(n.callee)||!e.isIdentifier(n.callee.property,{name:"map"})||n.arguments.length<1)return null;let r=n.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(d=>e.isReturnStatement(d));l&&(s=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(d=>e.isReturnStatement(d));l&&(s=l.argument)}if(!s||!e.isJSXElement(s))return null;let t=s.openingElement.attributes,o=null;for(let l of t)if(e.isJSXAttribute(l)&&C(l)==="key"){o=l;break}if(!o)return null;let a=$(o.value);if(!a)return null;s.openingElement.attributes=t.filter(l=>l!==o);let p=n.callee.object,c=e.arrowFunctionExpression([],p),f=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),u=e.arrowFunctionExpression([f],e.cloneNode(a,!0));return e.callExpression(e.identifier("_$mapArray"),[c,r,e.objectExpression([e.objectProperty(e.identifier("key"),u),e.objectProperty(e.identifier("raw"),e.booleanLiteral(!0))])])}function P(n){if(e.isJSXText(n))return!0;if(e.isJSXExpressionContainer(n))return!1;if(e.isJSXElement(n)){let i=n.openingElement,r=i.name.name;if(I(r))return!1;for(let s of i.attributes){if(e.isJSXSpreadAttribute(s))return!1;let t=s.value;if(e.isJSXExpressionContainer(t))return!1}return n.children.every(P)}return!1}function G(n){return e.isJSXSpreadAttribute(n)?!0:n.value?e.isJSXExpressionContainer(n.value):!1}function O(n){if(e.isJSXText(n)){let o=J(n.value);return o?Z(o):""}if(e.isJSXExpressionContainer(n))return e.isJSXEmptyExpression(n.expression)?"":"<!--$-->";if(!e.isJSXElement(n))return"";let i=n.openingElement,r=i.name.name;if(I(r))return"";let s=`<${r}`;for(let o of i.attributes){if(e.isJSXSpreadAttribute(o))continue;let a=C(o);if(a==="key"||a.startsWith("on")||a.startsWith("bind:")||a.includes("|"))continue;let p=a;if(a==="className"&&(p="class"),a==="htmlFor"&&(p="for"),!o.value)s+=` ${p}`;else if(e.isStringLiteral(o.value))s+=` ${p}="${se(o.value.value)}"`;else if(e.isJSXExpressionContainer(o.value))continue}let t=n.openingElement.selfClosing;if(t&&re(r))return s+=">",s;if(t)return s+=`></${r}>`,s;s+=">";for(let o of n.children)if(e.isJSXText(o)){let a=J(o.value);a&&(s+=Z(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||(s+="<!--$-->"):e.isJSXElement(o)&&(I(o.openingElement.name.name)?s+="<!--$-->":s+=O(o));return s+=`</${r}>`,s}function Z(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function se(n){return n.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function N(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name;if(t==="For")return ae(n,i);if(t==="Show")return le(n,i);if(I(t))return te(n,i);let o=s.attributes,a=r.children,p=a.every(P),c=o.every(E=>!G(E)),f=o.every(E=>{if(e.isJSXSpreadAttribute(E))return!1;let h=C(E);return!h?.startsWith("on")&&!h?.startsWith("bind:")});if(p&&c&&f){let E=O(r);if(E){let h=Y(i,E);return i.needsTemplate=!0,e.callExpression(e.identifier(h),[])}}let u=O(r);if(!u){let E=r.loc,h=i.filename||i.file?.opts?.filename||"<unknown>",x=E?`:${E.start.line}:${E.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${h}${x}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),i.needsH=!0,T(n,i)}let l=Y(i,u);i.needsTemplate=!0;let d=i.nextVarId(),m=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(d),e.callExpression(e.identifier(l),[]))])];return K(m,d,o,i,t),Q(m,d,a,r,i),i._pendingSetup||(i._pendingSetup=[]),i._pendingSetup.push(...m),e.identifier(d)}function T(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=[];for(let u of o){if(e.isJSXSpreadAttribute(u))continue;let l=C(u),d=$(u.value),m=W(l);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(m)?e.identifier(m):e.stringLiteral(m),d))}let c=[];for(let u of a)if(e.isJSXText(u)){let l=J(u.value);l&&c.push(e.stringLiteral(l))}else e.isJSXExpressionContainer(u)?e.isJSXEmptyExpression(u.expression)||c.push(u.expression):e.isJSXElement(u)?c.push(N({node:u},i)):e.isJSXFragment(u)&&c.push(j({node:u},i));let f=p.length>0?e.objectExpression(p):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),f,...c])}let oe=new Set(["input","textarea","select","option"]);function K(n,i,r,s,t){function o(c,f){return c==="class"?(s.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(i),f])):c==="style"?(s.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(i),f])):c==="value"&&t&&oe.has(t)?(s.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(i),f])):c==="checked"&&t==="input"?(s.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(i),f])):c.startsWith("data-")||c.startsWith("aria-")?(s.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(i),e.stringLiteral(c),f])):(s.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(i),e.stringLiteral(c),f]))}let a=!1;function p(){a||(a=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){s.needsSpread=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(i),c.argument])));continue}let f=C(c);if(f!=="key"){if(f==="ref"){let u=$(c.value);n.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",u),e.stringLiteral("function")),e.callExpression(e.cloneNode(u),[e.identifier(i)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(u),e.identifier("current")),e.identifier(i)))));continue}if(f.startsWith("on")&&!f.includes("|")&&!A(f,s)){let u=f.slice(2).toLowerCase(),l=$(c.value);Se.has(u)?(s.needsDelegation=!0,s.delegatedEvents||(s.delegatedEvents=new Set),s.delegatedEvents.add(u),p(),n.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier(`$$${u}`)),l)))):n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),e.identifier("addEventListener")),[e.stringLiteral(u),l])));continue}if(f.startsWith("on")&&(f.includes("|")||A(f,s))){let{eventName:u,modifiers:l}=g(f),d=$(c.value),m=B(d,l),E=u.slice(2).toLowerCase(),h=l.filter(v=>xe.has(v)),x=[e.stringLiteral(E),m];if(h.length>0){let v=h.map(_=>e.objectProperty(e.identifier(_),e.booleanLiteral(!0)));x.push(e.objectExpression(v))}n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),e.identifier("addEventListener")),x)));continue}if(b(f)){let u=L(f),l=c.value.expression;s.needsEffect=!0,u==="value"?(n.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier("value")),e.callExpression(e.cloneNode(l),[])))]))),n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),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"))]))])))):u==="checked"&&(s.needsEffect=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier("checked")),e.callExpression(e.cloneNode(l),[])))]))),n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),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 u=c.value.expression,l=W(f);if(S(u,s.signalNames,s.importedIdentifiers)){s.needsEffect=!0;let d=e.isIdentifier(u)&&(k(u.name,s.signalNames)||s.importedIdentifiers&&s.importedIdentifiers.has(u.name))?e.callExpression(u,[]):u,m=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],o(l,d))]);z(u,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),n.push(e.expressionStatement(m))}else n.push(e.expressionStatement(o(l,u)))}}}}function R(n){if(!n||typeof n!="object")return!1;if(Array.isArray(n))return n.some(R);if(n.type==="JSXElement"||n.type==="JSXFragment"||n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&(n.callee.name==="_$mapArray"||n.callee.name==="mapArray"))return!0;for(let i of Object.keys(n)){if(i==="loc"||i==="start"||i==="end"||i==="leadingComments"||i==="trailingComments"||i==="innerComments")continue;let r=n[i];if(r&&typeof r=="object"&&R(r))return!0}return!1}function F(n,i,r){let s=null,t=!1;if(e.isConditionalExpression(n))s=n.test,t=!0;else if(e.isLogicalExpression(n)&&(n.operator==="&&"||n.operator==="||"))s=n.left;else return n;if(!S(s,r.signalNames,r.importedIdentifiers)||!(t?[n.consequent,n.alternate]:[n.right]).some(R))return n;let a=r.nextMemoId();r.needsMemo=!0;let p=t?e.unaryExpression("!",e.unaryExpression("!",s)):s;i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))]));let c=e.callExpression(e.identifier(a),[]);return t?e.conditionalExpression(c,n.consequent,n.alternate):e.logicalExpression(n.operator,c,n.right)}function Q(n,i,r,s,t){let o=[],a=0;for(let l of r){if(e.isJSXText(l)){J(l.value)&&a++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;o.push({type:"expression",child:l,childIndex:a}),a++;continue}if(e.isJSXElement(l)){let d=l.openingElement.name.name;if(I(d)||d==="For"||d==="Show")o.push({type:"component",child:l,childIndex:a}),a++;else{let m=l.openingElement.attributes.some(G)||l.openingElement.attributes.some(E=>!e.isJSXSpreadAttribute(E)&&C(E)?.startsWith("on"))||!l.children.every(P);o.push({type:"static",child:l,childIndex:a,hasAnythingDynamic:m}),a++}continue}e.isJSXFragment(l)&&o.push({type:"fragment",child:l})}let p=o.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=p.length>=2,f=new Map;if(c){let l=null,d=0;for(let m of p){let E=m.childIndex,h=t.nextVarId();f.set(E,h);let x;if(l===null)x=V(i,E);else{x=e.identifier(l);for(let v=d;v<E;v++)x=e.memberExpression(x,e.identifier("nextSibling"))}n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(h),x)])),l=h,d=E}}function u(l){return f.has(l)?e.identifier(f.get(l)):V(i,l)}for(let l of o){if(l.type==="expression"){let d=l.child.expression,m=u(l.childIndex);t.needsInsert=!0;let E=q(d,t);if(E){t.needsMapArray=!0;let x=e.isCallExpression(E)&&e.isIdentifier(E.callee)&&(E.callee.name==="_$mapArray"||E.callee.name==="mapArray"),v=e.isArrowFunctionExpression(E);v&&e.isExpression(E.body)?E.body=F(E.body,n,t):!x&&!v&&(E=F(E,n,t));let _=x||v?E:e.arrowFunctionExpression([],E);n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),_,m])));continue}if(e.isCallExpression(d)&&e.isIdentifier(d.callee)&&(d.callee.name==="mapArray"||d.callee.name==="_$mapArray")){t.needsMapArray=!0,d.callee.name==="mapArray"&&(d.callee.name="_$mapArray"),n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),d,m])));continue}if(S(d,t.signalNames,t.importedIdentifiers)){d=F(d,n,t);let x=e.callExpression(e.identifier("_$insert"),[e.identifier(i),e.arrowFunctionExpression([],d),m]);z(d,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),n.push(e.expressionStatement(x))}else n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),d,m])));continue}if(l.type==="component"){let d=N({node:l.child},t),m=u(l.childIndex);t.needsInsert=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),d,m])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let d;f.has(l.childIndex)?d=f.get(l.childIndex):(d=t.nextVarId(),n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(d),V(i,l.childIndex))]))),K(n,d,l.child.openingElement.attributes,t,l.child.openingElement.name.name),Q(n,d,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let d of l.child.children)if(e.isJSXExpressionContainer(d)&&!e.isJSXEmptyExpression(d.expression)){t.needsInsert=!0;let m=d.expression;S(m,t.signalNames,t.importedIdentifiers)?(m=F(m,n,t),n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),e.arrowFunctionExpression([],m)])))):n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),m])))}}}}function V(n,i){if(i===0)return e.memberExpression(e.identifier(n),e.identifier("firstChild"));let r=e.memberExpression(e.identifier(n),e.identifier("firstChild"));for(let s=0;s<i;s++)r=e.memberExpression(r,e.identifier("nextSibling"));return r}function te(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=null,c=[];for(let h of o){if(e.isJSXAttribute(h)){let x;if(e.isJSXNamespacedName(h.name)?x=`${h.name.namespace.name}:${h.name.name.name}`:x=h.name.name,x&&typeof x=="string"&&x.startsWith("client:")){let v=x.slice(7);h.value?p={type:v,value:h.value.value}:p={type:v};continue}}c.push(h)}if(p){i.needsCreateComponent=!0,i.needsIsland=!0;let h=[e.objectProperty(e.identifier("component"),e.identifier(t)),e.objectProperty(e.identifier("mode"),e.stringLiteral(p.type))];p.value&&h.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(p.value)));for(let x of c){if(e.isJSXSpreadAttribute(x))continue;let v=C(x),_=$(x.value);h.push(e.objectProperty(e.identifier(v),_))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(h),e.arrayExpression([])])}i.needsCreateComponent=!0;let f=[],u=!1,l=null;for(let h of c){if(e.isJSXSpreadAttribute(h)){u=!0,l=h.argument;continue}let x=C(h);if(x==="key")continue;if(b(x)){let _=L(x),X=h.value.expression;_==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(X),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(X),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):_==="checked"&&(f.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(X),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(X),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(x.startsWith("on")&&(x.includes("|")||A(x,i))){let{eventName:_,modifiers:X}=g(x),me=$(h.value),Ee=B(me,X);f.push(e.objectProperty(e.identifier(_),Ee));continue}let v=$(h.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(x)?e.identifier(x):e.stringLiteral(x),v))}let d=[];for(let h of a)if(e.isJSXText(h)){let x=J(h.value);x&&d.push(e.stringLiteral(x))}else e.isJSXExpressionContainer(h)?e.isJSXEmptyExpression(h.expression)||d.push(h.expression):e.isJSXElement(h)?d.push(N({node:h},i)):e.isJSXFragment(h)&&d.push(j({node:h},i));let m;u?f.length>0?m=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(f)]):m=l:f.length>0?m=e.objectExpression(f):m=e.nullLiteral();let E=d.length>0?e.arrayExpression(d):e.arrayExpression([]);return e.callExpression(e.identifier("_$createComponent"),[e.identifier(t),m,E])}function ae(n,i){let{node:r}=n,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let f of s)if(e.isJSXAttribute(f)){let u=C(f);u==="each"?o=$(f.value):u==="key"&&(a=$(f.value))}if(!o)return console.warn('[what-compiler] <For> element missing "each" attribute.'),i.needsH=!0,T(n,i);let p=null;for(let f of t)if(e.isJSXExpressionContainer(f)&&!e.isJSXEmptyExpression(f.expression)){p=f.expression;break}if(!p)return console.warn("[what-compiler] <For> element missing render function child."),i.needsH=!0,T(n,i);i.needsMapArray=!0;let c=[o,p];return a&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),a)])),e.callExpression(e.identifier("_$mapArray"),c)}function le(n,i){let{node:r}=n,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let m of s)if(e.isJSXAttribute(m)){let E=C(m);E==="when"?o=$(m.value):E==="fallback"&&(a=$(m.value))}if(!o)throw n.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let p=null;for(let m of t)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){p=m.expression;break}if(!p){let m=[];for(let E of t)if(e.isJSXText(E)){let h=J(E.value);h&&m.push(e.stringLiteral(h))}else e.isJSXElement(E)&&m.push(N({node:E},i));m.length===1?p=m[0]:m.length>1?p=e.arrayExpression(m):p=e.nullLiteral()}let c;e.isCallExpression(o)?c=o:e.isArrowFunctionExpression(o)&&e.isExpression(o.body)?c=o.body:e.isIdentifier(o)&&(i.signalNames&&k(o.name,i.signalNames)||i.importedIdentifiers&&i.importedIdentifiers.has(o.name))?c=e.callExpression(o,[]):c=o;let f=n.scope?n.scope.generateUidIdentifier("v"):e.identifier("_v"),u=e.isFunction(p),l=u?e.callExpression(p,[e.cloneNode(f)]):p,d=a||e.nullLiteral();if(S(c,i.signalNames,i.importedIdentifiers)){let m=i.nextMemoId();i.needsMemo=!0;let E=u?c:e.unaryExpression("!",e.unaryExpression("!",c));i._pendingSetup||(i._pendingSetup=[]),i._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],E)]))])),c=e.callExpression(e.identifier(m),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(f,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(f),l,d))]))}function ce(n,i){i._pendingSetup||(i._pendingSetup=[]);let r=i._pendingSetup,s=q(n,i);if(s){i.needsMapArray=!0;let o=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=F(s.body,r,i),s;if(o)return s;let p=F(s,r,i);return e.arrowFunctionExpression([],p)}return e.isCallExpression(n)&&e.isIdentifier(n.callee)&&(n.callee.name==="mapArray"||n.callee.name==="_$mapArray")?(i.needsMapArray=!0,n.callee.name==="mapArray"&&(n.callee.name="_$mapArray"),n):S(n,i.signalNames,i.importedIdentifiers)?(n=F(n,r,i),e.arrowFunctionExpression([],n)):n}function j(n,i){let{node:r}=n,s=r.children,t=[];for(let o of s)if(e.isJSXText(o)){let a=J(o.value);a&&t.push(e.stringLiteral(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||t.push(ce(o.expression,i)):e.isJSXElement(o)?t.push(N({node:o},i)):e.isJSXFragment(o)&&t.push(j({node:o},i));return t.length===1?t[0]:e.arrayExpression(t)}function Y(n,i){if(n.templateMap.has(i))return n.templateMap.get(i);let r=`_tmpl$${n.templateCount++}`;return n.templateMap.set(i,r),n.templates.push({id:r,html:i}),r}function ee(n,i,r){let s=n.scope,t=i._signalNamesCache;t||(t=i._signalNamesCache=new WeakMap);let o=t.get(s);o||(o=H(n),t.set(s,o)),i.signalNames=o,i._pendingSetup=[];let a=r(n,i),p=i._pendingSetup;if(i._pendingSetup=[],p.length>0){let c=n,f=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(f=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!f?(c.insertBefore(p),n.replaceWith(a)):(p.push(e.returnStatement(a)),n.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(p)),[])))}else n.replaceWith(a)}function fe(n){let i=n.parentPath;if(i?.isVariableDeclarator()&&e.isIdentifier(i.node.id))return i.node.id.name;if(i?.isAssignmentExpression()&&e.isIdentifier(i.node.left))return i.node.left.name;if(i?.isExportDefaultDeclaration())return"default";if(i?.isObjectProperty()&&!i.node.computed){if(e.isIdentifier(i.node.key))return i.node.key.name;if(e.isStringLiteral(i.node.key))return i.node.key.value}return null}function pe(n,i){let r=n.node.callee;return e.isIdentifier(r)?i.serverActionBindings.has(r.name):e.isMemberExpression(r)&&!r.computed&&e.isIdentifier(r.object)&&e.isIdentifier(r.property,{name:"action"})&&i.serverActionNamespaces.has(r.object.name)}function ue(n){if(!e.isObjectExpression(n))return{property:null,value:null};for(let i of n.properties)if(!(!e.isObjectProperty(i)||(e.isIdentifier(i.key)&&!i.computed?i.key.name:e.isStringLiteral(i.key)?i.key.value:null)!=="id"))return e.isStringLiteral(i.value)?{property:i,value:i.value.value}:e.isTemplateLiteral(i.value)&&i.value.expressions.length===0?{property:i,value:i.value.quasis[0]?.value.cooked||""}:{property:i,value:null};return{property:null,value:null}}function ie(n,i,r,s,t){let o=n.node.loc?.start||{line:0,column:0},a=`${t}:${o.line}:${o.column+1}`,p=`${t}#${s}`,c=i.serverActionIds.get(r);if(c)throw n.buildCodeFrameError(`Duplicate server action ID "${r}". First declared by "${c.bindingName}" at ${c.source}; conflicts with "${s}" at ${a}.`);let f={id:r,key:p,bindingName:s,filename:t,source:a,loc:o};if(i.serverActionIds.set(r,f),typeof i.opts?.onActionId=="function")try{i.opts.onActionId(f)}catch(u){throw n.buildCodeFrameError(u instanceof Error?u.message:String(u))}}function de(n,i){if(!pe(n,i))return;let r=fe(n);if(!r){i.opts?.production||console.warn(`[what-compiler] Could not derive a stable server action ID at ${i.serverActionFilename}:${n.node.loc?.start.line||0}. Assign action(...) to a named local or export, or pass { id } explicitly.`);return}let s=n.node.arguments[1],t=ue(s);if(t.property){t.value!==null&&ie(n,i,t.value,r,i.serverActionFilename);return}let o=`wa1_${be(`${i.serverActionFilename}#${r}`)}`;ie(n,i,o,r,i.serverActionFilename);let a=e.objectProperty(e.identifier("id"),e.stringLiteral(o));s?e.isObjectExpression(s)?s.properties.unshift(a):n.node.arguments[1]=e.objectExpression([a,e.spreadElement(s)]):n.node.arguments.push(e.objectExpression([a]))}return{name:"what-jsx-transform",visitor:{Program:{enter(n,i){i.needsTemplate=!1,i.needsInsert=!1,i.needsEffect=!1,i.needsMapArray=!1,i.needsSpread=!1,i.needsSetProp=!1,i.needsMemo=!1,i.needsSetClass=!1,i.needsSetStyle=!1,i.needsSetAttr=!1,i.needsSetValue=!1,i.needsSetChecked=!1,i.needsH=!1,i.needsCreateComponent=!1,i.needsFragment=!1,i.needsIsland=!1,i.needsDelegation=!1,i.delegatedEvents=new Set,i.templates=[],i.templateMap=new Map,i.templateCount=0,i._varCounter=0,i._memoCounter=0,i._pendingSetup=[],i.nextVarId=()=>`_el$${i._varCounter++}`,i.nextMemoId=()=>`_c$${i._memoCounter++}`,i.serverActionBindings=new Set,i.serverActionNamespaces=new Set,i.serverActionIds=new Map,i.serverActionFilename=ve(i.file?.opts?.filename,i.opts?.projectRoot||i.file?.opts?.cwd),i.signalNames=new Set,i.importedIdentifiers=new Set;for(let r of n.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/")||s.startsWith("./")||s.startsWith("../");for(let o of r.specifiers){let a=null;(e.isImportSpecifier(o)&&e.isIdentifier(o.local)||e.isImportDefaultSpecifier(o)&&e.isIdentifier(o.local)||e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local))&&(a=o.local.name),a&&(t||/^(use|create)[A-Z]/.test(a))&&i.importedIdentifiers.add(a),ye.has(s)&&(e.isImportSpecifier(o)&&e.isIdentifier(o.imported,{name:"action"})&&e.isIdentifier(o.local)?i.serverActionBindings.add(o.local.name):e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local)&&i.serverActionNamespaces.add(o.local.name))}}n.traverse({CallExpression(r){de(r,i)},VariableDeclarator(r){let s=r.node.init;if(!s||!e.isCallExpression(s))return;let t=s.callee,o="";if(e.isIdentifier(t)?o=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(o=t.property.name),ne.has(o)){let a=r.node.id;if(e.isIdentifier(a))i.signalNames.add(a.name);else if(e.isArrayPattern(a))for(let p of a.elements)e.isIdentifier(p)&&i.signalNames.add(p.name);else if(e.isObjectPattern(a))for(let p of a.properties)e.isObjectProperty(p)&&e.isIdentifier(p.value)&&i.signalNames.add(p.value.name)}}})},exit(n,i){for(let t of i.templates.reverse()){let o=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(o,"leading"," @__PURE__ "),n.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.id),o)]))}let r=[];i.needsTemplate&&r.push(e.importSpecifier(e.identifier("_$template"),e.identifier("_$template"))),i.needsInsert&&r.push(e.importSpecifier(e.identifier("_$insert"),e.identifier("insert"))),i.needsEffect&&r.push(e.importSpecifier(e.identifier("_$effect"),e.identifier("effect"))),i.needsMapArray&&r.push(e.importSpecifier(e.identifier("_$mapArray"),e.identifier("mapArray"))),i.needsSpread&&r.push(e.importSpecifier(e.identifier("_$spread"),e.identifier("spread"))),i.needsSetProp&&r.push(e.importSpecifier(e.identifier("_$setProp"),e.identifier("setProp"))),i.needsMemo&&r.push(e.importSpecifier(e.identifier("_$memo"),e.identifier("memo"))),i.needsSetClass&&r.push(e.importSpecifier(e.identifier("_$setClass"),e.identifier("setClass"))),i.needsSetStyle&&r.push(e.importSpecifier(e.identifier("_$setStyle"),e.identifier("setStyle"))),i.needsSetAttr&&r.push(e.importSpecifier(e.identifier("_$setAttr"),e.identifier("setAttr"))),i.needsSetValue&&r.push(e.importSpecifier(e.identifier("_$setValue"),e.identifier("setValue"))),i.needsSetChecked&&r.push(e.importSpecifier(e.identifier("_$setChecked"),e.identifier("setChecked"))),i.needsCreateComponent&&r.push(e.importSpecifier(e.identifier("_$createComponent"),e.identifier("_$createComponent"))),i.needsDelegation&&r.push(e.importSpecifier(e.identifier("_$delegateEvents"),e.identifier("delegateEvents")));let s=[];if(i.needsH&&s.push(e.importSpecifier(e.identifier("h"),e.identifier("h"))),i.needsFragment&&s.push(e.importSpecifier(e.identifier("Fragment"),e.identifier("Fragment"))),i.needsIsland&&s.push(e.importSpecifier(e.identifier("Island"),e.identifier("Island"))),r.length>0){let t=null;for(let o of n.node.body)if(e.isImportDeclaration(o)&&(o.source.value==="what-framework/render"||o.source.value==="what-core/render")){t=o;break}if(t){let o=new Set(t.specifiers.filter(a=>e.isImportSpecifier(a)).map(a=>a.imported.name));for(let a of r)o.has(a.imported.name)||t.specifiers.push(a)}else n.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(s.length>0&&Ae(n,e,s),i.needsDelegation&&i.delegatedEvents&&i.delegatedEvents.size>0){let t=e.arrayExpression([...i.delegatedEvents].map(a=>e.stringLiteral(a))),o=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]))]));n.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),o])}}},JSXElement(n,i){ee(n,i,N)},JSXFragment(n,i){ee(n,i,j)}}}}function Ae(e,y,w){let A=null;for(let g of e.node.body)if(y.isImportDeclaration(g)&&(g.source.value==="what-core"||g.source.value==="what-framework")){A=g;break}if(A){let g=new Set(A.specifiers.filter(b=>y.isImportSpecifier(b)).map(b=>b.imported.name));for(let b of w)g.has(b.imported.name)||A.specifiers.push(b)}else{let g=y.importDeclaration(w,y.stringLiteral("what-framework"));e.unshiftContainer("body",g)}}export{we as default};
|
package/dist/index.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var Le=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Pe=new Set(["once","capture","passive"]),Me=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Fe=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),z=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),de=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]);function j(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let h=e.split(/\r\n|\n|\r/),w=-1;for(let $=0;$<h.length;$++)/[^ \t]/.test(h[$])&&(w=$);if(w===-1)return"";let P="";for(let $=0;$<h.length;$++){let C=h[$].replace(/\t/g," "),M=$===0,k=$===h.length-1;M||(C=C.replace(/^ +/,"")),k||(C=C.replace(/ +$/,"")),C&&($!==w&&(C+=" "),P+=C)}return P}function G({types:e}){let h=new Set,w=new Set;function P(n,i){return!(!n.includes("__")||!n.startsWith("on")||n.split("__").slice(1).filter(t=>t!=="").length===0)}function $(n){let i=n.includes("|")?"|":"__",r=n.split(i),s=r[0],t=r.slice(1).filter(o=>Le.has(o));return{eventName:s,modifiers:t}}function C(n){return n.startsWith("bind:")}function M(n){return n.slice(5)}function k(n){return/^[A-Z]/.test(n)}function I(n){return Me.has(String(n).toLowerCase())}function v(n){return n?e.isJSXExpressionContainer(n)?n.expression:e.isStringLiteral(n)?n:e.stringLiteral(n.value||""):e.booleanLiteral(!0)}function b(n){return n==="className"?"class":n==="htmlFor"?"for":n}function A(n){return e.isJSXNamespacedName(n.name)?`${n.name.namespace.name}:${n.name.name.name}`:typeof n.name.name=="string"?n.name.name:String(n.name.name)}function x(n,i){if(i.length===0)return n;let r=n;for(let s of i)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 _(n,i){return i.has(n)}function S(n){let i=new Set;function r(t){let o=t.init;if(!o||!e.isCallExpression(o))return;let a=o.callee,p="";if(e.isIdentifier(a)?p=a.name:e.isMemberExpression(a)&&e.isIdentifier(a.property)&&(p=a.property.name),de.has(p)){let c=t.id;if(e.isIdentifier(c))i.add(c.name);else if(e.isArrayPattern(c))for(let f of c.elements)e.isIdentifier(f)&&i.add(f.name);else if(e.isObjectPattern(c))for(let f of c.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&i.add(f.value.name)}}let s=n.scope;for(;s;){for(let o of Object.values(s.bindings))o.path.isVariableDeclarator()&&r(o.path.node);let t=s.path&&s.path.node;if(t&&t.params){for(let o of t.params)if(e.isObjectPattern(o))for(let a of o.properties)e.isObjectProperty(a)&&e.isIdentifier(a.value)?i.add(a.value.name):e.isRestElement(a)&&e.isIdentifier(a.argument)&&i.add(a.argument.name)}s=s.parent}return i}function T(n){return S(n)}function J(n){if(!e.isCallExpression(n))return!1;let i=n.callee;return e.isMemberExpression(i)&&e.isIdentifier(i.object)?z.has(i.object.name):e.isIdentifier(i)?z.has(i.name):!1}function H(n,i,r){if(!i)return!1;if(e.isCallExpression(n)){if(e.isIdentifier(n.callee)&&_(n.callee.name,i)||r&&e.isIdentifier(n.callee)&&r.has(n.callee.name)&&!z.has(n.callee.name)||e.isMemberExpression(n.callee)&&e.isIdentifier(n.callee.object)&&_(n.callee.object.name,i)||J(n))return!1;if(n.arguments.some(s=>L(s,i,r)))return!0}return!1}function L(n,i,r){return i||(i=new Set),e.isCallExpression(n)?e.isIdentifier(n.callee)&&_(n.callee.name,i)||r&&e.isIdentifier(n.callee)&&r.has(n.callee.name)&&!z.has(n.callee.name)||e.isMemberExpression(n.callee)&&e.isIdentifier(n.callee.object)&&_(n.callee.object.name,i)?!0:J(n)?n.arguments.some(s=>L(s,i,r)):e.isIdentifier(n.callee)?n.arguments.some(s=>L(s,i,r)):L(n.callee,i,r)||n.arguments.some(s=>L(s,i,r)):e.isIdentifier(n)?_(n.name,i)||r&&r.has(n.name):e.isMemberExpression(n)?L(n.object,i,r):e.isConditionalExpression(n)?L(n.test,i,r)||L(n.consequent,i,r)||L(n.alternate,i,r):e.isBinaryExpression(n)||e.isLogicalExpression(n)?L(n.left,i,r)||L(n.right,i,r):e.isUnaryExpression(n)?L(n.argument,i,r):e.isTemplateLiteral(n)?n.expressions.some(s=>L(s,i,r)):e.isObjectExpression(n)?n.properties.some(s=>e.isObjectProperty(s)&&L(s.value,i,r)):e.isArrayExpression(n)?n.elements.some(s=>s&&L(s,i,r)):(e.isArrowFunctionExpression(n)||e.isFunctionExpression(n),!1)}function te(n,i){let r=n,s=!1;if(e.isArrowFunctionExpression(n)&&n.params.length===0&&(r=n.body,s=!0),e.isConditionalExpression(r)){let o=V(r.consequent,i),a=V(r.alternate,i);if(o||a){let p=e.conditionalExpression(r.test,o||r.consequent,a||r.alternate);return s?e.arrowFunctionExpression([],p):p}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let o=V(r.right,i);if(o){let a=e.logicalExpression(r.operator,r.left,o);return s?e.arrowFunctionExpression([],a):a}return null}return V(r,i)}function V(n,i){if(!e.isCallExpression(n)||!e.isMemberExpression(n.callee)||!e.isIdentifier(n.callee.property,{name:"map"})||n.arguments.length<1)return null;let r=n.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(u=>e.isReturnStatement(u));l&&(s=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(u=>e.isReturnStatement(u));l&&(s=l.argument)}if(!s||!e.isJSXElement(s))return null;let t=s.openingElement.attributes,o=null;for(let l of t)if(e.isJSXAttribute(l)&&A(l)==="key"){o=l;break}if(!o)return null;let a=v(o.value);if(!a)return null;s.openingElement.attributes=t.filter(l=>l!==o);let p=n.callee.object,c=e.arrowFunctionExpression([],p),f=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([f],e.cloneNode(a,!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 Z(n){if(e.isJSXText(n))return!0;if(e.isJSXExpressionContainer(n))return!1;if(e.isJSXElement(n)){let i=n.openingElement,r=i.name.name;if(k(r))return!1;for(let s of i.attributes){if(e.isJSXSpreadAttribute(s))return!1;let t=s.value;if(e.isJSXExpressionContainer(t))return!1}return n.children.every(Z)}return!1}function ae(n){return e.isJSXSpreadAttribute(n)?!0:n.value?e.isJSXExpressionContainer(n.value):!1}function K(n){if(e.isJSXText(n)){let o=j(n.value);return o?le(o):""}if(e.isJSXExpressionContainer(n))return e.isJSXEmptyExpression(n.expression)?"":"<!--$-->";if(!e.isJSXElement(n))return"";let i=n.openingElement,r=i.name.name;if(k(r))return"";let s=`<${r}`;for(let o of i.attributes){if(e.isJSXSpreadAttribute(o))continue;let a=A(o);if(a==="key"||a.startsWith("on")||a.startsWith("bind:")||a.includes("|"))continue;let p=a;if(a==="className"&&(p="class"),a==="htmlFor"&&(p="for"),!o.value)s+=` ${p}`;else if(e.isStringLiteral(o.value))s+=` ${p}="${Se(o.value.value)}"`;else if(e.isJSXExpressionContainer(o.value))continue}let t=n.openingElement.selfClosing;if(t&&I(r))return s+=">",s;if(t)return s+=`></${r}>`,s;s+=">";for(let o of n.children)if(e.isJSXText(o)){let a=j(o.value);a&&(s+=le(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||(s+="<!--$-->"):e.isJSXElement(o)&&(k(o.openingElement.name.name)?s+="<!--$-->":s+=K(o));return s+=`</${r}>`,s}function le(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Se(n){return n.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function D(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name;if(t==="For")return _e(n,i);if(t==="Show")return $e(n,i);if(k(t))return ve(n,i);let o=s.attributes,a=r.children,p=a.every(Z),c=o.every(g=>!ae(g)),f=o.every(g=>{if(e.isJSXSpreadAttribute(g))return!1;let E=A(g);return!E?.startsWith("on")&&!E?.startsWith("bind:")});if(p&&c&&f){let g=K(r);if(g){let E=pe(i,g);return i.needsTemplate=!0,e.callExpression(e.identifier(E),[])}}let d=K(r);if(!d){let g=r.loc,E=i.filename||i.file?.opts?.filename||"<unknown>",y=g?`:${g.start.line}:${g.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${E}${y}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),i.needsH=!0,Y(n,i)}let l=pe(i,d);i.needsTemplate=!0;let u=i.nextVarId(),m=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(u),e.callExpression(e.identifier(l),[]))])];return ce(m,u,o,i,t),fe(m,u,a,r,i),i._pendingSetup||(i._pendingSetup=[]),i._pendingSetup.push(...m),e.identifier(u)}function Y(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=[];for(let d of o){if(e.isJSXSpreadAttribute(d))continue;let l=A(d),u=v(d.value),m=b(l);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(m)?e.identifier(m):e.stringLiteral(m),u))}let c=[];for(let d of a)if(e.isJSXText(d)){let l=j(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(D({node:d},i)):e.isJSXFragment(d)&&c.push(B({node:d},i));let f=p.length>0?e.objectExpression(p):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),f,...c])}let we=new Set(["input","textarea","select","option"]);function ce(n,i,r,s,t){function o(c,f){return c==="class"?(s.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(i),f])):c==="style"?(s.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(i),f])):c==="value"&&t&&we.has(t)?(s.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(i),f])):c==="checked"&&t==="input"?(s.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(i),f])):c.startsWith("data-")||c.startsWith("aria-")?(s.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(i),e.stringLiteral(c),f])):(s.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(i),e.stringLiteral(c),f]))}let a=!1;function p(){a||(a=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){s.needsSpread=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(i),c.argument])));continue}let f=A(c);if(f!=="key"){if(f==="ref"){let d=v(c.value);n.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",d),e.stringLiteral("function")),e.callExpression(e.cloneNode(d),[e.identifier(i)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(d),e.identifier("current")),e.identifier(i)))));continue}if(f.startsWith("on")&&!f.includes("|")&&!P(f,s)){let d=f.slice(2).toLowerCase(),l=v(c.value);Fe.has(d)?(s.needsDelegation=!0,s.delegatedEvents||(s.delegatedEvents=new Set),s.delegatedEvents.add(d),p(),n.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier(`$$${d}`)),l)))):n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),e.identifier("addEventListener")),[e.stringLiteral(d),l])));continue}if(f.startsWith("on")&&(f.includes("|")||P(f,s))){let{eventName:d,modifiers:l}=$(f),u=v(c.value),m=x(u,l),g=d.slice(2).toLowerCase(),E=l.filter(F=>Pe.has(F)),y=[e.stringLiteral(g),m];if(E.length>0){let F=E.map(N=>e.objectProperty(e.identifier(N),e.booleanLiteral(!0)));y.push(e.objectExpression(F))}n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),e.identifier("addEventListener")),y)));continue}if(C(f)){let d=M(f),l=c.value.expression;s.needsEffect=!0,d==="value"?(n.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier("value")),e.callExpression(e.cloneNode(l),[])))]))),n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),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,n.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier("checked")),e.callExpression(e.cloneNode(l),[])))]))),n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),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(f);if(L(d,s.signalNames,s.importedIdentifiers)){s.needsEffect=!0;let u=e.isIdentifier(d)&&(_(d.name,s.signalNames)||s.importedIdentifiers&&s.importedIdentifiers.has(d.name))?e.callExpression(d,[]):d,m=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],o(l,u))]);H(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),n.push(e.expressionStatement(m))}else n.push(e.expressionStatement(o(l,d)))}}}}function Q(n){if(!n||typeof n!="object")return!1;if(Array.isArray(n))return n.some(Q);if(n.type==="JSXElement"||n.type==="JSXFragment"||n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&(n.callee.name==="_$mapArray"||n.callee.name==="mapArray"))return!0;for(let i of Object.keys(n)){if(i==="loc"||i==="start"||i==="end"||i==="leadingComments"||i==="trailingComments"||i==="innerComments")continue;let r=n[i];if(r&&typeof r=="object"&&Q(r))return!0}return!1}function X(n,i,r){let s=null,t=!1;if(e.isConditionalExpression(n))s=n.test,t=!0;else if(e.isLogicalExpression(n)&&(n.operator==="&&"||n.operator==="||"))s=n.left;else return n;if(!L(s,r.signalNames,r.importedIdentifiers)||!(t?[n.consequent,n.alternate]:[n.right]).some(Q))return n;let a=r.nextMemoId();r.needsMemo=!0;let p=t?e.unaryExpression("!",e.unaryExpression("!",s)):s;i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))]));let c=e.callExpression(e.identifier(a),[]);return t?e.conditionalExpression(c,n.consequent,n.alternate):e.logicalExpression(n.operator,c,n.right)}function fe(n,i,r,s,t){let o=[],a=0;for(let l of r){if(e.isJSXText(l)){j(l.value)&&a++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;o.push({type:"expression",child:l,childIndex:a}),a++;continue}if(e.isJSXElement(l)){let u=l.openingElement.name.name;if(k(u)||u==="For"||u==="Show")o.push({type:"component",child:l,childIndex:a}),a++;else{let m=l.openingElement.attributes.some(ae)||l.openingElement.attributes.some(g=>!e.isJSXSpreadAttribute(g)&&A(g)?.startsWith("on"))||!l.children.every(Z);o.push({type:"static",child:l,childIndex:a,hasAnythingDynamic:m}),a++}continue}e.isJSXFragment(l)&&o.push({type:"fragment",child:l})}let p=o.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=p.length>=2,f=new Map;if(c){let l=null,u=0;for(let m of p){let g=m.childIndex,E=t.nextVarId();f.set(g,E);let y;if(l===null)y=ee(i,g);else{y=e.identifier(l);for(let F=u;F<g;F++)y=e.memberExpression(y,e.identifier("nextSibling"))}n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),y)])),l=E,u=g}}function d(l){return f.has(l)?e.identifier(f.get(l)):ee(i,l)}for(let l of o){if(l.type==="expression"){let u=l.child.expression,m=d(l.childIndex);t.needsInsert=!0;let g=te(u,t);if(g){t.needsMapArray=!0;let y=e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="_$mapArray"||g.callee.name==="mapArray"),F=e.isArrowFunctionExpression(g);F&&e.isExpression(g.body)?g.body=X(g.body,n,t):!y&&!F&&(g=X(g,n,t));let N=y||F?g:e.arrowFunctionExpression([],g);n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),N,m])));continue}if(e.isCallExpression(u)&&e.isIdentifier(u.callee)&&(u.callee.name==="mapArray"||u.callee.name==="_$mapArray")){t.needsMapArray=!0,u.callee.name==="mapArray"&&(u.callee.name="_$mapArray"),n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),u,m])));continue}if(L(u,t.signalNames,t.importedIdentifiers)){u=X(u,n,t);let y=e.callExpression(e.identifier("_$insert"),[e.identifier(i),e.arrowFunctionExpression([],u),m]);H(u,t.signalNames,t.importedIdentifiers)&&e.addComment(y,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),n.push(e.expressionStatement(y))}else n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),u,m])));continue}if(l.type==="component"){let u=D({node:l.child},t),m=d(l.childIndex);t.needsInsert=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),u,m])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let u;f.has(l.childIndex)?u=f.get(l.childIndex):(u=t.nextVarId(),n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(u),ee(i,l.childIndex))]))),ce(n,u,l.child.openingElement.attributes,t,l.child.openingElement.name.name),fe(n,u,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let u of l.child.children)if(e.isJSXExpressionContainer(u)&&!e.isJSXEmptyExpression(u.expression)){t.needsInsert=!0;let m=u.expression;L(m,t.signalNames,t.importedIdentifiers)?(m=X(m,n,t),n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),e.arrowFunctionExpression([],m)])))):n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),m])))}}}}function ee(n,i){if(i===0)return e.memberExpression(e.identifier(n),e.identifier("firstChild"));let r=e.memberExpression(e.identifier(n),e.identifier("firstChild"));for(let s=0;s<i;s++)r=e.memberExpression(r,e.identifier("nextSibling"));return r}function ve(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=null,c=[];for(let E of o){if(e.isJSXAttribute(E)){let y;if(e.isJSXNamespacedName(E.name)?y=`${E.name.namespace.name}:${E.name.name.name}`:y=E.name.name,y&&typeof y=="string"&&y.startsWith("client:")){let F=y.slice(7);E.value?p={type:F,value:E.value.value}:p={type:F};continue}}c.push(E)}if(p){i.needsCreateComponent=!0,i.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),e.identifier(t)),e.objectProperty(e.identifier("mode"),e.stringLiteral(p.type))];p.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(p.value)));for(let y of c){if(e.isJSXSpreadAttribute(y))continue;let F=A(y),N=v(y.value);E.push(e.objectProperty(e.identifier(F),N))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(E),e.arrayExpression([])])}i.needsCreateComponent=!0;let f=[],d=!1,l=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){d=!0,l=E.argument;continue}let y=A(E);if(y==="key")continue;if(C(y)){let N=M(y),R=E.value.expression;N==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(R),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(R),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):N==="checked"&&(f.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(R),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(R),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(y.startsWith("on")&&(y.includes("|")||P(y,i))){let{eventName:N,modifiers:R}=$(y),ke=v(E.value),Ae=x(ke,R);f.push(e.objectProperty(e.identifier(N),Ae));continue}let F=v(E.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(y)?e.identifier(y):e.stringLiteral(y),F))}let u=[];for(let E of a)if(e.isJSXText(E)){let y=j(E.value);y&&u.push(e.stringLiteral(y))}else e.isJSXExpressionContainer(E)?e.isJSXEmptyExpression(E.expression)||u.push(E.expression):e.isJSXElement(E)?u.push(D({node:E},i)):e.isJSXFragment(E)&&u.push(B({node:E},i));let m;d?f.length>0?m=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(f)]):m=l:f.length>0?m=e.objectExpression(f):m=e.nullLiteral();let g=u.length>0?e.arrayExpression(u):e.arrayExpression([]);return e.callExpression(e.identifier("_$createComponent"),[e.identifier(t),m,g])}function _e(n,i){let{node:r}=n,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let f of s)if(e.isJSXAttribute(f)){let d=A(f);d==="each"?o=v(f.value):d==="key"&&(a=v(f.value))}if(!o)return console.warn('[what-compiler] <For> element missing "each" attribute.'),i.needsH=!0,Y(n,i);let p=null;for(let f of t)if(e.isJSXExpressionContainer(f)&&!e.isJSXEmptyExpression(f.expression)){p=f.expression;break}if(!p)return console.warn("[what-compiler] <For> element missing render function child."),i.needsH=!0,Y(n,i);i.needsMapArray=!0;let c=[o,p];return a&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),a)])),e.callExpression(e.identifier("_$mapArray"),c)}function $e(n,i){let{node:r}=n,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let m of s)if(e.isJSXAttribute(m)){let g=A(m);g==="when"?o=v(m.value):g==="fallback"&&(a=v(m.value))}if(!o)throw n.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let p=null;for(let m of t)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){p=m.expression;break}if(!p){let m=[];for(let g of t)if(e.isJSXText(g)){let E=j(g.value);E&&m.push(e.stringLiteral(E))}else e.isJSXElement(g)&&m.push(D({node:g},i));m.length===1?p=m[0]:m.length>1?p=e.arrayExpression(m):p=e.nullLiteral()}let c;e.isCallExpression(o)?c=o:e.isArrowFunctionExpression(o)&&e.isExpression(o.body)?c=o.body:e.isIdentifier(o)&&(i.signalNames&&_(o.name,i.signalNames)||i.importedIdentifiers&&i.importedIdentifiers.has(o.name))?c=e.callExpression(o,[]):c=o;let f=n.scope?n.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(p),l=d?e.callExpression(p,[e.cloneNode(f)]):p,u=a||e.nullLiteral();if(L(c,i.signalNames,i.importedIdentifiers)){let m=i.nextMemoId();i.needsMemo=!0;let g=d?c:e.unaryExpression("!",e.unaryExpression("!",c));i._pendingSetup||(i._pendingSetup=[]),i._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],g)]))])),c=e.callExpression(e.identifier(m),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(f,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(f),l,u))]))}function Ce(n,i){i._pendingSetup||(i._pendingSetup=[]);let r=i._pendingSetup,s=te(n,i);if(s){i.needsMapArray=!0;let o=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,i),s;if(o)return s;let p=X(s,r,i);return e.arrowFunctionExpression([],p)}return e.isCallExpression(n)&&e.isIdentifier(n.callee)&&(n.callee.name==="mapArray"||n.callee.name==="_$mapArray")?(i.needsMapArray=!0,n.callee.name==="mapArray"&&(n.callee.name="_$mapArray"),n):L(n,i.signalNames,i.importedIdentifiers)?(n=X(n,r,i),e.arrowFunctionExpression([],n)):n}function B(n,i){let{node:r}=n,s=r.children,t=[];for(let o of s)if(e.isJSXText(o)){let a=j(o.value);a&&t.push(e.stringLiteral(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||t.push(Ce(o.expression,i)):e.isJSXElement(o)?t.push(D({node:o},i)):e.isJSXFragment(o)&&t.push(B({node:o},i));return t.length===1?t[0]:e.arrayExpression(t)}function pe(n,i){if(n.templateMap.has(i))return n.templateMap.get(i);let r=`_tmpl$${n.templateCount++}`;return n.templateMap.set(i,r),n.templates.push({id:r,html:i}),r}function ue(n,i,r){let s=n.scope,t=i._signalNamesCache;t||(t=i._signalNamesCache=new WeakMap);let o=t.get(s);o||(o=S(n),t.set(s,o)),i.signalNames=o,i._pendingSetup=[];let a=r(n,i),p=i._pendingSetup;if(i._pendingSetup=[],p.length>0){let c=n,f=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(f=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!f?(c.insertBefore(p),n.replaceWith(a)):(p.push(e.returnStatement(a)),n.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(p)),[])))}else n.replaceWith(a)}return{name:"what-jsx-transform",visitor:{Program:{enter(n,i){i.needsTemplate=!1,i.needsInsert=!1,i.needsEffect=!1,i.needsMapArray=!1,i.needsSpread=!1,i.needsSetProp=!1,i.needsMemo=!1,i.needsSetClass=!1,i.needsSetStyle=!1,i.needsSetAttr=!1,i.needsSetValue=!1,i.needsSetChecked=!1,i.needsH=!1,i.needsCreateComponent=!1,i.needsFragment=!1,i.needsIsland=!1,i.needsDelegation=!1,i.delegatedEvents=new Set,i.templates=[],i.templateMap=new Map,i.templateCount=0,i._varCounter=0,i._memoCounter=0,i._pendingSetup=[],i.nextVarId=()=>`_el$${i._varCounter++}`,i.nextMemoId=()=>`_c$${i._memoCounter++}`,i.signalNames=new Set,i.importedIdentifiers=new Set;for(let r of n.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/")||s.startsWith("./")||s.startsWith("../");for(let o of r.specifiers){let a=null;(e.isImportSpecifier(o)&&e.isIdentifier(o.local)||e.isImportDefaultSpecifier(o)&&e.isIdentifier(o.local)||e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local))&&(a=o.local.name),a&&(t||/^(use|create)[A-Z]/.test(a))&&i.importedIdentifiers.add(a)}}n.traverse({VariableDeclarator(r){let s=r.node.init;if(!s||!e.isCallExpression(s))return;let t=s.callee,o="";if(e.isIdentifier(t)?o=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(o=t.property.name),de.has(o)){let a=r.node.id;if(e.isIdentifier(a))i.signalNames.add(a.name);else if(e.isArrayPattern(a))for(let p of a.elements)e.isIdentifier(p)&&i.signalNames.add(p.name);else if(e.isObjectPattern(a))for(let p of a.properties)e.isObjectProperty(p)&&e.isIdentifier(p.value)&&i.signalNames.add(p.value.name)}}})},exit(n,i){for(let t of i.templates.reverse()){let o=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(o,"leading"," @__PURE__ "),n.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.id),o)]))}let r=[];i.needsTemplate&&r.push(e.importSpecifier(e.identifier("_$template"),e.identifier("_$template"))),i.needsInsert&&r.push(e.importSpecifier(e.identifier("_$insert"),e.identifier("insert"))),i.needsEffect&&r.push(e.importSpecifier(e.identifier("_$effect"),e.identifier("effect"))),i.needsMapArray&&r.push(e.importSpecifier(e.identifier("_$mapArray"),e.identifier("mapArray"))),i.needsSpread&&r.push(e.importSpecifier(e.identifier("_$spread"),e.identifier("spread"))),i.needsSetProp&&r.push(e.importSpecifier(e.identifier("_$setProp"),e.identifier("setProp"))),i.needsMemo&&r.push(e.importSpecifier(e.identifier("_$memo"),e.identifier("memo"))),i.needsSetClass&&r.push(e.importSpecifier(e.identifier("_$setClass"),e.identifier("setClass"))),i.needsSetStyle&&r.push(e.importSpecifier(e.identifier("_$setStyle"),e.identifier("setStyle"))),i.needsSetAttr&&r.push(e.importSpecifier(e.identifier("_$setAttr"),e.identifier("setAttr"))),i.needsSetValue&&r.push(e.importSpecifier(e.identifier("_$setValue"),e.identifier("setValue"))),i.needsSetChecked&&r.push(e.importSpecifier(e.identifier("_$setChecked"),e.identifier("setChecked"))),i.needsCreateComponent&&r.push(e.importSpecifier(e.identifier("_$createComponent"),e.identifier("_$createComponent"))),i.needsDelegation&&r.push(e.importSpecifier(e.identifier("_$delegateEvents"),e.identifier("delegateEvents")));let s=[];if(i.needsH&&s.push(e.importSpecifier(e.identifier("h"),e.identifier("h"))),i.needsFragment&&s.push(e.importSpecifier(e.identifier("Fragment"),e.identifier("Fragment"))),i.needsIsland&&s.push(e.importSpecifier(e.identifier("Island"),e.identifier("Island"))),r.length>0){let t=null;for(let o of n.node.body)if(e.isImportDeclaration(o)&&(o.source.value==="what-framework/render"||o.source.value==="what-core/render")){t=o;break}if(t){let o=new Set(t.specifiers.filter(a=>e.isImportSpecifier(a)).map(a=>a.imported.name));for(let a of r)o.has(a.imported.name)||t.specifiers.push(a)}else n.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(s.length>0&&Ie(n,e,s),i.needsDelegation&&i.delegatedEvents&&i.delegatedEvents.size>0){let t=e.arrayExpression([...i.delegatedEvents].map(a=>e.stringLiteral(a))),o=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]))]));n.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),o])}}},JSXElement(n,i){ue(n,i,D)},JSXFragment(n,i){ue(n,i,B)}}}}function Ie(e,h,w){let P=null;for(let $ of e.node.body)if(h.isImportDeclaration($)&&($.source.value==="what-core"||$.source.value==="what-framework")){P=$;break}if(P){let $=new Set(P.specifiers.filter(C=>h.isImportSpecifier(C)).map(C=>C.imported.name));for(let C of w)$.has(C.imported.name)||P.specifiers.push(C)}else{let $=h.importDeclaration(w,h.stringLiteral("what-framework"));e.unshiftContainer("body",$)}}import se from"path";import{transformSync as Xe}from"@babel/core";import W from"fs";import O from"path";var me=new Set([".jsx",".tsx",".js",".ts"]),Ne=new Set(["_layout","_error","_loading","_404"]);function Ee(e){let h=[],w=[],P=[];function $(M,k=""){if(!W.existsSync(M))return;let I=W.readdirSync(M,{withFileTypes:!0});for(let v of I){let b=O.join(M,v.name);if(v.isDirectory()){if(v.name.match(/^\((.+)\)$/)){$(b,k);continue}if(v.name==="api"&&k===""){C(b,"/api");continue}$(b,k+"/"+U(v.name));continue}let A=O.extname(v.name);if(!me.has(A))continue;let x=O.basename(v.name,A);if(x==="_layout"){w.push({filePath:b,urlPrefix:k||"/"});continue}if(Ne.has(x))continue;let _=U(x),S=x==="index"?k||"/":k+"/"+_;h.push({filePath:b,routePath:he(S),isDynamic:S.includes(":")||S.includes("*")})}}function C(M,k){if(!W.existsSync(M))return;let I=W.readdirSync(M,{withFileTypes:!0});for(let v of I){let b=O.join(M,v.name);if(v.isDirectory()){C(b,k+"/"+U(v.name));continue}let A=O.extname(v.name);if(!me.has(A))continue;let x=O.basename(v.name,A),_=U(x),S=x==="index"?k:k+"/"+_;P.push({filePath:b,routePath:he(S)})}}return $(e),h.sort((M,k)=>{let I=ge(M.routePath),v=ge(k.routePath);return I-v}),{pages:h,layouts:w,apiRoutes:P}}function U(e){let h=e.match(/^\[\.\.\.(\w+)\]$/);if(h)return"*"+h[1];let w=e.match(/^\[(\w+)\]$/);return w?":"+w[1]:e.toLowerCase()}function he(e){let h=e.replace(/\/+/g,"/");return h.length>1&&h.endsWith("/")&&(h=h.slice(0,-1)),h||"/"}function ge(e){return e.includes("*")?100:e.includes(":")?10:0}function xe(e){let h=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!h)return{mode:"client"};try{let w=h[1].replace(/'/g,'"').replace(/(\w+)\s*:/g,'"$1":').replace(/,\s*}/g,"}").replace(/\/\/[^\n]*/g,"");return{mode:"client",...JSON.parse(w)}}catch{return{mode:"client"}}}function Te(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 ie(e,h){let{pages:w,layouts:P,apiRoutes:$}=Ee(e),C=[],M=[],k=new Map;P.forEach((b,A)=>{let x=`_layout${A}`,_=ne(b.filePath,h);C.push(`import ${x} from '${_}';`),k.set(b.urlPrefix,x)}),w.forEach((b,A)=>{let x=`_page${A}`,_=ne(b.filePath,h);C.push(`import ${x} from '${_}';`);let S={mode:"client"},T={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let L=W.readFileSync(b.filePath,"utf-8");S=xe(L),T=Te(L)}catch{}let J=Oe(b.routePath,k),H={path:b.routePath,component:x,mode:S.mode||"client",layout:J||null,hasLoader:T.hasLoader};M.push(H)});let I=[];return $.forEach((b,A)=>{let x=`_api${A}`,_=ne(b.filePath,h);C.push(`import * as ${x} from '${_}';`),I.push({path:b.routePath,handlers:x})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",...C,"","export const routes = [",...M.map(b=>` { path: '${b.path}', component: ${b.component}, mode: '${b.mode}'${b.layout?`, layout: ${b.layout}`:""}${b.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...I.map(b=>` { path: '${b.path}', handlers: ${b.handlers} },`),"];","","export const pageModes = {",...M.map(b=>` '${b.path}': '${b.mode}',`),"};"].join(`
|
|
2
|
-
`)}function
|
|
1
|
+
var Oe=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Te=new Set(["once","capture","passive"]),je=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),De=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),K=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),he=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),Je=new Set(["what-framework/server","what-server","what-server/actions"]);function Re(e){let u=0xcbf29ce484222325n;for(let x=0;x<e.length;x++)u^=BigInt(e.charCodeAt(x)),u=BigInt.asUintN(64,u*0x100000001b3n);return u.toString(36)}function Xe(e,u){let x=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),k=String(u||"").replace(/\\/g,"/").replace(/\/+$/,"");return k&&x.startsWith(`${k}/`)?x.slice(k.length+1):x.replace(/^\.\//,"")}function W(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let u=e.split(/\r\n|\n|\r/),x=-1;for(let _=0;_<u.length;_++)/[^ \t]/.test(u[_])&&(x=_);if(x===-1)return"";let k="";for(let _=0;_<u.length;_++){let C=u[_].replace(/\t/g," "),F=_===0,A=_===u.length-1;F||(C=C.replace(/^ +/,"")),A||(C=C.replace(/ +$/,"")),C&&(_!==x&&(C+=" "),k+=C)}return k}function Y({types:e}){let u=new Set,x=new Set;function k(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(s=>Oe.has(s));return{eventName:o,modifiers:t}}function C(i){return i.startsWith("bind:")}function F(i){return i.slice(5)}function A(i){return/^[A-Z]/.test(i)}function N(i){return je.has(String(i).toLowerCase())}function w(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function v(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 L(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 M(i,n){return n.has(i)}function T(i){let n=new Set;function r(t){let s=t.init;if(!s||!e.isCallExpression(s))return;let a=s.callee,p="";if(e.isIdentifier(a)?p=a.name:e.isMemberExpression(a)&&e.isIdentifier(a.property)&&(p=a.property.name),he.has(p)){let c=t.id;if(e.isIdentifier(c))n.add(c.name);else if(e.isArrayPattern(c))for(let f of c.elements)e.isIdentifier(f)&&n.add(f.name);else if(e.isObjectPattern(c))for(let f of c.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&n.add(f.value.name)}}let o=i.scope;for(;o;){for(let s of Object.values(o.bindings))s.path.isVariableDeclarator()&&r(s.path.node);let t=o.path&&o.path.node;if(t&&t.params){for(let s of t.params)if(e.isObjectPattern(s))for(let a of s.properties)e.isObjectProperty(a)&&e.isIdentifier(a.value)?n.add(a.value.name):e.isRestElement(a)&&e.isIdentifier(a.argument)&&n.add(a.argument.name)}o=o.parent}return n}function R(i){return T(i)}function y(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?K.has(n.object.name):e.isIdentifier(n)?K.has(n.name):!1}function $(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&M(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!K.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&M(i.callee.object.name,n)||y(i))return!1;if(i.arguments.some(o=>S(o,n,r)))return!0}return!1}function S(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&M(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!K.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&M(i.callee.object.name,n)?!0:y(i)?i.arguments.some(o=>S(o,n,r)):e.isIdentifier(i.callee)?i.arguments.some(o=>S(o,n,r)):S(i.callee,n,r)||i.arguments.some(o=>S(o,n,r)):e.isIdentifier(i)?M(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?S(i.object,n,r):e.isConditionalExpression(i)?S(i.test,n,r)||S(i.consequent,n,r)||S(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?S(i.left,n,r)||S(i.right,n,r):e.isUnaryExpression(i)?S(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>S(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&S(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&S(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function H(i,n){let r=i,o=!1;if(e.isArrowFunctionExpression(i)&&i.params.length===0&&(r=i.body,o=!0),e.isConditionalExpression(r)){let s=D(r.consequent,n),a=D(r.alternate,n);if(s||a){let p=e.conditionalExpression(r.test,s||r.consequent,a||r.alternate);return o?e.arrowFunctionExpression([],p):p}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let s=D(r.right,n);if(s){let a=e.logicalExpression(r.operator,r.left,s);return o?e.arrowFunctionExpression([],a):a}return null}return D(r,n)}function D(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(m=>e.isReturnStatement(m));l&&(o=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(m=>e.isReturnStatement(m));l&&(o=l.argument)}if(!o||!e.isJSXElement(o))return null;let t=o.openingElement.attributes,s=null;for(let l of t)if(e.isJSXAttribute(l)&&I(l)==="key"){s=l;break}if(!s)return null;let a=w(s.value);if(!a)return null;o.openingElement.attributes=t.filter(l=>l!==s);let p=i.callee.object,c=e.arrowFunctionExpression([],p),f=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([f],e.cloneNode(a,!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 z(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement,r=n.name.name;if(A(r))return!1;for(let o of n.attributes){if(e.isJSXSpreadAttribute(o))return!1;let t=o.value;if(e.isJSXExpressionContainer(t))return!1}return i.children.every(z)}return!1}function P(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function V(i){if(e.isJSXText(i)){let s=W(i.value);return s?ne(s):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(A(r))return"";let o=`<${r}`;for(let s of n.attributes){if(e.isJSXSpreadAttribute(s))continue;let a=I(s);if(a==="key"||a.startsWith("on")||a.startsWith("bind:")||a.includes("|"))continue;let p=a;if(a==="className"&&(p="class"),a==="htmlFor"&&(p="for"),!s.value)o+=` ${p}`;else if(e.isStringLiteral(s.value))o+=` ${p}="${we(s.value.value)}"`;else if(e.isJSXExpressionContainer(s.value))continue}let t=i.openingElement.selfClosing;if(t&&N(r))return o+=">",o;if(t)return o+=`></${r}>`,o;o+=">";for(let s of i.children)if(e.isJSXText(s)){let a=W(s.value);a&&(o+=ne(a))}else e.isJSXExpressionContainer(s)?e.isJSXEmptyExpression(s.expression)||(o+="<!--$-->"):e.isJSXElement(s)&&(A(s.openingElement.name.name)?o+="<!--$-->":o+=V(s));return o+=`</${r}>`,o}function ne(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function we(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(t==="For")return Ce(i,n);if(t==="Show")return ke(i,n);if(A(t))return $e(i,n);let s=o.attributes,a=r.children,p=a.every(z),c=s.every(g=>!P(g)),f=s.every(g=>{if(e.isJSXSpreadAttribute(g))return!1;let E=I(g);return!E?.startsWith("on")&&!E?.startsWith("bind:")});if(p&&c&&f){let g=V(r);if(g){let E=ue(n,g);return n.needsTemplate=!0,e.callExpression(e.identifier(E),[])}}let d=V(r);if(!d){let g=r.loc,E=n.filename||n.file?.opts?.filename||"<unknown>",b=g?`:${g.start.line}:${g.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${E}${b}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,ie(i,n)}let l=ue(n,d);n.needsTemplate=!0;let m=n.nextVarId(),h=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier(l),[]))])];return fe(h,m,s,n,t),pe(h,m,a,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...h),e.identifier(m)}function ie(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name,s=o.attributes,a=r.children,p=[];for(let d of s){if(e.isJSXSpreadAttribute(d))continue;let l=I(d),m=w(d.value),h=v(l);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),m))}let c=[];for(let d of a)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(B({node:d},n)):e.isJSXFragment(d)&&c.push(Z({node:d},n));let f=p.length>0?e.objectExpression(p):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),f,...c])}let _e=new Set(["input","textarea","select","option"]);function fe(i,n,r,o,t){function s(c,f){return c==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),f])):c==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),f])):c==="value"&&t&&_e.has(t)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),f])):c==="checked"&&t==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),f])):c.startsWith("data-")||c.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),f])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),f]))}let a=!1;function p(){a||(a=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){o.needsSpread=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(n),c.argument])));continue}let f=I(c);if(f!=="key"){if(f==="ref"){let d=w(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(f.startsWith("on")&&!f.includes("|")&&!k(f,o)){let d=f.slice(2).toLowerCase(),l=w(c.value);De.has(d)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(d),p(),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(f.startsWith("on")&&(f.includes("|")||k(f,o))){let{eventName:d,modifiers:l}=_(f),m=w(c.value),h=L(m,l),g=d.slice(2).toLowerCase(),E=l.filter(O=>Te.has(O)),b=[e.stringLiteral(g),h];if(E.length>0){let O=E.map(j=>e.objectProperty(e.identifier(j),e.booleanLiteral(!0)));b.push(e.objectExpression(O))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),b)));continue}if(C(f)){let d=F(f),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=v(f);if(S(d,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let m=e.isIdentifier(d)&&(M(d.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(d.name))?e.callExpression(d,[]):d,h=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],s(l,m))]);$(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(s(l,d)))}}}}function re(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(re);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"&&re(r))return!0}return!1}function X(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(!S(o,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(re))return i;let a=r.nextMemoId();r.needsMemo=!0;let p=t?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))]));let c=e.callExpression(e.identifier(a),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function pe(i,n,r,o,t){let s=[],a=0;for(let l of r){if(e.isJSXText(l)){W(l.value)&&a++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;s.push({type:"expression",child:l,childIndex:a}),a++;continue}if(e.isJSXElement(l)){let m=l.openingElement.name.name;if(A(m)||m==="For"||m==="Show")s.push({type:"component",child:l,childIndex:a}),a++;else{let h=l.openingElement.attributes.some(P)||l.openingElement.attributes.some(g=>!e.isJSXSpreadAttribute(g)&&I(g)?.startsWith("on"))||!l.children.every(z);s.push({type:"static",child:l,childIndex:a,hasAnythingDynamic:h}),a++}continue}e.isJSXFragment(l)&&s.push({type:"fragment",child:l})}let p=s.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=p.length>=2,f=new Map;if(c){let l=null,m=0;for(let h of p){let g=h.childIndex,E=t.nextVarId();f.set(g,E);let b;if(l===null)b=oe(n,g);else{b=e.identifier(l);for(let O=m;O<g;O++)b=e.memberExpression(b,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),b)])),l=E,m=g}}function d(l){return f.has(l)?e.identifier(f.get(l)):oe(n,l)}for(let l of s){if(l.type==="expression"){let m=l.child.expression,h=d(l.childIndex);t.needsInsert=!0;let g=H(m,t);if(g){t.needsMapArray=!0;let b=e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="_$mapArray"||g.callee.name==="mapArray"),O=e.isArrowFunctionExpression(g);O&&e.isExpression(g.body)?g.body=X(g.body,i,t):!b&&!O&&(g=X(g,i,t));let j=b||O?g:e.arrowFunctionExpression([],g);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),j,h])));continue}if(e.isCallExpression(m)&&e.isIdentifier(m.callee)&&(m.callee.name==="mapArray"||m.callee.name==="_$mapArray")){t.needsMapArray=!0,m.callee.name==="mapArray"&&(m.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),m,h])));continue}if(S(m,t.signalNames,t.importedIdentifiers)){m=X(m,i,t);let b=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],m),h]);$(m,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),m,h])));continue}if(l.type==="component"){let m=B({node:l.child},t),h=d(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),m,h])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let m;f.has(l.childIndex)?m=f.get(l.childIndex):(m=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),oe(n,l.childIndex))]))),fe(i,m,l.child.openingElement.attributes,t,l.child.openingElement.name.name),pe(i,m,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let m of l.child.children)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){t.needsInsert=!0;let h=m.expression;S(h,t.signalNames,t.importedIdentifiers)?(h=X(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 oe(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 $e(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name,s=o.attributes,a=r.children,p=null,c=[];for(let E of s){if(e.isJSXAttribute(E)){let b;if(e.isJSXNamespacedName(E.name)?b=`${E.name.namespace.name}:${E.name.name.name}`:b=E.name.name,b&&typeof b=="string"&&b.startsWith("client:")){let O=b.slice(7);E.value?p={type:O,value:E.value.value}:p={type:O};continue}}c.push(E)}if(p){n.needsCreateComponent=!0,n.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),e.identifier(t)),e.objectProperty(e.identifier("mode"),e.stringLiteral(p.type))];p.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(p.value)));for(let b of c){if(e.isJSXSpreadAttribute(b))continue;let O=I(b),j=w(b.value);E.push(e.objectProperty(e.identifier(O),j))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(E),e.arrayExpression([])])}n.needsCreateComponent=!0;let f=[],d=!1,l=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){d=!0,l=E.argument;continue}let b=I(E);if(b==="key")continue;if(C(b)){let j=F(b),U=E.value.expression;j==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(U),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(U),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(U),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(U),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(b.startsWith("on")&&(b.includes("|")||k(b,n))){let{eventName:j,modifiers:U}=_(b),Pe=w(E.value),Ne=L(Pe,U);f.push(e.objectProperty(e.identifier(j),Ne));continue}let O=w(E.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(b)?e.identifier(b):e.stringLiteral(b),O))}let m=[];for(let E of a)if(e.isJSXText(E)){let b=W(E.value);b&&m.push(e.stringLiteral(b))}else e.isJSXExpressionContainer(E)?e.isJSXEmptyExpression(E.expression)||m.push(E.expression):e.isJSXElement(E)?m.push(B({node:E},n)):e.isJSXFragment(E)&&m.push(Z({node:E},n));let h;d?f.length>0?h=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(f)]):h=l:f.length>0?h=e.objectExpression(f):h=e.nullLiteral();let g=m.length>0?e.arrayExpression(m):e.arrayExpression([]);return e.callExpression(e.identifier("_$createComponent"),[e.identifier(t),h,g])}function Ce(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,s=null,a=null;for(let f of o)if(e.isJSXAttribute(f)){let d=I(f);d==="each"?s=w(f.value):d==="key"&&(a=w(f.value))}if(!s)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,ie(i,n);let p=null;for(let f of t)if(e.isJSXExpressionContainer(f)&&!e.isJSXEmptyExpression(f.expression)){p=f.expression;break}if(!p)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,ie(i,n);n.needsMapArray=!0;let c=[s,p];return a&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),a)])),e.callExpression(e.identifier("_$mapArray"),c)}function ke(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,s=null,a=null;for(let h of o)if(e.isJSXAttribute(h)){let g=I(h);g==="when"?s=w(h.value):g==="fallback"&&(a=w(h.value))}if(!s)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let p=null;for(let h of t)if(e.isJSXExpressionContainer(h)&&!e.isJSXEmptyExpression(h.expression)){p=h.expression;break}if(!p){let h=[];for(let g of t)if(e.isJSXText(g)){let E=W(g.value);E&&h.push(e.stringLiteral(E))}else e.isJSXElement(g)&&h.push(B({node:g},n));h.length===1?p=h[0]:h.length>1?p=e.arrayExpression(h):p=e.nullLiteral()}let c;e.isCallExpression(s)?c=s:e.isArrowFunctionExpression(s)&&e.isExpression(s.body)?c=s.body:e.isIdentifier(s)&&(n.signalNames&&M(s.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(s.name))?c=e.callExpression(s,[]):c=s;let f=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(p),l=d?e.callExpression(p,[e.cloneNode(f)]):p,m=a||e.nullLiteral();if(S(c,n.signalNames,n.importedIdentifiers)){let h=n.nextMemoId();n.needsMemo=!0;let g=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([],g)]))])),c=e.callExpression(e.identifier(h),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(f,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(f),l,m))]))}function Ae(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=H(i,n);if(o){n.needsMapArray=!0;let s=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=X(o.body,r,n),o;if(s)return o;let p=X(o,r,n);return e.arrowFunctionExpression([],p)}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):S(i,n.signalNames,n.importedIdentifiers)?(i=X(i,r,n),e.arrowFunctionExpression([],i)):i}function Z(i,n){let{node:r}=i,o=r.children,t=[];for(let s of o)if(e.isJSXText(s)){let a=W(s.value);a&&t.push(e.stringLiteral(a))}else e.isJSXExpressionContainer(s)?e.isJSXEmptyExpression(s.expression)||t.push(Ae(s.expression,n)):e.isJSXElement(s)?t.push(B({node:s},n)):e.isJSXFragment(s)&&t.push(Z({node:s},n));return t.length===1?t[0]:e.arrayExpression(t)}function ue(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 de(i,n,r){let o=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let s=t.get(o);s||(s=T(i),t.set(o,s)),n.signalNames=s,n._pendingSetup=[];let a=r(i,n),p=n._pendingSetup;if(n._pendingSetup=[],p.length>0){let c=i,f=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(f=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!f?(c.insertBefore(p),i.replaceWith(a)):(p.push(e.returnStatement(a)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(p)),[])))}else i.replaceWith(a)}function Ie(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 Le(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 Fe(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 me(i,n,r,o,t){let s=i.node.loc?.start||{line:0,column:0},a=`${t}:${s.line}:${s.column+1}`,p=`${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 ${a}.`);let f={id:r,key:p,bindingName:o,filename:t,source:a,loc:s};if(n.serverActionIds.set(r,f),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(f)}catch(d){throw i.buildCodeFrameError(d instanceof Error?d.message:String(d))}}function Me(i,n){if(!Le(i,n))return;let r=Ie(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=Fe(o);if(t.property){t.value!==null&&me(i,n,t.value,r,n.serverActionFilename);return}let s=`wa1_${Re(`${n.serverActionFilename}#${r}`)}`;me(i,n,s,r,n.serverActionFilename);let a=e.objectProperty(e.identifier("id"),e.stringLiteral(s));o?e.isObjectExpression(o)?o.properties.unshift(a):i.node.arguments[1]=e.objectExpression([a,e.spreadElement(o)]):i.node.arguments.push(e.objectExpression([a]))}return{name:"what-jsx-transform",visitor:{Program:{enter(i,n){n.needsTemplate=!1,n.needsInsert=!1,n.needsEffect=!1,n.needsMapArray=!1,n.needsSpread=!1,n.needsSetProp=!1,n.needsMemo=!1,n.needsSetClass=!1,n.needsSetStyle=!1,n.needsSetAttr=!1,n.needsSetValue=!1,n.needsSetChecked=!1,n.needsH=!1,n.needsCreateComponent=!1,n.needsFragment=!1,n.needsIsland=!1,n.needsDelegation=!1,n.delegatedEvents=new Set,n.templates=[],n.templateMap=new Map,n.templateCount=0,n._varCounter=0,n._memoCounter=0,n._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=Xe(n.file?.opts?.filename,n.opts?.projectRoot||n.file?.opts?.cwd),n.signalNames=new Set,n.importedIdentifiers=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/")||o.startsWith("./")||o.startsWith("../");for(let s of r.specifiers){let a=null;(e.isImportSpecifier(s)&&e.isIdentifier(s.local)||e.isImportDefaultSpecifier(s)&&e.isIdentifier(s.local)||e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local))&&(a=s.local.name),a&&(t||/^(use|create)[A-Z]/.test(a))&&n.importedIdentifiers.add(a),Je.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({CallExpression(r){Me(r,n)},VariableDeclarator(r){let o=r.node.init;if(!o||!e.isCallExpression(o))return;let t=o.callee,s="";if(e.isIdentifier(t)?s=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(s=t.property.name),he.has(s)){let a=r.node.id;if(e.isIdentifier(a))n.signalNames.add(a.name);else if(e.isArrayPattern(a))for(let p of a.elements)e.isIdentifier(p)&&n.signalNames.add(p.name);else if(e.isObjectPattern(a))for(let p of a.properties)e.isObjectProperty(p)&&e.isIdentifier(p.value)&&n.signalNames.add(p.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let s=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(s,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.id),s)]))}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 s of i.node.body)if(e.isImportDeclaration(s)&&(s.source.value==="what-framework/render"||s.source.value==="what-core/render")){t=s;break}if(t){let s=new Set(t.specifiers.filter(a=>e.isImportSpecifier(a)).map(a=>a.imported.name));for(let a of r)s.has(a.imported.name)||t.specifiers.push(a)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(o.length>0&&We(i,e,o),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let t=e.arrayExpression([...n.delegatedEvents].map(a=>e.stringLiteral(a))),s=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))]),s])}}},JSXElement(i,n){de(i,n,B)},JSXFragment(i,n){de(i,n,Z)}}}}function We(e,u,x){let k=null;for(let _ of e.node.body)if(u.isImportDeclaration(_)&&(_.source.value==="what-core"||_.source.value==="what-framework")){k=_;break}if(k){let _=new Set(k.specifiers.filter(C=>u.isImportSpecifier(C)).map(C=>C.imported.name));for(let C of x)_.has(C.imported.name)||k.specifiers.push(C)}else{let _=u.importDeclaration(x,u.stringLiteral("what-framework"));e.unshiftContainer("body",_)}}import q from"path";import{transformSync as ze}from"@babel/core";import G from"fs";import J from"path";var ge=new Set([".jsx",".tsx",".js",".ts"]),He=new Set(["_layout","_error","_loading","_404"]);function ye(e){let u=[],x=[],k=[];function _(F,A=""){if(!G.existsSync(F))return;let N=G.readdirSync(F,{withFileTypes:!0});for(let w of N){let v=J.join(F,w.name);if(w.isDirectory()){if(w.name.match(/^\((.+)\)$/)){_(v,A);continue}if(w.name==="api"&&A===""){C(v,"/api");continue}_(v,A+"/"+Q(w.name));continue}let I=J.extname(w.name);if(!ge.has(I))continue;let L=J.basename(w.name,I);if(L==="_layout"){x.push({filePath:v,urlPrefix:A||"/"});continue}if(He.has(L))continue;let M=Q(L),T=L==="index"?A||"/":A+"/"+M;u.push({filePath:v,routePath:Ee(T),isDynamic:T.includes(":")||T.includes("*")})}}function C(F,A){if(!G.existsSync(F))return;let N=G.readdirSync(F,{withFileTypes:!0});for(let w of N){let v=J.join(F,w.name);if(w.isDirectory()){C(v,A+"/"+Q(w.name));continue}let I=J.extname(w.name);if(!ge.has(I))continue;let L=J.basename(w.name,I),M=Q(L),T=L==="index"?A:A+"/"+M;k.push({filePath:v,routePath:Ee(T)})}}return _(e),u.sort((F,A)=>{let N=xe(F.routePath),w=xe(A.routePath);return N-w}),{pages:u,layouts:x,apiRoutes:k}}function Q(e){let u=e.match(/^\[\.\.\.(\w+)\]$/);if(u)return"*"+u[1];let x=e.match(/^\[(\w+)\]$/);return x?":"+x[1]:e.toLowerCase()}function Ee(e){let u=e.replace(/\/+/g,"/");return u.length>1&&u.endsWith("/")&&(u=u.slice(0,-1)),u||"/"}function xe(e){return e.includes("*")?100:e.includes(":")?10:0}function be(e){let u=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!u)return{mode:"client"};try{let x=u[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 Ve(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 te(e,u){let{pages:x,layouts:k,apiRoutes:_}=ye(e),C=[],F=[],A=new Map;k.forEach((v,I)=>{let L=`_layout${I}`,M=se(v.filePath,u);C.push(`import ${L} from '${M}';`),A.set(v.urlPrefix,L)}),x.forEach((v,I)=>{let L=`_page${I}`,M=se(v.filePath,u);C.push(`import ${L} from '${M}';`);let T={mode:"client"},R={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let S=G.readFileSync(v.filePath,"utf-8");T=be(S),R=Ve(S)}catch{}let y=Be(v.routePath,A),$={path:v.routePath,component:L,mode:T.mode||"client",layout:y||null,hasLoader:R.hasLoader};F.push($)});let N=[];return _.forEach((v,I)=>{let L=`_api${I}`,M=se(v.filePath,u);C.push(`import * as ${L} from '${M}';`),N.push({path:v.routePath,handlers:L})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",...C,"","export const routes = [",...F.map(v=>` { path: '${v.path}', component: ${v.component}, mode: '${v.mode}'${v.layout?`, layout: ${v.layout}`:""}${v.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...N.map(v=>` { path: '${v.path}', handlers: ${v.handlers} },`),"];","","export const pageModes = {",...F.map(v=>` '${v.path}': '${v.mode}',`),"};"].join(`
|
|
2
|
+
`)}function se(e,u){return"/"+J.relative(u,e).split(J.sep).join("/")}function Be(e,u){let x=e.split("/").filter(Boolean);for(;x.length>0;){let k="/"+x.join("/");if(u.has(k))return u.get(k);x.pop()}return u.has("/")?u.get("/"):null}var Ue=`
|
|
3
3
|
:host {
|
|
4
4
|
position: fixed;
|
|
5
5
|
inset: 0;
|
|
@@ -185,12 +185,12 @@ var Le=new Set(["preventDefault","stopPropagation","once","capture","passive","s
|
|
|
185
185
|
white-space: pre-wrap;
|
|
186
186
|
line-height: 1.5;
|
|
187
187
|
}
|
|
188
|
-
`,
|
|
188
|
+
`,ln=`
|
|
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>${Ue}</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 Se(e){let u=e.ws.send.bind(e.ws);e.ws.send=function(x){return x?.type==="error"&&x.err?.plugin==="vite-plugin-what"&&(x.err._isCompilerError=!0),u(x)}}var ve="virtual:what-routes",ee="\0"+ve,Ge=/(?:from\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"]|import\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"])/,qe=/\.[cm]?[jt]sx?$/;function le(e,u){return e?Array.isArray(e)?e.some(x=>le(x,u)):e instanceof RegExp?(e.lastIndex=0,e.test(u)):typeof e=="function"?e(u):!1:!1}function Ze({rolldownVersion:e,viteVersion:u}={}){let x=parseInt(String(u??""),10);return!!e||Number.isFinite(x)&&x>=8?{oxc:{jsx:"preserve"}}:{esbuild:{jsx:"preserve"}}}var ae=null;function Ke(){return ae||(ae=import("vite").then(e=>e.version||"").catch(()=>"")),ae}var Ye=/export\s+(?:default\s+)?function\s+([A-Z]\w*)/,Qe=/(?:store|signal|state|context|util|helper|lib|config)\b/i;function ce(e={}){let{include:u=/\.[jt]sx$/,exclude:x=/node_modules/,sourceMaps:k=!0,production:_=!0,pages:C="src/pages",hot:F=!_,prodBundles:A=!0}=e,N="",w="",v=null,I=!1,L=new Map;function M(y){let $=L.get(y.id);if($&&$.key!==y.key)throw new Error(`Duplicate server action ID "${y.id}". First declared by "${$.bindingName}" at ${$.source}; conflicts with "${y.bindingName}" at ${y.source}.`);L.set(y.id,y)}function T(y){for(let[$,S]of L)S.filename===y&&L.delete($)}function R(y){let $=y.replace(/[?#].*$/,"");return N?q.relative(N,$).split(q.sep).join("/"):$}return{name:"vite-plugin-what",configResolved(y){N=y.root,w=q.resolve(N,C),I=y.command==="serve"},configureServer(y){v=y,Se(y),y.watcher.on("add",$=>{if($.startsWith(w)){let S=y.moduleGraph.getModuleById(ee);S&&(y.moduleGraph.invalidateModule(S),y.ws.send({type:"full-reload"}))}}),y.watcher.on("unlink",$=>{if(T(R($)),$.startsWith(w)){let S=y.moduleGraph.getModuleById(ee);S&&(y.moduleGraph.invalidateModule(S),y.ws.send({type:"full-reload"}))}})},resolveId(y){if(y===ve)return ee},load(y){if(y===ee)return te(w,N)},transform(y,$){let S=$.replace(/[?#].*$/,""),H=le(u,S),D=qe.test(S),z=D&&Ge.test(y);if(x&&le(x,S)||(D&&T(R(S)),!H&&!z))return null;try{let P=ze(y,{filename:$,sourceMaps:k,configFile:!1,babelrc:!1,plugins:[[Y,{production:_,projectRoot:N||process.cwd(),onActionId:M}]],parserOpts:{plugins:["jsx","typescript"]}});if(!P||!P.code)return null;let V=P.code;return F&&I&&!_&&en(y,$)&&(V+=rn($)),{code:V,map:P.map}}catch(P){throw P.plugin="vite-plugin-what",P.id||(P.id=$),P.loc===void 0&&P._loc&&(P.loc={file:$,line:P._loc.line,column:P._loc.column}),console.error(`[what] Error transforming ${$}:`,P.message),P}},handleHotUpdate({file:y,server:$,modules:S}){if(F&&u.test(y)&&!(x&&x.test(y))&&nn(y))return $.ws.send({type:"full-reload"}),[]},async config(y,{mode:$,command:S}){let H=S==="build"&&$==="production"&&A,D=Ze({rolldownVersion:this?.meta?.rolldownVersion,viteVersion:await Ke()});return{...H?{resolve:{conditions:["production"]}}:{},...D,optimizeDeps:{exclude:["what-framework","what-core","what-compiler","what-router"]}}}}}function en(e,u){return!!(Ye.test(e)||u.includes("/pages/")||u.includes("\\pages\\"))}function nn(e){let u=q.basename(e,q.extname(e));return Qe.test(u)}function rn(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 yn,Fragment as bn,mount as Sn,Island as vn}from"what-core";export{bn as Fragment,vn as Island,Y as babelPlugin,be as extractPageConfig,te as generateRoutesModule,yn as h,Sn as mount,ye as scanPages,ce as vitePlugin,ce as what};
|
package/dist/vite-plugin.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import re from"path";import{transformSync as Je}from"@babel/core";var Ce=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),ke=new Set(["once","capture","passive"]),Ae=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Le=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),z=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),pe=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]);function j(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let h=e.split(/\r\n|\n|\r/),w=-1;for(let $=0;$<h.length;$++)/[^ \t]/.test(h[$])&&(w=$);if(w===-1)return"";let M="";for(let $=0;$<h.length;$++){let C=h[$].replace(/\t/g," "),F=$===0,k=$===h.length-1;F||(C=C.replace(/^ +/,"")),k||(C=C.replace(/ +$/,"")),C&&($!==w&&(C+=" "),M+=C)}return M}function ee({types:e}){let h=new Set,w=new Set;function M(n,i){return!(!n.includes("__")||!n.startsWith("on")||n.split("__").slice(1).filter(t=>t!=="").length===0)}function $(n){let i=n.includes("|")?"|":"__",r=n.split(i),s=r[0],t=r.slice(1).filter(o=>Ce.has(o));return{eventName:s,modifiers:t}}function C(n){return n.startsWith("bind:")}function F(n){return n.slice(5)}function k(n){return/^[A-Z]/.test(n)}function I(n){return Ae.has(String(n).toLowerCase())}function v(n){return n?e.isJSXExpressionContainer(n)?n.expression:e.isStringLiteral(n)?n:e.stringLiteral(n.value||""):e.booleanLiteral(!0)}function b(n){return n==="className"?"class":n==="htmlFor"?"for":n}function A(n){return e.isJSXNamespacedName(n.name)?`${n.name.namespace.name}:${n.name.name.name}`:typeof n.name.name=="string"?n.name.name:String(n.name.name)}function x(n,i){if(i.length===0)return n;let r=n;for(let s of i)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 _(n,i){return i.has(n)}function S(n){let i=new Set;function r(t){let o=t.init;if(!o||!e.isCallExpression(o))return;let a=o.callee,p="";if(e.isIdentifier(a)?p=a.name:e.isMemberExpression(a)&&e.isIdentifier(a.property)&&(p=a.property.name),pe.has(p)){let c=t.id;if(e.isIdentifier(c))i.add(c.name);else if(e.isArrayPattern(c))for(let f of c.elements)e.isIdentifier(f)&&i.add(f.name);else if(e.isObjectPattern(c))for(let f of c.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&i.add(f.value.name)}}let s=n.scope;for(;s;){for(let o of Object.values(s.bindings))o.path.isVariableDeclarator()&&r(o.path.node);let t=s.path&&s.path.node;if(t&&t.params){for(let o of t.params)if(e.isObjectPattern(o))for(let a of o.properties)e.isObjectProperty(a)&&e.isIdentifier(a.value)?i.add(a.value.name):e.isRestElement(a)&&e.isIdentifier(a.argument)&&i.add(a.argument.name)}s=s.parent}return i}function T(n){return S(n)}function J(n){if(!e.isCallExpression(n))return!1;let i=n.callee;return e.isMemberExpression(i)&&e.isIdentifier(i.object)?z.has(i.object.name):e.isIdentifier(i)?z.has(i.name):!1}function H(n,i,r){if(!i)return!1;if(e.isCallExpression(n)){if(e.isIdentifier(n.callee)&&_(n.callee.name,i)||r&&e.isIdentifier(n.callee)&&r.has(n.callee.name)&&!z.has(n.callee.name)||e.isMemberExpression(n.callee)&&e.isIdentifier(n.callee.object)&&_(n.callee.object.name,i)||J(n))return!1;if(n.arguments.some(s=>L(s,i,r)))return!0}return!1}function L(n,i,r){return i||(i=new Set),e.isCallExpression(n)?e.isIdentifier(n.callee)&&_(n.callee.name,i)||r&&e.isIdentifier(n.callee)&&r.has(n.callee.name)&&!z.has(n.callee.name)||e.isMemberExpression(n.callee)&&e.isIdentifier(n.callee.object)&&_(n.callee.object.name,i)?!0:J(n)?n.arguments.some(s=>L(s,i,r)):e.isIdentifier(n.callee)?n.arguments.some(s=>L(s,i,r)):L(n.callee,i,r)||n.arguments.some(s=>L(s,i,r)):e.isIdentifier(n)?_(n.name,i)||r&&r.has(n.name):e.isMemberExpression(n)?L(n.object,i,r):e.isConditionalExpression(n)?L(n.test,i,r)||L(n.consequent,i,r)||L(n.alternate,i,r):e.isBinaryExpression(n)||e.isLogicalExpression(n)?L(n.left,i,r)||L(n.right,i,r):e.isUnaryExpression(n)?L(n.argument,i,r):e.isTemplateLiteral(n)?n.expressions.some(s=>L(s,i,r)):e.isObjectExpression(n)?n.properties.some(s=>e.isObjectProperty(s)&&L(s.value,i,r)):e.isArrayExpression(n)?n.elements.some(s=>s&&L(s,i,r)):(e.isArrowFunctionExpression(n)||e.isFunctionExpression(n),!1)}function se(n,i){let r=n,s=!1;if(e.isArrowFunctionExpression(n)&&n.params.length===0&&(r=n.body,s=!0),e.isConditionalExpression(r)){let o=V(r.consequent,i),a=V(r.alternate,i);if(o||a){let p=e.conditionalExpression(r.test,o||r.consequent,a||r.alternate);return s?e.arrowFunctionExpression([],p):p}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let o=V(r.right,i);if(o){let a=e.logicalExpression(r.operator,r.left,o);return s?e.arrowFunctionExpression([],a):a}return null}return V(r,i)}function V(n,i){if(!e.isCallExpression(n)||!e.isMemberExpression(n.callee)||!e.isIdentifier(n.callee.property,{name:"map"})||n.arguments.length<1)return null;let r=n.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(u=>e.isReturnStatement(u));l&&(s=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(u=>e.isReturnStatement(u));l&&(s=l.argument)}if(!s||!e.isJSXElement(s))return null;let t=s.openingElement.attributes,o=null;for(let l of t)if(e.isJSXAttribute(l)&&A(l)==="key"){o=l;break}if(!o)return null;let a=v(o.value);if(!a)return null;s.openingElement.attributes=t.filter(l=>l!==o);let p=n.callee.object,c=e.arrowFunctionExpression([],p),f=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([f],e.cloneNode(a,!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 q(n){if(e.isJSXText(n))return!0;if(e.isJSXExpressionContainer(n))return!1;if(e.isJSXElement(n)){let i=n.openingElement,r=i.name.name;if(k(r))return!1;for(let s of i.attributes){if(e.isJSXSpreadAttribute(s))return!1;let t=s.value;if(e.isJSXExpressionContainer(t))return!1}return n.children.every(q)}return!1}function oe(n){return e.isJSXSpreadAttribute(n)?!0:n.value?e.isJSXExpressionContainer(n.value):!1}function Z(n){if(e.isJSXText(n)){let o=j(n.value);return o?te(o):""}if(e.isJSXExpressionContainer(n))return e.isJSXEmptyExpression(n.expression)?"":"<!--$-->";if(!e.isJSXElement(n))return"";let i=n.openingElement,r=i.name.name;if(k(r))return"";let s=`<${r}`;for(let o of i.attributes){if(e.isJSXSpreadAttribute(o))continue;let a=A(o);if(a==="key"||a.startsWith("on")||a.startsWith("bind:")||a.includes("|"))continue;let p=a;if(a==="className"&&(p="class"),a==="htmlFor"&&(p="for"),!o.value)s+=` ${p}`;else if(e.isStringLiteral(o.value))s+=` ${p}="${xe(o.value.value)}"`;else if(e.isJSXExpressionContainer(o.value))continue}let t=n.openingElement.selfClosing;if(t&&I(r))return s+=">",s;if(t)return s+=`></${r}>`,s;s+=">";for(let o of n.children)if(e.isJSXText(o)){let a=j(o.value);a&&(s+=te(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||(s+="<!--$-->"):e.isJSXElement(o)&&(k(o.openingElement.name.name)?s+="<!--$-->":s+=Z(o));return s+=`</${r}>`,s}function te(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function xe(n){return n.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function D(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name;if(t==="For")return Se(n,i);if(t==="Show")return we(n,i);if(k(t))return be(n,i);let o=s.attributes,a=r.children,p=a.every(q),c=o.every(g=>!oe(g)),f=o.every(g=>{if(e.isJSXSpreadAttribute(g))return!1;let E=A(g);return!E?.startsWith("on")&&!E?.startsWith("bind:")});if(p&&c&&f){let g=Z(r);if(g){let E=ce(i,g);return i.needsTemplate=!0,e.callExpression(e.identifier(E),[])}}let d=Z(r);if(!d){let g=r.loc,E=i.filename||i.file?.opts?.filename||"<unknown>",y=g?`:${g.start.line}:${g.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${E}${y}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),i.needsH=!0,K(n,i)}let l=ce(i,d);i.needsTemplate=!0;let u=i.nextVarId(),m=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(u),e.callExpression(e.identifier(l),[]))])];return ae(m,u,o,i,t),le(m,u,a,r,i),i._pendingSetup||(i._pendingSetup=[]),i._pendingSetup.push(...m),e.identifier(u)}function K(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=[];for(let d of o){if(e.isJSXSpreadAttribute(d))continue;let l=A(d),u=v(d.value),m=b(l);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(m)?e.identifier(m):e.stringLiteral(m),u))}let c=[];for(let d of a)if(e.isJSXText(d)){let l=j(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(D({node:d},i)):e.isJSXFragment(d)&&c.push(B({node:d},i));let f=p.length>0?e.objectExpression(p):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),f,...c])}let ye=new Set(["input","textarea","select","option"]);function ae(n,i,r,s,t){function o(c,f){return c==="class"?(s.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(i),f])):c==="style"?(s.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(i),f])):c==="value"&&t&&ye.has(t)?(s.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(i),f])):c==="checked"&&t==="input"?(s.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(i),f])):c.startsWith("data-")||c.startsWith("aria-")?(s.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(i),e.stringLiteral(c),f])):(s.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(i),e.stringLiteral(c),f]))}let a=!1;function p(){a||(a=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){s.needsSpread=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(i),c.argument])));continue}let f=A(c);if(f!=="key"){if(f==="ref"){let d=v(c.value);n.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",d),e.stringLiteral("function")),e.callExpression(e.cloneNode(d),[e.identifier(i)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(d),e.identifier("current")),e.identifier(i)))));continue}if(f.startsWith("on")&&!f.includes("|")&&!M(f,s)){let d=f.slice(2).toLowerCase(),l=v(c.value);Le.has(d)?(s.needsDelegation=!0,s.delegatedEvents||(s.delegatedEvents=new Set),s.delegatedEvents.add(d),p(),n.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier(`$$${d}`)),l)))):n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),e.identifier("addEventListener")),[e.stringLiteral(d),l])));continue}if(f.startsWith("on")&&(f.includes("|")||M(f,s))){let{eventName:d,modifiers:l}=$(f),u=v(c.value),m=x(u,l),g=d.slice(2).toLowerCase(),E=l.filter(P=>ke.has(P)),y=[e.stringLiteral(g),m];if(E.length>0){let P=E.map(N=>e.objectProperty(e.identifier(N),e.booleanLiteral(!0)));y.push(e.objectExpression(P))}n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),e.identifier("addEventListener")),y)));continue}if(C(f)){let d=F(f),l=c.value.expression;s.needsEffect=!0,d==="value"?(n.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier("value")),e.callExpression(e.cloneNode(l),[])))]))),n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),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,n.push(e.expressionStatement(e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],e.assignmentExpression("=",e.memberExpression(e.identifier(i),e.identifier("checked")),e.callExpression(e.cloneNode(l),[])))]))),n.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(i),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(f);if(L(d,s.signalNames,s.importedIdentifiers)){s.needsEffect=!0;let u=e.isIdentifier(d)&&(_(d.name,s.signalNames)||s.importedIdentifiers&&s.importedIdentifiers.has(d.name))?e.callExpression(d,[]):d,m=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],o(l,u))]);H(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),n.push(e.expressionStatement(m))}else n.push(e.expressionStatement(o(l,d)))}}}}function Y(n){if(!n||typeof n!="object")return!1;if(Array.isArray(n))return n.some(Y);if(n.type==="JSXElement"||n.type==="JSXFragment"||n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&(n.callee.name==="_$mapArray"||n.callee.name==="mapArray"))return!0;for(let i of Object.keys(n)){if(i==="loc"||i==="start"||i==="end"||i==="leadingComments"||i==="trailingComments"||i==="innerComments")continue;let r=n[i];if(r&&typeof r=="object"&&Y(r))return!0}return!1}function X(n,i,r){let s=null,t=!1;if(e.isConditionalExpression(n))s=n.test,t=!0;else if(e.isLogicalExpression(n)&&(n.operator==="&&"||n.operator==="||"))s=n.left;else return n;if(!L(s,r.signalNames,r.importedIdentifiers)||!(t?[n.consequent,n.alternate]:[n.right]).some(Y))return n;let a=r.nextMemoId();r.needsMemo=!0;let p=t?e.unaryExpression("!",e.unaryExpression("!",s)):s;i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))]));let c=e.callExpression(e.identifier(a),[]);return t?e.conditionalExpression(c,n.consequent,n.alternate):e.logicalExpression(n.operator,c,n.right)}function le(n,i,r,s,t){let o=[],a=0;for(let l of r){if(e.isJSXText(l)){j(l.value)&&a++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;o.push({type:"expression",child:l,childIndex:a}),a++;continue}if(e.isJSXElement(l)){let u=l.openingElement.name.name;if(k(u)||u==="For"||u==="Show")o.push({type:"component",child:l,childIndex:a}),a++;else{let m=l.openingElement.attributes.some(oe)||l.openingElement.attributes.some(g=>!e.isJSXSpreadAttribute(g)&&A(g)?.startsWith("on"))||!l.children.every(q);o.push({type:"static",child:l,childIndex:a,hasAnythingDynamic:m}),a++}continue}e.isJSXFragment(l)&&o.push({type:"fragment",child:l})}let p=o.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=p.length>=2,f=new Map;if(c){let l=null,u=0;for(let m of p){let g=m.childIndex,E=t.nextVarId();f.set(g,E);let y;if(l===null)y=Q(i,g);else{y=e.identifier(l);for(let P=u;P<g;P++)y=e.memberExpression(y,e.identifier("nextSibling"))}n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),y)])),l=E,u=g}}function d(l){return f.has(l)?e.identifier(f.get(l)):Q(i,l)}for(let l of o){if(l.type==="expression"){let u=l.child.expression,m=d(l.childIndex);t.needsInsert=!0;let g=se(u,t);if(g){t.needsMapArray=!0;let y=e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="_$mapArray"||g.callee.name==="mapArray"),P=e.isArrowFunctionExpression(g);P&&e.isExpression(g.body)?g.body=X(g.body,n,t):!y&&!P&&(g=X(g,n,t));let N=y||P?g:e.arrowFunctionExpression([],g);n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),N,m])));continue}if(e.isCallExpression(u)&&e.isIdentifier(u.callee)&&(u.callee.name==="mapArray"||u.callee.name==="_$mapArray")){t.needsMapArray=!0,u.callee.name==="mapArray"&&(u.callee.name="_$mapArray"),n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),u,m])));continue}if(L(u,t.signalNames,t.importedIdentifiers)){u=X(u,n,t);let y=e.callExpression(e.identifier("_$insert"),[e.identifier(i),e.arrowFunctionExpression([],u),m]);H(u,t.signalNames,t.importedIdentifiers)&&e.addComment(y,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),n.push(e.expressionStatement(y))}else n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),u,m])));continue}if(l.type==="component"){let u=D({node:l.child},t),m=d(l.childIndex);t.needsInsert=!0,n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),u,m])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let u;f.has(l.childIndex)?u=f.get(l.childIndex):(u=t.nextVarId(),n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(u),Q(i,l.childIndex))]))),ae(n,u,l.child.openingElement.attributes,t,l.child.openingElement.name.name),le(n,u,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let u of l.child.children)if(e.isJSXExpressionContainer(u)&&!e.isJSXEmptyExpression(u.expression)){t.needsInsert=!0;let m=u.expression;L(m,t.signalNames,t.importedIdentifiers)?(m=X(m,n,t),n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),e.arrowFunctionExpression([],m)])))):n.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(i),m])))}}}}function Q(n,i){if(i===0)return e.memberExpression(e.identifier(n),e.identifier("firstChild"));let r=e.memberExpression(e.identifier(n),e.identifier("firstChild"));for(let s=0;s<i;s++)r=e.memberExpression(r,e.identifier("nextSibling"));return r}function be(n,i){let{node:r}=n,s=r.openingElement,t=s.name.name,o=s.attributes,a=r.children,p=null,c=[];for(let E of o){if(e.isJSXAttribute(E)){let y;if(e.isJSXNamespacedName(E.name)?y=`${E.name.namespace.name}:${E.name.name.name}`:y=E.name.name,y&&typeof y=="string"&&y.startsWith("client:")){let P=y.slice(7);E.value?p={type:P,value:E.value.value}:p={type:P};continue}}c.push(E)}if(p){i.needsCreateComponent=!0,i.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),e.identifier(t)),e.objectProperty(e.identifier("mode"),e.stringLiteral(p.type))];p.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(p.value)));for(let y of c){if(e.isJSXSpreadAttribute(y))continue;let P=A(y),N=v(y.value);E.push(e.objectProperty(e.identifier(P),N))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(E),e.arrayExpression([])])}i.needsCreateComponent=!0;let f=[],d=!1,l=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){d=!0,l=E.argument;continue}let y=A(E);if(y==="key")continue;if(C(y)){let N=F(y),R=E.value.expression;N==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(R),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(R),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):N==="checked"&&(f.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode(R),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(R),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(y.startsWith("on")&&(y.includes("|")||M(y,i))){let{eventName:N,modifiers:R}=$(y),_e=v(E.value),$e=x(_e,R);f.push(e.objectProperty(e.identifier(N),$e));continue}let P=v(E.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(y)?e.identifier(y):e.stringLiteral(y),P))}let u=[];for(let E of a)if(e.isJSXText(E)){let y=j(E.value);y&&u.push(e.stringLiteral(y))}else e.isJSXExpressionContainer(E)?e.isJSXEmptyExpression(E.expression)||u.push(E.expression):e.isJSXElement(E)?u.push(D({node:E},i)):e.isJSXFragment(E)&&u.push(B({node:E},i));let m;d?f.length>0?m=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(f)]):m=l:f.length>0?m=e.objectExpression(f):m=e.nullLiteral();let g=u.length>0?e.arrayExpression(u):e.arrayExpression([]);return e.callExpression(e.identifier("_$createComponent"),[e.identifier(t),m,g])}function Se(n,i){let{node:r}=n,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let f of s)if(e.isJSXAttribute(f)){let d=A(f);d==="each"?o=v(f.value):d==="key"&&(a=v(f.value))}if(!o)return console.warn('[what-compiler] <For> element missing "each" attribute.'),i.needsH=!0,K(n,i);let p=null;for(let f of t)if(e.isJSXExpressionContainer(f)&&!e.isJSXEmptyExpression(f.expression)){p=f.expression;break}if(!p)return console.warn("[what-compiler] <For> element missing render function child."),i.needsH=!0,K(n,i);i.needsMapArray=!0;let c=[o,p];return a&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),a)])),e.callExpression(e.identifier("_$mapArray"),c)}function we(n,i){let{node:r}=n,s=r.openingElement.attributes,t=r.children,o=null,a=null;for(let m of s)if(e.isJSXAttribute(m)){let g=A(m);g==="when"?o=v(m.value):g==="fallback"&&(a=v(m.value))}if(!o)throw n.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let p=null;for(let m of t)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){p=m.expression;break}if(!p){let m=[];for(let g of t)if(e.isJSXText(g)){let E=j(g.value);E&&m.push(e.stringLiteral(E))}else e.isJSXElement(g)&&m.push(D({node:g},i));m.length===1?p=m[0]:m.length>1?p=e.arrayExpression(m):p=e.nullLiteral()}let c;e.isCallExpression(o)?c=o:e.isArrowFunctionExpression(o)&&e.isExpression(o.body)?c=o.body:e.isIdentifier(o)&&(i.signalNames&&_(o.name,i.signalNames)||i.importedIdentifiers&&i.importedIdentifiers.has(o.name))?c=e.callExpression(o,[]):c=o;let f=n.scope?n.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(p),l=d?e.callExpression(p,[e.cloneNode(f)]):p,u=a||e.nullLiteral();if(L(c,i.signalNames,i.importedIdentifiers)){let m=i.nextMemoId();i.needsMemo=!0;let g=d?c:e.unaryExpression("!",e.unaryExpression("!",c));i._pendingSetup||(i._pendingSetup=[]),i._pendingSetup.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],g)]))])),c=e.callExpression(e.identifier(m),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(f,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(f),l,u))]))}function ve(n,i){i._pendingSetup||(i._pendingSetup=[]);let r=i._pendingSetup,s=se(n,i);if(s){i.needsMapArray=!0;let o=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,i),s;if(o)return s;let p=X(s,r,i);return e.arrowFunctionExpression([],p)}return e.isCallExpression(n)&&e.isIdentifier(n.callee)&&(n.callee.name==="mapArray"||n.callee.name==="_$mapArray")?(i.needsMapArray=!0,n.callee.name==="mapArray"&&(n.callee.name="_$mapArray"),n):L(n,i.signalNames,i.importedIdentifiers)?(n=X(n,r,i),e.arrowFunctionExpression([],n)):n}function B(n,i){let{node:r}=n,s=r.children,t=[];for(let o of s)if(e.isJSXText(o)){let a=j(o.value);a&&t.push(e.stringLiteral(a))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||t.push(ve(o.expression,i)):e.isJSXElement(o)?t.push(D({node:o},i)):e.isJSXFragment(o)&&t.push(B({node:o},i));return t.length===1?t[0]:e.arrayExpression(t)}function ce(n,i){if(n.templateMap.has(i))return n.templateMap.get(i);let r=`_tmpl$${n.templateCount++}`;return n.templateMap.set(i,r),n.templates.push({id:r,html:i}),r}function fe(n,i,r){let s=n.scope,t=i._signalNamesCache;t||(t=i._signalNamesCache=new WeakMap);let o=t.get(s);o||(o=S(n),t.set(s,o)),i.signalNames=o,i._pendingSetup=[];let a=r(n,i),p=i._pendingSetup;if(i._pendingSetup=[],p.length>0){let c=n,f=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(f=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!f?(c.insertBefore(p),n.replaceWith(a)):(p.push(e.returnStatement(a)),n.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(p)),[])))}else n.replaceWith(a)}return{name:"what-jsx-transform",visitor:{Program:{enter(n,i){i.needsTemplate=!1,i.needsInsert=!1,i.needsEffect=!1,i.needsMapArray=!1,i.needsSpread=!1,i.needsSetProp=!1,i.needsMemo=!1,i.needsSetClass=!1,i.needsSetStyle=!1,i.needsSetAttr=!1,i.needsSetValue=!1,i.needsSetChecked=!1,i.needsH=!1,i.needsCreateComponent=!1,i.needsFragment=!1,i.needsIsland=!1,i.needsDelegation=!1,i.delegatedEvents=new Set,i.templates=[],i.templateMap=new Map,i.templateCount=0,i._varCounter=0,i._memoCounter=0,i._pendingSetup=[],i.nextVarId=()=>`_el$${i._varCounter++}`,i.nextMemoId=()=>`_c$${i._memoCounter++}`,i.signalNames=new Set,i.importedIdentifiers=new Set;for(let r of n.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/")||s.startsWith("./")||s.startsWith("../");for(let o of r.specifiers){let a=null;(e.isImportSpecifier(o)&&e.isIdentifier(o.local)||e.isImportDefaultSpecifier(o)&&e.isIdentifier(o.local)||e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local))&&(a=o.local.name),a&&(t||/^(use|create)[A-Z]/.test(a))&&i.importedIdentifiers.add(a)}}n.traverse({VariableDeclarator(r){let s=r.node.init;if(!s||!e.isCallExpression(s))return;let t=s.callee,o="";if(e.isIdentifier(t)?o=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(o=t.property.name),pe.has(o)){let a=r.node.id;if(e.isIdentifier(a))i.signalNames.add(a.name);else if(e.isArrayPattern(a))for(let p of a.elements)e.isIdentifier(p)&&i.signalNames.add(p.name);else if(e.isObjectPattern(a))for(let p of a.properties)e.isObjectProperty(p)&&e.isIdentifier(p.value)&&i.signalNames.add(p.value.name)}}})},exit(n,i){for(let t of i.templates.reverse()){let o=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(o,"leading"," @__PURE__ "),n.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.id),o)]))}let r=[];i.needsTemplate&&r.push(e.importSpecifier(e.identifier("_$template"),e.identifier("_$template"))),i.needsInsert&&r.push(e.importSpecifier(e.identifier("_$insert"),e.identifier("insert"))),i.needsEffect&&r.push(e.importSpecifier(e.identifier("_$effect"),e.identifier("effect"))),i.needsMapArray&&r.push(e.importSpecifier(e.identifier("_$mapArray"),e.identifier("mapArray"))),i.needsSpread&&r.push(e.importSpecifier(e.identifier("_$spread"),e.identifier("spread"))),i.needsSetProp&&r.push(e.importSpecifier(e.identifier("_$setProp"),e.identifier("setProp"))),i.needsMemo&&r.push(e.importSpecifier(e.identifier("_$memo"),e.identifier("memo"))),i.needsSetClass&&r.push(e.importSpecifier(e.identifier("_$setClass"),e.identifier("setClass"))),i.needsSetStyle&&r.push(e.importSpecifier(e.identifier("_$setStyle"),e.identifier("setStyle"))),i.needsSetAttr&&r.push(e.importSpecifier(e.identifier("_$setAttr"),e.identifier("setAttr"))),i.needsSetValue&&r.push(e.importSpecifier(e.identifier("_$setValue"),e.identifier("setValue"))),i.needsSetChecked&&r.push(e.importSpecifier(e.identifier("_$setChecked"),e.identifier("setChecked"))),i.needsCreateComponent&&r.push(e.importSpecifier(e.identifier("_$createComponent"),e.identifier("_$createComponent"))),i.needsDelegation&&r.push(e.importSpecifier(e.identifier("_$delegateEvents"),e.identifier("delegateEvents")));let s=[];if(i.needsH&&s.push(e.importSpecifier(e.identifier("h"),e.identifier("h"))),i.needsFragment&&s.push(e.importSpecifier(e.identifier("Fragment"),e.identifier("Fragment"))),i.needsIsland&&s.push(e.importSpecifier(e.identifier("Island"),e.identifier("Island"))),r.length>0){let t=null;for(let o of n.node.body)if(e.isImportDeclaration(o)&&(o.source.value==="what-framework/render"||o.source.value==="what-core/render")){t=o;break}if(t){let o=new Set(t.specifiers.filter(a=>e.isImportSpecifier(a)).map(a=>a.imported.name));for(let a of r)o.has(a.imported.name)||t.specifiers.push(a)}else n.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(s.length>0&&Me(n,e,s),i.needsDelegation&&i.delegatedEvents&&i.delegatedEvents.size>0){let t=e.arrayExpression([...i.delegatedEvents].map(a=>e.stringLiteral(a))),o=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]))]));n.unshiftContainer("body",[e.variableDeclaration("let",[e.variableDeclarator(e.identifier("_$delegated$"),e.booleanLiteral(!1))]),o])}}},JSXElement(n,i){fe(n,i,D)},JSXFragment(n,i){fe(n,i,B)}}}}function Me(e,h,w){let M=null;for(let $ of e.node.body)if(h.isImportDeclaration($)&&($.source.value==="what-core"||$.source.value==="what-framework")){M=$;break}if(M){let $=new Set(M.specifiers.filter(C=>h.isImportSpecifier(C)).map(C=>C.imported.name));for(let C of w)$.has(C.imported.name)||M.specifiers.push(C)}else{let $=h.importDeclaration(w,h.stringLiteral("what-framework"));e.unshiftContainer("body",$)}}import W from"fs";import O from"path";var ue=new Set([".jsx",".tsx",".js",".ts"]),Fe=new Set(["_layout","_error","_loading","_404"]);function Pe(e){let h=[],w=[],M=[];function $(F,k=""){if(!W.existsSync(F))return;let I=W.readdirSync(F,{withFileTypes:!0});for(let v of I){let b=O.join(F,v.name);if(v.isDirectory()){if(v.name.match(/^\((.+)\)$/)){$(b,k);continue}if(v.name==="api"&&k===""){C(b,"/api");continue}$(b,k+"/"+G(v.name));continue}let A=O.extname(v.name);if(!ue.has(A))continue;let x=O.basename(v.name,A);if(x==="_layout"){w.push({filePath:b,urlPrefix:k||"/"});continue}if(Fe.has(x))continue;let _=G(x),S=x==="index"?k||"/":k+"/"+_;h.push({filePath:b,routePath:de(S),isDynamic:S.includes(":")||S.includes("*")})}}function C(F,k){if(!W.existsSync(F))return;let I=W.readdirSync(F,{withFileTypes:!0});for(let v of I){let b=O.join(F,v.name);if(v.isDirectory()){C(b,k+"/"+G(v.name));continue}let A=O.extname(v.name);if(!ue.has(A))continue;let x=O.basename(v.name,A),_=G(x),S=x==="index"?k:k+"/"+_;M.push({filePath:b,routePath:de(S)})}}return $(e),h.sort((F,k)=>{let I=me(F.routePath),v=me(k.routePath);return I-v}),{pages:h,layouts:w,apiRoutes:M}}function G(e){let h=e.match(/^\[\.\.\.(\w+)\]$/);if(h)return"*"+h[1];let w=e.match(/^\[(\w+)\]$/);return w?":"+w[1]:e.toLowerCase()}function de(e){let h=e.replace(/\/+/g,"/");return h.length>1&&h.endsWith("/")&&(h=h.slice(0,-1)),h||"/"}function me(e){return e.includes("*")?100:e.includes(":")?10:0}function Ie(e){let h=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!h)return{mode:"client"};try{let w=h[1].replace(/'/g,'"').replace(/(\w+)\s*:/g,'"$1":').replace(/,\s*}/g,"}").replace(/\/\/[^\n]*/g,"");return{mode:"client",...JSON.parse(w)}}catch{return{mode:"client"}}}function Ne(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 he(e,h){let{pages:w,layouts:M,apiRoutes:$}=Pe(e),C=[],F=[],k=new Map;M.forEach((b,A)=>{let x=`_layout${A}`,_=ne(b.filePath,h);C.push(`import ${x} from '${_}';`),k.set(b.urlPrefix,x)}),w.forEach((b,A)=>{let x=`_page${A}`,_=ne(b.filePath,h);C.push(`import ${x} from '${_}';`);let S={mode:"client"},T={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let L=W.readFileSync(b.filePath,"utf-8");S=Ie(L),T=Ne(L)}catch{}let J=Te(b.routePath,k),H={path:b.routePath,component:x,mode:S.mode||"client",layout:J||null,hasLoader:T.hasLoader};F.push(H)});let I=[];return $.forEach((b,A)=>{let x=`_api${A}`,_=ne(b.filePath,h);C.push(`import * as ${x} from '${_}';`),I.push({path:b.routePath,handlers:x})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",...C,"","export const routes = [",...F.map(b=>` { path: '${b.path}', component: ${b.component}, mode: '${b.mode}'${b.layout?`, layout: ${b.layout}`:""}${b.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...I.map(b=>` { path: '${b.path}', handlers: ${b.handlers} },`),"];","","export const pageModes = {",...F.map(b=>` '${b.path}': '${b.mode}',`),"};"].join(`
|
|
2
|
-
`)}function
|
|
1
|
+
import q from"path";import{transformSync as Ue}from"@babel/core";var Me=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),Pe=new Set(["once","capture","passive"]),Ne=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Oe=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),K=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),de=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]),Te=new Set(["what-framework/server","what-server","what-server/actions"]);function je(e){let u=0xcbf29ce484222325n;for(let x=0;x<e.length;x++)u^=BigInt(e.charCodeAt(x)),u=BigInt.asUintN(64,u*0x100000001b3n);return u.toString(36)}function De(e,u){let x=String(e||"<unknown>").replace(/\\/g,"/").replace(/[?#].*$/,""),k=String(u||"").replace(/\\/g,"/").replace(/\/+$/,"");return k&&x.startsWith(`${k}/`)?x.slice(k.length+1):x.replace(/^\.\//,"")}function W(e){if(!/[\r\n]/.test(e))return e.replace(/\t/g," ");let u=e.split(/\r\n|\n|\r/),x=-1;for(let _=0;_<u.length;_++)/[^ \t]/.test(u[_])&&(x=_);if(x===-1)return"";let k="";for(let _=0;_<u.length;_++){let C=u[_].replace(/\t/g," "),F=_===0,A=_===u.length-1;F||(C=C.replace(/^ +/,"")),A||(C=C.replace(/ +$/,"")),C&&(_!==x&&(C+=" "),k+=C)}return k}function oe({types:e}){let u=new Set,x=new Set;function k(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(s=>Me.has(s));return{eventName:o,modifiers:t}}function C(i){return i.startsWith("bind:")}function F(i){return i.slice(5)}function A(i){return/^[A-Z]/.test(i)}function N(i){return Ne.has(String(i).toLowerCase())}function w(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function v(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 L(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 M(i,n){return n.has(i)}function T(i){let n=new Set;function r(t){let s=t.init;if(!s||!e.isCallExpression(s))return;let a=s.callee,p="";if(e.isIdentifier(a)?p=a.name:e.isMemberExpression(a)&&e.isIdentifier(a.property)&&(p=a.property.name),de.has(p)){let c=t.id;if(e.isIdentifier(c))n.add(c.name);else if(e.isArrayPattern(c))for(let f of c.elements)e.isIdentifier(f)&&n.add(f.name);else if(e.isObjectPattern(c))for(let f of c.properties)e.isObjectProperty(f)&&e.isIdentifier(f.value)&&n.add(f.value.name)}}let o=i.scope;for(;o;){for(let s of Object.values(o.bindings))s.path.isVariableDeclarator()&&r(s.path.node);let t=o.path&&o.path.node;if(t&&t.params){for(let s of t.params)if(e.isObjectPattern(s))for(let a of s.properties)e.isObjectProperty(a)&&e.isIdentifier(a.value)?n.add(a.value.name):e.isRestElement(a)&&e.isIdentifier(a.argument)&&n.add(a.argument.name)}o=o.parent}return n}function R(i){return T(i)}function y(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?K.has(n.object.name):e.isIdentifier(n)?K.has(n.name):!1}function $(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&M(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!K.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&M(i.callee.object.name,n)||y(i))return!1;if(i.arguments.some(o=>S(o,n,r)))return!0}return!1}function S(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&M(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!K.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&M(i.callee.object.name,n)?!0:y(i)?i.arguments.some(o=>S(o,n,r)):e.isIdentifier(i.callee)?i.arguments.some(o=>S(o,n,r)):S(i.callee,n,r)||i.arguments.some(o=>S(o,n,r)):e.isIdentifier(i)?M(i.name,n)||r&&r.has(i.name):e.isMemberExpression(i)?S(i.object,n,r):e.isConditionalExpression(i)?S(i.test,n,r)||S(i.consequent,n,r)||S(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?S(i.left,n,r)||S(i.right,n,r):e.isUnaryExpression(i)?S(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(o=>S(o,n,r)):e.isObjectExpression(i)?i.properties.some(o=>e.isObjectProperty(o)&&S(o.value,n,r)):e.isArrayExpression(i)?i.elements.some(o=>o&&S(o,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function H(i,n){let r=i,o=!1;if(e.isArrowFunctionExpression(i)&&i.params.length===0&&(r=i.body,o=!0),e.isConditionalExpression(r)){let s=D(r.consequent,n),a=D(r.alternate,n);if(s||a){let p=e.conditionalExpression(r.test,s||r.consequent,a||r.alternate);return o?e.arrowFunctionExpression([],p):p}return null}if(e.isLogicalExpression(r)&&(r.operator==="&&"||r.operator==="||")){let s=D(r.right,n);if(s){let a=e.logicalExpression(r.operator,r.left,s);return o?e.arrowFunctionExpression([],a):a}return null}return D(r,n)}function D(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(m=>e.isReturnStatement(m));l&&(o=l.argument)}}else if(e.isFunctionExpression(r)){let l=r.body.body.find(m=>e.isReturnStatement(m));l&&(o=l.argument)}if(!o||!e.isJSXElement(o))return null;let t=o.openingElement.attributes,s=null;for(let l of t)if(e.isJSXAttribute(l)&&I(l)==="key"){s=l;break}if(!s)return null;let a=w(s.value);if(!a)return null;o.openingElement.attributes=t.filter(l=>l!==s);let p=i.callee.object,c=e.arrowFunctionExpression([],p),f=r.params[0]?e.cloneNode(r.params[0],!0):e.identifier("_item"),d=e.arrowFunctionExpression([f],e.cloneNode(a,!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 z(i){if(e.isJSXText(i))return!0;if(e.isJSXExpressionContainer(i))return!1;if(e.isJSXElement(i)){let n=i.openingElement,r=n.name.name;if(A(r))return!1;for(let o of n.attributes){if(e.isJSXSpreadAttribute(o))return!1;let t=o.value;if(e.isJSXExpressionContainer(t))return!1}return i.children.every(z)}return!1}function P(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function V(i){if(e.isJSXText(i)){let s=W(i.value);return s?ee(s):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(A(r))return"";let o=`<${r}`;for(let s of n.attributes){if(e.isJSXSpreadAttribute(s))continue;let a=I(s);if(a==="key"||a.startsWith("on")||a.startsWith("bind:")||a.includes("|"))continue;let p=a;if(a==="className"&&(p="class"),a==="htmlFor"&&(p="for"),!s.value)o+=` ${p}`;else if(e.isStringLiteral(s.value))o+=` ${p}="${be(s.value.value)}"`;else if(e.isJSXExpressionContainer(s.value))continue}let t=i.openingElement.selfClosing;if(t&&N(r))return o+=">",o;if(t)return o+=`></${r}>`,o;o+=">";for(let s of i.children)if(e.isJSXText(s)){let a=W(s.value);a&&(o+=ee(a))}else e.isJSXExpressionContainer(s)?e.isJSXEmptyExpression(s.expression)||(o+="<!--$-->"):e.isJSXElement(s)&&(A(s.openingElement.name.name)?o+="<!--$-->":o+=V(s));return o+=`</${r}>`,o}function ee(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function be(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(t==="For")return we(i,n);if(t==="Show")return _e(i,n);if(A(t))return ve(i,n);let s=o.attributes,a=r.children,p=a.every(z),c=s.every(g=>!P(g)),f=s.every(g=>{if(e.isJSXSpreadAttribute(g))return!1;let E=I(g);return!E?.startsWith("on")&&!E?.startsWith("bind:")});if(p&&c&&f){let g=V(r);if(g){let E=fe(n,g);return n.needsTemplate=!0,e.callExpression(e.identifier(E),[])}}let d=V(r);if(!d){let g=r.loc,E=n.filename||n.file?.opts?.filename||"<unknown>",b=g?`:${g.start.line}:${g.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${t}> at ${E}${b}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,ne(i,n)}let l=fe(n,d);n.needsTemplate=!0;let m=n.nextVarId(),h=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),e.callExpression(e.identifier(l),[]))])];return le(h,m,s,n,t),ce(h,m,a,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...h),e.identifier(m)}function ne(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name,s=o.attributes,a=r.children,p=[];for(let d of s){if(e.isJSXSpreadAttribute(d))continue;let l=I(d),m=w(d.value),h=v(l);p.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),m))}let c=[];for(let d of a)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(B({node:d},n)):e.isJSXFragment(d)&&c.push(Z({node:d},n));let f=p.length>0?e.objectExpression(p):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(t),f,...c])}let Se=new Set(["input","textarea","select","option"]);function le(i,n,r,o,t){function s(c,f){return c==="class"?(o.needsSetClass=!0,e.callExpression(e.identifier("_$setClass"),[e.identifier(n),f])):c==="style"?(o.needsSetStyle=!0,e.callExpression(e.identifier("_$setStyle"),[e.identifier(n),f])):c==="value"&&t&&Se.has(t)?(o.needsSetValue=!0,e.callExpression(e.identifier("_$setValue"),[e.identifier(n),f])):c==="checked"&&t==="input"?(o.needsSetChecked=!0,e.callExpression(e.identifier("_$setChecked"),[e.identifier(n),f])):c.startsWith("data-")||c.startsWith("aria-")?(o.needsSetAttr=!0,e.callExpression(e.identifier("_$setAttr"),[e.identifier(n),e.stringLiteral(c),f])):(o.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(c),f]))}let a=!1;function p(){a||(a=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$delegate$"),[]))))}for(let c of r){if(e.isJSXSpreadAttribute(c)){o.needsSpread=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(n),c.argument])));continue}let f=I(c);if(f!=="key"){if(f==="ref"){let d=w(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(f.startsWith("on")&&!f.includes("|")&&!k(f,o)){let d=f.slice(2).toLowerCase(),l=w(c.value);Oe.has(d)?(o.needsDelegation=!0,o.delegatedEvents||(o.delegatedEvents=new Set),o.delegatedEvents.add(d),p(),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(f.startsWith("on")&&(f.includes("|")||k(f,o))){let{eventName:d,modifiers:l}=_(f),m=w(c.value),h=L(m,l),g=d.slice(2).toLowerCase(),E=l.filter(O=>Pe.has(O)),b=[e.stringLiteral(g),h];if(E.length>0){let O=E.map(j=>e.objectProperty(e.identifier(j),e.booleanLiteral(!0)));b.push(e.objectExpression(O))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),b)));continue}if(C(f)){let d=F(f),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=v(f);if(S(d,o.signalNames,o.importedIdentifiers)){o.needsEffect=!0;let m=e.isIdentifier(d)&&(M(d.name,o.signalNames)||o.importedIdentifiers&&o.importedIdentifiers.has(d.name))?e.callExpression(d,[]):d,h=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],s(l,m))]);$(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(s(l,d)))}}}}function ie(i){if(!i||typeof i!="object")return!1;if(Array.isArray(i))return i.some(ie);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"&&ie(r))return!0}return!1}function X(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(!S(o,r.signalNames,r.importedIdentifiers)||!(t?[i.consequent,i.alternate]:[i.right]).some(ie))return i;let a=r.nextMemoId();r.needsMemo=!0;let p=t?e.unaryExpression("!",e.unaryExpression("!",o)):o;n.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a),e.callExpression(e.identifier("_$memo"),[e.arrowFunctionExpression([],p)]))]));let c=e.callExpression(e.identifier(a),[]);return t?e.conditionalExpression(c,i.consequent,i.alternate):e.logicalExpression(i.operator,c,i.right)}function ce(i,n,r,o,t){let s=[],a=0;for(let l of r){if(e.isJSXText(l)){W(l.value)&&a++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;s.push({type:"expression",child:l,childIndex:a}),a++;continue}if(e.isJSXElement(l)){let m=l.openingElement.name.name;if(A(m)||m==="For"||m==="Show")s.push({type:"component",child:l,childIndex:a}),a++;else{let h=l.openingElement.attributes.some(P)||l.openingElement.attributes.some(g=>!e.isJSXSpreadAttribute(g)&&I(g)?.startsWith("on"))||!l.children.every(z);s.push({type:"static",child:l,childIndex:a,hasAnythingDynamic:h}),a++}continue}e.isJSXFragment(l)&&s.push({type:"fragment",child:l})}let p=s.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),c=p.length>=2,f=new Map;if(c){let l=null,m=0;for(let h of p){let g=h.childIndex,E=t.nextVarId();f.set(g,E);let b;if(l===null)b=re(n,g);else{b=e.identifier(l);for(let O=m;O<g;O++)b=e.memberExpression(b,e.identifier("nextSibling"))}i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(E),b)])),l=E,m=g}}function d(l){return f.has(l)?e.identifier(f.get(l)):re(n,l)}for(let l of s){if(l.type==="expression"){let m=l.child.expression,h=d(l.childIndex);t.needsInsert=!0;let g=H(m,t);if(g){t.needsMapArray=!0;let b=e.isCallExpression(g)&&e.isIdentifier(g.callee)&&(g.callee.name==="_$mapArray"||g.callee.name==="mapArray"),O=e.isArrowFunctionExpression(g);O&&e.isExpression(g.body)?g.body=X(g.body,i,t):!b&&!O&&(g=X(g,i,t));let j=b||O?g:e.arrowFunctionExpression([],g);i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),j,h])));continue}if(e.isCallExpression(m)&&e.isIdentifier(m.callee)&&(m.callee.name==="mapArray"||m.callee.name==="_$mapArray")){t.needsMapArray=!0,m.callee.name==="mapArray"&&(m.callee.name="_$mapArray"),i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),m,h])));continue}if(S(m,t.signalNames,t.importedIdentifiers)){m=X(m,i,t);let b=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],m),h]);$(m,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),m,h])));continue}if(l.type==="component"){let m=B({node:l.child},t),h=d(l.childIndex);t.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),m,h])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let m;f.has(l.childIndex)?m=f.get(l.childIndex):(m=t.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(m),re(n,l.childIndex))]))),le(i,m,l.child.openingElement.attributes,t,l.child.openingElement.name.name),ce(i,m,l.child.children,l.child,t);continue}if(l.type==="fragment"){for(let m of l.child.children)if(e.isJSXExpressionContainer(m)&&!e.isJSXEmptyExpression(m.expression)){t.needsInsert=!0;let h=m.expression;S(h,t.signalNames,t.importedIdentifiers)?(h=X(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 re(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 ve(i,n){let{node:r}=i,o=r.openingElement,t=o.name.name,s=o.attributes,a=r.children,p=null,c=[];for(let E of s){if(e.isJSXAttribute(E)){let b;if(e.isJSXNamespacedName(E.name)?b=`${E.name.namespace.name}:${E.name.name.name}`:b=E.name.name,b&&typeof b=="string"&&b.startsWith("client:")){let O=b.slice(7);E.value?p={type:O,value:E.value.value}:p={type:O};continue}}c.push(E)}if(p){n.needsCreateComponent=!0,n.needsIsland=!0;let E=[e.objectProperty(e.identifier("component"),e.identifier(t)),e.objectProperty(e.identifier("mode"),e.stringLiteral(p.type))];p.value&&E.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(p.value)));for(let b of c){if(e.isJSXSpreadAttribute(b))continue;let O=I(b),j=w(b.value);E.push(e.objectProperty(e.identifier(O),j))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(E),e.arrayExpression([])])}n.needsCreateComponent=!0;let f=[],d=!1,l=null;for(let E of c){if(e.isJSXSpreadAttribute(E)){d=!0,l=E.argument;continue}let b=I(E);if(b==="key")continue;if(C(b)){let j=F(b),U=E.value.expression;j==="value"?(f.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode(U),[]))),f.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(U),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(U),[]))),f.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode(U),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(b.startsWith("on")&&(b.includes("|")||k(b,n))){let{eventName:j,modifiers:U}=_(b),Le=w(E.value),Fe=L(Le,U);f.push(e.objectProperty(e.identifier(j),Fe));continue}let O=w(E.value);f.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(b)?e.identifier(b):e.stringLiteral(b),O))}let m=[];for(let E of a)if(e.isJSXText(E)){let b=W(E.value);b&&m.push(e.stringLiteral(b))}else e.isJSXExpressionContainer(E)?e.isJSXEmptyExpression(E.expression)||m.push(E.expression):e.isJSXElement(E)?m.push(B({node:E},n)):e.isJSXFragment(E)&&m.push(Z({node:E},n));let h;d?f.length>0?h=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),l,e.objectExpression(f)]):h=l:f.length>0?h=e.objectExpression(f):h=e.nullLiteral();let g=m.length>0?e.arrayExpression(m):e.arrayExpression([]);return e.callExpression(e.identifier("_$createComponent"),[e.identifier(t),h,g])}function we(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,s=null,a=null;for(let f of o)if(e.isJSXAttribute(f)){let d=I(f);d==="each"?s=w(f.value):d==="key"&&(a=w(f.value))}if(!s)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,ne(i,n);let p=null;for(let f of t)if(e.isJSXExpressionContainer(f)&&!e.isJSXEmptyExpression(f.expression)){p=f.expression;break}if(!p)return console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,ne(i,n);n.needsMapArray=!0;let c=[s,p];return a&&c.push(e.objectExpression([e.objectProperty(e.identifier("key"),a)])),e.callExpression(e.identifier("_$mapArray"),c)}function _e(i,n){let{node:r}=i,o=r.openingElement.attributes,t=r.children,s=null,a=null;for(let h of o)if(e.isJSXAttribute(h)){let g=I(h);g==="when"?s=w(h.value):g==="fallback"&&(a=w(h.value))}if(!s)throw i.buildCodeFrameError('<Show> requires a "when" prop. Example: <Show when={isOpen} fallback={null}>...</Show>');let p=null;for(let h of t)if(e.isJSXExpressionContainer(h)&&!e.isJSXEmptyExpression(h.expression)){p=h.expression;break}if(!p){let h=[];for(let g of t)if(e.isJSXText(g)){let E=W(g.value);E&&h.push(e.stringLiteral(E))}else e.isJSXElement(g)&&h.push(B({node:g},n));h.length===1?p=h[0]:h.length>1?p=e.arrayExpression(h):p=e.nullLiteral()}let c;e.isCallExpression(s)?c=s:e.isArrowFunctionExpression(s)&&e.isExpression(s.body)?c=s.body:e.isIdentifier(s)&&(n.signalNames&&M(s.name,n.signalNames)||n.importedIdentifiers&&n.importedIdentifiers.has(s.name))?c=e.callExpression(s,[]):c=s;let f=i.scope?i.scope.generateUidIdentifier("v"):e.identifier("_v"),d=e.isFunction(p),l=d?e.callExpression(p,[e.cloneNode(f)]):p,m=a||e.nullLiteral();if(S(c,n.signalNames,n.importedIdentifiers)){let h=n.nextMemoId();n.needsMemo=!0;let g=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([],g)]))])),c=e.callExpression(e.identifier(h),[])}return e.arrowFunctionExpression([],e.blockStatement([e.variableDeclaration("const",[e.variableDeclarator(f,c)]),e.returnStatement(e.conditionalExpression(e.cloneNode(f),l,m))]))}function $e(i,n){n._pendingSetup||(n._pendingSetup=[]);let r=n._pendingSetup,o=H(i,n);if(o){n.needsMapArray=!0;let s=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=X(o.body,r,n),o;if(s)return o;let p=X(o,r,n);return e.arrowFunctionExpression([],p)}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):S(i,n.signalNames,n.importedIdentifiers)?(i=X(i,r,n),e.arrowFunctionExpression([],i)):i}function Z(i,n){let{node:r}=i,o=r.children,t=[];for(let s of o)if(e.isJSXText(s)){let a=W(s.value);a&&t.push(e.stringLiteral(a))}else e.isJSXExpressionContainer(s)?e.isJSXEmptyExpression(s.expression)||t.push($e(s.expression,n)):e.isJSXElement(s)?t.push(B({node:s},n)):e.isJSXFragment(s)&&t.push(Z({node:s},n));return t.length===1?t[0]:e.arrayExpression(t)}function fe(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 pe(i,n,r){let o=i.scope,t=n._signalNamesCache;t||(t=n._signalNamesCache=new WeakMap);let s=t.get(o);s||(s=T(i),t.set(o,s)),n.signalNames=s,n._pendingSetup=[];let a=r(i,n),p=n._pendingSetup;if(n._pendingSetup=[],p.length>0){let c=i,f=!1;for(;c&&!c.isStatement();)(c.isArrowFunctionExpression()||c.isFunctionExpression())&&(f=!0),c=c.parentPath;c&&c.isStatement()&&(c.listKey==="body"||c.listKey==="consequent")&&Array.isArray(c.container)&&!f?(c.insertBefore(p),i.replaceWith(a)):(p.push(e.returnStatement(a)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(p)),[])))}else i.replaceWith(a)}function Ce(i){let n=i.parentPath;if(n?.isVariableDeclarator()&&e.isIdentifier(n.node.id))return n.node.id.name;if(n?.isAssignmentExpression()&&e.isIdentifier(n.node.left))return n.node.left.name;if(n?.isExportDefaultDeclaration())return"default";if(n?.isObjectProperty()&&!n.node.computed){if(e.isIdentifier(n.node.key))return n.node.key.name;if(e.isStringLiteral(n.node.key))return n.node.key.value}return null}function ke(i,n){let r=i.node.callee;return e.isIdentifier(r)?n.serverActionBindings.has(r.name):e.isMemberExpression(r)&&!r.computed&&e.isIdentifier(r.object)&&e.isIdentifier(r.property,{name:"action"})&&n.serverActionNamespaces.has(r.object.name)}function 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 ue(i,n,r,o,t){let s=i.node.loc?.start||{line:0,column:0},a=`${t}:${s.line}:${s.column+1}`,p=`${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 ${a}.`);let f={id:r,key:p,bindingName:o,filename:t,source:a,loc:s};if(n.serverActionIds.set(r,f),typeof n.opts?.onActionId=="function")try{n.opts.onActionId(f)}catch(d){throw i.buildCodeFrameError(d instanceof Error?d.message:String(d))}}function Ie(i,n){if(!ke(i,n))return;let r=Ce(i);if(!r){n.opts?.production||console.warn(`[what-compiler] Could not derive a stable server action ID at ${n.serverActionFilename}:${i.node.loc?.start.line||0}. Assign action(...) to a named local or export, or pass { id } explicitly.`);return}let o=i.node.arguments[1],t=Ae(o);if(t.property){t.value!==null&&ue(i,n,t.value,r,n.serverActionFilename);return}let s=`wa1_${je(`${n.serverActionFilename}#${r}`)}`;ue(i,n,s,r,n.serverActionFilename);let a=e.objectProperty(e.identifier("id"),e.stringLiteral(s));o?e.isObjectExpression(o)?o.properties.unshift(a):i.node.arguments[1]=e.objectExpression([a,e.spreadElement(o)]):i.node.arguments.push(e.objectExpression([a]))}return{name:"what-jsx-transform",visitor:{Program:{enter(i,n){n.needsTemplate=!1,n.needsInsert=!1,n.needsEffect=!1,n.needsMapArray=!1,n.needsSpread=!1,n.needsSetProp=!1,n.needsMemo=!1,n.needsSetClass=!1,n.needsSetStyle=!1,n.needsSetAttr=!1,n.needsSetValue=!1,n.needsSetChecked=!1,n.needsH=!1,n.needsCreateComponent=!1,n.needsFragment=!1,n.needsIsland=!1,n.needsDelegation=!1,n.delegatedEvents=new Set,n.templates=[],n.templateMap=new Map,n.templateCount=0,n._varCounter=0,n._memoCounter=0,n._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=De(n.file?.opts?.filename,n.opts?.projectRoot||n.file?.opts?.cwd),n.signalNames=new Set,n.importedIdentifiers=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/")||o.startsWith("./")||o.startsWith("../");for(let s of r.specifiers){let a=null;(e.isImportSpecifier(s)&&e.isIdentifier(s.local)||e.isImportDefaultSpecifier(s)&&e.isIdentifier(s.local)||e.isImportNamespaceSpecifier(s)&&e.isIdentifier(s.local))&&(a=s.local.name),a&&(t||/^(use|create)[A-Z]/.test(a))&&n.importedIdentifiers.add(a),Te.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({CallExpression(r){Ie(r,n)},VariableDeclarator(r){let o=r.node.init;if(!o||!e.isCallExpression(o))return;let t=o.callee,s="";if(e.isIdentifier(t)?s=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(s=t.property.name),de.has(s)){let a=r.node.id;if(e.isIdentifier(a))n.signalNames.add(a.name);else if(e.isArrayPattern(a))for(let p of a.elements)e.isIdentifier(p)&&n.signalNames.add(p.name);else if(e.isObjectPattern(a))for(let p of a.properties)e.isObjectProperty(p)&&e.isIdentifier(p.value)&&n.signalNames.add(p.value.name)}}})},exit(i,n){for(let t of n.templates.reverse()){let s=e.callExpression(e.identifier("_$template"),[e.stringLiteral(t.html)]);e.addComment(s,"leading"," @__PURE__ "),i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(t.id),s)]))}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 s of i.node.body)if(e.isImportDeclaration(s)&&(s.source.value==="what-framework/render"||s.source.value==="what-core/render")){t=s;break}if(t){let s=new Set(t.specifiers.filter(a=>e.isImportSpecifier(a)).map(a=>a.imported.name));for(let a of r)s.has(a.imported.name)||t.specifiers.push(a)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(o.length>0&&Je(i,e,o),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let t=e.arrayExpression([...n.delegatedEvents].map(a=>e.stringLiteral(a))),s=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))]),s])}}},JSXElement(i,n){pe(i,n,B)},JSXFragment(i,n){pe(i,n,Z)}}}}function Je(e,u,x){let k=null;for(let _ of e.node.body)if(u.isImportDeclaration(_)&&(_.source.value==="what-core"||_.source.value==="what-framework")){k=_;break}if(k){let _=new Set(k.specifiers.filter(C=>u.isImportSpecifier(C)).map(C=>C.imported.name));for(let C of x)_.has(C.imported.name)||k.specifiers.push(C)}else{let _=u.importDeclaration(x,u.stringLiteral("what-framework"));e.unshiftContainer("body",_)}}import G from"fs";import J from"path";var me=new Set([".jsx",".tsx",".js",".ts"]),Re=new Set(["_layout","_error","_loading","_404"]);function Xe(e){let u=[],x=[],k=[];function _(F,A=""){if(!G.existsSync(F))return;let N=G.readdirSync(F,{withFileTypes:!0});for(let w of N){let v=J.join(F,w.name);if(w.isDirectory()){if(w.name.match(/^\((.+)\)$/)){_(v,A);continue}if(w.name==="api"&&A===""){C(v,"/api");continue}_(v,A+"/"+Y(w.name));continue}let I=J.extname(w.name);if(!me.has(I))continue;let L=J.basename(w.name,I);if(L==="_layout"){x.push({filePath:v,urlPrefix:A||"/"});continue}if(Re.has(L))continue;let M=Y(L),T=L==="index"?A||"/":A+"/"+M;u.push({filePath:v,routePath:he(T),isDynamic:T.includes(":")||T.includes("*")})}}function C(F,A){if(!G.existsSync(F))return;let N=G.readdirSync(F,{withFileTypes:!0});for(let w of N){let v=J.join(F,w.name);if(w.isDirectory()){C(v,A+"/"+Y(w.name));continue}let I=J.extname(w.name);if(!me.has(I))continue;let L=J.basename(w.name,I),M=Y(L),T=L==="index"?A:A+"/"+M;k.push({filePath:v,routePath:he(T)})}}return _(e),u.sort((F,A)=>{let N=ge(F.routePath),w=ge(A.routePath);return N-w}),{pages:u,layouts:x,apiRoutes:k}}function Y(e){let u=e.match(/^\[\.\.\.(\w+)\]$/);if(u)return"*"+u[1];let x=e.match(/^\[(\w+)\]$/);return x?":"+x[1]:e.toLowerCase()}function he(e){let u=e.replace(/\/+/g,"/");return u.length>1&&u.endsWith("/")&&(u=u.slice(0,-1)),u||"/"}function ge(e){return e.includes("*")?100:e.includes(":")?10:0}function We(e){let u=e.match(/export\s+const\s+page\s*=\s*(\{[^}]*\})/s);if(!u)return{mode:"client"};try{let x=u[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 He(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 Ee(e,u){let{pages:x,layouts:k,apiRoutes:_}=Xe(e),C=[],F=[],A=new Map;k.forEach((v,I)=>{let L=`_layout${I}`,M=se(v.filePath,u);C.push(`import ${L} from '${M}';`),A.set(v.urlPrefix,L)}),x.forEach((v,I)=>{let L=`_page${I}`,M=se(v.filePath,u);C.push(`import ${L} from '${M}';`);let T={mode:"client"},R={hasLoader:!1,hasGetStaticPaths:!1,hasPageConfig:!1};try{let S=G.readFileSync(v.filePath,"utf-8");T=We(S),R=He(S)}catch{}let y=Ve(v.routePath,A),$={path:v.routePath,component:L,mode:T.mode||"client",layout:y||null,hasLoader:R.hasLoader};F.push($)});let N=[];return _.forEach((v,I)=>{let L=`_api${I}`,M=se(v.filePath,u);C.push(`import * as ${L} from '${M}';`),N.push({path:v.routePath,handlers:L})}),["// Auto-generated by What Framework file router","// Do not edit \u2014 changes will be overwritten","",...C,"","export const routes = [",...F.map(v=>` { path: '${v.path}', component: ${v.component}, mode: '${v.mode}'${v.layout?`, layout: ${v.layout}`:""}${v.hasLoader?", hasLoader: true":""} },`),"];","","export const apiRoutes = [",...N.map(v=>` { path: '${v.path}', handlers: ${v.handlers} },`),"];","","export const pageModes = {",...F.map(v=>` '${v.path}': '${v.mode}',`),"};"].join(`
|
|
2
|
+
`)}function se(e,u){return"/"+J.relative(u,e).split(J.sep).join("/")}function Ve(e,u){let x=e.split("/").filter(Boolean);for(;x.length>0;){let k="/"+x.join("/");if(u.has(k))return u.get(k);x.pop()}return u.has("/")?u.get("/"):null}var Be=`
|
|
3
3
|
:host {
|
|
4
4
|
position: fixed;
|
|
5
5
|
inset: 0;
|
|
@@ -185,12 +185,12 @@ import re from"path";import{transformSync as Je}from"@babel/core";var Ce=new Set
|
|
|
185
185
|
white-space: pre-wrap;
|
|
186
186
|
line-height: 1.5;
|
|
187
187
|
}
|
|
188
|
-
`,
|
|
188
|
+
`,ln=`
|
|
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>${Be}</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 xe(e){let u=e.ws.send.bind(e.ws);e.ws.send=function(x){return x?.type==="error"&&x.err?.plugin==="vite-plugin-what"&&(x.err._isCompilerError=!0),u(x)}}var ye="virtual:what-routes",Q="\0"+ye,ze=/(?:from\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"]|import\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"])/,Ge=/\.[cm]?[jt]sx?$/;function ae(e,u){return e?Array.isArray(e)?e.some(x=>ae(x,u)):e instanceof RegExp?(e.lastIndex=0,e.test(u)):typeof e=="function"?e(u):!1:!1}function qe({rolldownVersion:e,viteVersion:u}={}){let x=parseInt(String(u??""),10);return!!e||Number.isFinite(x)&&x>=8?{oxc:{jsx:"preserve"}}:{esbuild:{jsx:"preserve"}}}var te=null;function Ze(){return te||(te=import("vite").then(e=>e.version||"").catch(()=>"")),te}var Ke=/export\s+(?:default\s+)?function\s+([A-Z]\w*)/,Ye=/(?:store|signal|state|context|util|helper|lib|config)\b/i;function Qe(e={}){let{include:u=/\.[jt]sx$/,exclude:x=/node_modules/,sourceMaps:k=!0,production:_=!0,pages:C="src/pages",hot:F=!_,prodBundles:A=!0}=e,N="",w="",v=null,I=!1,L=new Map;function M(y){let $=L.get(y.id);if($&&$.key!==y.key)throw new Error(`Duplicate server action ID "${y.id}". First declared by "${$.bindingName}" at ${$.source}; conflicts with "${y.bindingName}" at ${y.source}.`);L.set(y.id,y)}function T(y){for(let[$,S]of L)S.filename===y&&L.delete($)}function R(y){let $=y.replace(/[?#].*$/,"");return N?q.relative(N,$).split(q.sep).join("/"):$}return{name:"vite-plugin-what",configResolved(y){N=y.root,w=q.resolve(N,C),I=y.command==="serve"},configureServer(y){v=y,xe(y),y.watcher.on("add",$=>{if($.startsWith(w)){let S=y.moduleGraph.getModuleById(Q);S&&(y.moduleGraph.invalidateModule(S),y.ws.send({type:"full-reload"}))}}),y.watcher.on("unlink",$=>{if(T(R($)),$.startsWith(w)){let S=y.moduleGraph.getModuleById(Q);S&&(y.moduleGraph.invalidateModule(S),y.ws.send({type:"full-reload"}))}})},resolveId(y){if(y===ye)return Q},load(y){if(y===Q)return Ee(w,N)},transform(y,$){let S=$.replace(/[?#].*$/,""),H=ae(u,S),D=Ge.test(S),z=D&&ze.test(y);if(x&&ae(x,S)||(D&&T(R(S)),!H&&!z))return null;try{let P=Ue(y,{filename:$,sourceMaps:k,configFile:!1,babelrc:!1,plugins:[[oe,{production:_,projectRoot:N||process.cwd(),onActionId:M}]],parserOpts:{plugins:["jsx","typescript"]}});if(!P||!P.code)return null;let V=P.code;return F&&I&&!_&&en(y,$)&&(V+=rn($)),{code:V,map:P.map}}catch(P){throw P.plugin="vite-plugin-what",P.id||(P.id=$),P.loc===void 0&&P._loc&&(P.loc={file:$,line:P._loc.line,column:P._loc.column}),console.error(`[what] Error transforming ${$}:`,P.message),P}},handleHotUpdate({file:y,server:$,modules:S}){if(F&&u.test(y)&&!(x&&x.test(y))&&nn(y))return $.ws.send({type:"full-reload"}),[]},async config(y,{mode:$,command:S}){let H=S==="build"&&$==="production"&&A,D=qe({rolldownVersion:this?.meta?.rolldownVersion,viteVersion:await Ze()});return{...H?{resolve:{conditions:["production"]}}:{},...D,optimizeDeps:{exclude:["what-framework","what-core","what-compiler","what-router"]}}}}}function en(e,u){return!!(Ke.test(e)||u.includes("/pages/")||u.includes("\\pages\\"))}function nn(e){let u=q.basename(e,q.extname(e));return Ye.test(u)}function rn(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{Qe as default,qe as jsxPreserveConfig,Qe as what};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "what-compiler",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.7",
|
|
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.11.
|
|
52
|
+
"what-core": "^0.11.7"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"src",
|
package/src/babel-plugin.js
CHANGED
|
@@ -47,6 +47,32 @@ const SIGNAL_CREATORS = new Set([
|
|
|
47
47
|
'createResource', 'useSWR', 'useQuery', 'useInfiniteQuery',
|
|
48
48
|
]);
|
|
49
49
|
|
|
50
|
+
const SERVER_ACTION_SOURCES = new Set([
|
|
51
|
+
'what-framework/server',
|
|
52
|
+
'what-server',
|
|
53
|
+
'what-server/actions',
|
|
54
|
+
]);
|
|
55
|
+
|
|
56
|
+
function stableActionHash(value) {
|
|
57
|
+
let hash = 0xcbf29ce484222325n;
|
|
58
|
+
for (let i = 0; i < value.length; i++) {
|
|
59
|
+
hash ^= BigInt(value.charCodeAt(i));
|
|
60
|
+
hash = BigInt.asUintN(64, hash * 0x100000001b3n);
|
|
61
|
+
}
|
|
62
|
+
return hash.toString(36);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function normalizeActionFilename(filename, projectRoot) {
|
|
66
|
+
const clean = String(filename || '<unknown>')
|
|
67
|
+
.replace(/\\/g, '/')
|
|
68
|
+
.replace(/[?#].*$/, '');
|
|
69
|
+
const root = String(projectRoot || '')
|
|
70
|
+
.replace(/\\/g, '/')
|
|
71
|
+
.replace(/\/+$/, '');
|
|
72
|
+
if (root && clean.startsWith(`${root}/`)) return clean.slice(root.length + 1);
|
|
73
|
+
return clean.replace(/^\.\//, '');
|
|
74
|
+
}
|
|
75
|
+
|
|
50
76
|
// Normalize JSX text per React/Babel rules:
|
|
51
77
|
// - Split on newlines, treat tabs as spaces.
|
|
52
78
|
// - For interior lines: trim leading and trailing horizontal whitespace.
|
|
@@ -2042,6 +2068,114 @@ export default function whatBabelPlugin({ types: t }) {
|
|
|
2042
2068
|
}
|
|
2043
2069
|
}
|
|
2044
2070
|
|
|
2071
|
+
function actionBindingName(callPath) {
|
|
2072
|
+
const parent = callPath.parentPath;
|
|
2073
|
+
if (parent?.isVariableDeclarator() && t.isIdentifier(parent.node.id)) {
|
|
2074
|
+
return parent.node.id.name;
|
|
2075
|
+
}
|
|
2076
|
+
if (parent?.isAssignmentExpression() && t.isIdentifier(parent.node.left)) {
|
|
2077
|
+
return parent.node.left.name;
|
|
2078
|
+
}
|
|
2079
|
+
if (parent?.isExportDefaultDeclaration()) return 'default';
|
|
2080
|
+
if (parent?.isObjectProperty() && !parent.node.computed) {
|
|
2081
|
+
if (t.isIdentifier(parent.node.key)) return parent.node.key.name;
|
|
2082
|
+
if (t.isStringLiteral(parent.node.key)) return parent.node.key.value;
|
|
2083
|
+
}
|
|
2084
|
+
return null;
|
|
2085
|
+
}
|
|
2086
|
+
|
|
2087
|
+
function isServerActionCall(callPath, state) {
|
|
2088
|
+
const callee = callPath.node.callee;
|
|
2089
|
+
if (t.isIdentifier(callee)) return state.serverActionBindings.has(callee.name);
|
|
2090
|
+
return t.isMemberExpression(callee)
|
|
2091
|
+
&& !callee.computed
|
|
2092
|
+
&& t.isIdentifier(callee.object)
|
|
2093
|
+
&& t.isIdentifier(callee.property, { name: 'action' })
|
|
2094
|
+
&& state.serverActionNamespaces.has(callee.object.name);
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
function staticActionId(optionsNode) {
|
|
2098
|
+
if (!t.isObjectExpression(optionsNode)) return { property: null, value: null };
|
|
2099
|
+
for (const property of optionsNode.properties) {
|
|
2100
|
+
if (!t.isObjectProperty(property)) continue;
|
|
2101
|
+
const key = t.isIdentifier(property.key) && !property.computed ? property.key.name
|
|
2102
|
+
: t.isStringLiteral(property.key) ? property.key.value
|
|
2103
|
+
: null;
|
|
2104
|
+
if (key !== 'id') continue;
|
|
2105
|
+
if (t.isStringLiteral(property.value)) return { property, value: property.value.value };
|
|
2106
|
+
if (t.isTemplateLiteral(property.value) && property.value.expressions.length === 0) {
|
|
2107
|
+
return { property, value: property.value.quasis[0]?.value.cooked || '' };
|
|
2108
|
+
}
|
|
2109
|
+
return { property, value: null };
|
|
2110
|
+
}
|
|
2111
|
+
return { property: null, value: null };
|
|
2112
|
+
}
|
|
2113
|
+
|
|
2114
|
+
function registerActionId(callPath, state, id, bindingName, relativeFilename) {
|
|
2115
|
+
const loc = callPath.node.loc?.start || { line: 0, column: 0 };
|
|
2116
|
+
const source = `${relativeFilename}:${loc.line}:${loc.column + 1}`;
|
|
2117
|
+
const key = `${relativeFilename}#${bindingName}`;
|
|
2118
|
+
const existing = state.serverActionIds.get(id);
|
|
2119
|
+
if (existing) {
|
|
2120
|
+
throw callPath.buildCodeFrameError(
|
|
2121
|
+
`Duplicate server action ID "${id}". ` +
|
|
2122
|
+
`First declared by "${existing.bindingName}" at ${existing.source}; ` +
|
|
2123
|
+
`conflicts with "${bindingName}" at ${source}.`
|
|
2124
|
+
);
|
|
2125
|
+
}
|
|
2126
|
+
const metadata = { id, key, bindingName, filename: relativeFilename, source, loc };
|
|
2127
|
+
state.serverActionIds.set(id, metadata);
|
|
2128
|
+
if (typeof state.opts?.onActionId === 'function') {
|
|
2129
|
+
try {
|
|
2130
|
+
state.opts.onActionId(metadata);
|
|
2131
|
+
} catch (error) {
|
|
2132
|
+
throw callPath.buildCodeFrameError(error instanceof Error ? error.message : String(error));
|
|
2133
|
+
}
|
|
2134
|
+
}
|
|
2135
|
+
}
|
|
2136
|
+
|
|
2137
|
+
function transformServerAction(callPath, state) {
|
|
2138
|
+
if (!isServerActionCall(callPath, state)) return;
|
|
2139
|
+
|
|
2140
|
+
const bindingName = actionBindingName(callPath);
|
|
2141
|
+
if (!bindingName) {
|
|
2142
|
+
if (!state.opts?.production) {
|
|
2143
|
+
console.warn(
|
|
2144
|
+
`[what-compiler] Could not derive a stable server action ID at ` +
|
|
2145
|
+
`${state.serverActionFilename}:${callPath.node.loc?.start.line || 0}. ` +
|
|
2146
|
+
'Assign action(...) to a named local or export, or pass { id } explicitly.'
|
|
2147
|
+
);
|
|
2148
|
+
}
|
|
2149
|
+
return;
|
|
2150
|
+
}
|
|
2151
|
+
|
|
2152
|
+
const optionsNode = callPath.node.arguments[1];
|
|
2153
|
+
const explicit = staticActionId(optionsNode);
|
|
2154
|
+
if (explicit.property) {
|
|
2155
|
+
if (explicit.value !== null) {
|
|
2156
|
+
registerActionId(callPath, state, explicit.value, bindingName, state.serverActionFilename);
|
|
2157
|
+
}
|
|
2158
|
+
return;
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2161
|
+
const id = `wa1_${stableActionHash(`${state.serverActionFilename}#${bindingName}`)}`;
|
|
2162
|
+
registerActionId(callPath, state, id, bindingName, state.serverActionFilename);
|
|
2163
|
+
const idProperty = t.objectProperty(t.identifier('id'), t.stringLiteral(id));
|
|
2164
|
+
|
|
2165
|
+
if (!optionsNode) {
|
|
2166
|
+
callPath.node.arguments.push(t.objectExpression([idProperty]));
|
|
2167
|
+
} else if (t.isObjectExpression(optionsNode)) {
|
|
2168
|
+
optionsNode.properties.unshift(idProperty);
|
|
2169
|
+
} else {
|
|
2170
|
+
// Put the generated default before the caller's dynamic options so a
|
|
2171
|
+
// runtime `options.id` remains authoritative.
|
|
2172
|
+
callPath.node.arguments[1] = t.objectExpression([
|
|
2173
|
+
idProperty,
|
|
2174
|
+
t.spreadElement(optionsNode),
|
|
2175
|
+
]);
|
|
2176
|
+
}
|
|
2177
|
+
}
|
|
2178
|
+
|
|
2045
2179
|
// =====================================================
|
|
2046
2180
|
// Plugin entry
|
|
2047
2181
|
// =====================================================
|
|
@@ -2080,6 +2214,14 @@ export default function whatBabelPlugin({ types: t }) {
|
|
|
2080
2214
|
state.nextVarId = () => `_el$${state._varCounter++}`;
|
|
2081
2215
|
state.nextMemoId = () => `_c$${state._memoCounter++}`;
|
|
2082
2216
|
|
|
2217
|
+
state.serverActionBindings = new Set();
|
|
2218
|
+
state.serverActionNamespaces = new Set();
|
|
2219
|
+
state.serverActionIds = new Map();
|
|
2220
|
+
state.serverActionFilename = normalizeActionFilename(
|
|
2221
|
+
state.file?.opts?.filename,
|
|
2222
|
+
state.opts?.projectRoot || state.file?.opts?.cwd
|
|
2223
|
+
);
|
|
2224
|
+
|
|
2083
2225
|
// Collect signal names for smart reactivity detection
|
|
2084
2226
|
state.signalNames = new Set();
|
|
2085
2227
|
|
|
@@ -2117,11 +2259,26 @@ export default function whatBabelPlugin({ types: t }) {
|
|
|
2117
2259
|
state.importedIdentifiers.add(localName);
|
|
2118
2260
|
}
|
|
2119
2261
|
}
|
|
2262
|
+
|
|
2263
|
+
if (SERVER_ACTION_SOURCES.has(source)) {
|
|
2264
|
+
if (
|
|
2265
|
+
t.isImportSpecifier(spec)
|
|
2266
|
+
&& t.isIdentifier(spec.imported, { name: 'action' })
|
|
2267
|
+
&& t.isIdentifier(spec.local)
|
|
2268
|
+
) {
|
|
2269
|
+
state.serverActionBindings.add(spec.local.name);
|
|
2270
|
+
} else if (t.isImportNamespaceSpecifier(spec) && t.isIdentifier(spec.local)) {
|
|
2271
|
+
state.serverActionNamespaces.add(spec.local.name);
|
|
2272
|
+
}
|
|
2273
|
+
}
|
|
2120
2274
|
}
|
|
2121
2275
|
}
|
|
2122
2276
|
}
|
|
2123
2277
|
|
|
2124
2278
|
path.traverse({
|
|
2279
|
+
CallExpression(callPath) {
|
|
2280
|
+
transformServerAction(callPath, state);
|
|
2281
|
+
},
|
|
2125
2282
|
VariableDeclarator(declPath) {
|
|
2126
2283
|
const init = declPath.node.init;
|
|
2127
2284
|
if (!init || !t.isCallExpression(init)) return;
|
package/src/vite-plugin.js
CHANGED
|
@@ -16,6 +16,18 @@ import { setupErrorOverlay } from './error-overlay.js';
|
|
|
16
16
|
|
|
17
17
|
const VIRTUAL_ROUTES_ID = 'virtual:what-routes';
|
|
18
18
|
const RESOLVED_VIRTUAL_ID = '\0' + VIRTUAL_ROUTES_ID;
|
|
19
|
+
const SERVER_ACTION_MODULE_RE = /(?:from\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"]|import\s*['"](?:what-framework\/server|what-server(?:\/actions)?)['"])/;
|
|
20
|
+
const SCRIPT_MODULE_RE = /\.[cm]?[jt]sx?$/;
|
|
21
|
+
|
|
22
|
+
function patternMatches(pattern, value) {
|
|
23
|
+
if (!pattern) return false;
|
|
24
|
+
if (Array.isArray(pattern)) return pattern.some((entry) => patternMatches(entry, value));
|
|
25
|
+
if (pattern instanceof RegExp) {
|
|
26
|
+
pattern.lastIndex = 0;
|
|
27
|
+
return pattern.test(value);
|
|
28
|
+
}
|
|
29
|
+
return typeof pattern === 'function' ? pattern(value) : false;
|
|
30
|
+
}
|
|
19
31
|
|
|
20
32
|
/**
|
|
21
33
|
* Shape the "preserve JSX" transform config for the running Vite version.
|
|
@@ -82,6 +94,32 @@ export default function whatVitePlugin(options = {}) {
|
|
|
82
94
|
let pagesDir = '';
|
|
83
95
|
let server = null;
|
|
84
96
|
let isDevMode = false;
|
|
97
|
+
const actionIdRegistry = new Map();
|
|
98
|
+
|
|
99
|
+
function registerActionId(metadata) {
|
|
100
|
+
const existing = actionIdRegistry.get(metadata.id);
|
|
101
|
+
if (existing && existing.key !== metadata.key) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Duplicate server action ID "${metadata.id}". ` +
|
|
104
|
+
`First declared by "${existing.bindingName}" at ${existing.source}; ` +
|
|
105
|
+
`conflicts with "${metadata.bindingName}" at ${metadata.source}.`
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
actionIdRegistry.set(metadata.id, metadata);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function clearActionIdsForFile(filename) {
|
|
112
|
+
for (const [id, metadata] of actionIdRegistry) {
|
|
113
|
+
if (metadata.filename === filename) actionIdRegistry.delete(id);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function actionFilenameForFile(filename) {
|
|
118
|
+
const cleanFilename = filename.replace(/[?#].*$/, '');
|
|
119
|
+
return rootDir
|
|
120
|
+
? path.relative(rootDir, cleanFilename).split(path.sep).join('/')
|
|
121
|
+
: cleanFilename;
|
|
122
|
+
}
|
|
85
123
|
|
|
86
124
|
return {
|
|
87
125
|
name: 'vite-plugin-what',
|
|
@@ -111,6 +149,9 @@ export default function whatVitePlugin(options = {}) {
|
|
|
111
149
|
});
|
|
112
150
|
|
|
113
151
|
devServer.watcher.on('unlink', (file) => {
|
|
152
|
+
// Vite will never transform an unlinked module again, so explicitly
|
|
153
|
+
// release its IDs before handling the narrower pages refresh path.
|
|
154
|
+
clearActionIdsForFile(actionFilenameForFile(file));
|
|
114
155
|
if (file.startsWith(pagesDir)) {
|
|
115
156
|
const mod = devServer.moduleGraph.getModuleById(RESOLVED_VIRTUAL_ID);
|
|
116
157
|
if (mod) {
|
|
@@ -137,9 +178,20 @@ export default function whatVitePlugin(options = {}) {
|
|
|
137
178
|
|
|
138
179
|
// Transform JSX files
|
|
139
180
|
transform(code, id) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
181
|
+
const cleanId = id.replace(/[?#].*$/, '');
|
|
182
|
+
const hasJsx = patternMatches(include, cleanId);
|
|
183
|
+
const isScriptModule = SCRIPT_MODULE_RE.test(cleanId);
|
|
184
|
+
const hasServerActions = isScriptModule && SERVER_ACTION_MODULE_RE.test(code);
|
|
185
|
+
if (exclude && patternMatches(exclude, cleanId)) return null;
|
|
186
|
+
|
|
187
|
+
// Clear before either transforming the replacement or returning early.
|
|
188
|
+
// Otherwise a .ts/.js module that removes its final action import leaves
|
|
189
|
+
// an ID reserved forever and produces false duplicate-ID failures.
|
|
190
|
+
if (isScriptModule) clearActionIdsForFile(actionFilenameForFile(cleanId));
|
|
191
|
+
// Server action metadata is required in plain .js/.ts modules too, so
|
|
192
|
+
// those modules pass through the same hermetic Babel transform even when
|
|
193
|
+
// they contain no JSX.
|
|
194
|
+
if (!hasJsx && !hasServerActions) return null;
|
|
143
195
|
|
|
144
196
|
try {
|
|
145
197
|
const result = transformSync(code, {
|
|
@@ -153,7 +205,11 @@ export default function whatVitePlugin(options = {}) {
|
|
|
153
205
|
configFile: false,
|
|
154
206
|
babelrc: false,
|
|
155
207
|
plugins: [
|
|
156
|
-
[whatBabelPlugin, {
|
|
208
|
+
[whatBabelPlugin, {
|
|
209
|
+
production,
|
|
210
|
+
projectRoot: rootDir || process.cwd(),
|
|
211
|
+
onActionId: registerActionId,
|
|
212
|
+
}]
|
|
157
213
|
],
|
|
158
214
|
parserOpts: {
|
|
159
215
|
plugins: ['jsx', 'typescript']
|