@dlightjs/reactivity-parser
Advanced tools
Comparing version 1.0.0-alpha.7 to 1.0.0-alpha.8
@@ -20,3 +20,3 @@ import { ViewUnit } from '@dlightjs/view-parser'; | ||
} | ||
type mutableParticle = ViewParticle & { | ||
type MutableParticle = ViewParticle & { | ||
path: number[]; | ||
@@ -26,4 +26,4 @@ }; | ||
type: "template"; | ||
template: string; | ||
mutableParticles: mutableParticle[]; | ||
template: HTMLParticle; | ||
mutableParticles: MutableParticle[]; | ||
props: TemplateProp[]; | ||
@@ -93,3 +93,2 @@ } | ||
availableProperties: string[]; | ||
alteredAttrMap: Record<string, string>; | ||
dependencyMap: Record<string, string[]>; | ||
@@ -110,2 +109,2 @@ identifierDepMap?: Record<string, string[]>; | ||
export { CompParticle, DependencyProp, DependencyValue, EnvParticle, ExpParticle, ForParticle, HTMLParticle, IfBranch, IfParticle, ReactivityParserConfig, SubviewParticle, SwitchBranch, SwitchParticle, TemplateParticle, TemplateProp, TextParticle, ViewParticle, mutableParticle, parseReactivity }; | ||
export { CompParticle, DependencyProp, DependencyValue, EnvParticle, ExpParticle, ForParticle, HTMLParticle, IfBranch, IfParticle, MutableParticle, ReactivityParserConfig, SubviewParticle, SwitchBranch, SwitchParticle, TemplateParticle, TemplateProp, TextParticle, ViewParticle, parseReactivity }; |
@@ -1,2 +0,2 @@ | ||
import{createErrorHandler as h}from"@dlightjs/error-handler";var l=h("ReactivityParser",{1:"Invalid ViewUnit type"});var o=class{config;t;traverse;availableProperties;dependencyMap;identifierDepMap;dependencyParseType;alteredAttrMap;willParseTemplate;escapeNamings=["escape","$"];customHTMLProps=["onUpdate","willMount","didMount","willUnmount","didUnmount","element","innerHTML","prop","attr","dataset","forwardProps","textContent"];usedProperties=new Set;constructor(e){this.config=e,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",this.alteredAttrMap=e.alteredAttrMap??{},this.willParseTemplate=e.parseTemplate??!0}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):l.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,a=this.filterTemplateProps(Object.entries(r.props??[]).filter(([,p])=>this.isStaticProp(p)&&!(this.t.isBooleanLiteral(p.value)&&!p.value.value)).map(([p,{value:c}])=>[this.recoverHTMLAttrName(p),c.value])).map(([p,c])=>c===!0?` ${p}`:` ${p}="${c}"`).join("");t+=`<${n}${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+=`</${n}>`};return i(e),t}generateMutableParticles(e){let t=[],i=(r,n=[])=>{r.children?.forEach((s,a)=>{!(s.type==="html"&&this.t.isStringLiteral(s.tag))&&!(s.type==="text"&&this.t.isStringLiteral(s.content))&&t.push({path:[...n,a],...this.parseViewParticle(s)})}),r.children?.filter(s=>s.type==="html"&&this.t.isStringLiteral(s.tag)).forEach((s,a)=>{i(s,[...n,a])})};return i(e),t}parseTemplateProps(e){let t=[],i=(r,n)=>{Object.entries({...r.props??{},...r.content?{textContent:r.content}:{}}).filter(([,s])=>!this.isStaticProp(s)).forEach(([s,a])=>{let p=this.getDependencies(a.value);t.push({tag:r.tag.value,key:s,path:n,value:a.value,dependencyIndexArr:p})}),r.children?.filter(s=>s.type==="html"&&this.t.isStringLiteral(s.tag)||s.type==="text"&&this.t.isStringLiteral(s.content)).forEach((s,a)=>{s.type==="html"?i(s,[...n,a]):s.type==="text"&&t.push({tag:"text",key:"value",path:[...n,a],value:s.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,s])=>[n,this.generateDependencyProp(s)]))),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,s])=>[n,this.generateDependencyProp(s)]))),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(s=>!r||s!==r).map(s=>[s,t.map(a=>this.availableProperties[a])]));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 s=r.node.name;this.availableProperties.includes(s)&&this.isStandAloneIdentifier(r)&&!this.isMemberInEscapeFunction(r)&&!this.isMemberInManualFunction(r)&&!this.isAssignmentExpressionLeft(r)&&!this.isAssignmentIdentifierExpressionRight(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))}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 s=r.node.name;if(this.isAttrFromFunction(r,s))return;let a=this.identifierDepMap[s];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),i=t.parse(e);return t.usedProperties.forEach(this.usedProperties.add.bind(this.usedProperties)),i}isHTMLTemplate(e){return this.willParseTemplate&&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(s=>r(s)).includes(!0):this.t.isObjectPattern(n)?n.properties.filter(s=>this.t.isObjectProperty(s)&&this.t.isIdentifier(s.key)).map(s=>s.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 s of n.params)if(r(s))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,s=t.type===n.type,a=t.property.name===n.property.name;i=s&&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 n=r.node.left,s=t.type===n.type,a=t.name===n.name;i=s&&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,n=i.parentPath?.node,s=this.t.isCallExpression(n)&&this.t.isIdentifier(n.callee)&&n.callee.name==="manual",a=this.t.isCallExpression(n)&&n.arguments[0]===r;if(s&&a){t=!0;break}i=i.parentPath}return t}uid(){return Math.random().toString(36).slice(2)}recoverHTMLAttrName(e){return this.alteredAttrMap[e]??e}};function g(d,e){let t=new Set;return[d.map(r=>{let n=new o(e),s=n.parse(r);return n.usedProperties.forEach(t.add.bind(t)),s}),t]}export{g as parseReactivity}; | ||
var f=Object.defineProperty;var u=(p,e,t)=>e in p?f(p,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):p[e]=t;var l=(p,e,t)=>(u(p,typeof e!="symbol"?e+"":e,t),t);import{createErrorHandler as P}from"@dlightjs/error-handler";var d=P("ReactivityParser",{1:"Invalid ViewUnit type"});var c=class{config;t;traverse;availableProperties;dependencyMap;identifierDepMap;dependencyParseType;willParseTemplate;escapeNamings=["escape","$"];usedProperties=new Set;constructor(e){this.config=e,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",this.willParseTemplate=e.parseTemplate??!0}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.generateTemplate(e),props:this.parseTemplateProps(e),mutableParticles:this.generateMutableParticles(e)}}generateTemplate(e){let t=this.filterTemplateProps(Object.entries(e.props??[]).filter(([,r])=>this.isStaticProp(r)&&!(this.t.isBooleanLiteral(r.value)&&!r.value.value))),i;return e.content?this.isStaticProp(e.content)&&t.push(["textContent",e.content]):e.children&&(i=e.children.map(r=>{if(r.type==="html"&&this.t.isStringLiteral(r.tag))return this.generateTemplate(r);if(r.type==="text"&&this.t.isStringLiteral(r.content))return this.parseText(r)}).filter(Boolean)),{type:"html",tag:e.tag,props:Object.fromEntries(t),children:i}}generateMutableParticles(e){let t=[],i=(r,n=[])=>{r.children?.forEach((s,a)=>{!(s.type==="html"&&this.t.isStringLiteral(s.tag))&&!(s.type==="text"&&this.t.isStringLiteral(s.content))&&t.push({path:[...n,a],...this.parseViewParticle(s)})}),r.children?.filter(s=>s.type==="html"&&this.t.isStringLiteral(s.tag)).forEach((s,a)=>{i(s,[...n,a])})};return i(e),t}parseTemplateProps(e){let t=[],i=(r,n)=>{Object.entries({...r.props??{},...r.content?{textContent:r.content}:{}}).filter(([,s])=>!this.isStaticProp(s)).forEach(([s,a])=>{let h=this.getDependencies(a.value);t.push({tag:r.tag.value,key:s,path:n,value:a.value,dependencyIndexArr:h})}),r.children?.filter(s=>s.type==="html"&&this.t.isStringLiteral(s.tag)||s.type==="text"&&this.t.isStringLiteral(s.content)).forEach((s,a)=>{s.type==="html"?i(s,[...n,a]):s.type==="text"&&t.push({tag:"text",key:"value",path:[...n,a],value:s.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,s])=>[n,this.generateDependencyProp(s)]))),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,s])=>[n,this.generateDependencyProp(s)]))),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(s=>!r||s!==r).map(s=>[s,t.map(a=>this.availableProperties[a])]));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 s=r.node.name;this.availableProperties.includes(s)&&this.isStandAloneIdentifier(r)&&!this.isMemberInEscapeFunction(r)&&!this.isMemberInManualFunction(r)&&!this.isAssignmentExpressionLeft(r)&&!this.isAssignmentIdentifierExpressionRight(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))}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 s=r.node.name;if(this.isAttrFromFunction(r,s))return;let a=this.identifierDepMap[s];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 c(this.config),i=t.parse(e);return t.usedProperties.forEach(this.usedProperties.add.bind(this.usedProperties)),i}isHTMLTemplate(e){return this.willParseTemplate&&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])=>!c.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(s=>r(s)).includes(!0):this.t.isObjectPattern(n)?n.properties.filter(s=>this.t.isObjectProperty(s)&&this.t.isIdentifier(s.key)).map(s=>s.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 s of n.params)if(r(s))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,s=t.type===n.type,a=t.property.name===n.property.name;i=s&&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 n=r.node.left,s=t.type===n.type,a=t.name===n.name;i=s&&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,n=i.parentPath?.node,s=this.t.isCallExpression(n)&&this.t.isIdentifier(n.callee)&&n.callee.name==="manual",a=this.t.isCallExpression(n)&&n.arguments[0]===r;if(s&&a){t=!0;break}i=i.parentPath}return t}uid(){return Math.random().toString(36).slice(2)}},o=c;l(o,"customHTMLProps",["didUpdate","willMount","didMount","willUnmount","didUnmount","element","innerHTML","prop","attr","dataset","forwardProps","textContent"]);function M(p,e){let t=new Set;return[p.map(r=>{let n=new o(e),s=n.parse(r);return n.usedProperties.forEach(t.add.bind(t)),s}),t]}export{M as parseReactivity}; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@dlightjs/reactivity-parser", | ||
"version": "1.0.0-alpha.7", | ||
"version": "1.0.0-alpha.8", | ||
"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
122600
190