what-compiler 0.8.4 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/babel-plugin.js +539 -87
- package/dist/babel-plugin.js.map +2 -2
- package/dist/babel-plugin.min.js +1 -1
- package/dist/babel-plugin.min.js.map +3 -3
- package/dist/file-router.js +78 -2
- package/dist/file-router.js.map +2 -2
- package/dist/file-router.min.js +3 -2
- package/dist/file-router.min.js.map +3 -3
- package/dist/index.js +595 -93
- package/dist/index.js.map +2 -2
- package/dist/index.min.js +6 -6
- package/dist/index.min.js.map +3 -3
- package/dist/vite-plugin.js +595 -93
- package/dist/vite-plugin.js.map +2 -2
- package/dist/vite-plugin.min.js +6 -6
- package/dist/vite-plugin.min.js.map +3 -3
- package/package.json +2 -2
- package/src/babel-plugin.js +898 -105
- package/src/file-router.js +104 -2
- package/src/vite-plugin.js +60 -3
package/dist/babel-plugin.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var ee=new Set(["preventDefault","stopPropagation","once","capture","passive","self"]),ie=new Set(["once","capture","passive"]),ne=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),re=new Set(["click","input","change","keydown","keyup","submit","focusin","focusout","mousedown","mouseup"]),L=new Set(["Math","Number","String","Boolean","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","JSON","Date","Array","Object","console","RegExp"]),U=new Set(["useSignal","signal","computed","useComputed","useState","useReducer","createResource","useSWR","useQuery","useInfiniteQuery"]);function se({types:e}){function w(i){let n=i.split("|"),r=n[0],s=n.slice(1).filter(a=>ee.has(a));return{eventName:r,modifiers:s}}function I(i){return i.startsWith("bind:")}function C(i){return i.slice(5)}function S(i){return/^[A-Z]/.test(i)}function b(i){return ne.has(String(i).toLowerCase())}function y(i){return i?e.isJSXExpressionContainer(i)?i.expression:e.isStringLiteral(i)?i:e.stringLiteral(i.value||""):e.booleanLiteral(!0)}function j(i){return i==="className"?"class":i==="htmlFor"?"for":i}function v(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 T(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 A(i,n){return n.has(i)}function M(i){let n=new Set;function r(a){let o=a.init;if(!o||!e.isCallExpression(o))return;let t=o.callee,c="";if(e.isIdentifier(t)?c=t.name:e.isMemberExpression(t)&&e.isIdentifier(t.property)&&(c=t.property.name),U.has(c)){let p=a.id;if(e.isIdentifier(p))n.add(p.name);else if(e.isArrayPattern(p))for(let m of p.elements)e.isIdentifier(m)&&n.add(m.name);else if(e.isObjectPattern(p))for(let m of p.properties)e.isObjectProperty(m)&&e.isIdentifier(m.value)&&n.add(m.value.name)}}let s=i.scope;for(;s;){for(let[a,o]of Object.entries(s.bindings))if(o.path.isVariableDeclarator()&&r(o.path.node),o.path.isIdentifier()||o.kind==="param"){let t=o.scope.path;if(t&&t.node&&t.node.params){for(let c of t.node.params)if(e.isObjectPattern(c))for(let p of c.properties)e.isObjectProperty(p)&&e.isIdentifier(p.value)?n.add(p.value.name):e.isRestElement(p)&&e.isIdentifier(p.argument)&&n.add(p.argument.name)}}s=s.parent}return n}function te(i){return M(i)}function O(i){if(!e.isCallExpression(i))return!1;let n=i.callee;return e.isMemberExpression(n)&&e.isIdentifier(n.object)?L.has(n.object.name):e.isIdentifier(n)?L.has(n.name):!1}function R(i,n,r){if(!n)return!1;if(e.isCallExpression(i)){if(e.isIdentifier(i.callee)&&A(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!L.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&A(i.callee.object.name,n)||O(i))return!1;if(i.arguments.some(s=>x(s,n,r)))return!0}return!1}function x(i,n,r){return n||(n=new Set),e.isCallExpression(i)?e.isIdentifier(i.callee)&&A(i.callee.name,n)||r&&e.isIdentifier(i.callee)&&r.has(i.callee.name)&&!L.has(i.callee.name)||e.isMemberExpression(i.callee)&&e.isIdentifier(i.callee.object)&&A(i.callee.object.name,n)?!0:O(i)?i.arguments.some(s=>x(s,n,r)):e.isIdentifier(i.callee)?i.arguments.some(s=>x(s,n,r)):x(i.callee,n,r)||i.arguments.some(s=>x(s,n,r)):e.isIdentifier(i)?A(i.name,n):e.isMemberExpression(i)?x(i.object,n,r):e.isConditionalExpression(i)?x(i.test,n,r)||x(i.consequent,n,r)||x(i.alternate,n,r):e.isBinaryExpression(i)||e.isLogicalExpression(i)?x(i.left,n,r)||x(i.right,n,r):e.isUnaryExpression(i)?x(i.argument,n,r):e.isTemplateLiteral(i)?i.expressions.some(s=>x(s,n,r)):e.isObjectExpression(i)?i.properties.some(s=>e.isObjectProperty(s)&&x(s.value,n,r)):e.isArrayExpression(i)?i.elements.some(s=>s&&x(s,n,r)):(e.isArrowFunctionExpression(i)||e.isFunctionExpression(i),!1)}function N(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(S(r))return!1;for(let s of n.attributes){if(e.isJSXSpreadAttribute(s))return!1;let a=s.value;if(e.isJSXExpressionContainer(a))return!1}return i.children.every(N)}return!1}function W(i){return e.isJSXSpreadAttribute(i)?!0:i.value?e.isJSXExpressionContainer(i.value):!1}function P(i){if(e.isJSXText(i)){let o=i.value.replace(/\n\s+/g," ").trim();return o?H(o):""}if(e.isJSXExpressionContainer(i))return e.isJSXEmptyExpression(i.expression)?"":"<!--$-->";if(!e.isJSXElement(i))return"";let n=i.openingElement,r=n.name.name;if(S(r))return"";let s=`<${r}`;for(let o of n.attributes){if(e.isJSXSpreadAttribute(o))continue;let t=v(o);if(t==="key"||t.startsWith("on")||t.startsWith("bind:")||t.includes("|"))continue;let c=t;if(t==="className"&&(c="class"),t==="htmlFor"&&(c="for"),!o.value)s+=` ${c}`;else if(e.isStringLiteral(o.value))s+=` ${c}="${Z(o.value.value)}"`;else if(e.isJSXExpressionContainer(o.value))continue}let a=i.openingElement.selfClosing;if(a&&b(r))return s+=">",s;if(a)return s+=`></${r}>`,s;s+=">";for(let o of i.children)if(e.isJSXText(o)){let t=o.value.replace(/\n\s+/g," ").trim();t&&(s+=H(t))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||(s+="<!--$-->"):e.isJSXElement(o)&&(S(o.openingElement.name.name)?s+="<!--$-->":s+=P(o));return s+=`</${r}>`,s}function H(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function Z(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function _(i,n){let{node:r}=i,s=r.openingElement,a=s.name.name;if(S(a))return z(i,n);if(a==="For")return Q(i,n);if(a==="Show")return q(i,n);let o=s.attributes,t=r.children,c=t.every(N),p=o.every(d=>!W(d)),m=o.every(d=>{if(e.isJSXSpreadAttribute(d))return!1;let f=v(d);return!f?.startsWith("on")&&!f?.startsWith("bind:")});if(c&&p&&m){let d=P(r);if(d){let f=B(n,d);return n.needsTemplate=!0,e.callExpression(e.identifier(f),[])}}let E=P(r);if(!E){let d=r.loc,f=n.filename||n.file?.opts?.filename||"<unknown>",h=d?`:${d.start.line}:${d.start.column}`:"";return console.warn(`[what-compiler] Could not extract template for <${a}> at ${f}${h}. Falling back to h() for this element. This element could not be statically analyzed. Consider simplifying the JSX.`),n.needsH=!0,k(i,n)}let g=B(n,E);n.needsTemplate=!0;let l=n.nextVarId(),u=[e.variableDeclaration("const",[e.variableDeclarator(e.identifier(l),e.callExpression(e.identifier(g),[]))])];return V(u,l,o,n),G(u,l,t,r,n),n._pendingSetup||(n._pendingSetup=[]),n._pendingSetup.push(...u),e.identifier(l)}function k(i,n){let{node:r}=i,s=r.openingElement,a=s.name.name,o=s.attributes,t=r.children,c=[];for(let E of o){if(e.isJSXSpreadAttribute(E))continue;let g=v(E),l=y(E.value),u=j(g);c.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(u)?e.identifier(u):e.stringLiteral(u),l))}let p=[];for(let E of t)if(e.isJSXText(E)){let g=E.value.replace(/\n\s+/g," ").trim();g&&p.push(e.stringLiteral(g))}else e.isJSXExpressionContainer(E)?e.isJSXEmptyExpression(E.expression)||p.push(E.expression):e.isJSXElement(E)?p.push(_({node:E},n)):e.isJSXFragment(E)&&p.push(F({node:E},n));let m=c.length>0?e.objectExpression(c):e.nullLiteral();return e.callExpression(e.identifier("h"),[e.stringLiteral(a),m,...p])}function V(i,n,r,s){function a(o,t){return s.needsSetProp=!0,e.callExpression(e.identifier("_$setProp"),[e.identifier(n),e.stringLiteral(o),t])}for(let o of r){if(e.isJSXSpreadAttribute(o)){s.needsSpread=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$spread"),[e.identifier(n),o.argument])));continue}let t=v(o);if(t!=="key"){if(t==="ref"){let c=y(o.value);i.push(e.expressionStatement(e.conditionalExpression(e.binaryExpression("===",e.unaryExpression("typeof",c),e.stringLiteral("function")),e.callExpression(e.cloneNode(c),[e.identifier(n)]),e.assignmentExpression("=",e.memberExpression(e.cloneNode(c),e.identifier("current")),e.identifier(n)))));continue}if(t.startsWith("on")&&!t.includes("|")){let c=t.slice(2).toLowerCase(),p=y(o.value);re.has(c)?(s.needsDelegation=!0,s.delegatedEvents||(s.delegatedEvents=new Set),s.delegatedEvents.add(c),i.push(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(n),e.identifier(`__${c}`)),p)))):i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),[e.stringLiteral(c),p])));continue}if(t.startsWith("on")&&t.includes("|")){let{eventName:c,modifiers:p}=w(t),m=y(o.value),E=T(m,p),g=c.slice(2).toLowerCase(),l=p.filter(d=>ie.has(d)),u=[e.stringLiteral(g),E];if(l.length>0){let d=l.map(f=>e.objectProperty(e.identifier(f),e.booleanLiteral(!0)));u.push(e.objectExpression(d))}i.push(e.expressionStatement(e.callExpression(e.memberExpression(e.identifier(n),e.identifier("addEventListener")),u)));continue}if(I(t)){let c=C(t),p=o.value.expression;s.needsEffect=!0,c==="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(p),[])))]))),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(p),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))])))):c==="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(p),[])))]))),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(p),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))]))]))));continue}if(e.isJSXExpressionContainer(o.value)){let c=o.value.expression,p=j(t);if(x(c,s.signalNames,s.importedIdentifiers)){s.needsEffect=!0;let m=e.callExpression(e.identifier("_$effect"),[e.arrowFunctionExpression([],a(p,c))]);R(c,s.signalNames,s.importedIdentifiers)&&e.addComment(m,"leading"," @what-dev: effect wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(m))}else i.push(e.expressionStatement(a(p,c)))}}}}function G(i,n,r,s,a){let o=[],t=0;for(let l of r){if(e.isJSXText(l)){l.value.replace(/\n\s+/g," ").trim()&&t++;continue}if(e.isJSXExpressionContainer(l)){if(e.isJSXEmptyExpression(l.expression))continue;o.push({type:"expression",child:l,childIndex:t}),t++;continue}if(e.isJSXElement(l)){let u=l.openingElement.name.name;if(S(u)||u==="For"||u==="Show")o.push({type:"component",child:l,childIndex:t}),t++;else{let d=l.openingElement.attributes.some(W)||l.openingElement.attributes.some(f=>!e.isJSXSpreadAttribute(f)&&v(f)?.startsWith("on"))||!l.children.every(N);o.push({type:"static",child:l,childIndex:t,hasAnythingDynamic:d}),t++}continue}e.isJSXFragment(l)&&o.push({type:"fragment",child:l})}let c=o.filter(l=>l.type==="expression"||l.type==="component"||l.type==="static"&&l.hasAnythingDynamic),p=o.some(l=>l.type==="expression"||l.type==="component"),m=c.length>=2&&p,E=new Map;if(m)for(let l of c){let u=`_m$${l.childIndex}`,d=a.nextVarId();E.set(l.childIndex,d),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(d),D(n,l.childIndex))]))}function g(l){return E.has(l)?e.identifier(E.get(l)):D(n,l)}for(let l of o){if(l.type==="expression"){let u=l.child.expression,d=g(l.childIndex);if(a.needsInsert=!0,x(u,a.signalNames,a.importedIdentifiers)){let f=e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],u),d]);R(u,a.signalNames,a.importedIdentifiers)&&e.addComment(f,"leading"," @what-dev: reactive wrapping may be unnecessary \u2014 expression contains a non-signal function call with reactive args ",!1),i.push(e.expressionStatement(f))}else i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),u,d])));continue}if(l.type==="component"){let u=_({node:l.child},a),d=g(l.childIndex);a.needsInsert=!0,i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),u,d])));continue}if(l.type==="static"&&l.hasAnythingDynamic){let u;E.has(l.childIndex)?u=E.get(l.childIndex):(u=a.nextVarId(),i.push(e.variableDeclaration("const",[e.variableDeclarator(e.identifier(u),D(n,l.childIndex))]))),V(i,u,l.child.openingElement.attributes,a),G(i,u,l.child.children,l.child,a);continue}if(l.type==="fragment"){for(let u of l.child.children)if(e.isJSXExpressionContainer(u)&&!e.isJSXEmptyExpression(u.expression)){a.needsInsert=!0;let d=u.expression;x(d,a.signalNames,a.importedIdentifiers)?i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),e.arrowFunctionExpression([],d)]))):i.push(e.expressionStatement(e.callExpression(e.identifier("_$insert"),[e.identifier(n),d])))}}}}function D(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 z(i,n){let{node:r}=i,s=r.openingElement,a=s.name.name,o=s.attributes,t=r.children,c=null,p=[];for(let f of o){if(e.isJSXAttribute(f)){let h;if(e.isJSXNamespacedName(f.name)?h=`${f.name.namespace.name}:${f.name.name.name}`:h=f.name.name,h&&typeof h=="string"&&h.startsWith("client:")){let J=h.slice(7);f.value?c={type:J,value:f.value.value}:c={type:J};continue}}p.push(f)}if(c){n.needsCreateComponent=!0,n.needsIsland=!0;let f=[e.objectProperty(e.identifier("component"),e.identifier(a)),e.objectProperty(e.identifier("mode"),e.stringLiteral(c.type))];c.value&&f.push(e.objectProperty(e.identifier("mediaQuery"),e.stringLiteral(c.value)));for(let h of p){if(e.isJSXSpreadAttribute(h))continue;let J=v(h),X=y(h.value);f.push(e.objectProperty(e.identifier(J),X))}return e.callExpression(e.identifier("_$createComponent"),[e.identifier("Island"),e.objectExpression(f),e.arrayExpression([])])}n.needsCreateComponent=!0;let m=[],E=!1,g=null;for(let f of p){if(e.isJSXSpreadAttribute(f)){E=!0,g=f.argument;continue}let h=v(f);if(h==="key")continue;if(I(h)){let X=C(h),$=f.value.expression;X==="value"?(m.push(e.objectProperty(e.identifier("value"),e.callExpression(e.cloneNode($),[]))),m.push(e.objectProperty(e.identifier("onInput"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode($),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("value"))]))))):X==="checked"&&(m.push(e.objectProperty(e.identifier("checked"),e.callExpression(e.cloneNode($),[]))),m.push(e.objectProperty(e.identifier("onChange"),e.arrowFunctionExpression([e.identifier("e")],e.callExpression(e.memberExpression(e.cloneNode($),e.identifier("set")),[e.memberExpression(e.memberExpression(e.identifier("e"),e.identifier("target")),e.identifier("checked"))])))));continue}if(h.startsWith("on")&&h.includes("|")){let{eventName:X,modifiers:$}=w(h),K=y(f.value),Y=T(K,$);m.push(e.objectProperty(e.identifier(X),Y));continue}let J=y(f.value);m.push(e.objectProperty(/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(h)?e.identifier(h):e.stringLiteral(h),J))}let l=[];for(let f of t)if(e.isJSXText(f)){let h=f.value.replace(/\n\s+/g," ").trim();h&&l.push(e.stringLiteral(h))}else e.isJSXExpressionContainer(f)?e.isJSXEmptyExpression(f.expression)||l.push(f.expression):e.isJSXElement(f)?l.push(_({node:f},n)):e.isJSXFragment(f)&&l.push(F({node:f},n));let u;E?m.length>0?u=e.callExpression(e.memberExpression(e.identifier("Object"),e.identifier("assign")),[e.objectExpression([]),g,e.objectExpression(m)]):u=g:m.length>0?u=e.objectExpression(m):u=e.nullLiteral();let d=l.length>0?e.arrayExpression(l):e.arrayExpression([]);return e.callExpression(e.identifier("_$createComponent"),[e.identifier(a),u,d])}function Q(i,n){let{node:r}=i,s=r.openingElement.attributes,a=r.children,o=null;for(let c of s)e.isJSXAttribute(c)&&v(c)==="each"&&(o=y(c.value));if(!o)return console.warn('[what-compiler] <For> element missing "each" attribute.'),n.needsH=!0,k(i,n);let t=null;for(let c of a)if(e.isJSXExpressionContainer(c)&&!e.isJSXEmptyExpression(c.expression)){t=c.expression;break}return t?(n.needsMapArray=!0,e.callExpression(e.identifier("_$mapArray"),[o,t])):(console.warn("[what-compiler] <For> element missing render function child."),n.needsH=!0,k(i,n))}function q(i,n){return n.needsCreateComponent=!0,z(i,n)}function F(i,n){let{node:r}=i,s=r.children,a=[];for(let o of s)if(e.isJSXText(o)){let t=o.value.replace(/\n\s+/g," ").trim();t&&a.push(e.stringLiteral(t))}else e.isJSXExpressionContainer(o)?e.isJSXEmptyExpression(o.expression)||a.push(o.expression):e.isJSXElement(o)?a.push(_({node:o},n)):e.isJSXFragment(o)&&a.push(F({node:o},n));return a.length===1?a[0]:e.arrayExpression(a)}function B(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}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.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._pendingSetup=[],n.nextVarId=()=>`_el$${n._varCounter++}`,n.signalNames=new Set,n.importedIdentifiers=new Set;for(let r of i.node.body)if(e.isImportDeclaration(r)){let s=r.source.value,a=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 t=null;(e.isImportSpecifier(o)&&e.isIdentifier(o.local)||e.isImportDefaultSpecifier(o)&&e.isIdentifier(o.local)||e.isImportNamespaceSpecifier(o)&&e.isIdentifier(o.local))&&(t=o.local.name),t&&(a||/^(use|create)[A-Z]/.test(t))&&n.importedIdentifiers.add(t)}}i.traverse({VariableDeclarator(r){let s=r.node.init;if(!s||!e.isCallExpression(s))return;let a=s.callee,o="";if(e.isIdentifier(a)?o=a.name:e.isMemberExpression(a)&&e.isIdentifier(a.property)&&(o=a.property.name),U.has(o)){let t=r.node.id;if(e.isIdentifier(t))n.signalNames.add(t.name);else if(e.isArrayPattern(t))for(let c of t.elements)e.isIdentifier(c)&&n.signalNames.add(c.name);else if(e.isObjectPattern(t))for(let c of t.properties)e.isObjectProperty(c)&&e.isIdentifier(c.value)&&n.signalNames.add(c.value.name)}}})},exit(i,n){for(let a of n.templates.reverse())i.unshiftContainer("body",e.variableDeclaration("const",[e.variableDeclarator(e.identifier(a.id),e.callExpression(e.identifier("_$template"),[e.stringLiteral(a.html)]))]));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.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 a=null;for(let o of i.node.body)if(e.isImportDeclaration(o)&&(o.source.value==="what-framework/render"||o.source.value==="what-core/render")){a=o;break}if(a){let o=new Set(a.specifiers.filter(t=>e.isImportSpecifier(t)).map(t=>t.imported.name));for(let t of r)o.has(t.imported.name)||a.specifiers.push(t)}else i.unshiftContainer("body",e.importDeclaration(r,e.stringLiteral("what-framework/render")))}if(s.length>0&&oe(i,e,s),n.needsDelegation&&n.delegatedEvents&&n.delegatedEvents.size>0){let a=e.arrayExpression([...n.delegatedEvents].map(o=>e.stringLiteral(o)));i.pushContainer("body",e.expressionStatement(e.callExpression(e.identifier("_$delegateEvents"),[a])))}}},JSXElement(i,n){n.signalNames=M(i),n._pendingSetup=[];let r=_(i,n),s=n._pendingSetup;if(n._pendingSetup=[],s.length>0){let a=i;for(;a&&!a.isStatement();)a=a.parentPath;if(a&&a.isStatement()){for(let o of s)a.insertBefore(o);i.replaceWith(r)}else s.push(e.returnStatement(r)),i.replaceWith(e.callExpression(e.arrowFunctionExpression([],e.blockStatement(s)),[]))}else i.replaceWith(r)},JSXFragment(i,n){let r=F(i,n);i.replaceWith(r)}}}}function oe(e,w,I){let C=null;for(let S of e.node.body)if(w.isImportDeclaration(S)&&(S.source.value==="what-core"||S.source.value==="what-framework")){C=S;break}if(C){let S=new Set(C.specifiers.filter(b=>w.isImportSpecifier(b)).map(b=>b.imported.name));for(let b of I)S.has(b.imported.name)||C.specifiers.push(b)}else{let S=w.importDeclaration(I,w.stringLiteral("what-framework"));e.unshiftContainer("body",S)}}export{se as default};
|
|
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};
|
|
2
2
|
//# sourceMappingURL=babel-plugin.min.js.map
|