@dlightjs/reactivity-parser
Advanced tools
Comparing version 1.0.0-alpha.3 to 1.0.0-alpha.4
@@ -1,2 +0,2 @@ | ||
import{createErrorHandler as f}from"@dlightjs/error-handler";var d=f("ReactivityParser",{1:"Invalid ViewUnit type"});var m={acceptCharset:"accept-charset",colSpan:"colspan",contentEditable:"contenteditable",formAction:"formaction",formEnctype:"formenctype",formMethod:"formmethod",formNoValidate:"formnovalidate",formTarget:"formtarget",httpEquiv:"http-equiv",intrinsicSize:"intrinsicsize",inputMode:"inputmode",itemProp:"itemprop",maxLength:"maxlength",minLength:"minlength",noValidate:"novalidate",playsInline:"playsinline",referrerPolicy:"referrerpolicy",rowSpan:"rowspan",tabIndex:"tabindex"};function h(c){return m[c]||c}var o=class{config;options;t;traverse;availableProperties;dependencyMap;identifierDepMap;dependencyParseType;escapeNamings=["escape","$"];customHTMLProps=["do","element","innerHTML","prop","attr","dataset","forwardProps","textContent"];usedProperties=new Set;constructor(e,t){this.config=e,this.options=t,this.t=e.babelApi.types,this.traverse=e.babelApi.traverse,this.availableProperties=e.availableProperties,this.dependencyMap=e.dependencyMap,this.identifierDepMap=e.identifierDepMap??{},this.dependencyParseType=e.dependencyParseType??"property",t?.escapeNamings&&(this.escapeNamings=t.escapeNamings),t?.customHTMLProps&&(this.customHTMLProps=t.customHTMLProps)}parse(e){return this.parseViewUnit(e)}parseViewUnit(e){return this.isHTMLTemplate(e)?this.parseTemplate(e):e.type==="text"?this.parseText(e):e.type==="html"?this.parseHTML(e):e.type==="comp"?this.parseComp(e):e.type==="for"?this.parseFor(e):e.type==="if"?this.parseIf(e):e.type==="env"?this.parseEnv(e):e.type==="exp"?this.parseExp(e):e.type==="switch"?this.parseSwitch(e):e.type==="subview"?this.parseSubview(e):d.throw1()}parseTemplate(e){return{type:"template",template:this.generateTemplateString(e),props:this.parseTemplateProps(e),mutableParticles:this.generateMutableParticles(e)}}generateTemplateString(e){let t="",i=r=>{let s=r.tag.value,a=this.filterTemplateProps(Object.entries(r.props??[]).filter(([,p])=>this.isStaticProp(p)&&!(this.t.isBooleanLiteral(p.value)&&!p.value.value)).map(([p,{value:l}])=>[h(p),l.value])).map(([p,l])=>l===!0?` ${p}`:` ${p}="${l}"`).join("");t+=`<${s}${a}>`,r.content?this.isStaticProp(r.content)&&(t+=r.content.value.value):r.children?.forEach(p=>{if(p.type==="html"&&this.t.isStringLiteral(p.tag)){i(p);return}p.type==="text"&&this.t.isStringLiteral(p.content)&&(t+=p.content.value)}),t+=`</${s}>`};return i(e),t}generateMutableParticles(e){let t=[],i=(r,s=[])=>{r.children?.forEach((n,a)=>{!(n.type==="html"&&this.t.isStringLiteral(n.tag))&&!(n.type==="text"&&this.t.isStringLiteral(n.content))&&t.push({path:[...s,a],...this.parseViewParticle(n)})}),r.children?.filter(n=>n.type==="html"&&this.t.isStringLiteral(n.tag)).forEach((n,a)=>{i(n,[...s,a])})};return i(e),t}parseTemplateProps(e){let t=[],i=(r,s)=>{Object.entries({...r.props??{},...r.content?{textContent:r.content}:{}}).filter(([,n])=>!this.isStaticProp(n)).forEach(([n,a])=>{let p=this.getDependencies(a.value);t.push({tag:r.tag.value,key:n,path:s,value:a.value,dependencyIndexArr:p})}),r.children?.filter(n=>n.type==="html"&&this.t.isStringLiteral(n.tag)||n.type==="text"&&this.t.isStringLiteral(n.content)).forEach((n,a)=>{n.type==="html"?i(n,[...s,a]):n.type==="text"&&t.push({tag:"text",key:"value",path:[...s,a],value:n.content})})};return i(e,[]),t}parseText(e){return{type:"text",content:{value:e.content,dependencyIndexArr:this.getDependencies(e.content)}}}parseHTML(e){let t=this.getDependencies(e.tag),i={type:"html",tag:e.tag};if(e.props&&(e.content&&(e.props.textContent=e.content),i.props=Object.fromEntries(Object.entries(e.props).map(([s,n])=>[s,this.generateDependencyProp(n)]))),e.children&&(i.children=e.children.map(this.parseViewParticle.bind(this))),t.length===0)return i;let r=this.uid();return{type:"exp",content:{value:this.t.stringLiteral(r),viewPropMap:{[r]:[i]},dependencyIndexArr:t}}}parseComp(e){let t=this.getDependencies(e.tag),i={type:"comp",tag:e.tag};if(e.content&&(i.content=this.generateDependencyProp(e.content)),e.props&&(i.props=Object.fromEntries(Object.entries(e.props).map(([s,n])=>[s,this.generateDependencyProp(n)]))),e.children&&(i.children=e.children.map(this.parseViewParticle.bind(this))),t.length===0)return i;let r=this.uid();return{type:"exp",content:{value:this.t.stringLiteral(r),viewPropMap:{[r]:[i]},dependencyIndexArr:t}}}parseFor(e){let t=this.getDependencies(e.array),i=this.config.identifierDepMap,r=this.t.isIdentifier(e.key)&&e.key.name;this.config.identifierDepMap=Object.fromEntries(this.getIdentifiers(this.t.assignmentExpression("=",e.item,this.t.identifier("temp"))).filter(n=>!r||n!==r).map(n=>[n,t.map(a=>this.availableProperties[a])]));let s={type:"for",item:e.item,array:{value:e.array,dependencyIndexArr:t},children:e.children.map(this.parseViewParticle.bind(this)),key:e.key};return this.config.identifierDepMap=i,s}parseIf(e){return{type:"if",branches:e.branches.map(t=>({condition:{value:t.condition,dependencyIndexArr:this.getDependencies(t.condition)},children:t.children.map(this.parseViewParticle.bind(this))}))}}parseSwitch(e){return{type:"switch",discriminant:{value:e.discriminant,dependencyIndexArr:this.getDependencies(e.discriminant)},branches:e.branches.map(t=>({case:t.case?{value:t.case,dependencyIndexArr:this.getDependencies(t.case)}:null,children:t.children.map(this.parseViewParticle.bind(this)),break:t.break}))}}parseEnv(e){return{type:"env",props:Object.fromEntries(Object.entries(e.props).map(([t,i])=>[t,this.generateDependencyProp(i)])),children:e.children.map(this.parseViewParticle.bind(this))}}parseExp(e){let t={type:"exp",content:this.generateDependencyProp(e.content)};return e.props&&(t.props=Object.fromEntries(Object.entries(e.props).map(([i,r])=>[i,this.generateDependencyProp(r)]))),t}parseSubview(e){let t={type:"subview",tag:e.tag};return e.props&&(t.props=Object.fromEntries(Object.entries(e.props).map(([i,r])=>[i,this.generateDependencyProp(r)]))),e.children&&(t.children=e.children.map(this.parseViewParticle.bind(this))),t}generateDependencyProp(e){let t={value:e.value,dependencyIndexArr:this.getDependencies(e.value)};return e.viewPropMap&&(t.viewPropMap=Object.fromEntries(Object.entries(e.viewPropMap).map(([i,r])=>[i,r.map(this.parseViewParticle.bind(this))]))),t}getDependencies(e){let t=this.dependencyParseType==="identifier"?this.getIdentifierDependencies(e):this.getPropertyDependencies(e);return[...new Set([...t,...this.getIdentifierMapDependencies(e)])]}getIdentifierDependencies(e){let t=new Set,i=this.valueWrapper(e);return this.traverse(i,{Identifier:r=>{let n=r.node.name;this.availableProperties.includes(n)&&this.isStandAloneIdentifier(r)&&!this.isMemberInEscapeFunction(r)&&!this.isMemberInManualFunction(r)&&!this.isAssignmentExpressionLeft(r)&&!this.isAssignmentIdentifierExpressionRight(r)&&(t.add(n),this.dependencyMap[n]?.forEach(t.add.bind(t)))}}),t.forEach(this.usedProperties.add.bind(this.usedProperties)),[...t].map(r=>this.availableProperties.indexOf(r))}getPropertyDependencies(e){let t=new Set,i=this.valueWrapper(e);return this.traverse(i,{MemberExpression:r=>{if(!this.t.isIdentifier(r.node.property))return;let s=r.node.property.name;this.availableProperties.includes(s)&&this.t.isThisExpression(r.node.object)&&!this.isMemberInEscapeFunction(r)&&!this.isMemberInManualFunction(r)&&!this.isAssignmentExpressionLeft(r)&&!this.isAssignmentPropertyExpressionRight(r)&&(t.add(s),this.dependencyMap[s]?.forEach(t.add.bind(t)))}}),t.forEach(this.usedProperties.add.bind(this.usedProperties)),[...t].map(r=>this.availableProperties.indexOf(r))}getIdentifierMapDependencies(e){let t=new Set,i=this.valueWrapper(e);return this.traverse(i,{Identifier:r=>{let n=r.node.name;if(this.isAttrFromFunction(r,n))return;let a=this.identifierDepMap[n];a&&(this.isMemberInEscapeFunction(r)||this.isMemberInManualFunction(r)||a.forEach(t.add.bind(t)))}}),t.forEach(this.usedProperties.add.bind(this.usedProperties)),[...t].map(r=>this.availableProperties.indexOf(r))}parseViewParticle(e){let t=new o(this.config,this.options),i=t.parse(e);return t.usedProperties.forEach(this.usedProperties.add.bind(this.usedProperties)),i}isHTMLTemplate(e){return e.type==="html"&&this.t.isStringLiteral(e.tag)&&!!e.children?.some(t=>t.type==="html"&&this.t.isStringLiteral(t.tag))}isStaticProp(e){let{value:t,viewPropMap:i}=e;return(!i||Object.keys(i).length===0)&&(this.t.isStringLiteral(t)||this.t.isNumericLiteral(t)||this.t.isBooleanLiteral(t))}filterTemplateProps(e){return e.filter(([t])=>!t.startsWith("on")).filter(([t])=>!this.customHTMLProps.includes(t))}valueWrapper(e){return this.t.file(this.t.program([this.t.isStatement(e)?e:this.t.expressionStatement(e)]))}isStandAloneIdentifier(e){let t=e.node,i=e.parentPath?.node;if(this.t.isMemberExpression(i)&&i.property===t||this.isAttrFromFunction(e,t.name))return!1;for(;e.parentPath;){if(this.t.isVariableDeclarator(e.parentPath.node)||this.t.isObjectProperty(e.parentPath.node)&&e.parentPath.node.key===e.node&&!e.parentPath.node.computed)return!1;e=e.parentPath}return!0}getIdentifiers(e){if(this.t.isIdentifier(e))return[e.name];let t=new Set;return this.traverse(this.valueWrapper(e),{Identifier:i=>{this.isStandAloneIdentifier(i)&&t.add(i.node.name)}}),[...t]}isAttrFromFunction(e,t){let i=e.parentPath,r=s=>this.t.isIdentifier(s)?s.name===t:this.t.isAssignmentPattern(s)?r(s.left):this.t.isArrayPattern(s)?s.elements.filter(Boolean).map(n=>r(n)).includes(!0):this.t.isObjectPattern(s)?s.properties.filter(n=>this.t.isObjectProperty(n)&&this.t.isIdentifier(n.key)).map(n=>n.key.name).includes(t):this.t.isRestElement(s)?r(s.argument):!1;for(;i;){let s=i.node;if(this.t.isArrowFunctionExpression(s)||this.t.isFunctionDeclaration(s)){for(let n of s.params)if(r(n))return!0}i=i.parentPath}return!1}isAssignmentExpressionLeft(e){let t=e.parentPath?.node;return this.t.isAssignmentExpression(t)&&t.left===e.node||this.t.isUpdateExpression(t)}isAssignmentPropertyExpressionRight(e){let t=e.node,i=!1,r=e.parentPath;for(;r;){if(this.t.isAssignmentExpression(r.node)){let s=r.node.left,n=t.type===s.type,a=t.property.name===s.property.name;i=n&&a}r=r.parentPath}return i}isAssignmentIdentifierExpressionRight(e){let t=e.node,i=!1,r=e.parentPath;for(;r;){if(this.t.isAssignmentExpression(r.node)){let s=r.node.left,n=t.type===s.type,a=t.name===s.name;i=n&&a}r=r.parentPath}return i}isMemberInEscapeFunction(e){let t=!1,i=e.parentPath;for(;i;){let r=i.node;if(this.t.isCallExpression(r)&&this.t.isIdentifier(r.callee)&&this.escapeNamings.includes(r.callee.name)){t=!0;break}i=i.parentPath}return t}isMemberInManualFunction(e){let t=!1,i=e.parentPath;for(;i;){let r=i.node,s=i.parentPath?.node,n=this.t.isCallExpression(s)&&this.t.isIdentifier(s.callee)&&s.callee.name==="manual",a=this.t.isCallExpression(s)&&s.arguments[0]===r;if(n&&a){t=!0;break}i=i.parentPath}return t}uid(){return Math.random().toString(36).slice(2)}};function x(c,e,t){let i=new Set;return[c.map(s=>{let n=new o(e,t),a=n.parse(s);return n.usedProperties.forEach(i.add.bind(i)),a}),i]}export{x as parseReactivity}; | ||
import{createErrorHandler as u}from"@dlightjs/error-handler";var d=u("ReactivityParser",{1:"Invalid ViewUnit type"});var f={acceptCharset:"accept-charset",colSpan:"colspan",contentEditable:"contenteditable",formAction:"formaction",formEnctype:"formenctype",formMethod:"formmethod",formNoValidate:"formnovalidate",formTarget:"formtarget",httpEquiv:"http-equiv",intrinsicSize:"intrinsicsize",inputMode:"inputmode",itemProp:"itemprop",maxLength:"maxlength",minLength:"minlength",noValidate:"novalidate",playsInline:"playsinline",referrerPolicy:"referrerpolicy",rowSpan:"rowspan",tabIndex:"tabindex",ariaAutocomplete:"aria-autocomplete",ariaChecked:"aria-checked",ariaDisabled:"aria-disabled",ariaErrormessage:"aria-errormessage",ariaExpanded:"aria-expanded",ariaHaspopup:"aria-haspopup",ariaHidden:"aria-hidden",ariaInvalid:"aria-invalid",ariaLabel:"aria-label",ariaLevel:"aria-level",ariaModal:"aria-modal",ariaMultiline:"aria-multiline",ariaMultiselectable:"aria-multiselectable",ariaOrientation:"aria-orientation",ariaPlaceholder:"aria-placeholder",ariaPressed:"aria-pressed",ariaReadonly:"aria-readonly",ariaRequired:"aria-required",ariaSelected:"aria-selected",ariaSort:"aria-sort",ariaValuemax:"aria-valuemax",ariaValuemin:"aria-valuemin",ariaValuenow:"aria-valuenow",ariaValuetext:"aria-valuetext",ariaBusy:"aria-busy",ariaLive:"aria-live",ariaRelevant:"aria-relevant",ariaAtomic:"aria-atomic",ariaDropeffect:"aria-dropeffect",ariaGrabbed:"aria-grabbed",ariaActivedescendant:"aria-activedescendant",ariaColcount:"aria-colcount",ariaColindex:"aria-colindex",ariaColspan:"aria-colspan",ariaControls:"aria-controls",ariaDescribedby:"aria-describedby",ariaDescription:"aria-description",ariaDetails:"aria-details",ariaFlowto:"aria-flowto",ariaLabelledby:"aria-labelledby",ariaOwns:"aria-owns",ariaPosinset:"aria-posinset",ariaRowcount:"aria-rowcount",ariaRowindex:"aria-rowindex",ariaRowspan:"aria-rowspan",ariaSetsize:"aria-setsize"};function h(c){return f[c]||c}var o=class{config;options;t;traverse;availableProperties;dependencyMap;identifierDepMap;dependencyParseType;escapeNamings=["escape","$"];customHTMLProps=["do","element","innerHTML","prop","attr","dataset","forwardProps","textContent"];usedProperties=new Set;constructor(e,t){this.config=e,this.options=t,this.t=e.babelApi.types,this.traverse=e.babelApi.traverse,this.availableProperties=e.availableProperties,this.dependencyMap=e.dependencyMap,this.identifierDepMap=e.identifierDepMap??{},this.dependencyParseType=e.dependencyParseType??"property",t?.escapeNamings&&(this.escapeNamings=t.escapeNamings),t?.customHTMLProps&&(this.customHTMLProps=t.customHTMLProps)}parse(e){return this.parseViewUnit(e)}parseViewUnit(e){return this.isHTMLTemplate(e)?this.parseTemplate(e):e.type==="text"?this.parseText(e):e.type==="html"?this.parseHTML(e):e.type==="comp"?this.parseComp(e):e.type==="for"?this.parseFor(e):e.type==="if"?this.parseIf(e):e.type==="env"?this.parseEnv(e):e.type==="exp"?this.parseExp(e):e.type==="switch"?this.parseSwitch(e):e.type==="subview"?this.parseSubview(e):d.throw1()}parseTemplate(e){return{type:"template",template:this.generateTemplateString(e),props:this.parseTemplateProps(e),mutableParticles:this.generateMutableParticles(e)}}generateTemplateString(e){let t="",i=r=>{let n=r.tag.value,s=this.filterTemplateProps(Object.entries(r.props??[]).filter(([,p])=>this.isStaticProp(p)&&!(this.t.isBooleanLiteral(p.value)&&!p.value.value)).map(([p,{value:l}])=>[h(p),l.value])).map(([p,l])=>l===!0?` ${p}`:` ${p}="${l}"`).join("");t+=`<${n}${s}>`,r.content?this.isStaticProp(r.content)&&(t+=r.content.value.value):r.children?.forEach(p=>{if(p.type==="html"&&this.t.isStringLiteral(p.tag)){i(p);return}p.type==="text"&&this.t.isStringLiteral(p.content)&&(t+=p.content.value)}),t+=`</${n}>`};return i(e),t}generateMutableParticles(e){let t=[],i=(r,n=[])=>{r.children?.forEach((a,s)=>{!(a.type==="html"&&this.t.isStringLiteral(a.tag))&&!(a.type==="text"&&this.t.isStringLiteral(a.content))&&t.push({path:[...n,s],...this.parseViewParticle(a)})}),r.children?.filter(a=>a.type==="html"&&this.t.isStringLiteral(a.tag)).forEach((a,s)=>{i(a,[...n,s])})};return i(e),t}parseTemplateProps(e){let t=[],i=(r,n)=>{Object.entries({...r.props??{},...r.content?{textContent:r.content}:{}}).filter(([,a])=>!this.isStaticProp(a)).forEach(([a,s])=>{let p=this.getDependencies(s.value);t.push({tag:r.tag.value,key:a,path:n,value:s.value,dependencyIndexArr:p})}),r.children?.filter(a=>a.type==="html"&&this.t.isStringLiteral(a.tag)||a.type==="text"&&this.t.isStringLiteral(a.content)).forEach((a,s)=>{a.type==="html"?i(a,[...n,s]):a.type==="text"&&t.push({tag:"text",key:"value",path:[...n,s],value:a.content})})};return i(e,[]),t}parseText(e){return{type:"text",content:{value:e.content,dependencyIndexArr:this.getDependencies(e.content)}}}parseHTML(e){let t=this.getDependencies(e.tag),i={type:"html",tag:e.tag};if(e.props&&(e.content&&(e.props.textContent=e.content),i.props=Object.fromEntries(Object.entries(e.props).map(([n,a])=>[n,this.generateDependencyProp(a)]))),e.children&&(i.children=e.children.map(this.parseViewParticle.bind(this))),t.length===0)return i;let r=this.uid();return{type:"exp",content:{value:this.t.stringLiteral(r),viewPropMap:{[r]:[i]},dependencyIndexArr:t}}}parseComp(e){let t=this.getDependencies(e.tag),i={type:"comp",tag:e.tag};if(e.content&&(i.content=this.generateDependencyProp(e.content)),e.props&&(i.props=Object.fromEntries(Object.entries(e.props).map(([n,a])=>[n,this.generateDependencyProp(a)]))),e.children&&(i.children=e.children.map(this.parseViewParticle.bind(this))),t.length===0)return i;let r=this.uid();return{type:"exp",content:{value:this.t.stringLiteral(r),viewPropMap:{[r]:[i]},dependencyIndexArr:t}}}parseFor(e){let t=this.getDependencies(e.array),i=this.config.identifierDepMap,r=this.t.isIdentifier(e.key)&&e.key.name;this.config.identifierDepMap=Object.fromEntries(this.getIdentifiers(this.t.assignmentExpression("=",e.item,this.t.identifier("temp"))).filter(a=>!r||a!==r).map(a=>[a,t.map(s=>this.availableProperties[s])]));let n={type:"for",item:e.item,array:{value:e.array,dependencyIndexArr:t},children:e.children.map(this.parseViewParticle.bind(this)),key:e.key};return this.config.identifierDepMap=i,n}parseIf(e){return{type:"if",branches:e.branches.map(t=>({condition:{value:t.condition,dependencyIndexArr:this.getDependencies(t.condition)},children:t.children.map(this.parseViewParticle.bind(this))}))}}parseSwitch(e){return{type:"switch",discriminant:{value:e.discriminant,dependencyIndexArr:this.getDependencies(e.discriminant)},branches:e.branches.map(t=>({case:t.case?{value:t.case,dependencyIndexArr:this.getDependencies(t.case)}:null,children:t.children.map(this.parseViewParticle.bind(this)),break:t.break}))}}parseEnv(e){return{type:"env",props:Object.fromEntries(Object.entries(e.props).map(([t,i])=>[t,this.generateDependencyProp(i)])),children:e.children.map(this.parseViewParticle.bind(this))}}parseExp(e){let t={type:"exp",content:this.generateDependencyProp(e.content)};return e.props&&(t.props=Object.fromEntries(Object.entries(e.props).map(([i,r])=>[i,this.generateDependencyProp(r)]))),t}parseSubview(e){let t={type:"subview",tag:e.tag};return e.props&&(t.props=Object.fromEntries(Object.entries(e.props).map(([i,r])=>[i,this.generateDependencyProp(r)]))),e.children&&(t.children=e.children.map(this.parseViewParticle.bind(this))),t}generateDependencyProp(e){let t={value:e.value,dependencyIndexArr:this.getDependencies(e.value)};return e.viewPropMap&&(t.viewPropMap=Object.fromEntries(Object.entries(e.viewPropMap).map(([i,r])=>[i,r.map(this.parseViewParticle.bind(this))]))),t}getDependencies(e){let t=this.dependencyParseType==="identifier"?this.getIdentifierDependencies(e):this.getPropertyDependencies(e);return[...new Set([...t,...this.getIdentifierMapDependencies(e)])]}getIdentifierDependencies(e){let t=new Set,i=this.valueWrapper(e);return this.traverse(i,{Identifier:r=>{let a=r.node.name;this.availableProperties.includes(a)&&this.isStandAloneIdentifier(r)&&!this.isMemberInEscapeFunction(r)&&!this.isMemberInManualFunction(r)&&!this.isAssignmentExpressionLeft(r)&&!this.isAssignmentIdentifierExpressionRight(r)&&(t.add(a),this.dependencyMap[a]?.forEach(t.add.bind(t)))}}),t.forEach(this.usedProperties.add.bind(this.usedProperties)),[...t].map(r=>this.availableProperties.indexOf(r))}getPropertyDependencies(e){let t=new Set,i=this.valueWrapper(e);return this.traverse(i,{MemberExpression:r=>{if(!this.t.isIdentifier(r.node.property))return;let n=r.node.property.name;this.availableProperties.includes(n)&&this.t.isThisExpression(r.node.object)&&!this.isMemberInEscapeFunction(r)&&!this.isMemberInManualFunction(r)&&!this.isAssignmentExpressionLeft(r)&&!this.isAssignmentPropertyExpressionRight(r)&&(t.add(n),this.dependencyMap[n]?.forEach(t.add.bind(t)))}}),t.forEach(this.usedProperties.add.bind(this.usedProperties)),[...t].map(r=>this.availableProperties.indexOf(r))}getIdentifierMapDependencies(e){let t=new Set,i=this.valueWrapper(e);return this.traverse(i,{Identifier:r=>{let a=r.node.name;if(this.isAttrFromFunction(r,a))return;let s=this.identifierDepMap[a];s&&(this.isMemberInEscapeFunction(r)||this.isMemberInManualFunction(r)||s.forEach(t.add.bind(t)))}}),t.forEach(this.usedProperties.add.bind(this.usedProperties)),[...t].map(r=>this.availableProperties.indexOf(r))}parseViewParticle(e){let t=new o(this.config,this.options),i=t.parse(e);return t.usedProperties.forEach(this.usedProperties.add.bind(this.usedProperties)),i}isHTMLTemplate(e){return e.type==="html"&&this.t.isStringLiteral(e.tag)&&!!e.children?.some(t=>t.type==="html"&&this.t.isStringLiteral(t.tag))}isStaticProp(e){let{value:t,viewPropMap:i}=e;return(!i||Object.keys(i).length===0)&&(this.t.isStringLiteral(t)||this.t.isNumericLiteral(t)||this.t.isBooleanLiteral(t))}filterTemplateProps(e){return e.filter(([t])=>!t.startsWith("on")).filter(([t])=>!this.customHTMLProps.includes(t))}valueWrapper(e){return this.t.file(this.t.program([this.t.isStatement(e)?e:this.t.expressionStatement(e)]))}isStandAloneIdentifier(e){let t=e.node,i=e.parentPath?.node;if(this.t.isMemberExpression(i)&&i.property===t||this.isAttrFromFunction(e,t.name))return!1;for(;e.parentPath;){if(this.t.isVariableDeclarator(e.parentPath.node)||this.t.isObjectProperty(e.parentPath.node)&&e.parentPath.node.key===e.node&&!e.parentPath.node.computed)return!1;e=e.parentPath}return!0}getIdentifiers(e){if(this.t.isIdentifier(e))return[e.name];let t=new Set;return this.traverse(this.valueWrapper(e),{Identifier:i=>{this.isStandAloneIdentifier(i)&&t.add(i.node.name)}}),[...t]}isAttrFromFunction(e,t){let i=e.parentPath,r=n=>this.t.isIdentifier(n)?n.name===t:this.t.isAssignmentPattern(n)?r(n.left):this.t.isArrayPattern(n)?n.elements.filter(Boolean).map(a=>r(a)).includes(!0):this.t.isObjectPattern(n)?n.properties.filter(a=>this.t.isObjectProperty(a)&&this.t.isIdentifier(a.key)).map(a=>a.key.name).includes(t):this.t.isRestElement(n)?r(n.argument):!1;for(;i;){let n=i.node;if(this.t.isArrowFunctionExpression(n)||this.t.isFunctionDeclaration(n)){for(let a of n.params)if(r(a))return!0}i=i.parentPath}return!1}isAssignmentExpressionLeft(e){let t=e.parentPath?.node;return this.t.isAssignmentExpression(t)&&t.left===e.node||this.t.isUpdateExpression(t)}isAssignmentPropertyExpressionRight(e){let t=e.node,i=!1,r=e.parentPath;for(;r;){if(this.t.isAssignmentExpression(r.node)){let n=r.node.left,a=t.type===n.type,s=t.property.name===n.property.name;i=a&&s}r=r.parentPath}return i}isAssignmentIdentifierExpressionRight(e){let t=e.node,i=!1,r=e.parentPath;for(;r;){if(this.t.isAssignmentExpression(r.node)){let n=r.node.left,a=t.type===n.type,s=t.name===n.name;i=a&&s}r=r.parentPath}return i}isMemberInEscapeFunction(e){let t=!1,i=e.parentPath;for(;i;){let r=i.node;if(this.t.isCallExpression(r)&&this.t.isIdentifier(r.callee)&&this.escapeNamings.includes(r.callee.name)){t=!0;break}i=i.parentPath}return t}isMemberInManualFunction(e){let t=!1,i=e.parentPath;for(;i;){let r=i.node,n=i.parentPath?.node,a=this.t.isCallExpression(n)&&this.t.isIdentifier(n.callee)&&n.callee.name==="manual",s=this.t.isCallExpression(n)&&n.arguments[0]===r;if(a&&s){t=!0;break}i=i.parentPath}return t}uid(){return Math.random().toString(36).slice(2)}};function E(c,e,t){let i=new Set;return[c.map(n=>{let a=new o(e,t),s=a.parse(n);return a.usedProperties.forEach(i.add.bind(i)),s}),i]}export{E as parseReactivity}; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@dlightjs/reactivity-parser", | ||
"version": "1.0.0-alpha.3", | ||
"version": "1.0.0-alpha.4", | ||
"description": "DLight reactivity parser given View Units", | ||
@@ -5,0 +5,0 @@ "author": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
135806
206