projecte_ionic/node_modules/@angular-eslint/template-parser/dist/index.js
2022-02-09 18:30:03 +01:00

1 line
2.9 KiB
JavaScript
Executable file

var e=require("@angular/compiler"),t=require("eslint-scope");function n(e){return{start:{line:e.start.line+1,column:e.start.col},end:{line:e.end.line+1,column:e.end.col}}}function o(t,o){if("Element"!==o.type)throw new Error("convertElementSourceSpanToLoc is intented to be used only with elements.");return e.getHtmlTagDefinition(o.name).isVoid&&(o=function(t,n){const{rootNodes:o}=(s||(s=new e.HtmlParser)).parse(t.getSourceCode().getText(),t.getFilename());return r(o,n.sourceSpan)}(t,o)||o),n(o.sourceSpan)}function r(t,n){for(const o of t){if(o.sourceSpan.start.line===n.start.line&&o.sourceSpan.start.offset===n.start.offset)return o;if(o instanceof e.Element){const e=r(o.children,n);if(null!==e)return e}}return null}let s=null;const a={ASTWithSource:["ast"],Binary:["left","right"],BoundAttribute:["value"],BoundEvent:["handler"],BoundText:["value"],Conditional:["condition","trueExp","falseExp"],Element:["children","inputs","outputs","attributes"],Interpolation:["expressions"],PrefixNot:["expression"],Program:["templateNodes"],PropertyRead:["receiver"],Template:["templateAttrs","children","inputs"],BindingPipe:["exp"]};function l(e){let t=null;return"comments"!==e&&"leadingComments"!==e&&"loc"!==e&&"parent"!==e&&"range"!==e&&"tokens"!==e&&"trailingComments"!==e&&null!==(t=this[e])&&"object"==typeof t&&("string"==typeof t.type||Array.isArray(t))}function c(e){return null!==e&&"object"==typeof e&&"string"==typeof e.type}function i(e){let t=0,n=0;const o=a[e.type]||function(e){return Object.keys(e).filter(l,e)}(e);for(t=0;t<o.length;++t){const r=e[o[t]],s=Array.isArray(r);if(void 0!==r.type&&(r.__originalType=r.type),s||r.type||(r.type=r.constructor.name),s)for(n=0;n<r.length;++n){const e=r[n];void 0!==e.type&&(e.__originalType=e.type),e.type&&"number"!=typeof e.type||(e.type=e.constructor.name),c(e)&&i(e)}else c(r)&&i(r)}}function u(r,s){const l=e.parseTemplate(r,s.filePath,{preserveWhitespaces:!0,preserveLineEndings:!0,collectCommentNodes:!0});let c=[];Array.isArray(l.commentNodes)&&(c=l.commentNodes);const u={type:"Program",comments:(p=c,p.map(e=>({type:"Block",value:e.value,loc:n(e.sourceSpan),range:[e.sourceSpan.start.offset,e.sourceSpan.end.offset]})).sort((e,t)=>e.range[0]-t.range[0])),tokens:[],range:[0,0],loc:{start:{line:0,column:0},end:{line:0,column:0}},templateNodes:l.nodes,value:r};var p;const f=new t.ScopeManager({});new t.Scope(f,"module",null,u,!1),i(u);const m=function(e){let t=null;return e.templateNodes.forEach(e=>{const n=e.startSourceSpan||e.sourceSpan;t?n&&n.start.offset<t.start.offset&&(t=n):t=n}),t}(u),d=function(e){let t=null;return e.templateNodes.forEach(e=>{const n=e.endSourceSpan||e.sourceSpan;t?n&&n.end.offset>t.end.offset&&(t=n):t=n}),t}(u);return m&&d&&(u.range=[m.start.offset,d.end.offset],u.loc={start:n(m).start,end:n(d).end}),{ast:u,scopeManager:f,visitorKeys:a,services:{convertNodeSourceSpanToLoc:n,convertElementSourceSpanToLoc:o}}}module.exports={parseForESLint:u,parse:function(e,t){return u(e,t).ast}};