@oracle/oraclejet-audit 18.1.5 → 19.0.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.
Files changed (86) hide show
  1. package/corePackMigrator/corePackMigrator.js +1 -1
  2. package/corePackMigrator/metadata/badgeMetadata.json +66 -0
  3. package/corePackMigrator/metadata/checkboxsetMetadata.json +101 -0
  4. package/corePackMigrator/metadata/inputNumberMetadata.json +0 -3
  5. package/corePackMigrator/metadata/inputTextMetadata.json +0 -3
  6. package/corePackMigrator/metadata/labelMetadata.json +285 -222
  7. package/corePackMigrator/metadata/labelValueMetadata.json +226 -137
  8. package/corePackMigrator/metadata/listviewMetadata.json +7 -0
  9. package/corePackMigrator/metadata/radiosetMetadata.json +20 -9
  10. package/corePackMigrator/metadata/selectorMetadata.json +6 -0
  11. package/corePackMigrator/resource/astUtils.js +1 -1
  12. package/corePackMigrator/resource/componentMigrator.js +1 -1
  13. package/corePackMigrator/resource/fileScanner.js +1 -1
  14. package/corePackMigrator/resource/htmlUtils.js +1 -1
  15. package/corePackMigrator/resource/manifest.json +57 -49
  16. package/corePackMigrator/resource/migrationConfig.json +1 -1
  17. package/corePackMigrator/utilities/logging.js +2 -2
  18. package/jaf-amd.js +1 -1
  19. package/lib/Components.js +1 -1
  20. package/lib/Config.js +1 -1
  21. package/lib/FsUtils.js +1 -1
  22. package/lib/HtmlUtils.js +1 -1
  23. package/lib/JafLib.js +1 -1
  24. package/lib/MetaLib.js +1 -1
  25. package/lib/OjCPack.js +1 -1
  26. package/lib/RegTypes.js +1 -1
  27. package/lib/Registry.js +1 -1
  28. package/lib/Rules.js +1 -1
  29. package/lib/Ts.js +1 -1
  30. package/lib/TsUtils.js +1 -1
  31. package/lib/TsxUtils.js +1 -1
  32. package/lib/checkage.js +1 -1
  33. package/lib/defaults.js +1 -1
  34. package/lib/extends.js +1 -1
  35. package/lib/ns.js +1 -1
  36. package/lib/scaffold.js +1 -1
  37. package/lib/scopewalker.js +1 -1
  38. package/lib/sublib/precomp/Precompiler.js +1 -1
  39. package/libext/expparser.js +1 -1
  40. package/meta/18.0.0/jetauditmeta.js +1 -1
  41. package/meta/18.1.0/jetauditmeta.js +1 -1
  42. package/meta/19.0.0/jetauditmeta.js +9 -0
  43. package/meta/metaverlist.json +1 -1
  44. package/package.json +4 -4
  45. package/profiles/best-practice.json +3 -0
  46. package/profiles/redwood-strict.json +10 -1
  47. package/rulepacks/jetwc/jetwc-use-public-apis.js +6 -0
  48. package/rulepacks/jetwc/msgid.json +1 -1
  49. package/rulepacks/jetwc/rules.json +1 -1
  50. package/rulepacks/jetwc-lib/jetwcutils-componentAuditUtils.js +1 -1
  51. package/rulepacks/jetwc-lib/jetwcutils-componentFinder.js +1 -1
  52. package/rulepacks/jetwco/jetwco-cacc-properties.js +1 -1
  53. package/rulepacks/jetwco/rules.json +1 -1
  54. package/rules/jet/msgid.json +1 -1
  55. package/rules/jet/oj-acc-aria-accessible.js +1 -1
  56. package/rules/jet/oj-acc-aria-prop.js +1 -1
  57. package/rules/jet/oj-acc-navigable-link.js +6 -0
  58. package/rules/jet/oj-acc-select-aria-label.js +1 -1
  59. package/rules/jet/oj-cca-compjson-prop-conflict.js +6 -0
  60. package/rules/jet/oj-css-bp-zindex.js +7 -0
  61. package/rules/jet/oj-html-badge-maintenance.js +6 -0
  62. package/rules/jet/oj-html-binding-as-slot-child.js +1 -1
  63. package/rules/jet/oj-html-corequired.js +6 -0
  64. package/rules/jet/oj-html-nav-tab-nointeractive.js +6 -0
  65. package/rules/jet/oj-html-oj-ux-ico-slot.js +6 -0
  66. package/rules/jet/oj-html-ojtag-id.js +1 -1
  67. package/rules/jet/oj-html-redwood-ojoption-disabled.js +6 -0
  68. package/rules/jet/oj-html-slot-pref-content.js +1 -1
  69. package/rules/jet/oj-html-tabbar-progressive-popup.js +1 -1
  70. package/rules/jet/oj-html-wctag-for.js +1 -1
  71. package/rules/jet/oj-html-wctag-id.js +1 -1
  72. package/rules/jet/oj-html-wctag-maintenance.js +1 -1
  73. package/rules/jet/oj-html-wctag-packprivate.js +1 -1
  74. package/rules/jet/oj-js-poly-promise.js +1 -1
  75. package/rules/jet/oj-ts-poly-promise.js +1 -1
  76. package/rules/jet/oj-tsx-acc-navigable-link.js +6 -0
  77. package/rules/jet/oj-tsx-aria-prop.js +1 -1
  78. package/rules/jet/oj-tsx-corequired.js +6 -0
  79. package/rules/jet/oj-tsx-prop-ko-binding.js +6 -0
  80. package/rules/jet/oj-tsx-tabbar-progressive-popup.js +6 -0
  81. package/rules/jet/oj-tsx-wctag-packprivate.js +1 -1
  82. package/rules/jet/rules.json +1 -1
  83. package/schema/component-schema.json +1 -1
  84. package/src/JafCore.js +1 -1
  85. package/types/index.d.ts +5 -0
  86. package/corePackMigrator/metadata/messagesMetadata.json +0 -41
package/src/JafCore.js CHANGED
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- const HtmlParser=require("htmlparser2");const RULE_JS_DIAGNOSE="jaf-js-diagnose";const RULE_TS_DIAGNOSE="jaf-ts-diagnose";const RULE_CSS_DIAGNOSE="jaf-css-diagnose";const RULE_HTML_DIAGNOSE="jaf-html-diagnose";const RULE_INIT_SCHEMA="jaf-init-schema";const Reporter=require("../lib/Reporter");const Issue=require("../lib/Issue");const Rules=require("../lib/Rules");const RuleSet=require("../lib/RuleSet");const JafLib=require("../lib/JafLib");const FileSet=require("../lib/FileSet");const Writer=require("../lib/Writer");var metaLib=require("../lib/MetaLib");var OjcPack=require("../lib/OjCPack");const Plugin=require("../lib/Plugin");const Parser=require("../lib/Parser");const HtmlTree=require("../lib/HtmlTree");const DomUtils=require("../lib/DomUtils");const CssLib=require("../lib/CssLib");const CssUtils=require("../lib/CssUtils");const Utils=require("../lib/Utils");const TsxUtils=require("../lib/TsxUtils");const FileIndex=require("../lib/FileIndex");const Stats=require("../lib/Stats");var AST=require("../lib/AST");var Comments=require("../lib/Comments");const Severity=require("../lib/Severity");const NodeType=require("../lib/NodeTypes");const REG=require("../lib/RegTypes");const FILETYPE=require("../lib/filetypes");const GROUPS=require("../lib/groups");const DEFAULTS=require("../lib/defaults");const OUTFMT=require("../lib/outFormat");var VERSION;var DESCRIPTION;var DESCRIPTION_MIG;const CONFIG_FILE_DEF="jafconfig.json";const CONFIG_FILE_OJAF="oraclejafconfig.json";const META_FILE_OBJ="jetauditmeta.js";const TEMP_DIR="jaftmp@";const MIN_NODE_VER="14.0.0";const DEF_PROSE_FORMAT="%pos1 %s : %m";const AUTO="auto";const ERRORS="errors";const JAF_RSI=0;const JET_RSI=JAF_RSI+1;const COMPONENT_JSON="component.json";const ARROW="\u2192 ";const UNDEF="undefined";const BOOLEAN="boolean";var elapsed;function JafCore(nd,runMode="cli"){this._configPath=null;this._metaPath=null;this._outPath=null;this._rulePath=null;this._base=null;this._outFormat=null;this._json=null;this._HtmlTree=null;this._Ast=null;this._events=null;this._tabs=null;this._cliSev=null;this._curDir=null;this._tmpDir=null;this._fileSet=null;this._fileSep=null;this._groupsSet=false;this._followLinks=true;this._runMode=runMode;this._isCLI=runMode==="cli";this._isAPI=runMode==="api";this._isAMD=runMode==="amd";this._isOJETCLI=false;this._isOJET=null;this._isCliOrApi=this._isCLI||this._isAPI;this._isApiOrAmd=this._isAPI||this._isAMD;this._isCliMode=this._isCLI||this._isOJETCLI;this._isAsync=false;this._ctxCB=null;this._isManual=false;this._retCode;this._unitTest=false;this._VsCodeExtHint=false;this._config=null;this._reporter=null;this._rules=null;this._metaLib=null;this._fsUtils=null;this._DomUtils=null;this._tsxUtils=null;this._tsUtils=null;this._configLib=null;this._sevLib=null;this._ojetLib=null;this._plugin=null;this._appCtx=null;this._msgCtx=null;this._writer=null;this._components=null;this._componentSvcs=null;this._userDefs=null;this._attrIndex=0;this._curContainer=null;this._curFile=null;this._curFileType=null;this._srcStack=null;this._targFiletypes=null;this._CSSLinkStack=[];this._JSLinkStack=[];this._msgIdLookup=null;this._messageStack=[];this._verboseMode=false;this._debugMode=false;this._isInfo=false;this._colorMode=true;if(nd.colors){this._clr=new nd.colors}this._msgIdMode=false;this._isRawAttrs=true;this._macros={$jafcwd:null,$jafdate:null,$jaftime:null,$jafver:null,$jafconfig:null,$jetver:null};this._rtf={jetverSet:false,severitySet:false,followLinksSet:false,debugSet:false,verboseSet:false,msgIdModeSet:false,dryRunSet:false,colorSet:false,regListenerTypesSet:false,scaffoldSet:false,scaffoldRuleSet:false,dacSet:false,maintenance:false,jetverList:false,defList:false,cmdNSList:false,groupList:false,xgroupList:false,disList:false,amdList:false,rloList:false,cmdMetaHist:false,dumpRulesSet:false,dumpRulesJsonSet:false,dumpRulesSonarSet:false,dumpRulesInternalSet:false,configPath:null,outFormat:null,outPath:null,base:null,groupsSet:false,followLinks:true,retCode:undefined,cliSev:null,verboseMode:false,debugMode:false,colorMode:true,msgIdMode:false,cmdArg:undefined,manCheckL:undefined,manCheckS:undefined,isManual:false,unitTest:false,experimentalSet:false};this._parser=null;this._treeNode=null;this._curTagNode=null;this._startCssPosition=null;this._startJsPosition=null;this._ctxTag=null;this._ctxAttr=null;this._ctxCss=null;this._ctxFileHook=null;this._cbMsgObj={};this._isStdoutRedirected=false;this._isStderrRedirected=false;this._useStderr=false;this._nd=nd;this._curDir=nd.process.cwd();this._fileSep=nd.path?nd.path.sep:null;this._Utils=new Utils(nd);if(nd.fsUtils){this._fsUtils=new nd.fsUtils(nd,this._Utils)}this._tsxUtils=new TsxUtils(this._assert.bind(this));if(this._isCliOrApi){this._tsUtils=new nd.tsUtils(this._Utils,this._fsUtils,this._getMsgCtx(),require("semver"),nd)}this._stats=new Stats;this._severity=new Severity;this._fileSet=new FileSet(nd,this._fsUtils);this._writer=new Writer(nd,this._getMsgCtx());this._fileIndex=new FileIndex(this._Utils);this._plugin=new Plugin(this._getMsgCtx(),this._runMode,this._Utils);_getPackageInfo(runMode);this._initMacros();if(this._isCLI){this._isStdoutRedirected=!process.stdout.isTTY;this._isStderrRedirected=!process.stderr.isTTY;this._useStderr=this._isStdoutRedirected&&!this._isStderrRedirected;this._useStderr=false}};JafCore.prototype.start=function(){var rc;try{rc=this._startupValidation()}catch(e){let msgId,msg,x;if(e.stack.indexOf("PreCompiler")>=0){msgId="9004";msg="Internal error during VComponent precompilation"}else{msgId="9000";msg="Internal error"}if((x=e.stack.indexOf("\n"))>=0){if((x=e.stack.indexOf("\n",x+1))>=0){x=e.stack.indexOf("\n",x+1)}}x=x>0?x:e.stack.length;this._error(`[JAF-${msgId}]: ${msg} - ${e.stack.substring(0,x)}`);rc=1}if(rc){if(rc>0){this._error("Terminated due to a previous error");if(this._events){this._events.removeAllListeners()}rc=-1}else{rc=0;if(this._isCLI&&(this._stats.warnings||this._stats.errors)&&!this._unitTest){let stats,m,n,was;stats=this._stats;if(n=stats.errors){m=n+" error"+(n!==1?"s":"")}if(n=stats.warnings){let m2=n+" warning"+(n!==1?"s":"");m=m?`${m} and ${m2}`:m2}if(stats.errors&&stats.warnings===1){was="was"}else if(stats.errors&&stats.warnings){was="were"}else if(stats.errors+stats.warnings===1){was="was"}else{was="were"}m=this._clr.INVERT(`Note: ${m} ${was} reported`);console.log(`\n\n${m}\n`)}}return this._transformRetCodeFinal(rc)}return this._prepAudit()};JafCore.prototype._prepAudit=function(){var rc=0;this._isInfo=this._verboseMode||this._debugMode;if(this._rules.getActiveRuleCount()>0){if(!this._stats.errors){this._displayStartMsg();if(this._isCLI){if(this._watchSet){}else{this._startLifeCycle()}}else{return 0}}if(this._isCLI){this._displayCliFinalStats();if(!this._unitTest){rc=this._stats.totalIssues}}}else{this._info("No active rules! Audit terminated.")}return this._transformRetCodeFinal(rc)};JafCore.prototype.setAmdMeta=function(amdMeta){this._AmdMeta=amdMeta};JafCore.prototype._listenerSetup=function(){if(!this._isCLI&&!this._events){this._events=new(require("../lib/JafEvents"))}return this._events};JafCore.prototype._setPlugins=function(ar){this._plugin.setPlugins(ar)};JafCore.prototype.enableRule=function(){return false};JafCore.prototype._transformRetCode=function(rc){if(this._isCliMode&&this._retCode!==AUTO){let o=this._retCode;if(o===ERRORS){rc=rc>=0?0:-1}else if(typeof o==="number"){rc=o}else if(Array.isArray(o)){let n=0;for(let i=0;i<o.length;i++){n+=this._stats.totalSevStats[o[i]]}rc=n}}return rc};JafCore.prototype._transformRetCodeFinal=function(rc){var xrc=this._transformRetCode(rc);if(this._verboseMode||this._debugMode){this._info(`RC: ${xrc} (raw = ${rc})`)}return xrc};JafCore.prototype._startLifeCycle=function(){if(!this._LF_start()){return false}this._processActiveFileSet();this._auditJSLinkedFiles();this._auditCSSLinkedFiles();return this._LF_closedown()};JafCore.prototype._LF_start=function(){var hookRC=true;this._curContainer=null;if(this._dryRunSet){this._info("\n------ Dry Run: Based on the configuration the following files would have been audited/ignored ------")}else{this._jafLib=new JafLib(this._nd,this._fileSet,this._getMsgCtx(),this._runMode,VERSION,this._metaLib.getRevisionInfo().jetVersion,this._config,this._ageLib);this._rules.setJafLib(this._jafLib);if(this._rules.isTypeRegistered(REG.PHASE_STARTUP)){this._debug("\n** Firing hook rules : "+REG.PHASE_STARTUP+"'");hookRC=this._fireHookRules(REG.PHASE_STARTUP);this._jafLib.disable();if(typeof hookRC===BOOLEAN&&!hookRC){this._console("\nAudit terminated by 'startup' hook rule","I");return false}}if(this._rules.isTypeRegistered(REG.PHASE_STARTUP_RULEPACK)){this._debug("\n** Firing hook rules : phase '"+REG.PHASE_STARTUP_RULEPACK+"'");hookRC=this._fireRPHookRules(REG.PHASE_STARTUP_RULEPACK)}if(this._rules.isTypeRegistered(REG.PHASE_START_AUDIT)){this._debug("\n** Firing hook rules : phase '"+REG.PHASE_START_AUDIT+"'");hookRC=this._fireHookRules(REG.PHASE_START_AUDIT);this._jafLib.disable();if(typeof hookRC===BOOLEAN&&!hookRC){this._console("\nAudit terminated by 'startaudit' hook rule","I");return false}}this._flushIssues(null,true);this._stats.addSevStatsToTotals();if(typeof hookRC===BOOLEAN&&!hookRC){this._console("\nAudit terminated by ruleset startup hook rule","I");return false}}this._spinner=new this._nd.spinner;this._spinner.start("Reading files...");return true};JafCore.prototype._LF_closedown=function(){if(elapsed&&!this._isAMD){elapsed=this._nd.process.hrtime(elapsed)}this._curFile=this._curFileType=null;if(this._dryRunSet){if(this._stats.totalFilesAudited===0){this._info("\n------------ Dry Run: No files were selected for audit!")}return true}this._stats.clearSevStats();if(this._rules.isTypeRegistered(REG.PHASE_END_AUDIT)){this._debug("\n** Firing hooks : phase 'endaudit'");this._fireHookRules(REG.PHASE_END_AUDIT)}if(this._rules.isTypeRegistered(REG.PHASE_CLOSEDOWN_RULEPACK)){this._debug("\n** Firing hooks : phase 'closedownRP'");this._fireRPHookRules(REG.PHASE_CLOSEDOWN_RULEPACK)}this._curFile=this._curFileType=null;if(this._rules.isTypeRegistered(REG.PHASE_CLOSEDOWN)){this._debug("\n** Firing hook rules : phase closedown");this._fireHookRules(REG.PHASE_CLOSEDOWN)}this._curContainer=null;this._flushIssues(null,true);this._stats.addSevStatsToTotals();if(this._outFormat===OUTFMT.JSON||this._isAPI&&this._isAsyncTemp){this._flushFinalJson()}if(this._isAPI&&this._isAsyncTemp){return this._json}return true};JafCore.prototype._processActiveFileSet=function(){var filePath;elapsed=this._isCliOrApi?this._nd.process.hrtime():0;while(true){this._curContainer=null;if(filePath=this._fileSet.getNextFile()){this._processActiveFile(filePath);continue}this._spinner.stop();break}};JafCore.prototype._processActiveFile=function(filePath){var fileObj,fileType,isUrl,resp,data;this._stats.totalFilesSelected++;this._rules.setJSCommentCallback(null);this._metaLib.setCurFileType(null);fileObj=false;if(typeof filePath==="object"){fileObj=filePath;if(!fileObj.data){return}fileObj.name=fileObj.name||"*unspecified filename*";filePath=fileObj.name;fileType=fileObj.type?fileObj.type:this._extractFileType(fileObj.name,true);if(!FILETYPE.isFileTypeSupportedInObj(fileType)){return}}isUrl=typeof filePath==="string"&&filePath.startsWith("http");if(!fileObj){fileType=this._extractFileType(filePath,null)}if(!FILETYPE.isFileTypeSupported(fileType)){if(this._isInfo){this._info(`ignoring unsupported file type (.${fileType}): ${filePath}`)}return}else if(this._targFiletypes.length&&!this._targFiletypes.includes(fileType)&&fileType!==FILETYPE.ZIP){if(this._isInfo){this._info(`ignoring untargeted file type (.${fileType}): ${filePath}`)}return}this._handleStyles=this._handleJS=true;if(this._isInfo){this._info(this._dryRunSet?filePath:"\n** Reading "+(isUrl?"resource":fileObj?"data-obj-> ":"file")+" "+(fileObj?fileObj.name:"'"+filePath+"'"))}if(fileObj){data=fileObj.data}else if(isUrl){resp=this._processResource(filePath);if(resp&&resp.statusCode===200){data=resp.body;this._stats.totalUrlsAudited++}else{return}}else{data=this._readFile(filePath,fileType===FILETYPE.ZIP)}this._auditActiveFile(filePath,fileType,isUrl,data)};JafCore.prototype._auditActiveFile=function(filePath,fileType,isUrl,data){var rc,tempFile;this._curFile=filePath;this._inZip=false;this._rawData=data;this._data=this._suppData=null;this._stats.totalFilesAudited++;if(this._dryRunSet){return}this._stats.clearSevStats();if((this._unitTest||this._config.getAppendFileList())&&this._outFormat===OUTFMT.JSON){this._noteFileSet(filePath)}this._curFileType=fileType;if(fileType===FILETYPE.HTML||fileType===FILETYPE.CSS||fileType===FILETYPE.JS||fileType===FILETYPE.TS||fileType===FILETYPE.TSX){if(data){this._spinner.setText("Auditing: "+filePath);if(fileType===FILETYPE.HTML||fileType===FILETYPE.CSS){this._auditHtml(data)}else if(fileType===FILETYPE.JS){this._auditJS(data)}else if(FILETYPE.isFileTypeTsOrTsx(fileType)){this._auditTsOrTsx(data)}}}else if(fileType===FILETYPE.JSON){this._auditJson(filePath,data)}else if(fileType===FILETYPE.MD){this._auditMarkdown(data)}else if(fileType===FILETYPE.ZIP){this._inZip=true;this._loadComponentSupport();rc=this._compSvcs.writeZipBufferToFile(data);if(typeof rc===BOOLEAN&&rc){tempFile=this._compSvcs.getLastZipFilePath();this._curContainer=isUrl?this._compSvcs.stripUrlQuery(filePath):filePath;this._auditComponentZip(tempFile);this._stats.addSevStatsToTotals();return}else{this._error(`Failed to create local temp zip file from URL '${filePath}' : ${rc.message}`);this._isOk=false}}this._stats.addSevStatsToTotals()};JafCore.prototype._auditHtml=function(data){var rc,topNode;this._attrIndex=0;this._data=data;this._rawData=!this._inZip?data:null;this._htmlParserCb=this._getPageCallbacks();this._reporter.clearIssues();this._fileIndex.clear();if(this._curFileType===FILETYPE.CSS){this._auditStyleSheet(data);return}this._debug("Parsing HTML...");this._htmlTree=new HtmlTree(this._nd,this._getAppCtx(),HtmlParser,this._DomUtils);data=data.replaceAll("\\\"","'");this._htmlTree.parse(data);topNode=this._htmlTree.getTopNode();if(topNode===null){this._debug("File contains no useful data - '"+this._curFile+"'");return}this._metaLib.setCurFileType(this._curFileType);if(this._config.getJetPagesOnly()){if(!this._DomUtils.isJetPage({node:topNode})){this._debug("File ignored - not a JET page and jetOnlyPages=true - '"+this._curFile+"'");return}};this._startIndex=0;this._endIndex=0;rc=this._fireHookFileRules(this._htmlTree.getTopNode());if(typeof rc===BOOLEAN&&!rc){return}this._setupCssParser();this._htmlTree.walk(this._htmlParserCb)};JafCore.prototype._getPageCallbacks=function(){var _self=this;var inScript=false,inScriptJS=false,inHeadSect=false,inHead=false,inStyle=false,inStyleSect=false,inLink=false;var inScriptJSLink=false,inScriptCSSLink=false,JsScriptData=null;var ignoreScript=false;var isDirective=false;var tagLower,temp;var ctx;this._inScriptJs=false;this._inScriptJsData=null;if(this._htmlParserCb){return this._htmlParserCb};return this._rules.filterHtmlCallbacks({onOpenTagname:function(node,tagName){if(ignoreScript||inScript){return}_self._curTagNode=node;if(!_self._curTagNode){_self._assert("tag \""+tagName+"\" has no node")}tagName=tagName.endsWith("\"")||tagName.endsWith("'")?tagName.substr(0,tagName.length-1):tagName;_self._currentTag=tagName;tagLower=tagName.toLowerCase();inHeadSect=inHeadSect?inHeadSect:tagLower==="head";inHead=tagLower==="head";inScript=tagLower==="script";inStyleSect=inStyleSect?inStyleSect:tagLower==="style";inStyle=tagLower==="style";inLink=tagLower==="link";if(inScript){inScriptJS=_self._htmlTree.isScriptExecutable(_self._curTagNode);inScriptJSLink=_self._htmlTree.isScriptJSLink(_self._curTagNode);if(inScriptJS&&!inScriptJSLink){if(_self._curTagNode.children&&_self._curTagNode.children.length){if(_self._curTagNode.children[0].type==="text"){JsScriptData=_self._curTagNode.children[0].data;JsScriptData=_getScriptData(_self._data,_self._curTagNode.children[0].startIndex,_self._curTagNode.endIndex);if(typeof JsScriptData==="string"){_self._jsNode=_self._curTagNode.children[0];_self._startJsPosition=_self._fileIndex.getRowCol(_self._data,{start:_self._jsNode.startIndex,end:_self._jsNode.endIndex},"js");_self._startJsPosition.startIndex=_self._jsNode.startIndex;_self._startJsPosition.endIndex=_self._jsNode.endIndex;if(_beginsWithNL(JsScriptData,_self._Utils)){_self._startJsPosition.col=1;_self._startJsPosition.row++;temp=_self._clearNL(JsScriptData);JsScriptData=temp.text;_self._startJsPosition.startIndex+=temp.stripped;_self._startJsPosition.endIndex+=temp.stripped}}else{JsScriptData=false}}else{JsScriptData=null}}}if(inScriptJSLink&&_self._followLinks&&_self._handleJS){_self._addJSLinkToStack(inScriptJSLink)}}else if(inLink){inScriptCSSLink=_isLinkCSSLink(_self._curTagNode);if(inScriptCSSLink&&_self._followLinks&&_self.handleStyles){_self._addStyleSheetLinkToStack(inScriptCSSLink)}}_self._reporter.setParseData(tagName,"tag");_self._startIndex=_self._curTagNode.startIndex+1;_self._endIndex=_self._startIndex+tagName.length-1;ctx=_self._ctxTag;ctx.position={start:_self._startIndex,end:_self._endIndex};ctx.tag=tagName;ctx.node=_self._curTagNode;ctx.tagNode=_self._curTagNode;ctx.data=_self._data;ctx.suppData=_self._suppData;ctx.elemStack=_self._htmlTree.getElemStack();ctx.utils.DomUtils=_self._DomUtils;ctx.NodeTypes=NodeType;if((tagLower==="script"||tagLower==="link")&&_self._rules.isTypeRegistered(tagLower)){ctx.type=tagLower;ctx.ojTag=ctx.ojNS=false;if(tagLower==="script"&&JsScriptData){ctx.suppData={data:JsScriptData}}_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,ctx.suppData?ctx.suppData.data:null)}if(_self._rules.isTypeRegistered(REG.ELEM)){ctx.type=REG.ELEM;ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}if(_self._metaLib.isJetTag(tagName)&&_self._rules.isTypeRegistered("jetcomp")){ctx.type="jetcomp";ctx.ojTag=ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}else _self._metaLib.isComponentTag(tagName)&&_self._rules.isTypeRegistered("extcomp");{ctx.type="extcomp";ctx.ojTag=false;ctx.ojNS=ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}ctx.type=tagLower.startsWith("oj-")?"ojtag":"tag";if(_self._rules.isTypeRegistered(ctx.type)){ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}if(tagName.indexOf("-")>0||tagName==="template"||tagName==="style"){if(_self._rules.isTypeRegisteredAsElemName("<"+tagName+">")){ctx.type="<"+tagName+">";ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}}if(_self._rules.isTypeRegistered(REG.WEBCOMP)){let jwc=_self._metaLib.isJetTag(tagName);let awc=!jwc?_self._metaLib.isComponentTag(tagName):false;if(jwc||awc){ctx.type=REG.WEBCOMP;ctx.ojTag=jwc;ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}}if(_self._rules.isTypeRegistered(REG.GLOBTAG)&&_self._DomUtils.isCommonElem(tagName)){ctx.type=REG.GLOBTAG;ctx.ojTag=ctx.ojNS=false;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}if(_self._rules.isTypeRegistered(REG.NOTGLOB)&&!_self._DomUtils.isCommonElem(tagName)&&!_self._DomUtils.isSvgElem(tagName)&&!_self._DomUtils.isHtml5ObsoleteElem(tagName)){ctx.type=REG.NOTGLOB;ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}if(_self._metaLib.isBindingTag(tagName)){ctx.type=REG.BINDING_TAG;ctx.ojTag=ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}this._attrIndex=0},onCloseTag:function(node,tagName){tagLower=tagName.toLowerCase();if(tagLower==="head"){inHead=inHeadSect=false}if(tagLower==="script"){inScript=ignoreScript=inScriptJS=inScriptJSLink=JsScriptData=false}if(tagLower==="style"){inStyle=inStyleSect=false}if(tagLower==="link"){inLink=inScriptCSSLink=false}if(_self._currentTag){_self._lastTag=_self._currentTag;_self._currentTag=null}_self._curTagNode=null},onAttribute:function(node,attrName,attrValue){var attrNameLower=attrName.toLowerCase();var attrRawValue,rowcol,issue;var isElemAttrReg,isAttrExprReg,isAttrOnlyReg,isAttrExpr$Props;var attrType,elemAttrType;var tmp;if(attrName.length===1){var invChar=attrName==="\""?"double-quote":attrName==="'"?"single-quote":attrName;if(attrName!==invChar){rowcol=_self._DomUtils.getAttribPosition(_self._data,node,attrName);issue=new Issue("Unexpected "+invChar+" found");_self._reportJafIssue(issue,RULE_HTML_DIAGNOSE,rowcol.row,rowcol.col,rowcol.start,rowcol.end);_self._stats.parseErrors++;if(_self._debugMode||_self._verboseMode){_self._info("[PARSE ERROR(1)] : FILE "+(_self._curFile?_self._curFile:"N/A")+" "+_self._stats.parseErrors)}return}}else if(attrName.endsWith("<")){rowcol=_self._DomUtils.getAttribPosition(_self._data,node,attrName);issue=new Issue(`Syntax error on elem '${node.name}' - missing end '>' perhaps?`);_self._reportJafIssue(issue,RULE_HTML_DIAGNOSE,rowcol.row,rowcol.col,rowcol.start,rowcol.end);return}if(attrValue&&attrValue.length&&_self._isRawAttrs){attrRawValue=_self._getAttrRawValue(_self._data,_self._getAttrIndex(_self._data,node.startIndex,attrName),attrName,attrValue)}if(ignoreScript){return}if(inScript&&attrName==="type"){if(attrValue==="text/html"){ignoreScript=true;return}}if(ignoreScript){return}if(!_self._currentTag){_self._info("** WARNING - no tag for attribute "+attrName+" (value "+attrValue+")");return}_self._reporter.setParseData(attrName,"attr");attrNameLower=attrNameLower.charAt(0)===":"?attrNameLower.substr(1):attrNameLower;ctx=_self._ctxAttr;ctx.type=attrNameLower==="class"?"class":attrNameLower==="style"?"style":attrNameLower.startsWith("style.")?"stylemember":inScript&&attrNameLower==="type"?"type":attrName.startsWith("on-oj-")?"event":"attr";if(ctx.type==="attr"&&attrNameLower.startsWith("on-")&&_self._metaLib.isWCTag(_self._currentTag)){ctx.type="event"}if(ctx.type==="attr"||ctx.type==="event"){temp=attrName.startsWith(":")?attrName.substring(1):attrName;elemAttrType=`<${_self._curTagNode.name}|${temp}>`;isElemAttrReg=_self._rules.isTypeRegistered(elemAttrType);attrType=`<${temp}=>`;isAttrOnlyReg=_self._rules.isTypeRegistered(attrType);isAttrExprReg=_self._rules.isTypeRegistered(REG.ATTREXPR);isAttrExpr$Props=_self._rules.isTypeRegistered(REG.ATTREXPR_$PROPS)}if(_self._rules.isTypeRegistered(ctx.type)||isAttrExprReg||isAttrExpr$Props||isElemAttrReg||isAttrOnlyReg){rowcol=_self._DomUtils.getAttribPosition(_self._data,node,attrName);ctx.tag=_self._currentTag;ctx.ojTag=_self._metaLib.isJetTag(_self._currentTag);ctx.position={line:rowcol.row,col:rowcol.col,start:rowcol.start,end:rowcol.end},ctx.tagNode=_self._curTagNode;ctx.data=_self._data;ctx.elemStack=_self._htmlTree.getElemStack();ctx.utils.DomUtils=_self._DomUtils;if(_self._curFileType==="html"||_self._curFileType==="css"){ctx.utils.CssUtils=CssUtils}ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(ctx.tag);ctx.NodeTypes=NodeType;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue)}else{return}if((ctx.type==="attr"||ctx.type==="event")&&_isAttrExpr(attrValue)){if(isAttrExprReg){tmp=ctx.type;ctx.type=REG.ATTREXPR;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue);ctx.type=tmp}if(attrValue.includes("$properties")&&isAttrExpr$Props){tmp=ctx.type;ctx.type=REG.ATTREXPR_$PROPS;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue);ctx.type=tmp}}if(ctx.type==="attr"||ctx.type==="event"){if(isElemAttrReg){ctx.type=elemAttrType;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue)}if(isAttrOnlyReg){ctx.type=attrType;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue)}}},onText:function(node,text){if(inHead){}else if(ignoreScript){_self._debug("[debug] text in script ignored ("+_self._curFile+")")}else if(inStyle){if(text.trim().length>0){if(_self._handleStyles){_self._startCssPosition=_self._fileIndex.getRowCol(_self._data,{start:node.startIndex,end:node.endIndex},"css");if(_beginsWithNL(text,_self._Utils)){_self._startCssPosition.col=1;_self._startCssPosition.row++}let adjust=_self._clearNL(text);_self._startCssPosition.index=node.startIndex+adjust.stripped;text=adjust.text;_self._parseCss(text)}}}else if(inScript&&inScriptJS&&JsScriptData){if(_self._handleJS){if(JsScriptData.length>0){_self._inScriptJs=true;_self._inScriptJsData=JsScriptData;_self._parseJS(JsScriptData,function(treenode){_self._fireHookFileRules(treenode,null)});_self._inScriptJs=false;_self._inScriptJsData=null}JsScriptData=null}}_self._htmlParserCb.onCloseTag(node,inStyle?"style":inScript?"script":inLink?"link":"what")},onEnd:function(){_self._flushIssues(_self._data)},onComment:function(node,text){if(inScript||ignoreScript||inStyle){return}if(!_self._rules.isTypeRegistered(REG.COMMENT)){return}_self._startIndex=node.startIndex;_self._endIndex=node.endIndex;_self._treeNode=node;text=text.trim();temp=_self._currentTag?_self._currentTag:"";_self._rules.fireRules({type:REG.COMMENT,ojTag:temp&&_self._metaLib.isJetTag(temp),position:{start:_self._startIndex,end:_self._endIndex},tag:temp?temp:null,elemStack:_self._htmlTree.getElemStack(),node:_self._treeNode,tagNode:_self._curTagNode,data:_self._data,suppData:_self._suppData,utils:{DomUtils:_self._DomUtils},NodeTypes:NodeType},null,_self._curFile,_self._curFileType,text)},oncommentend:function(){},oncdatastart:function(){},oncdataend:function(){},onProcessingInstruction:function(node,data){var text,i;if(ignoreScript||inScript){return}if(!_self._rules.isTypeRegistered(REG.PROCSTMT)){return}_self._treeNode=node;if(!_self._treeNode){_self._assert("procstmt '"+data+"' has no node")}text=data?data.trim():data;temp=text.substr(1);i=_self._Utils.getIndexToWhitespace(temp);temp=temp.substr(i+1).trim();if(temp.charAt(temp.length-1)==="?"){temp=temp.substr(0,temp.length-1)}_self._rules.fireRules({type:REG.PROCSTMT,ojTag:false,position:{start:_self._startIndex,end:_self._endIndex},tag:null,node:_self._treeNode,tagNode:_self._curTagNode,suppData:_self._suppData,elemStack:_self._htmlTree.getElemStack(),utils:{DomUtils:_self._DomUtils},NodeTypes:NodeType},text,_self._curFile,_self._curFileType,temp)},onDirective:function(node,data){if(ignoreScript||inScript){return}if(data.toLowerCase().startsWith("!doctype")){if(!_self._rules.isTypeRegistered(REG.DOCTYPE)){return}}else{if(!_self._rules.isTypeRegistered(REG.DIRECTIVE)){return}isDirective=true}_self._treeNode=node;if(!_self._treeNode){_self._assert("directive \""+data+"\" has no node")}temp=data?data.trim():data;temp=data?data.substr(8).trim():data;_self._rules.fireRules({type:isDirective?REG.DIRECTIVE:REG.DOCTYPE,ojTag:false,position:{start:_self._startIndex,end:_self._endIndex},tag:null,node:_self._treeNode,tagNode:_self._curTagNode,rawData:_self._rawData,data:_self._data,suppData:_self._suppData,elemStack:_self._htmlTree.getElemStack(),utils:{DomUtils:_self._DomUtils},NodeTypes:NodeType},data,_self._curFile,_self._curFileType,temp)}})};JafCore.prototype._auditJSLinkedFiles=function(){var link,data;if(!this._JSLinkStack.length){return}this._info("\n** Auditing script links");this._fileSet.setFiles(this._JSLinkStack,this._config.getExclude(),this._getMsgCtx());while(true){link=this._fileSet.getNextFile();if(!link){return}this._info("\n** Reading link '"+link+"'");data=this._readFile(link);if(data){this._auditJS(data)}else{}}};JafCore.prototype._auditCSSLinkedFiles=function(){var link,data,i;for(i=0;i<this._CSSLinkStack.length;i++){link=this._CSSLinkStack[i];this._info("\n** Reading link '"+link+"'");data=this._readFile(link);if(data){this._auditStyleSheet(data)}}};JafCore.prototype._auditStyleSheet=function(data){this._reporter.clearIssues();this._fileIndex.clear();this._startCssPosition={row:1,col:1,index:0};this._data=data;this._rawData=!this._inZip?data:null;this._parseCss(data);this._flushIssues(data)};JafCore.prototype._addStyleSheetLinkToStack=function(link){var stylePath,nd;if(!this._isCLI){return}nd=this._nd;if(link.toLowerCase().startsWith("http")){this._debug("ignoring remote stylesheet link '"+link+"'");return}if(nd.path.basename(link).startsWith("oj-alta")){this._debug("ignoring JET stylesheet link '"+link+"'");return}stylePath=nd.path.join(nd.path.dirname(this._curFile),link);if(this._CSSLinkStack.indexOf(stylePath)<0){if(this._fsUtils.fileExists(stylePath)){this._CSSLinkStack.push(stylePath);this._debug("pushing stylesheet link '"+stylePath+"'")}else{this._warn("\nstylesheet not found - '"+stylePath+"'"+" (linked from '"+this._curFile+"'")}}};JafCore.prototype._addJSLinkToStack=function(path){var path,nd;if(!this._isCLI){return}nd=this._nd;if(path.toLowerCase().startsWith("http")){this._debug("ignoring remote JavaScript <script> link '"+path+"'");return}path=nd.path.join(nd.path.dirname(this._curFile),path);if(this._JSLinkStack.indexOf(path)<0){if(this._fsUtils.fileExists(path)){this._JSLinkStack.push(path);this._debug("pushing JS link '"+path+"'")}else{this._warn("\nJavaScript <script> src link not found - '"+path+"'"+" (linked from '"+this._curFile+"'")}}};JafCore.prototype._auditJson=function(filePath,data){var fileName;this._rawData=this._data=data;fileName=this._isAMD?filePath:this._nd.path.basename(filePath);if(fileName===COMPONENT_JSON){this._auditComponentJson(filePath);this._flushIssues();return}if(!data){return}if(fileName===CONFIG_FILE_DEF||fileName===CONFIG_FILE_OJAF){return}this._parser.parse(data,this._curFile,this._curFileType);this._flushIssues(data)};JafCore.prototype._auditMarkdown=function(data){if(!data){return}this._rawData=this._data=data;this._metaLib.setCurFileType(this._curFileType);this._parser.parse(data,this._curFile,this._curFileType);this._flushIssues(data)};JafCore.prototype._auditComponentZip=function(filePath){var files,fileType,resp,rc,endZip;this._reporter.clearIssues();this._fileIndex.clear();files=this._compSvcs.getZipContents(filePath);if(files instanceof Error){files=files.message}if(this._debugMode){if(typeof files==="string"){this._debug("ZIP ERROR : "+files)}else{this._debug("Zip contents ("+filePath+" : "+this._curFile+")");this._debugZipContents(files)}}this._zipFileObjs=files;this._startIndex=0;this._endIndex=0;this._curFileType=FILETYPE.ZIP;this._rawData=null;rc=this._fireHookFileRules(files);if(typeof rc===BOOLEAN&&!rc){this._compSvcs.deleteZipFile();this._flushIssues();this._flushContainerIssuesAsObjects();return}this._rawData=this._data=null;if(Array.isArray(files)){this._iterateOverZipContents(files,function(obj,path){if(endZip){return}fileType=this._extractFileType(obj.name,null);this._debug("zip entry -> "+path+obj.name);if(FILETYPE.isFileTypeSupportedInZip(fileType)&&this._targFiletypes.includes(fileType)){this._rules.setJSCommentCallback(null);this._curFileType=fileType;this._curFile=path+obj.name;resp=this._createResponseObj(path+obj.name,fileType);if(resp.body){if(obj.name===COMPONENT_JSON){if(!this._auditComponentJson(null,resp)){endZip=true}this._flushIssues(resp.body)}else if(fileType===FILETYPE.HTML){this._auditHtml(resp.body)}else if(fileType===FILETYPE.JS){this._auditJS(resp.body)}else if(fileType===FILETYPE.JSON){this._auditJson(obj.name,resp.body)}else if(fileType===FILETYPE.CSS){this._auditStyleSheet(resp.body)}else if(fileType===FILETYPE.MD){this._auditMarkdown(resp.body)}}}}.bind(this))}this._compSvcs.deleteZipFile();this._flushContainerIssuesAsObjects()};JafCore.prototype._iterateOverZipContents=function(files,cb,path){var i,obj,path=path||"";for(i=0;i<files.length;i++){obj=files[i];if(obj.isFile&&obj.name===COMPONENT_JSON){cb(obj,path);break}}for(i=0;i<files.length;i++){obj=files[i];if(obj.isFile){if(obj.name!==COMPONENT_JSON){cb(obj,path)}}else{this._iterateOverZipContents(obj.files,cb,obj.path)}}};JafCore.prototype._auditComponentJson=function(resource,resp){var obj,data,rc,compType,fileName;if(!resp){if(resource){if(this._data){data=this._data}else{data=this._readFile(resource);this._data=data}if(!data){return false}fileName=this._isAMD?resource:this._nd.path.basename(resource);if(fileName!==COMPONENT_JSON){return}}else{return false}}else if(resp.type===FILETYPE.JSON){data=resp.body;this._data=data}this._curFileType=FILETYPE.JSON;if(this._curFile.indexOf(COMPONENT_JSON)<0){this._curFile=COMPONENT_JSON}this._metaLib.setCurFileType(this._curFileType);obj=this._parser.parseOnly(data,this._curFile,FILETYPE.JSON);if(typeof obj.msg==="string"){this._startIndex=this._endIndex=obj.position}else{this._startIndex=this._endIndex=0}if(this._inZip){this._suppData=obj}this._loadComponentServices();rc=this._fireHookFileRules(obj.ast,obj);if(typeof rc===BOOLEAN&&!rc){return false}if(obj.msg){return false}switch(obj.obj.type){case"composite":case"core":case"pack":case"reference":case"resource":case"vbcs-pattern":case"vbcs-template":compType=obj.obj.type;break}this._rules.fireRules({type:"compjson",node:obj.ast,tagNode:null,rawData:this._rawData,data:this._data,suppData:obj,zipContent:this._zipFileObjs},null,this._curFile,FILETYPE.JSON,obj,false);if(!obj.obj.type){compType="composite"}if(compType){this._rules.fireRules({type:"compjson"+"-"+compType,node:obj.ast,tagNode:null,rawData:this._rawData,data:this._data,suppData:obj,zipContent:this._zipFileObjs},null,this._curFile,FILETYPE.JSON,obj,false)}return true};JafCore.prototype._parseCss=function(text){var ret=false;try{this._debug("Parsing CSS...");this._CssLib.parse(text,this._curFile,this._startCssPosition);ret=true}catch(e){for(var i=0;i<e.length;i++){this._console("[Fail]: ("+this._curFile+")\n "+e[i].message,"E");this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(2)] : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}}return ret};JafCore.prototype._cssErrorEvent=function(ev){var opts=this._rules.getRuleOptions(RULE_CSS_DIAGNOSE,JAF_RSI);if(!opts||!opts.enabled){for(var i=0;i<ev.length;i++){this._console("[Fail]: ("+this._curFile+")\n "+ev[i].message,"E");this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(2)] : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}return}var rowWas,rowNow,colWas,colNow,msg;var i,error;for(i=0;i<ev.length;i++){error=ev[i];rowWas=error.line;colWas=error.column;rowNow=rowWas+this._startCssPosition.row-1;colNow=colWas+this._startCssPosition.col-1;msg="("+error.name+") "+this._CssLib.formatMsg(error);this._reportJafIssue(new Issue(msg),RULE_CSS_DIAGNOSE,rowNow,colNow,0+this._startCssPosition.index+error.offset,1+this._startCssPosition.index+error.offset);this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(3) : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}};JafCore.prototype._setupCssParser=function(){this._CssLib.addListener("error",this._cssErrorEvent.bind(this));this._CssLib.addListener("Rule",this._cssRule.bind(this));this._CssLib.addListener("Selector",this._cssSelectorX.bind(this));this._CssLib.addListener("ClassSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("TypeSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("IdSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("PseudoClassSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("SelectorList",this._cssSelectorX.bind(this));this._CssLib.addListener("Atrule",this._cssAtrule.bind(this));this._CssLib.addListener("StyleSheet",this._cssSheet.bind(this))};function _mapSelNodeToRegisterType(node){const SELTYPES={"Selector":"css-selector","SelectorList":"css-sel-list","ClassSelector":"css-sel-class","IdSelector":"css-sel-id","TypeSelector":"css-sel-type","PseudoClassSelector":"css-sel-pseudo"};return SELTYPES[node.type]};JafCore.prototype._cssRule=function(node,ast,list){var ctx;if(this._rules.isTypeRegistered("css-rule")){ctx=this._cssPrepCtx("css-rule",node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,node,this._curFile,this._curFileType,list,this._curFileType===FILETYPE.HTML)}if(this._rules.isTypeRegistered("css-var")){if(node.prelude&&node.prelude.children&&node.prelude.children.length){let i,decl;let block=node.block.children;for(i=0;i<block.length;i++){decl=block[i];if(decl.type==="Declaration"&&decl.property.startsWith("--")){if(ctx){ctx.type="css-var"}else{ctx=this._cssPrepCtx("css-var",node,ast)}ctx.offset=this._startCssPosition;ctx.position={line:decl.loc.start.line+this._startCssPosition.row-1,col:decl.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,decl,this._curFile,this._curFileType,node,this._curFileType===FILETYPE.HTML)}}}}};JafCore.prototype._cssSelectorX=function(node,ast){var type=_mapSelNodeToRegisterType(node);if(!type){return}if(!this._rules.isTypeRegistered(type)){return}var ctx=this._cssPrepCtx(type,node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,node,this._curFile,this._curFileType,null,this._curFileType===FILETYPE.HTML)};JafCore.prototype._cssAtrule=function(node,ast){var type,fire,ctx,i;for(i=0;i<2;i++){switch(i){case 0:type="css-@"+node.name;break;case 1:type="css-atrule";break}fire=this._rules.isTypeRegistered(type);if(fire){if(!ctx){ctx=this._cssPrepCtx(type,node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1}}else{ctx.type=type}this._rules.fireRules(ctx,node,this._curFile,this._curFileType,node.name,this._curFileType===FILETYPE.HTML)}}};JafCore.prototype._cssSheet=function(node,ast,list){if(!this._rules.isTypeRegistered("css-sheet")){return}var ctx=this._cssPrepCtx("css-sheet",node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,node,this._curFile,this._curFileType,list,this._curFileType===FILETYPE.HTML)};JafCore.prototype._cssPrepCtx=function(type,node,ast){var ctx=this._ctxCss;ctx.type=type;ctx.CssNode=node;ctx.ast=ast;ctx.position={},ctx.tagNode=this._curTagNode,ctx.rawData=this._rawData,ctx.data=this._data,ctx.suppData=this._suppData,ctx.zipContent=this._zipFileObjs,ctx.utils.CssUtils=CssUtils;return ctx};JafCore.prototype._auditTsOrTsx=function(data,inner){this._debug("Auditing TS...");this._reporter.clearIssues();this._parser.startJsPosition={row:0,col:0,startIndex:0,endIndex:0};this._fileIndex.clear();this._data=data;this._rawData=!this._inZip?data:null;this._metaLib.setCurFileType(this._curFileType);this._parser.parse(data,this._curFile,this._curFileType,inner);this._flushIssues(data)};JafCore.prototype._auditJS=function(data){this._debug("Auditing JS...");var _self=this,rc;this._reporter.clearIssues();this._startJsPosition={row:0,col:0,startIndex:0,endIndex:0};this._fileIndex.clear();this._data=data;this._rawData=!this._inZip?data:null;this._parseJS(data,function(treenode){rc=_self._fireHookFileRules(treenode,null)});_self._fireHookFileRules(null,null);this._flushIssues(data);return rc};JafCore.prototype._parseJS=function(data,cb){var ret=false,rowNow,colNow,issue,opts,arRawComs,isConfigComments;try{this._debug("Parsing JS...");isConfigComments=this._config.getComments();this._Ast=new AST(data,this._config.getEcmaVer(),isConfigComments,this._getMsgCtx());ret=true}catch(e){opts=this._rules.getRuleOptions(RULE_JS_DIAGNOSE,JAF_RSI);if(opts&&opts.enabled){rowNow=e.lineNumber+(this._startJsPosition.row===0?0:this._startJsPosition.row-1);colNow=e.column+(this._startJsPosition.col===0?0:this._startJsPosition.col-1);issue=new Issue("JavaScript syntax - "+e.message);this._reportJafIssue(issue,RULE_JS_DIAGNOSE,rowNow,colNow,e.index+this._startJsPosition.startIndex,e.index+this._startJsPosition.startIndex+1)}else{rowNow=e.lineNumber+(this._startJsPosition.row===0?0:this._startJsPosition.row-2);colNow=e.column+(this._startJsPosition.col===0?0:this._startJsPosition.col-1);console.log("\nJS-DIAGNOSE : ["+rowNow+", "+colNow+"] "+e.message+"\n File -> "+this._curFile)}this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(4) : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}if(ret){if(cb)cb(this._Ast.getProgram());ret=false;try{this._debug("Walking JS...");if(isConfigComments){arRawComs=this._Ast.getRawComments();if(arRawComs&&arRawComs.length){if(!this._comments){this._comments=new Comments(this._nd,this._rules,this._getMsgCtx,this._Utils)}this._comments.reset(this._Ast)}}this._Ast.walk(this._AstNodeHandler.bind(this));ret=true}catch(e){this._error("JavaScript walk failure - "+e+" in "+this._curFile)}}return ret};JafCore.prototype._AstNodeHandler=function(node){var coms;if(this._rules.isTypeRegistered(node.type)){if(this._comments){coms=this._comments.isDisabled(node);if(coms&&(!coms.rules||coms.rules.length===0)){return}this._rules.setJSCommentCallback(coms?function(ruleName){var b=coms.rules.includes(ruleName);return!coms.invert?b:!b}:null)}this._rules.fireRules({type:node.type,node:node,position:{offset:this._startJsPosition.startIndex,start:node.start,end:node.end},data:this._Ast.getData(),utils:{AstUtils:this._Ast.getUtils()}},node,this._curFile,this._curFileType,null)}};JafCore.prototype._processResource=function(url){var resp;this._loadComponentServices();resp=this._compSvcs.loadUrl(url);if(resp.statusCode==4242){this._error("Test server not started?");resp.statusCode==999}if(resp.statusCode!==200){this._warn("Server returned status "+resp.statusCode+" for resource '"+url+"'")}return resp};JafCore.prototype._flushIssues=function(data,noZeroIssueFlush){var i,len,issues,issue,rowcol,showContainer;issues=this._reporter.getIssues();len=issues.length;if(this._debugMode){this._debug(`${len} issue${len===1?"":"s"} reported`)}for(i=0;i<len;i++){issue=issues[i];if(issue.index&&issue.index.line!==undefined){rowcol={row:issue.index.line,col:issue.index.col}}else if(data===null||!issue.index||issue.index.start===undefined){rowcol={row:0,col:0}}else{rowcol=this._fileIndex.getRowCol(data,issue.index,this._curFileType)}issue.rowcol=rowcol}if(len){this._sortIssues(issues)}else{if(!noZeroIssueFlush){if(this._isAPI&&!this._isAsyncTemp||this._isAMD){this._flushIssuesObjects(issues,data);this._reporter.clearIssues()}}return}if(this._curFile||this._curContainer){this._stats.totalIssueFiles++}this._stats.totalIssues+=len;this._updateSeverityStats(issues);if(this._outFormat===OUTFMT.PROSE&&this._curFile){if(!this._titleShown&&this._config.getTitle()){this._showTitle();this._titleShown=true}if(this._outPath||this._isCLI){showContainer=this._curContainer&&this._curContainer!==this._curFile;this._msg("\n** Audit for "+(this._colorMode?this._clr.BRIGHTCYAN(this._curFile):"'"+this._curFile+"'")+(showContainer?" ("+this._curContainer+")":""),"I")}}if(this._isAPI&&this._isAsyncTemp||this._unitTest){this._flushIssuesJson(issues,data)}else{switch(this._outFormat){case OUTFMT.JSON:this._flushIssuesJson(issues,data);break;default:this._flushIssuesProse(issues,data)}}this._reporter.clearIssues()};JafCore.prototype._flushIssuesProse=function(issues,data){if(!this._outPath&&this._isApiOrAmd){this._flushIssuesObjects(issues,data);return}let i,len,issue,msg,fmt,clr=this._clr;let sev,arrow,diagnostic,container,customFmt;len=issues.length;for(i=0;i<len;i++){issue=issues[i];fmt=this._config.getProseFormat();if(fmt){msg=this._applyFormat(fmt,issue.severity,this._curFile,issue.msg,issue,true)}else if(this._outFormat===OUTFMT.LINE){if(this._severity.isBlocker(issue.severity)||this._severity.isCritical(issue.severity)||this._severity.isMajor(issue.severity)){sev=clr.BRIGHTRED(issue.severity);arrow=clr.BRIGHTRED(ARROW)}else if(issue.severity===Severity.MINOR){sev=clr.YELLOW(issue.severity);arrow=clr.YELLOW(ARROW)}else{sev=clr.GREEN(issue.severity);arrow=clr.GREEN(ARROW)}container=this._curContainer&&this._curContainer!==this._curFile?this._curContainer+"/":"";diagnostic=clr.CYAN(issue.msg);if(!(fmt=this._config.getLineFormat())){fmt="\u25CF %s : %m"+(this._msgIdMode?" [%mid]":"")+"\n "+arrow+" %f:%l:%c"}else{customFmt=true}msg=this._applyFormat(fmt,sev,container+this._curFile,diagnostic,issue,customFmt)}else{fmt=DEF_PROSE_FORMAT;msg=this._applyFormat(fmt,issue.severity,"",issue.msg,issue,false);if(this._verboseMode||this._config.getOptions().ruleName){msg+=" ["+issue.prefix+"-"+issue.msgId+" : "+issue.ruleName+"]"}else if(this._msgIdMode){msg+=" ["+issue.prefix+"-"+issue.msgId+"]"}}if(this._isCLI&&this._outFormat!==OUTFMT.LINE){if(this._severity.isBlocker(issue.severity)||this._severity.isCritical(issue.severity)||this._severity.isMajor(issue.severity)){msg=clr.BRIGHTRED(msg)}}this._writeIssue(msg)}};JafCore.prototype._applyFormat=function(fmt,sev,file,message,issue,customFmt){var msg,pos,linecol;pos=issue.rowcol;linecol=pos.row+", "+pos.col;msg=fmt.replace("%pos1","["+linecol+"]");msg=msg.replace("%pos2","("+linecol+")");msg=msg.replace("%mid",issue.prefix+"-"+issue.msgId);msg=msg.replace("%l",pos.row);msg=msg.replace("%c",pos.col);msg=msg.replace("%s",sev);msg=msg.replace("%m",message);msg=msg.replace("%p",issue.prefix);msg=msg.replace("%n",issue.msgId);msg=msg.replace("%r",issue.ruleName);msg=msg.replace("%f",file);if(customFmt){let ruleOpts=this._rules.getRuleOptions(issue.ruleName,issue.rsi);msg=msg.replace("%itag",ruleOpts.hasOwnProperty("issueTag")?ruleOpts.issueTag:"")}return msg};JafCore.prototype._flushIssuesObjects=function(issues){var obj,diag,position,i,len,issues,issue,rowcol;var ruleOpts,loadedRule,ruleDescriptType,descriptObj;ruleDescriptType=this._config.getRuleDescriptions();if(this._curContainer!==this._curFile){if(this._curContainer&&!this._containerIssues){this._containerIssues={container:this._curContainer,issues:[]}}}obj={file:this._curFile,issues:[]};if(ruleDescriptType!=="none"){obj.descriptions={}}len=issues.length;for(i=0;i<len;i++){diag={};issue=issues[i];if(!obj.file&&issue.filepath){obj.file=issue.filepath}ruleOpts=this._rules.getRuleOptions(issue.ruleName,issue.rsi);rowcol=issue.rowcol;diag.msg=issue.msg;diag.msgId=issue.prefix+"-"+issue.msgId;diag.severity=issue.severity;diag.rule=issue.ruleName;diag.position=position={};position.row=rowcol.row;position.col=rowcol.col;if(issue.index&&issue.index.start!==undefined){position.index={};position.index.start=issue.index.start;position.index.end=issue.index.end}if(ruleOpts.hasOwnProperty("issueTag")){diag.issueTag=ruleOpts.issueTag}diag.$hook=ruleOpts&&ruleOpts.$hook?true:false;loadedRule=this._ruleSets.getLoadedRule(issue.rsi,issue.ruleName);if(issue._msgEx){diag.msgEx=issue._msgEx}if(ruleDescriptType==="none"){if(loadedRule){diag.getDescription=loadedRule.getDescription.bind(loadedRule);diag.getShortDescription=loadedRule.getShortDescription.bind(loadedRule)}else{if(issue.ruleName===RULE_HTML_DIAGNOSE){diag.getDescription=function(){return"HTML syntax error."}}else if(issue.ruleName===RULE_JS_DIAGNOSE){diag.getDescription=function(){return"JavaScript syntax error."}}else if(issue.ruleName===RULE_TS_DIAGNOSE){diag.getDescription=function(){return"TypeScript syntax error."}}else if(issue.ruleName===RULE_CSS_DIAGNOSE){diag.getDescription=function(){return"CSS syntax error"}}diag.getShortDescription=diag.getDescription}}else{if(!obj.descriptions[diag.MsgId]){descriptObj={};if(loadedRule){if(ruleDescriptType==="short"||ruleDescriptType==="all"){descriptObj.short=loadedRule.getShortDescription()}if(ruleDescriptType==="long"||ruleDescriptType==="all"){descriptObj.long=loadedRule.getDescription()}}else{var fn;if(issue.ruleName===RULE_HTML_DIAGNOSE){fn=function(){return"HTML syntax error."}}else if(issue.ruleName===RULE_JS_DIAGNOSE){fn=function(){return"Javascript syntax error."}}else if(issue.ruleName===RULE_CSS_DIAGNOSE){fn=function(){return"CSS syntax error"}}else if(issue.ruleName===RULE_INIT_SCHEMA){fn=function(){return"component.json schema violation error"}}if(ruleDescriptType==="short"||ruleDescriptType==="all"){descriptObj.short=fn}if(ruleDescriptType==="long"||ruleDescriptType==="all"){descriptObj.long=fn}}obj.descriptions[diag.msgId]=descriptObj}}obj.issues.push(diag)}this._containerIssues?this._containerIssues.issues.push(obj):this._callbackIssue(obj)};JafCore.prototype._flushContainerIssuesAsObjects=function(){if(this._containerIssues){this._callbackIssue(this._containerIssues);this._containerIssues=null}};JafCore.prototype._flushIssuesJson=function(issues,data){var i,len,issues,issue,rowcol,position,curReport,curIssue,reported;var ruleOpts,ruleDescriptType,descriptObj;if(!this._isCLI&&!this._isAsyncTemp){return}ruleDescriptType=this._config.getRuleDescriptions();if(!this._json){this._json={};this._json.reported=[];this._json.summary={};this._json.messages=[];this._json.run={};if(ruleDescriptType!=="none"){this._json.descriptions={}}}len=issues.length;if(!len){return};reported=this._json.reported;curReport={};if(this._curContainer){curReport.container=this._curContainer}curReport.file=this._curFile;curReport.issues=[];for(i=0;i<len;i++){curIssue={};issue=issues[i];if(!curReport.file&&issue.filepath){curReport.file=issue.filepath}curIssue.severity=issue.severity;curIssue.msg=issue.msg;curIssue.msgId=issue.prefix+"-"+issue.msgId;curIssue.position=position={};ruleOpts=this._rules.getRuleOptions(issue.ruleName,issue.rsi);rowcol=issue.rowcol;position.row=rowcol.row;position.col=rowcol.col;if(issue.index){if(data!==null){position.start=issue.index.start!==undefined?issue.index.start:0;position.end=issue.index.end!==undefined?issue.index.end:0}}if(ruleOpts.hasOwnProperty("issueTag")){curIssue.issueTag=ruleOpts.issueTag}curIssue.$hook=ruleOpts&&ruleOpts.$hook?true:false;curIssue.rule=issue.ruleName;if(ruleDescriptType!=="none"){if(!this._json.descriptions[curIssue.msgId]){descriptObj={};if(ruleDescriptType==="short"||ruleDescriptType==="all"){descriptObj.short=this._rules.getRuleDescription(issue.prefix,issue.ruleName,true)}if(ruleDescriptType==="long"||ruleDescriptType==="all"){descriptObj.long=this._rules.getRuleDescription(issue.prefix,issue.ruleName,false)}this._json.descriptions[curIssue.msgId]=descriptObj}}if(issue._msgEx){curIssue.msgEx=issue._msgEx}curReport.issues.push(curIssue)}reported.push(curReport);if(this._unitTest||this._config.getAppendFileList()){this._json.fileset=this._fileSetList}};JafCore.prototype._sortIssues=function(issues){if(!issues){return}issues.sort(function(a,b){if(a.rowcol.row===b.rowcol.row){return a.rowcol.col-b.rowcol.col}return a.rowcol.row-b.rowcol.row})};JafCore.prototype._flushFinalJson=function(){if(!this._json){this._json={};this._json.summary={};this._json.summary.severities={};this._json.messages=[];this._json.run={}}this._createRunSummary(this._json);this._json.messages=this._messageStack;if(this._isAPI&&this._isAsyncTemp){return this._json}if(this._outPath){const JsonFile=require("../lib//outfile");JsonFile.writeFileSync(this._nd,this._outPath,this._json)}else{this._console(JSON.stringify(this._json,null,4))}};JafCore.prototype._reportJafIssue=function(issue,ruleName,line,col,start,end){var rulePack=this._rules.getRulePack(JAF_RSI);var ctx={rulePack:rulePack,_rsi:JAF_RSI,ruleName:ruleName,position:{line:line,col:col,start:start,end:end},getMsgId:this._getMsgId.bind(this)};rulePack._setCBCtx(ctx);this._reporter.addIssue(issue,ctx)};JafCore.prototype._reportJafErrorMsg=function(key,msg,msgType){var mid=this._msgIdLookup.JAF;if(!(mid=mid[key])){mid="?"}mid=`JAF-${mid}`;if(msgType==="W")this._warn(msg,mid);else if(msgType==="I")this._info(msg);else this._error(msg,mid)};JafCore.prototype._createResponseObj=function(filePath,fileType){return{body:this._compSvcs.extractFileFromZip(filePath),type:fileType}};JafCore.prototype._createRunSummary=function(obj){var summary,run,sev,gitInfo;if(!obj){obj={}}obj.summary=summary={};summary.severities=sev={};obj.run=run={};gitInfo=this._metaLib.getRevisionInfo();summary.issues=this._stats.totalIssues;summary.issueFiles=this._stats.totalIssueFiles;summary.errorFiles=this._stats.errorFiles;summary.parseErrors=this._stats.parseErrors;summary.errors=this._stats.errors;summary.warnings=this._stats.warnings;summary.asserts=this._stats.asserts;summary.filesSelected=this._stats.totalFilesSelected;summary.files=this._stats.totalFilesAudited;summary.urls=this._stats.totalUrlsAudited;summary.rulesActive=this._rules.getActiveRuleCount();summary.rulesFired=this._stats.rulesFired;summary.hooksFired=this._stats.hooksFired;if(this._unitTest||this._config.getRulesFired()){summary.packRulesFired=this._stats.packRulesFired}var sevList=this._severity.getSevList(),sevCore,i;for(i=sevList.length-1;i>=0;i--){sevCore=sevList[i];sev[this._severity.map(sevCore)]=this._stats.totalSevStats[sevCore]}if(this._config.getTitle()){run.title=this._applyMacrosToTitle(this._config.getTitle())}run.date=new Date().toUTCString();run.revision=gitInfo.revision;run.tag=gitInfo.revision;run.jetVersion=gitInfo.jetVersion;if(typeof this._configPath==="string"){run.config=this._configPath.replace(/\\/g,"/")}return obj};JafCore.prototype._getAttrIndex=function(data,index,attrName){var i,j,c,ret=-1;if(index<this._attrIndex){index=this._attrIndex}while(true){i=data.indexOf(attrName,index);if(i>=0){j=this._Utils.eatWhitespace(data,i+attrName.length);if(j>=0){c=data.charAt(j);if(c==="="||c===">"||this._Utils.isWhitespace(data.charAt(i))){ret=i;this._attrIndex=j;break}}index=j}else{break}}if(ret<0){this._error("ASSERT: getAttrIndex '"+attrName+"', "+index+", "+this._curFile)}return ret};JafCore.prototype._getAttrRawValue=function(data,index,attrName,attrValue){var ret=null,delim,i;i=index+attrName.length;if(data.charAt(i)==="="){i=this._Utils.eatWhitespace(data,i+1);delim=data.substr(i,1);delim=delim==="'"||delim==="\""?delim:"\"";ret=delim+attrValue+data.charAt(i+attrValue.length+1)}else{ret=attrValue}return ret};JafCore.prototype._fireHookRules=function(phase,ruleCtx,rsi){ruleCtx=ruleCtx?ruleCtx:this._rules.makeRuleContext();ruleCtx.type=phase;ruleCtx.phase=phase;ruleCtx.utils={};if(phase===REG.PHASE_STARTUP_RULEPACK||phase===REG.PHASE_CLOSEDOWN_RULEPACK){ruleCtx.ojetConfig=this._scaffold?this._scaffold.getOjetConfig():null}if(phase===REG.PHASE_STARTUP||phase===REG.PHASE_STARTUP_RULEPACK||phase===REG.PHASE_START_AUDIT){if(!ruleCtx.utils.jafLib){ruleCtx.utils.jafLib=this._jafLib.getPublic()}}else if(ruleCtx.utils.jafLib){delete ruleCtx.utils.jafLib}return this._rules.fireHookRules(ruleCtx,rsi)};JafCore.prototype._fireHookFileRules=function(node,obj){var ctx;var endfile=!node&&!obj;ctx=this._ctxFileHook;if(this._curFileType!==FILETYPE.JS&&!FILETYPE.isFileTypeTsOrTsx(this._curFileType)&&ctx.utils.AstUtils!==undefined){delete ctx.utils.AstUtils}if(this._curFileType!==FILETYPE.HTML&&this._curFileType!==FILETYPE.JSON&&ctx.utils.DomUtils!==undefined){delete ctx.utils.DomUtils;delete ctx.utils.semVerUtils}if(this._curFileType!==FILETYPE.ZIP&&ctx.zipContent!==undefined){delete ctx.zipContext}ctx.type=endfile?this._inScriptJs?"endscript":"endfile":this._inScriptJs?"startscript":"file";ctx.phase=REG.PHASE_FILE;ctx.filepath=this._curFile;ctx.filetype=this._curFileType;if(obj){ctx.suppData=obj}if(this._curFileType===FILETYPE.JSON){ctx.position={start:this._parser.startIndex,end:this._parser.endIndex}}else{ctx.setPosition(0,0)}if(this._curFileType===FILETYPE.JS||FILETYPE.isFileTypeTsOrTsx(this._curFileType)||this._inScriptJs){ctx.node=node;if(this._curFileType===FILETYPE.JS||this._inScripts){ctx.utils.AstUtils=this._Ast?this._Ast.getUtils():null}else{ctx.utils.AstUtils=this._parser.getAstUtils()}}else if(this._curFileType===FILETYPE.HTML){ctx.node=node;ctx.utils.DomUtils=this._DomUtils;ctx.NodeTypes=NodeType}else if(this._curFileType===FILETYPE.JSON||this._curFileType===FILETYPE.MD){ctx.node=node}else if(this._curFileType===FILETYPE.ZIP){ctx.zipContent=node}ctx.utils.OjetLib=this._ojetLib;ctx.rawData=this._rawData;ctx.data=this._inScriptJs?this._inScriptJsData:this._data;return this._rules.fireHookRules(ctx)};JafCore.prototype._fireRPHookRules=function(phase){var rsi,packs,ruleCtx,phase,rc;packs=this._ruleSets.getRulePacks();ruleCtx=this._rules.makeRuleContext();for(rsi=0;rsi<packs.length;rsi++){rc=this._fireHookRules(phase,ruleCtx,rsi);if(typeof rc===BOOLEAN&&!rc){break}}return rc};JafCore.prototype._updateSeverityStats=function(issues){var issues,issue,sevStats,i,len;len=issues.length;sevStats=this._stats.sevStats;for(i=0;i<len;i++){issue=issues[i];switch(this._severity.unmap(issue.severity)){case this._severity.CRITICAL:sevStats.critical++;break;case this._severity.BLOCKER:sevStats.blocker++;break;case this._severity.MAJOR:sevStats.major++;break;case this._severity.MINOR:sevStats.minor++;break;case this._severity.INFO:sevStats.info++;break}}};JafCore.prototype._dumpFile=function(data){var datalen,line=1,c,i;this._console("\n----------- Dump File ------------","D");datalen=data?data.length:0;for(i=0;i<datalen;i++){c=data.charAt(i);this._console("i="+i+" c="+(c==="\n"?"\\n":c==="\r"?"\\r":c),"D");if(c==="\n"){line++;this._console("NL i="+i+" line="+line,"D");continue}}this._console("\n----------- End Dump ------------\n","D")};JafCore.prototype._dumpRegistry=function(){var reg=this._rules.dumpRegistry();console.log(reg)};JafCore.prototype._getPosition=function(){return{start:this._startIndex,end:this._endIndex}};JafCore.prototype._processCmdLine=function(){var rc,g,i,b;rc=this._cli.checkArgs(this._rtf,this._showVersion.bind(this));if(!rc||rc==="end"){return rc}this._verboseMode=this._rtf.verboseSet?this._rtf.verboseMode:false;this._verboseMode=this._rtf.verboseSetVeto?false:this._verboseMode;this._debugMode=this._rtf.debugSet?this._rtf.debugMode:false;this._debugMode=this._rtf.debugSetVeto?false:this._debugMode;this._getMsgCtx(true);this._dryRunSet=this._rtf.dryRunSet;this._configPath=this._rtf.configPath;this._outPath=this._rtf.outPath;this._outFormat=this._rtf.outFormat;this._srcStack=this._rtf.srcStack;this._base=this._rtf.base;this._followLinksSet=this._rtf.followLinksSet;this._followLinks=this._rtf.followLinksSet?this._rtf.followLinks:true;this._retCode=this._rtf.retCode;this._cliSev=this._rtf.severitySet?this._rtf.cliSev:null;this._colorMode=this._rtf.colorSet?this._rtf.colorMode:true;this._colorSet=this._rtf.colorSet;this._msgIdMode=this._rtf.msgIdModeSet?this._rtf.msgIdMode:false;this._isManual=this._rtf.isManual;this._unitTest=this._rtf.unitTest;if(!this._colorMode){this._clr.enable(false)};if(this._rtf.migrator){return true}if(this._rtf.groupsSet){this._groupsSet=this._rtf.groupsSet;for(i=0;i<this._groupsSet.length;i++){g=this._groupsSet[i];if(!GROUPS.isGroup(g)){if(g.startsWith("jet")||g.startsWith("htm")){this._error("Command line override of 'groups' -> '"+g+"' is not defined!");b=true}}}}if(b){return 0}this._cli.displayCmdLineOptionsSet(this._rtf,this._getAppCtx());return true};JafCore.prototype._dumpRules=function(){var ret=false;if(this._isCLI){if(this._debugMode||this._dryRunSet){return false}ret=this._cli.dumpRules(this._rules,this._outPath)}return ret};JafCore.prototype._dumpCompositeNames=function(){if(!this._dryRunSet){this._components.dumpComponentNames()}};JafCore.prototype._startupValidation=function(){var i,path,val,ftype,err,noMetadata=false,jafConfig,rc;var nd;if(!(this._isCLI||this._isAPI||this._isAMD)){this._error("*** Unknown run mode!");return 1}if(this._isAPI&&this._isAsync){this._error("*** SYSTEM ERROR - API and Async mode incompatability check!");return 1}if(this._isCliOrApi&&!this._checkNodeVer()){return 1}nd=this._nd;this._ageLib=new(require("../lib/checkage"))(DEFAULTS.JETVER,this._getMsgCtx());this._ageLib.checkAge();if(this._isCLI){this._cli=new nd.Cli(nd,this._curDir,this._getAppCtx());this._appCtx=null;let theme=this._cli.checkEnvColor();if(theme===this._clr.THEME_LIGHT){this._clr.setTheme(theme)}}if(!nd.jetver.init()){this._error("Start-up failure loading JET metadata versioning.");return 1}if(this._isCliOrApi&&!this._isManual){this._metaLib=new metaLib(nd,this._runMode,this._getMsgCtx(),this._Utils,this._fsUtils)}else if(this._isAMD){if(!this._AmdMeta||!this._AmdMeta.jetMeta){this._error("AMD mode - no Metadata supplied.");return 1}this._metaLib=new metaLib(nd,this._runMode,this._getMsgCtx(),this._Utils,null);this._metaLib.setAmdMeta(this._AmdMeta)}this._tsxUtils.setMetaLib(this._metaLib);if(!this._isManual){this._reporter=new Reporter(this._getMsgCtx())}if(this._isCLI){rc=this._processCmdLine();if(rc==="end"){return-1}if(!rc){return 1}rc=this._cli.checkImmedCmds(this._rtf,VERSION,this._showVersion.bind(this),this._openWriter.bind(this));if(rc===1){return-1}this._info(`Mode: ${this._runMode.toUpperCase()}`);this._scaffold=new nd.scaffold(this._curDir,nd,this._getAppCtx(true));this._isOJET=this._scaffold.init();if(this._isOJET){jafConfig=this._scaffold.handleOjetConfig(this._rtf.scaffoldSet);if(jafConfig==="error"){return 1}if(this._rtf.scaffoldSet){return-1}}else if(this._isOJETCLI){this._error("OJET CLI configuration file not found in '"+this._curDir+"'");return 1}else if(this._rtf.scaffoldSet){jafConfig=this._scaffold.createNonOjetConfig();if(jafConfig==="error"){return 1}return-1}this._ojetLib=this._scaffold.getOjetLib();if(this._tsUtils){this._tsUtils.setOjetConfig(this._ojetLib.getConfig())}}if(this._isCliOrApi){if(this._configPath!==null){if(typeof this._configPath==="string"){ftype=this._fsUtils.getFileType(this._configPath);if(ftype==="d"){path=this._configPath+this._fileSep+CONFIG_FILE_OJAF;ftype=this._fsUtils.getFileType(path);if(ftype!=="f"){path=this._configPath+this._fileSep+CONFIG_FILE_DEF;ftype=this._fsUtils.getFileType(path)}this._configPath=path}if(ftype!=="f"){this._error("cannot find configuration file '"+this._configPath+"'");return 1}}}}if(this._isCliOrApi){if(this._configPath===null){this._configPath=nd.path.join(this._curDir,CONFIG_FILE_OJAF);this._configPath=nd.path.resolve(this._configPath);if(!this._fsUtils.fileExists(this._configPath)){this._configPath=nd.path.join(this._curDir,CONFIG_FILE_DEF);this._configPath=nd.path.resolve(this._configPath)}}let objConfig=typeof this._configPath==="object";this._info((objConfig?"C":"Active C")+"onfig "+(objConfig?"is pre-built object":this._configPath?"is '"+this._configPath+"'":" is not defined"))}this._config=new nd.Config(nd,this._base,this._configPath,this._applyMacros.bind(this),this._Rules,this._severity,this._groupsSet,this._cliSev,this._getMsgCtx(),this._getModeCtx(),this._Utils,this._fsUtils,(verbose,debug)=>{if(!this._rtf.debugSet&&!this._rtf.debugSetVeto){this._debugMode=debug}if(!this._rtf.verboseSet&&!this._rtf.verboseSetVeto){this._verboseMode=verbose}return{verbose:this._verboseMode,debug:this._debugMode}},this._metaLib.getMetaVers().runver);if(this._appCtx){this._appCtx.config=this._config}if(!this._config.isOk()){return 1}this._configLib=this._config.getConfigLib();if(this._config._config.options.$reg){this._rtf.regListenerTypesSet=true}this._processConfigOptions();this._reporter.setDebugMode(this._debugMode);if(this._unitTest){this._console("Unit Test Invocation")}this._metaLib.setTheme(this._config.getTheme());if(this._isStdoutRedirected){this._colorMode=false}if(this._isCliMode){if(typeof this._retCode===UNDEF){let copts=this._config._config.options;let prop=typeof copts.retCode!==UNDEF?"retCode":typeof copts.rc!==UNDEF?"rc":null;this._retCode=prop?copts[prop]:AUTO}else{val=this._config.validateRetCode(this._retCode,sev=>{this._error(`command line error : --retCode severity '${sev}' is invalid!`)});this._retCode=val||typeof val==="number"?val:1}}if(this._rtf.severitySet&&this._cliSev){if(!this._severity.isValidConfigSeverity(this._cliSev)){this._error(`Config entry 'severity' ('${this._cliSev}') is not 'major/minor/blocker/critical/info', 'all', or a remapped severity!`);return 1}}if(this._verboseMode||this._debugMode){this._info("\n---------------\nOriginal Config:\n---------------\n"+(this._config._origConfig?JSON.stringify(this._config._origConfig,null,3):"None!")+"\n")}if(this._rtf.dacSet||this._verboseMode||this._debugMode){let s="+---------------+\n| Active Config |\n+---------------+\n"+(this._config._config?JSON.stringify(this._config._config,null,3):"None!")+"\n";if(this._rtf.dacSet){console.log(s)}else this._info(s,"I",true);if(this._rtf.dacSet&&!this._dryRunSet){return-1}}if(this._isManual){val=this._rtf.manCheckL||this._rtf.manCheckS;if(val.startsWith("jet-")||val.startsWith("jaf-")||val.startsWith("oj-")){this._config._config.ruleNames=[]}}if(!this._isAMD&&!this._isManual){this._tmpDir=this._config.getTempDir();this._tmpDir=nd.path.join(this._tmpDir?this._tmpDir:this._curDir,TEMP_DIR);if(this._fsUtils.fileExists(this._tmpDir,true)){this._info("[Info]: Using temp work folder : "+this._tmpDir);this._fsUtils.deleteFolder(this._tmpDir,false)}else{this._info("Creating temp work folder : "+this._tmpDir);rc=this._fsUtils.createFolder(this._tmpDir);if(typeof rc!==BOOLEAN){this._error(rc);return 1}}}if(this._isCLI){this._metaLib.setStylesets(this._config.getStylesets())}this._ojc=new OjcPack(this._isOJET,this._isAMD,this._curDir,this._getMsgCtx(),nd,this._fsUtils);if(this._isCliOrApi){if((val=this._config.getJetCorePack())||typeof val===BOOLEAN&&!val){this._ojc.setPath(val)}}else if(this._isAMD){if(this._AmdMeta&&(val=this._AmdMeta.jetCorePack)){this._ojc.setPath(val)}else{this._ojc.setPath(false)}this._ojc.load()}if(this._isAMD&&this._AmdMeta.ccaMeta){this._processAMDUserCCAMeta(this._AmdMeta.ccaMeta);if(this._components.isOk()){this._metaLib.setComponentsLib(this._compSvcs,this._components)}}if(!this._isManual){if(this._isCliOrApi){if(!this._srcStack||this._srcStack.length===0){this._srcStack=this._config.getFiles();if(!Array.isArray(this._srcStack)){this._srcStack=[]}if(this._srcStack.length===0){if(!this._isAPI){path=nd.path.resolve("./*.*");this._srcStack.push(path)}}}this._fileSet.setFiles(this._srcStack,this._config.getExclude(),this._getMsgCtx())}}if(this._isCliOrApi){val=this._rtf.jetverSet?this._rtf.jetverSet:this._config.getJetVer();this._metaPath=val.split(".");this._metaPath=this._metaPath[0]+"."+this._metaPath[1]+".0";this._metaPath=nd.path.join(__dirname,"../meta",this._metaPath,META_FILE_OBJ);this._info("[info]: Metadata path (for "+val+") is '"+this._metaPath+"'");if(noMetadata||!this._metaLib.loadMeta(this._metaPath)){return 1}}if(require("semver").gte(this._metaLib.getMetaVers().runver,"13.0.0")){this._ojc.load()}if(this._verboseMode){this._metaLib.displayImpls()}this._macros.$jetver=this._metaLib.getRevisionInfo().jetVersion;this._macros.$jafconfig=this._configPath;if(this._isCliOrApi&&!this._isManual){if(!this._outPath){val=this._config.getOutPath();if(val){if(typeof val==="string"&&val.length){this._outPath=val==="$noout"?null:val}else if(typeof val!=="string"){this._error("Config 'outPath' '"+val+"' is not a valid path - ignored");return 1}}}if(this._outPath==="$noout"){this._outPath=null}else if(this._outPath){this._info("[info]: Output path is '"+this._outPath+"'","I");if(this._fsUtils.getFileType(this._outPath)==="d"){this._error("Config 'outPath' "+this._outPath+"' is a dir and not a filename");return 1}if(!this._dryRunSet){err=this._openWriter(this._outPath)}}if(!this._outFormat){val=this._config.getFormat();this._outFormat=val?val:OUTFMT.PROSE}}if(this._isCliOrApi){if(!this._rtf.followLinksSet){this._followLinks=!!this._config.getFollowLinks()}if(this._verboseMode){this._info("[info]: "+(this._followLinks?"Following":"Not following")+" stylesheet/script <link>'s")}}if(this._config.getRunRuleNames()&&!this._isManual){val=this._config.getGroups();if(val.length>1||val.length===1&&val[0]!=="all"){this._error("Config \"groups\" and \"ruleNames\" are mutually exclusive");return 1}}val=this._config.getGroups();if(val.includes("jet-csp")&&!this._config.isBuiltinCspRules()){this._error("group 'jet-csp' specified, but CSP builtin rulepack not enabled");return 1}for(i=0;i<val.length;i++){if(val[i].startsWith("jet-")&&val[i]!=="jet-csp"){if(!this._config.isBuiltinJetRules()){this._error("group '"+val[i]+"' specified, but JET builtin rulepack not enabled");return 1}}}if(!this._isManual){this._tabs=require("../lib/tabs");this._tabs=new this._tabs;if(!this._tabs.validate(this._config.getTabs(),this._getMsgCtx())){return 1}this._fileIndex.setTabHandler(this._tabs);this._Utils.setTabHandler(this._tabs)}this._userDefs=this._config.getUserDefs();this._reporter.setOutFormat(this._outFormat);this._reporter.setSevInstance(this._severity);this._reporter.setMessageFilter(this._config._config.messages);if(this._verboseMode||this._debugMode){let pl=this._plugin.getPluginList();let l=pl.length?`${pl.join(",")}`:"None";this._info(`Plugins loaded: ${l}.`)}this._ruleSets=new RuleSet(this._config,nd,this._getAppCtx(true),this._getMsgCtx(),this._AmdRulePacks);if(!this._ruleSets.loadRulePacks(this._config._config,this._dryRunSet,this._rtf.dumpRulesSet||this._rtf.dumpRulesJsonSet||this._rtf.dumpRulesSonarSet,jafMsgIds=>{this._msgIdLookup=jafMsgIds})||this._stats.errors){return 1};this._msgIdLookup=this._ruleSets.loadMsgIds();if(this._rtf.regListenerTypesSet){this._ruleSets.dumpRegistry();return-1}if(this._isCLI&&this._rtf.xgroupList){this._cli.showExternalGroups(this._ruleSets.getRuleSets());return-1}this._targFiletypes=this._ruleSets.getActiveFiletypes();if(this._verboseMode||this._debugMode){val=function(self){var s="",i;for(i=0;i<self._targFiletypes.length;i++){if(i){s+=", "}s+="'."+self._targFiletypes[i]+"'"}return s}(this);this._info(`[info]: Filetypes targeted : [${val}]`)}this._rules=new Rules(this._ruleSets,nd,this._config._config,this._getMsgId.bind(this),this._getAppCtx());this._appCtx.rules=this._rules;this._msgIdLookup=this._ruleSets.loadMsgIds(true);if(this._msgIdLookup===-1){return 1}if(this._dumpRules()){return-1}if(this._isCLI&&this._cli.manualCheckForNonJet(this._rules)){return-1}if(!this._isManual){if(this._isCliOrApi){this._loadComponentSupport();if(this._components.isOk()){this._metaLib.setComponentsLib(this._compSvcs,this._components)}if(this._verboseMode||this._debugMode){this._dumpCompositeNames()}}}if(this._isCLI&&this._cli.dumpMaintenance(this._metaLib)){return-1}this._DomUtils=new DomUtils(nd,this._getAppCtx(),this._tabs,this._fileIndex);this._metaLib.setDomUtils(this._DomUtils);this._ctxTag=this._rules.makeRuleContext();this._ctxAttr=this._rules.makeRuleContext();this._ctxCss=this._rules.makeRuleContext();this._ctxFileHook=this._rules.makeRuleContext();this._ctxTag.utils={};this._ctxAttr.utils={};this._ctxCss.utils={};this._ctxFileHook.utils={};this._CssLib=new CssLib(this._nd,this._getAppCtx());this._setupCssParser();this._parser=new Parser(this,nd,this._rules,this._fileIndex,this._DomUtils,this._getAppCtx(),this._getMsgCtx(),{RULE_JS_DIAGNOSE:"jaf-js-diagnose",RULE_TS_DIAGNOSE:"jaf-ts-diagnose",RULE_CSS_DIAGNOSE:"jaf-css-diagnose",RULE_HTML_DIAGNOSE:"jaf-html-diagnose",RULE_INIT_SCHEMA:"jaf-init-schema",RULE_TS_NO_PARSER:"jaf-ts-noparser",FILETYPE_HTML:FILETYPE.HTML,FILETYPE_CSS:FILETYPE.CSS,JAF_RSI:0})};JafCore.prototype._displayCliFinalStats=function(){this._stats.errorFiles+=this._fileSet.getFileErrorCount();this._cli.displayFinalStats(this._stats,this._severity,this._console.bind(this),this._info.bind(this),this._unitTest,this._useStderr,elapsed)};JafCore.prototype._emitApiRunSummary=function(){var o;o=this._createRunSummary();if(this._events){this._events.emit(this._events.JAF_EVENT_SUMMARY,o)}if(this._ctxCB.cbSummary){this._ctxCB.cbSummary(o)}};JafCore.prototype.setApiCallbacks=function(cbIssue,cbMsg,cbSummary){if(this._ctxCB){if(cbIssue){this._ctxCB.cbIssue=cbIssue}if(cbMsg){this._ctxCB.cbMsg=cbMsg}if(cbSummary){this._ctxCB.cbSummary=cbSummary}}};JafCore.prototype.getStats=function(){return this._stats};JafCore.prototype._showTitle=function(){var title=this._config.getTitle();if(title){title=this._applyMacrosToTitle(title);if(Array.isArray(title)){for(var i=0;i<title.length;i++){this._msg(title[i])}}else{this._msg(title)}}};JafCore.prototype._applyMacrosToTitle=function(title){if(title){if(Array.isArray(title)){for(var i=0;i<title.length;i++){title[i]=this._applyMacros(title[i])}}else{title=this._applyMacros(title)}}return title};JafCore.prototype._readFile=function(filePath,wantBuffer){var data;this._curFile=filePath;try{if(!wantBuffer){data=this._nd.fs.readFileSync(filePath,"utf8")}else{data=this._nd.fs.readFileSync(filePath)}}catch(e){this._stats.errorFiles++;this._error(e.code+" reading file '"+filePath+"'");data=null}return data};JafCore.prototype._noteFileSet=function(filePath){if(!this._fileSetList){this._fileSetList=[]}this._fileSetList.push(filePath)};JafCore.prototype._displayStartMsg=function(){this._showVersion();this._showStartupInfo()};JafCore.prototype._showStartupInfo=function(){var info=this._metaLib.getRevisionInfo();var ojcVersion=this._ojc.getPackVersion();this._console(`JET version : ${info.jetVersionRaw}`,"I");this._console(`Meta built : ${info.date} - ${info.time.replace("edt","EDT").replace("pdt","PDT").replace("utc","UTC")}`,"I");this._console(`Core Meta : ${ojcVersion?ojcVersion:"not loaded"}`,"I");this._console(`Audit run on: ${this._Utils.getCurrentDate()} - ${this._Utils.getCurrentTime()}`,"I");if(this._config.isBuiltinJetRules()){this._console(`Theme : ${this._config.getTheme()}`,"I")}};JafCore.prototype._showVersion=function(){var msg,descript;descript=this._rtf.migrator?DESCRIPTION_MIG:DESCRIPTION;msg=`${this._isCLI?"\n":""}${descript} (JAF ${VERSION} ${this._nd.os.platform()})`;this._console(msg,"I")};JafCore.prototype._getInfo=function(){return{version:VERSION,description:DESCRIPTION,platform:this._nd.os.platform(),packageVer:DEFAULTS.JETVER}};JafCore.prototype._console=function(msg,type){this._isCLI?console.log(msg):this._callbackMsg(msg,type?type:"N")};JafCore.prototype._msg=function(msg){this._writer.put(msg)};JafCore.prototype._callbackMsg=function(msg,type){if(this._outFormat===OUTFMT.JSON||this._isAPI&&this._isAsyncTemp){this._messageStack.push({msg:msg,type:type})}if(this._events){this._cbMsgObj.type=type;this._cbMsgObj.msg=msg;this._events.emit(this._events.JAF_EVENT_MESSAGE,this._cbMsgObj)}if(this._ctxCB.cbMsg){this._cbMsgObj.type=type;this._cbMsgObj.msg=msg;this._ctxCB.cbMsg(this._cbMsgObj)}};JafCore.prototype._callbackIssue=function(obj){if(this._events){this._events.emit(this._events.JAF_EVENT_ISSUE,obj)}if(this._ctxCB.cbIssue){this._ctxCB.cbIssue(obj)}};JafCore.prototype._writeIssue=function(msg){this._msg(msg)};JafCore.prototype._info=function(msg,type,force){if(this._verboseMode||this._debugMode||force){let nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}if(this._isCLI){msg=this._clr.YELLOW(msg)}this._console(nl+msg,type)}};JafCore.prototype._debug=function(msg){if(this._debugMode){let nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}msg="[debug]: "+msg;if(this._isCLI){msg=this._clr.CYAN(msg)}this._console(nl+msg,"D")}};JafCore.prototype._error=function(msg,prefix="Error"){var nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}var s=`[${prefix}]: ${msg}`;if(this._isCLI){s=this._clr.BRIGHTRED(s)}this._console(nl+s,"E");this._stats.errors++};JafCore.prototype._warn=function(msg,prefix="Warn",nc){var nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}msg=`[${prefix}]: ${msg}`;if(this._isCLI&&!nc){msg=this._clr.PINK(msg)}this._console(nl+msg,"W");this._stats.warnings++};JafCore.prototype._assert=function(msg){var origin=this._rules.getFiredRuleName()||"jaf ";var s=`[ASSERT]: ${msg} (<- ${origin})`;if(this._isCLI){s=this._colorMode?this._clr.BRIGHTRED(s):s}this._console(s,"A");this._stats.asserts++;if(this._debugMode){let stk;try{s.$()}catch(e){let x=e.stack.indexOf("\n");stk=e.stack.substring(x+1);stk=stk.substring(stk.indexOf("\n")+1);if(origin!=="jaf"){let x2;if((x=stk.lastIndexOf(origin))>=0){if((x2=stk.indexOf("\n",x))>=0){stk=stk.substring(0,x2+1)}}}stk=stk.replace(/at /g," ")}this._debug("Assert Trace:\n"+stk)}};JafCore.prototype._getAppCtx=function(refresh){if(!this._appCtx){refresh=true;this._appCtx={msg:this._msg.bind(this),info:this._info.bind(this),debug:this._debug.bind(this),error:this._error.bind(this),warn:this._warn.bind(this),assert:this._assert.bind(this),console:this._console.bind(this),config:this._config,metaLib:this._metaLib,utils:this._Utils,fsUtils:this._fsUtils,tsUtils:this._tsUtils,tsxUtils:this._tsxUtils,ojetLib:this._ojetLib,plugin:this._plugin,configLib:this._configLib,colors:this._clr,tmpDir:this._tmpDir,reporter:this._reporter,Issue:Issue,flushIssues:this._flushIssues.bind(this),fireHookFileRules:this._fireHookFileRules.bind(this),getMsgId:this._getMsgId.bind(this),rules:this._rules,severity:this._severity,Stats:this._stats,runMode:this._runMode,platform:this._nd.os.platform(),isUnitTest:this._unitTest,defaultJetVer:DEFAULTS.JETVER,VsCodeExtHint:this._VsCodeExtHint,reportJafIssue:this._reportJafIssue.bind(this)}}if(refresh){this._appCtx.metaLib=this._metaLib;this._appCtx.tmpDir=this._tmpDir;this._appCtx.verboseMode=this._verboseMode;this._appCtx.debugMode=this._debugMode;this._isInfo=this._verboseMode||this._debugMode;this._appCtx.isUnitTest=this._unitTest;this._appCtx.configLib=this._configLib}return this._appCtx};JafCore.prototype._updateAppCtx=function(prop,value){this._appCtx[prop]=value};JafCore.prototype._getMsgId=function(context,msgKey){var o;msgKey=msgKey?msgKey:context.ruleName;o=this._msgIdLookup[context.rulePack.getPrefix()];return o?o[msgKey]:"????"};JafCore.prototype._getMsgCtx=function(refresh){if(!this._msgCtx){refresh=true;this._msgCtx={console:this._console.bind(this),info:this._info.bind(this),debug:this._debug.bind(this),warn:this._warn.bind(this),error:this._error.bind(this),msg:this._msg.bind(this),assert:this._assert.bind(this),jafMsg:this._reportJafErrorMsg.bind(this),colors:this._clr}}if(refresh){this._msgCtx.isDebug=this._debugMode;this._msgCtx.isVerbose=this._verboseMode}return this._msgCtx};JafCore.prototype._getModeCtx=function(){return{isOJET:this._isOJET,isOJETCLI:this._isOJETCLI,isCLI:this._isCLI,isAPI:this._isAPI,isAMD:this._isAMD,isUnitTest:this._unitTest}};JafCore.prototype._openWriter=function(outPath){var err;if(err=this._writer.open(outPath)){this._error("Output path error - reverting to console : \n "+err.message)}return err?false:true};JafCore.prototype._clearNL=function(text){var i,c;for(i=0;i<text.length;i++){c=text.charAt(i);if(!this._Utils.isWhitespace(c)){break}if(c==="\n"||c==="\r"){i++;if(i<text.length){c=text.charAt(i);if(c==="\n"||c==="\r"){i++}}text=text.substring(i);break}}return{text:text,stripped:i}};JafCore.prototype._checkNodeVer=function(){var ret;var ver=process.version;if(ver.charAt(0)==="v"){ver=ver.substring(1)}if(!(ret=require("semver").gte(ver,MIN_NODE_VER))){this._error(`Node version ${ver} detected - JAF requires ${MIN_NODE_VER} or later`)}return ret};JafCore.prototype._loadComponentSupport=function(){this._loadComponentServices();if(!this._components&&this._nd.Components){this._components=new this._nd.Components(this._nd,this._runMode,this._curDir,this._compSvcs,this._config.getComponentsBase(),this._config.getComponentUrls(),this._config.getComponents(),this._metaLib,this._ojc,this._config.get$JetCore(),{isDryRun:this._dryRunSet,isDebug:this._debugMode},this._getMsgCtx(),this._getAppCtx());this._metaLib.setComponentsLib(null,this._components)}};JafCore.prototype._loadComponentServices=function(){var nd=this._nd;if(!this._compSvcs&&nd.ComponentSvcs){this._compSvcs=new nd.ComponentSvcs(nd,nd.path.dirname(this._metaPath),this._config,this._tmpDir,this._getAppCtx());this._metaLib.setComponentsLib(this._compSvcs)}};JafCore.prototype._processAMDUserCCAMeta=function(arMeta){var i,comp;if(arMeta){this._loadComponentSupport();for(i=0;i<arMeta.length;i++){if(comp=arMeta[i]){this._components.processComponentJson(comp,"")}}}};JafCore.prototype._applyMacros=function(str){var s=str,macro,regex,repl;for(macro in this._macros){if(s.includes(macro)){repl=this._macros[macro];if(typeof repl==="undefined"||repl===null){continue}regex=new RegExp((macro.startsWith("$")?"\\":"")+macro,"g");s=s.replace(regex,repl)}}return s};JafCore.prototype._initMacros=function(){this._macros.$jafcwd=this._curDir;this._macros.$jafdate=this._Utils.getCurrentDate();this._macros.$jaftime=this._Utils.getCurrentTime();this._macros.$jafver=VERSION};JafCore.prototype._debugZipContents=function(entries,indent,lastPath){var i,entry,indent=indent||0,lastPath=lastPath||"";if(Array.isArray(entries)){for(i=0;i<entries.length;i++){entry=entries[i];this._debug(entry.path?entry.path:lastPath+entry.name);if(!entry.isFile){this._debugZipContents(entry.files,indent+2,entry.path)}}}else{this._debug("no valid data found in zip")}};JafCore.prototype.getUnitTestJetVer=function(){var runvers=this._metaLib.getMetaVers();return runvers.runver};JafCore.prototype._extractFileType=function(filePath,isNonFile){if(isNonFile){let i=filePath.lastIndexOf(".");return i>=0?filePath.substring(i+1):""}return this._fsUtils.getFileExtSync(filePath)};JafCore.prototype.setMarker=function(mark){let was=this._cid;this._cid=mark;return was};JafCore.prototype.getMarker=function(){return this._cid};function _isAttrExpr(attrValue){var rc=false;if(typeof attrValue==="string"){attrValue=attrValue.trim();rc=attrValue.startsWith("[[")||attrValue.startsWith("{{")}return rc};function _isLinkCSSLink(scriptNode){var ret=null;var attribs=scriptNode.attribs;if(!attribs){return ret}if(attribs.rel){if(attribs.rel.toLowerCase()==="stylesheet"){if(attribs.href){ret=attribs.href.toLowerCase().endsWith(FILETYPE.CSS)?attribs.href:null}}}return ret};function _getPackageInfo(runMode){var package=require(__dirname+"./../package.json");if(runMode==="amd"){package=JSON.parse(package)}VERSION=package.Jaf.version;DESCRIPTION=package.description;DESCRIPTION_MIG="JET Core Pack Migrator"};function _beginsWithNL(text,utils){var i,c,ret=false;for(i=0;i<text.length;i++){c=text.charAt(i);if(!utils.isWhitespace(c)){break}if(c==="\n"||c==="\r"){ret=true;break}}return ret};JafCore.prototype._processConfigOptions=function(){var val,theme,clr,refresh=false;;if(!(val=this._config.getOptions())){return}if(!this._rtf.debugSetVeto){if(!this._rtf.debugSet){if(val.debug!==undefined){this._debugMode=!!val.debug;refresh=true}}else{val.debug=true;refresh=true}}if(!this._rtf.verboseSetVeto){if(!this._rtf.verboseSet){if(val.verbose!==undefined){this._verboseMode=!!val.verbose;refresh=true}}else{val.verbose=true;refresh=true}}this._isInfo=this._verboseMode||this._debugMode;if(this._clr){clr=this._clr;if(this._rtf.colorSet){val.nocolor=!this._rtf.colorSet}else{if(val.color!==undefined){this._colorMode=!!val.color;if(typeof val.color==="string"){theme=val.color.startsWith("l")?clr.LIGHT:clr.DARK}}else if(this._isCLI){if(theme=this._cli.checkEnvColor()){this._colorMode=theme!="no"}}}if(!this._colorMode){clr.enable(false)}else{if(theme){clr.setTheme(theme)}}}else{this._colorMode=this._rtf.colorSet=false}if(!this._rtf.msgIdModeSet){if(val.msgid!==undefined){this._msgIdMode=!!val.msgid}}else{val.msgid=this._rtf.msgIdMode}val.ruleName=!!val.ruleName;if(!this._rtf.unitTest&&val["$unittest"]){this._unitTest=true}if(!this._rtf.experimentalSet&&(val=this._config._config?.options?.experimental)){this._rtf.experimental=val;FILETYPE.addExperimentalFileTypeTsx();this._info("WARNING: Unsupported experimental '.tsx' file handling enabled!")}if(refresh){this._getMsgCtx(true);this._getAppCtx(true)}};function _getScriptData(data,start,end){var s=data.substring(start,end);var x=s.indexOf("</script");s=s.substring(0,x);return s};module.exports=JafCore;
6
+ const HtmlParser=require("htmlparser2");const RULE_JS_DIAGNOSE="jaf-js-diagnose";const RULE_TS_DIAGNOSE="jaf-ts-diagnose";const RULE_CSS_DIAGNOSE="jaf-css-diagnose";const RULE_HTML_DIAGNOSE="jaf-html-diagnose";const RULE_INIT_SCHEMA="jaf-init-schema";const Reporter=require("../lib/Reporter");const Issue=require("../lib/Issue");const Rules=require("../lib/Rules");const RuleSet=require("../lib/RuleSet");const JafLib=require("../lib/JafLib");const FileSet=require("../lib/FileSet");const Writer=require("../lib/Writer");var metaLib=require("../lib/MetaLib");var OjcPack=require("../lib/OjCPack");const Plugin=require("../lib/Plugin");const Parser=require("../lib/Parser");const HtmlTree=require("../lib/HtmlTree");const DomUtils=require("../lib/DomUtils");const CssLib=require("../lib/CssLib");const CssUtils=require("../lib/CssUtils");const Utils=require("../lib/Utils");const TsxUtils=require("../lib/TsxUtils");const FileIndex=require("../lib/FileIndex");const Stats=require("../lib/Stats");var AST=require("../lib/AST");var Comments=require("../lib/Comments");const Severity=require("../lib/Severity");const NodeType=require("../lib/NodeTypes");const REG=require("../lib/RegTypes");const FILETYPE=require("../lib/filetypes");const GROUPS=require("../lib/groups");const DEFAULTS=require("../lib/defaults");const OUTFMT=require("../lib/outFormat");var VERSION;var DESCRIPTION;var DESCRIPTION_MIG;const CONFIG_FILE_DEF="jafconfig.json";const CONFIG_FILE_OJAF="oraclejafconfig.json";const META_FILE_OBJ="jetauditmeta.js";const TEMP_DIR="jaftmp@";const MIN_NODE_VER="14.0.0";const DEF_PROSE_FORMAT="%pos1 %s : %m";const AUTO="auto";const ERRORS="errors";const JAF_RSI=0;const JET_RSI=JAF_RSI+1;const COMPONENT_JSON="component.json";const ARROW="\u2192 ";const UNDEF="undefined";const BOOLEAN="boolean";var elapsed;function JafCore(nd,runMode="cli"){this._configPath=null;this._metaPath=null;this._outPath=null;this._rulePath=null;this._base=null;this._outFormat=null;this._json=null;this._HtmlTree=null;this._Ast=null;this._events=null;this._tabs=null;this._cliSev=null;this._curDir=null;this._tmpDir=null;this._fileSet=null;this._fileSep=null;this._groupsSet=false;this._followLinks=true;this._runMode=runMode;this._isCLI=runMode==="cli";this._isAPI=runMode==="api";this._isAMD=runMode==="amd";this._isOJETCLI=false;this._isOJET=null;this._isCliOrApi=this._isCLI||this._isAPI;this._isApiOrAmd=this._isAPI||this._isAMD;this._isCliMode=this._isCLI||this._isOJETCLI;this._platform=nd.os.platform();this._isWindows=this._platform==="win32";this._isAsync=false;this._ctxCB=null;this._isManual=false;this._retCode;this._unitTest=false;this._VsCodeExtHint=false;this._config=null;this._reporter=null;this._rules=null;this._metaLib=null;this._fsUtils=null;this._DomUtils=null;this._tsxUtils=null;this._tsUtils=null;this._configLib=null;this._sevLib=null;this._ojetLib=null;this._plugin=null;this._appCtx=null;this._msgCtx=null;this._writer=null;this._components=null;this._componentSvcs=null;this._userDefs=null;this._attrIndex=0;this._curContainer=null;this._curFile=null;this._curFileType=null;this._srcStack=null;this._targFiletypes=null;this._CSSLinkStack=[];this._JSLinkStack=[];this._msgIdLookup=null;this._messageStack=[];this._verboseMode=false;this._debugMode=false;this._isInfo=false;this._colorMode=true;if(nd.colors){this._clr=new nd.colors}this._msgIdMode=false;this._isRawAttrs=true;this._macros={$jafcwd:null,$jafdate:null,$jaftime:null,$jafver:null,$jafconfig:null,$jetver:null};this._rtf={jetverSet:false,severitySet:false,followLinksSet:false,debugSet:false,verboseSet:false,msgIdModeSet:false,dryRunSet:false,colorSet:false,regListenerTypesSet:false,scaffoldSet:false,scaffoldRuleSet:false,dacSet:false,maintenance:false,jetverList:false,defList:false,cmdNSList:false,groupList:false,xgroupList:false,disList:false,amdList:false,rloList:false,cmdMetaHist:false,dumpRulesSet:false,dumpRulesJsonSet:false,dumpRulesSonarSet:false,dumpRulesInternalSet:false,configPath:null,outFormat:null,outPath:null,base:null,groupsSet:false,followLinks:true,retCode:undefined,cliSev:null,verboseMode:false,debugMode:false,colorMode:true,msgIdMode:false,cmdArg:undefined,manCheckL:undefined,manCheckS:undefined,isManual:false,unitTest:false,experimentalSet:false};this._parser=null;this._treeNode=null;this._curTagNode=null;this._startCssPosition=null;this._startJsPosition=null;this._ctxTag=null;this._ctxAttr=null;this._ctxCss=null;this._ctxFileHook=null;this._cbMsgObj={};this._isStdoutRedirected=false;this._isStderrRedirected=false;this._useStderr=false;this._nd=nd;this._curDir=nd.process.cwd();this._fileSep=nd.path?nd.path.sep:null;this._Utils=new Utils(nd);if(nd.fsUtils){this._fsUtils=new nd.fsUtils(nd,this._Utils)}this._tsxUtils=new TsxUtils(this._assert.bind(this));if(this._isCliOrApi){this._tsUtils=new nd.tsUtils(this._Utils,this._fsUtils,this._getMsgCtx(),require("semver"),nd)}this._stats=new Stats;this._severity=new Severity;this._fileSet=new FileSet(nd,this._fsUtils);this._writer=new Writer(nd,this._getMsgCtx());this._fileIndex=new FileIndex(this._Utils);this._plugin=new Plugin(this._getMsgCtx(),this._runMode,this._Utils);_getPackageInfo(runMode);this._initMacros();if(this._isCLI){this._isStdoutRedirected=!process.stdout.isTTY;this._isStderrRedirected=!process.stderr.isTTY;this._useStderr=this._isStdoutRedirected&&!this._isStderrRedirected;this._useStderr=false}};JafCore.prototype.start=function(){var rc;try{rc=this._startupValidation()}catch(e){let msgId,msg,x;if(e.stack.indexOf("PreCompiler")>=0){msgId="9004";msg="Internal error during VComponent precompilation"}else{msgId="9000";msg="Internal error"}if((x=e.stack.indexOf("\n"))>=0){if((x=e.stack.indexOf("\n",x+1))>=0){x=e.stack.indexOf("\n",x+1)}}x=x>0?x:e.stack.length;this._error(`[JAF-${msgId}]: ${msg} - ${e.stack.substring(0,x)}`);rc=1}if(rc){if(rc>0){this._error("Terminated due to a previous error");if(this._events){this._events.removeAllListeners()}rc=-1}else{rc=0;if(this._isCLI&&(this._stats.warnings||this._stats.errors)&&!this._unitTest){let stats,m,n,was;stats=this._stats;if(n=stats.errors){m=n+" error"+(n!==1?"s":"")}if(n=stats.warnings){let m2=n+" warning"+(n!==1?"s":"");m=m?`${m} and ${m2}`:m2}if(stats.errors&&stats.warnings===1){was="was"}else if(stats.errors&&stats.warnings){was="were"}else if(stats.errors+stats.warnings===1){was="was"}else{was="were"}m=this._clr.INVERT(`Note: ${m} ${was} reported`);console.log(`\n\n${m}\n`)}}return this._transformRetCodeFinal(rc)}return this._prepAudit()};JafCore.prototype._prepAudit=function(){var rc=0;this._isInfo=this._verboseMode||this._debugMode;if(this._rules.getActiveRuleCount()>0){if(!this._stats.errors){this._displayStartMsg();if(this._isCLI){if(this._watchSet){}else{this._startLifeCycle()}}else{return 0}}if(this._isCLI){this._displayCliFinalStats();if(!this._unitTest){rc=this._stats.totalIssues}}}else{this._info("No active rules! Audit terminated.")}return this._transformRetCodeFinal(rc)};JafCore.prototype.setAmdMeta=function(amdMeta){this._AmdMeta=amdMeta};JafCore.prototype._listenerSetup=function(){if(!this._isCLI&&!this._events){this._events=new(require("../lib/JafEvents"))}return this._events};JafCore.prototype._setPlugins=function(ar){this._plugin.setPlugins(ar)};JafCore.prototype.enableRule=function(){return false};JafCore.prototype._transformRetCode=function(rc){if(this._isCliMode&&this._retCode!==AUTO){let o=this._retCode;if(o===ERRORS){rc=rc>=0?0:-1}else if(typeof o==="number"){rc=o}else if(Array.isArray(o)){let n=0;for(let i=0;i<o.length;i++){n+=this._stats.totalSevStats[o[i]]}rc=n}}return rc};JafCore.prototype._transformRetCodeFinal=function(rc){var xrc=this._transformRetCode(rc);if(this._verboseMode||this._debugMode){this._info(`RC: ${xrc} (raw = ${rc})`)}return xrc};JafCore.prototype._startLifeCycle=function(){if(!this._LF_start()){return false}this._processActiveFileSet();this._auditJSLinkedFiles();this._auditCSSLinkedFiles();return this._LF_closedown()};JafCore.prototype._LF_start=function(){var hookRC=true;this._curContainer=null;if(this._dryRunSet){this._info("\n------ Dry Run: Based on the configuration the following files would have been audited/ignored ------")}else{this._jafLib=new JafLib(this._nd,this._fileSet,this._getMsgCtx(),this._runMode,VERSION,this._metaLib.getRevisionInfo().jetVersion,this._config,this._ageLib);this._rules.setJafLib(this._jafLib);if(this._rules.isTypeRegistered(REG.PHASE_STARTUP)){this._debug("\n** Firing hook rules : "+REG.PHASE_STARTUP+"'");hookRC=this._fireHookRules(REG.PHASE_STARTUP);this._jafLib.disable();if(typeof hookRC===BOOLEAN&&!hookRC){this._console("\nAudit terminated by 'startup' hook rule","I");return false}}if(this._rules.isTypeRegistered(REG.PHASE_STARTUP_RULEPACK)){this._debug("\n** Firing hook rules : phase '"+REG.PHASE_STARTUP_RULEPACK+"'");hookRC=this._fireRPHookRules(REG.PHASE_STARTUP_RULEPACK)}if(this._rules.isTypeRegistered(REG.PHASE_START_AUDIT)){this._debug("\n** Firing hook rules : phase '"+REG.PHASE_START_AUDIT+"'");hookRC=this._fireHookRules(REG.PHASE_START_AUDIT);this._jafLib.disable();if(typeof hookRC===BOOLEAN&&!hookRC){this._console("\nAudit terminated by 'startaudit' hook rule","I");return false}}this._flushIssues(null,true);this._stats.addSevStatsToTotals();if(typeof hookRC===BOOLEAN&&!hookRC){this._console("\nAudit terminated by ruleset startup hook rule","I");return false}}this._spinner=new this._nd.spinner;this._spinner.start("Reading files...");return true};JafCore.prototype._LF_closedown=function(){if(elapsed&&!this._isAMD){elapsed=this._nd.process.hrtime(elapsed)}this._curFile=this._curFileType=null;if(this._dryRunSet){if(this._stats.totalFilesAudited===0){this._info("\n------------ Dry Run: No files were selected for audit!")}return true}this._stats.clearSevStats();if(this._rules.isTypeRegistered(REG.PHASE_END_AUDIT)){this._debug("\n** Firing hooks : phase 'endaudit'");this._fireHookRules(REG.PHASE_END_AUDIT)}if(this._rules.isTypeRegistered(REG.PHASE_CLOSEDOWN_RULEPACK)){this._debug("\n** Firing hooks : phase 'closedownRP'");this._fireRPHookRules(REG.PHASE_CLOSEDOWN_RULEPACK)}this._curFile=this._curFileType=null;if(this._rules.isTypeRegistered(REG.PHASE_CLOSEDOWN)){this._debug("\n** Firing hook rules : phase closedown");this._fireHookRules(REG.PHASE_CLOSEDOWN)}this._curContainer=null;this._flushIssues(null,true);this._stats.addSevStatsToTotals();if(this._outFormat===OUTFMT.JSON||this._isAPI&&this._isAsyncTemp){this._flushFinalJson()}if(this._isAPI&&this._isAsyncTemp){return this._json}return true};JafCore.prototype._processActiveFileSet=function(){var filePath;elapsed=this._isCliOrApi?this._nd.process.hrtime():0;while(true){this._curContainer=null;if(filePath=this._fileSet.getNextFile()){this._processActiveFile(filePath);continue}this._spinner.stop();break}};JafCore.prototype._processActiveFile=function(filePath){var fileObj,fileType,isUrl,resp,data;this._stats.totalFilesSelected++;this._rules.setJSCommentCallback(null);this._metaLib.setCurFileType(null);fileObj=false;if(typeof filePath==="object"){fileObj=filePath;if(!fileObj.data){return}fileObj.name=fileObj.name||"*unspecified filename*";filePath=fileObj.name;fileType=fileObj.type?fileObj.type:this._extractFileType(fileObj.name,true);if(!FILETYPE.isFileTypeSupportedInObj(fileType)){return}}isUrl=typeof filePath==="string"&&filePath.startsWith("http");if(!fileObj){fileType=this._extractFileType(filePath,null)}if(!FILETYPE.isFileTypeSupported(fileType)){if(this._isInfo){this._info(`ignoring unsupported file type (.${fileType}): ${filePath}`)}return}else if(this._targFiletypes.length&&!this._targFiletypes.includes(fileType)&&fileType!==FILETYPE.ZIP){if(this._isInfo){this._info(`ignoring untargeted file type (.${fileType}): ${filePath}`)}return}this._handleStyles=this._handleJS=true;if(this._isInfo){this._info(this._dryRunSet?filePath:"\n** Reading "+(isUrl?"resource":fileObj?"data-obj-> ":"file")+" "+(fileObj?fileObj.name:"'"+filePath+"'"))}if(fileObj){data=fileObj.data}else if(isUrl){resp=this._processResource(filePath);if(resp&&resp.statusCode===200){data=resp.body;this._stats.totalUrlsAudited++}else{return}}else{data=this._readFile(filePath,fileType===FILETYPE.ZIP)}this._auditActiveFile(filePath,fileType,isUrl,data)};JafCore.prototype._auditActiveFile=function(filePath,fileType,isUrl,data){var rc,tempFile;this._curFile=filePath;this._inZip=false;this._rawData=data;this._data=this._suppData=null;this._stats.totalFilesAudited++;if(this._dryRunSet){return}this._stats.clearSevStats();if((this._unitTest||this._config.getAppendFileList())&&this._outFormat===OUTFMT.JSON){this._noteFileSet(filePath)}this._curFileType=fileType;if(fileType===FILETYPE.HTML||fileType===FILETYPE.CSS||fileType===FILETYPE.JS||fileType===FILETYPE.TS||fileType===FILETYPE.TSX){if(data){this._spinner.setText("Auditing: "+filePath);if(fileType===FILETYPE.HTML||fileType===FILETYPE.CSS){this._auditHtml(data)}else if(fileType===FILETYPE.JS){this._auditJS(data)}else if(FILETYPE.isFileTypeTsOrTsx(fileType)){this._auditTsOrTsx(data)}}}else if(fileType===FILETYPE.JSON){this._auditJson(filePath,data)}else if(fileType===FILETYPE.MD){this._auditMarkdown(data)}else if(fileType===FILETYPE.ZIP){this._inZip=true;this._loadComponentSupport();rc=this._compSvcs.writeZipBufferToFile(data);if(typeof rc===BOOLEAN&&rc){tempFile=this._compSvcs.getLastZipFilePath();this._curContainer=isUrl?this._compSvcs.stripUrlQuery(filePath):filePath;this._auditComponentZip(tempFile);this._stats.addSevStatsToTotals();return}else{this._error(`Failed to create local temp zip file from URL '${filePath}' : ${rc.message}`);this._isOk=false}}this._stats.addSevStatsToTotals()};JafCore.prototype._auditHtml=function(data){var rc,topNode;this._attrIndex=0;this._data=data;this._rawData=!this._inZip?data:null;this._htmlParserCb=this._getPageCallbacks();this._reporter.clearIssues();this._fileIndex.clear();if(this._curFileType===FILETYPE.CSS){this._auditStyleSheet(data);return}this._debug("Parsing HTML...");this._htmlTree=new HtmlTree(this._nd,this._getAppCtx(),HtmlParser,this._DomUtils);data=data.replaceAll("\\\"","'");this._htmlTree.parse(data);topNode=this._htmlTree.getTopNode();if(topNode===null){this._debug("File contains no useful data - '"+this._curFile+"'");return}this._metaLib.setCurFileType(this._curFileType);if(this._config.getJetPagesOnly()){if(!this._DomUtils.isJetPage({node:topNode})){this._debug("File ignored - not a JET page and jetOnlyPages=true - '"+this._curFile+"'");return}};this._startIndex=0;this._endIndex=0;rc=this._fireHookFileRules(this._htmlTree.getTopNode());if(typeof rc===BOOLEAN&&!rc){return}this._setupCssParser();this._htmlTree.walk(this._htmlParserCb)};JafCore.prototype._getPageCallbacks=function(){var _self=this;var inScript=false,inScriptJS=false,inHeadSect=false,inHead=false,inStyle=false,inStyleSect=false,inLink=false;var inScriptJSLink=false,inScriptCSSLink=false,JsScriptData=null;var ignoreScript=false;var isDirective=false;var tagLower,temp;var ctx;this._inScriptJs=false;this._inScriptJsData=null;if(this._htmlParserCb){return this._htmlParserCb};return this._rules.filterHtmlCallbacks({onOpenTagname:function(node,tagName){if(ignoreScript||inScript){return}_self._curTagNode=node;if(!_self._curTagNode){_self._assert("tag \""+tagName+"\" has no node")}tagName=tagName.endsWith("\"")||tagName.endsWith("'")?tagName.substr(0,tagName.length-1):tagName;_self._currentTag=tagName;tagLower=tagName.toLowerCase();inHeadSect=inHeadSect?inHeadSect:tagLower==="head";inHead=tagLower==="head";inScript=tagLower==="script";inStyleSect=inStyleSect?inStyleSect:tagLower==="style";inStyle=tagLower==="style";inLink=tagLower==="link";if(inScript){inScriptJS=_self._htmlTree.isScriptExecutable(_self._curTagNode);inScriptJSLink=_self._htmlTree.isScriptJSLink(_self._curTagNode);if(inScriptJS&&!inScriptJSLink){if(_self._curTagNode.children&&_self._curTagNode.children.length){if(_self._curTagNode.children[0].type==="text"){JsScriptData=_self._curTagNode.children[0].data;JsScriptData=_getScriptData(_self._data,_self._curTagNode.children[0].startIndex,_self._curTagNode.endIndex);if(typeof JsScriptData==="string"){_self._jsNode=_self._curTagNode.children[0];_self._startJsPosition=_self._fileIndex.getRowCol(_self._data,{start:_self._jsNode.startIndex,end:_self._jsNode.endIndex},"js");_self._startJsPosition.startIndex=_self._jsNode.startIndex;_self._startJsPosition.endIndex=_self._jsNode.endIndex;if(_beginsWithNL(JsScriptData,_self._Utils)){_self._startJsPosition.col=1;_self._startJsPosition.row++;temp=_self._clearNL(JsScriptData);JsScriptData=temp.text;_self._startJsPosition.startIndex+=temp.stripped;_self._startJsPosition.endIndex+=temp.stripped}}else{JsScriptData=false}}else{JsScriptData=null}}}if(inScriptJSLink&&_self._followLinks&&_self._handleJS){_self._addJSLinkToStack(inScriptJSLink)}}else if(inLink){inScriptCSSLink=_isLinkCSSLink(_self._curTagNode);if(inScriptCSSLink&&_self._followLinks&&_self.handleStyles){_self._addStyleSheetLinkToStack(inScriptCSSLink)}}_self._reporter.setParseData(tagName,"tag");_self._startIndex=_self._curTagNode.startIndex+1;_self._endIndex=_self._startIndex+tagName.length-1;ctx=_self._ctxTag;ctx.position={start:_self._startIndex,end:_self._endIndex};ctx.tag=tagName;ctx.node=_self._curTagNode;ctx.tagNode=_self._curTagNode;ctx.data=_self._data;ctx.suppData=_self._suppData;ctx.elemStack=_self._htmlTree.getElemStack();ctx.utils.DomUtils=_self._DomUtils;ctx.NodeTypes=NodeType;if((tagLower==="script"||tagLower==="link")&&_self._rules.isTypeRegistered(tagLower)){ctx.type=tagLower;ctx.ojTag=ctx.ojNS=false;if(tagLower==="script"&&JsScriptData){ctx.suppData={data:JsScriptData}}_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,ctx.suppData?ctx.suppData.data:null)}if(_self._rules.isTypeRegistered(REG.ELEM)){ctx.type=REG.ELEM;ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}if(_self._metaLib.isJetTag(tagName)&&_self._rules.isTypeRegistered("jetcomp")){ctx.type="jetcomp";ctx.ojTag=ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}else if(_self._metaLib.isComponentTag(tagName)&&_self._rules.isTypeRegistered("extcomp")){ctx.type="extcomp";ctx.ojTag=false;ctx.ojNS=ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}ctx.type=tagLower.startsWith("oj-")?"ojtag":"tag";if(_self._rules.isTypeRegistered(ctx.type)){ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}if(tagName.indexOf("-")>0||tagName==="template"||tagName==="style"){if(_self._rules.isTypeRegisteredAsElemName("<"+tagName+">")){ctx.type="<"+tagName+">";ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}}if(_self._rules.isTypeRegistered(REG.WEBCOMP)){let jwc=_self._metaLib.isJetTag(tagName);let awc=!jwc?_self._metaLib.isComponentTag(tagName):false;if(jwc||awc){ctx.type=REG.WEBCOMP;ctx.ojTag=jwc;ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}}if(_self._rules.isTypeRegistered(REG.JET_CORE_COMP)){let jwc=_self._metaLib.isJetCoreTag(tagName);if(jwc){ctx.type=REG.JET_CORE_COMP;ctx.ojTag=jwc;ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}}if(_self._rules.isTypeRegistered(REG.REQUIREMENTS)){let jwc=_self._metaLib.isJetTag(tagName);let awc=!jwc?_self._metaLib.isComponentTag(tagName):false;if(jwc||awc){let reqMeta;if((jwc||awc)&&(reqMeta=_self._metaLib.getTagRequirementsMetadata(tagName))){ctx.type="requirements";ctx.ojTag=jwc;ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,reqMeta)}}}if(_self._DomUtils.isCommonElem(tagName)){if(ctx.type=_self._rules.isTypeRegistered(REG.GLOBTAG)?REG.GLOBTAG:null){ctx.ojTag=ctx.ojNS=false;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}let t=`globtag(${tagName})`;if(ctx.type=_self._rules.isTypeRegistered(t)?t:null){ctx.ojTag=ctx.ojNS=false;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}}if(_self._rules.isTypeRegistered(REG.NOTGLOB)&&!_self._DomUtils.isCommonElem(tagName)&&!_self._DomUtils.isSvgElem(tagName)&&!_self._DomUtils.isHtml5ObsoleteElem(tagName)){ctx.type=REG.NOTGLOB;ctx.ojTag=_self._metaLib.isJetTag(tagName);ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(tagName);_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}if(_self._metaLib.isBindingTag(tagName)){ctx.type=REG.BINDING_TAG;ctx.ojTag=ctx.ojNS=true;_self._rules.fireRules(ctx,tagName,_self._curFile,_self._curFileType,null)}this._attrIndex=0},onCloseTag:function(node,tagName){tagLower=tagName.toLowerCase();if(tagLower==="head"){inHead=inHeadSect=false}if(tagLower==="script"){inScript=ignoreScript=inScriptJS=inScriptJSLink=JsScriptData=false}if(tagLower==="style"){inStyle=inStyleSect=false}if(tagLower==="link"){inLink=inScriptCSSLink=false}if(_self._currentTag){_self._lastTag=_self._currentTag;_self._currentTag=null}_self._curTagNode=null},onAttribute:function(node,attrName,attrValue){var attrNameLower=attrName.toLowerCase();var attrRawValue,rowcol,issue;var isElemAttrReg,isAttrExprReg,isAttrOnlyReg,isAttrExpr$Props,isAttrAriaReg;var attrType,elemAttrType;var tmp;if(attrName.length===1){var invChar=attrName==="\""?"double-quote":attrName==="'"?"single-quote":attrName;if(attrName!==invChar){rowcol=_self._DomUtils.getAttribPosition(_self._data,node,attrName);issue=new Issue("Unexpected "+invChar+" found");_self._reportJafIssue(issue,RULE_HTML_DIAGNOSE,rowcol.row,rowcol.col,rowcol.start,rowcol.end);_self._stats.parseErrors++;if(_self._debugMode||_self._verboseMode){_self._info("[PARSE ERROR(1)] : FILE "+(_self._curFile?_self._curFile:"N/A")+" "+_self._stats.parseErrors)}return}}else if(attrName.endsWith("<")){rowcol=_self._DomUtils.getAttribPosition(_self._data,node,attrName);issue=new Issue(`Syntax error on elem '${node.name}' - missing end '>' perhaps?`);_self._reportJafIssue(issue,RULE_HTML_DIAGNOSE,rowcol.row,rowcol.col,rowcol.start,rowcol.end);return}if(attrValue&&attrValue.length&&_self._isRawAttrs){attrRawValue=_self._getAttrRawValue(_self._data,_self._getAttrIndex(_self._data,node.startIndex,attrName),attrName,attrValue)}if(ignoreScript){return}if(inScript&&attrName==="type"){if(attrValue==="text/html"){ignoreScript=true;return}}if(ignoreScript){return}if(!_self._currentTag){_self._info("** WARNING - no tag for attribute "+attrName+" (value "+attrValue+")");return}_self._reporter.setParseData(attrName,"attr");attrNameLower=attrNameLower.charAt(0)===":"?attrNameLower.substr(1):attrNameLower;ctx=_self._ctxAttr;ctx.type=attrNameLower==="class"?"class":attrNameLower==="style"?"style":attrNameLower.startsWith("style.")?"stylemember":inScript&&attrNameLower==="type"?"type":attrName.startsWith("on-oj-")?"event":"attr";if(ctx.type==="attr"&&attrNameLower.startsWith("on-")&&_self._metaLib.isWCTag(_self._currentTag)){ctx.type="event"}if(ctx.type==="attr"||ctx.type==="event"){temp=attrName.startsWith(":")?attrName.substring(1):attrName;elemAttrType=`<${_self._curTagNode.name}|${temp}>`;isElemAttrReg=_self._rules.isTypeRegistered(elemAttrType);attrType=`<${temp}=>`;isAttrOnlyReg=_self._rules.isTypeRegistered(attrType);isAttrExprReg=_self._rules.isTypeRegistered(REG.ATTREXPR);isAttrExpr$Props=_self._rules.isTypeRegistered(REG.ATTREXPR_$PROPS);isAttrAriaReg=_self._rules.isTypeRegistered(REG.ATTR_ARIA)}if(_self._rules.isTypeRegistered(ctx.type)||isAttrExprReg||isAttrExpr$Props||isElemAttrReg||isAttrOnlyReg||isAttrAriaReg){rowcol=_self._DomUtils.getAttribPosition(_self._data,node,attrName);ctx.tag=_self._currentTag;ctx.ojTag=_self._metaLib.isJetTag(_self._currentTag);ctx.position={line:rowcol.row,col:rowcol.col,start:rowcol.start,end:rowcol.end},ctx.tagNode=_self._curTagNode;ctx.data=_self._data;ctx.elemStack=_self._htmlTree.getElemStack();ctx.utils.DomUtils=_self._DomUtils;if(_self._curFileType==="html"||_self._curFileType==="css"){ctx.utils.CssUtils=CssUtils}ctx.ojNS=ctx.ojTag||ctx.utils.DomUtils.isNamespaceTag(ctx.tag);ctx.NodeTypes=NodeType;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue)}else{return}if((ctx.type==="attr"||ctx.type==="event")&&_isAttrExpr(attrValue)){if(isAttrExprReg){tmp=ctx.type;ctx.type=REG.ATTREXPR;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue);ctx.type=tmp}if(attrValue.includes("$properties")&&isAttrExpr$Props){tmp=ctx.type;ctx.type=REG.ATTREXPR_$PROPS;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue);ctx.type=tmp}}if(ctx.type==="attr"||ctx.type==="event"){if(isElemAttrReg){ctx.type=elemAttrType;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue)}if(isAttrOnlyReg){ctx.type=attrType;_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue)}if(isAttrAriaReg&&attrName.startsWith("aria-")){ctx.type="attr-aria";_self._rules.fireRules(ctx,attrName,_self._curFile,_self._curFileType,_self._isRawAttrs?{val:attrValue,rawval:attrRawValue}:attrValue)}}},onText:function(node,text){if(inHead){}else if(ignoreScript){_self._debug("[debug] text in script ignored ("+_self._curFile+")")}else if(inStyle){if(text.trim().length>0){if(_self._handleStyles){_self._startCssPosition=_self._fileIndex.getRowCol(_self._data,{start:node.startIndex,end:node.endIndex},"css");if(_beginsWithNL(text,_self._Utils)){_self._startCssPosition.col=1;_self._startCssPosition.row++}let adjust=_self._clearNL(text);_self._startCssPosition.index=node.startIndex+adjust.stripped;text=adjust.text;_self._parseCss(text)}}}else if(inScript&&inScriptJS&&JsScriptData){if(_self._handleJS){if(JsScriptData.length>0){_self._inScriptJs=true;_self._inScriptJsData=JsScriptData;_self._parseJS(JsScriptData,function(treenode){_self._fireHookFileRules(treenode,null)});_self._inScriptJs=false;_self._inScriptJsData=null}JsScriptData=null}}_self._htmlParserCb.onCloseTag(node,inStyle?"style":inScript?"script":inLink?"link":"what")},onEnd:function(){_self._flushIssues(_self._data)},onComment:function(node,text){if(inScript||ignoreScript||inStyle){return}if(!_self._rules.isTypeRegistered(REG.COMMENT)){return}_self._startIndex=node.startIndex;_self._endIndex=node.endIndex;_self._treeNode=node;text=text.trim();temp=_self._currentTag?_self._currentTag:"";_self._rules.fireRules({type:REG.COMMENT,ojTag:temp&&_self._metaLib.isJetTag(temp),position:{start:_self._startIndex,end:_self._endIndex},tag:temp?temp:null,elemStack:_self._htmlTree.getElemStack(),node:_self._treeNode,tagNode:_self._curTagNode,data:_self._data,suppData:_self._suppData,utils:{DomUtils:_self._DomUtils},NodeTypes:NodeType},null,_self._curFile,_self._curFileType,text)},oncommentend:function(){},oncdatastart:function(){},oncdataend:function(){},onProcessingInstruction:function(node,data){var text,i;if(ignoreScript||inScript){return}if(!_self._rules.isTypeRegistered(REG.PROCSTMT)){return}_self._treeNode=node;if(!_self._treeNode){_self._assert("procstmt '"+data+"' has no node")}text=data?data.trim():data;temp=text.substr(1);i=_self._Utils.getIndexToWhitespace(temp);temp=temp.substr(i+1).trim();if(temp.charAt(temp.length-1)==="?"){temp=temp.substr(0,temp.length-1)}_self._rules.fireRules({type:REG.PROCSTMT,ojTag:false,position:{start:_self._startIndex,end:_self._endIndex},tag:null,node:_self._treeNode,tagNode:_self._curTagNode,suppData:_self._suppData,elemStack:_self._htmlTree.getElemStack(),utils:{DomUtils:_self._DomUtils},NodeTypes:NodeType},text,_self._curFile,_self._curFileType,temp)},onDirective:function(node,data){if(ignoreScript||inScript){return}if(data.toLowerCase().startsWith("!doctype")){if(!_self._rules.isTypeRegistered(REG.DOCTYPE)){return}}else{if(!_self._rules.isTypeRegistered(REG.DIRECTIVE)){return}isDirective=true}_self._treeNode=node;if(!_self._treeNode){_self._assert("directive \""+data+"\" has no node")}temp=data?data.trim():data;temp=data?data.substr(8).trim():data;_self._rules.fireRules({type:isDirective?REG.DIRECTIVE:REG.DOCTYPE,ojTag:false,position:{start:_self._startIndex,end:_self._endIndex},tag:null,node:_self._treeNode,tagNode:_self._curTagNode,rawData:_self._rawData,data:_self._data,suppData:_self._suppData,elemStack:_self._htmlTree.getElemStack(),utils:{DomUtils:_self._DomUtils},NodeTypes:NodeType},data,_self._curFile,_self._curFileType,temp)}})};JafCore.prototype._auditJSLinkedFiles=function(){var link,data;if(!this._JSLinkStack.length){return}this._info("\n** Auditing script links");this._fileSet.setFiles(this._JSLinkStack,this._config.getExclude(),this._getMsgCtx());while(true){link=this._fileSet.getNextFile();if(!link){return}this._info("\n** Reading link '"+link+"'");data=this._readFile(link);if(data){this._auditJS(data)}else{}}};JafCore.prototype._auditCSSLinkedFiles=function(){var link,data,i;for(i=0;i<this._CSSLinkStack.length;i++){link=this._CSSLinkStack[i];this._info("\n** Reading link '"+link+"'");data=this._readFile(link);if(data){this._auditStyleSheet(data)}}};JafCore.prototype._auditStyleSheet=function(data){this._reporter.clearIssues();this._fileIndex.clear();this._startCssPosition={row:1,col:1,index:0};this._data=data;this._rawData=!this._inZip?data:null;this._parseCss(data);this._flushIssues(data)};JafCore.prototype._addStyleSheetLinkToStack=function(link){var stylePath,nd;if(!this._isCLI){return}nd=this._nd;if(link.toLowerCase().startsWith("http")){this._debug("ignoring remote stylesheet link '"+link+"'");return}if(nd.path.basename(link).startsWith("oj-alta")){this._debug("ignoring JET stylesheet link '"+link+"'");return}stylePath=nd.path.join(nd.path.dirname(this._curFile),link);if(this._CSSLinkStack.indexOf(stylePath)<0){if(this._fsUtils.fileExists(stylePath)){this._CSSLinkStack.push(stylePath);this._debug("pushing stylesheet link '"+stylePath+"'")}else{this._warn("\nstylesheet not found - '"+stylePath+"'"+" (linked from '"+this._curFile+"'")}}};JafCore.prototype._addJSLinkToStack=function(path){var path,nd;if(!this._isCLI){return}nd=this._nd;if(path.toLowerCase().startsWith("http")){this._debug("ignoring remote JavaScript <script> link '"+path+"'");return}path=nd.path.join(nd.path.dirname(this._curFile),path);if(this._JSLinkStack.indexOf(path)<0){if(this._fsUtils.fileExists(path)){this._JSLinkStack.push(path);this._debug("pushing JS link '"+path+"'")}else{this._warn("\nJavaScript <script> src link not found - '"+path+"'"+" (linked from '"+this._curFile+"'")}}};JafCore.prototype._auditJson=function(filePath,data){var fileName;this._rawData=this._data=data;fileName=this._isAMD?filePath:this._nd.path.basename(filePath);if(fileName===COMPONENT_JSON){this._auditComponentJson(filePath);this._flushIssues();return}if(!data){return}if(fileName===CONFIG_FILE_DEF||fileName===CONFIG_FILE_OJAF){return}this._parser.parse(data,this._curFile,this._curFileType);this._flushIssues(data)};JafCore.prototype._auditMarkdown=function(data){if(!data){return}this._rawData=this._data=data;this._metaLib.setCurFileType(this._curFileType);this._parser.parse(data,this._curFile,this._curFileType);this._flushIssues(data)};JafCore.prototype._auditComponentZip=function(filePath){var files,fileType,resp,rc,endZip;this._reporter.clearIssues();this._fileIndex.clear();files=this._compSvcs.getZipContents(filePath);if(files instanceof Error){files=files.message}if(this._debugMode){if(typeof files==="string"){this._debug("ZIP ERROR : "+files)}else{this._debug("Zip contents ("+filePath+" : "+this._curFile+")");this._debugZipContents(files)}}this._zipFileObjs=files;this._startIndex=0;this._endIndex=0;this._curFileType=FILETYPE.ZIP;this._rawData=null;rc=this._fireHookFileRules(files);if(typeof rc===BOOLEAN&&!rc){this._compSvcs.deleteZipFile();this._flushIssues();this._flushContainerIssuesAsObjects();return}this._rawData=this._data=null;if(Array.isArray(files)){this._iterateOverZipContents(files,function(obj,path){if(endZip){return}fileType=this._extractFileType(obj.name,null);this._debug("zip entry -> "+path+obj.name);if(FILETYPE.isFileTypeSupportedInZip(fileType)&&this._targFiletypes.includes(fileType)){this._rules.setJSCommentCallback(null);this._curFileType=fileType;this._curFile=path+obj.name;resp=this._createResponseObj(path+obj.name,fileType);if(resp.body){if(obj.name===COMPONENT_JSON){if(!this._auditComponentJson(null,resp)){endZip=true}this._flushIssues(resp.body)}else if(fileType===FILETYPE.HTML){this._auditHtml(resp.body)}else if(fileType===FILETYPE.JS){this._auditJS(resp.body)}else if(fileType===FILETYPE.JSON){this._auditJson(obj.name,resp.body)}else if(fileType===FILETYPE.CSS){this._auditStyleSheet(resp.body)}else if(fileType===FILETYPE.MD){this._auditMarkdown(resp.body)}}}}.bind(this))}this._compSvcs.deleteZipFile();this._flushContainerIssuesAsObjects()};JafCore.prototype._iterateOverZipContents=function(files,cb,path){var i,obj,path=path||"";for(i=0;i<files.length;i++){obj=files[i];if(obj.isFile&&obj.name===COMPONENT_JSON){cb(obj,path);break}}for(i=0;i<files.length;i++){obj=files[i];if(obj.isFile){if(obj.name!==COMPONENT_JSON){cb(obj,path)}}else{this._iterateOverZipContents(obj.files,cb,obj.path)}}};JafCore.prototype._auditComponentJson=function(resource,resp){var obj,data,rc,compType,fileName;if(!resp){if(resource){if(this._data){data=this._data}else{data=this._readFile(resource);this._data=data}if(!data){return false}fileName=this._isAMD?resource:this._nd.path.basename(resource);if(fileName!==COMPONENT_JSON){return}}else{return false}}else if(resp.type===FILETYPE.JSON){data=resp.body;this._data=data}this._curFileType=FILETYPE.JSON;if(this._curFile.indexOf(COMPONENT_JSON)<0){this._curFile=COMPONENT_JSON}this._metaLib.setCurFileType(this._curFileType);obj=this._parser.parseOnly(data,this._curFile,FILETYPE.JSON);if(typeof obj.msg==="string"){this._startIndex=this._endIndex=obj.position}else{this._startIndex=this._endIndex=0}if(this._inZip){this._suppData=obj}this._loadComponentServices();rc=this._fireHookFileRules(obj.ast,obj);if(typeof rc===BOOLEAN&&!rc){return false}if(obj.msg){return false}switch(obj.obj.type){case"composite":case"core":case"pack":case"reference":case"resource":case"vbcs-pattern":case"vbcs-template":compType=obj.obj.type;break}this._rules.fireRules({type:"compjson",node:obj.ast,tagNode:null,rawData:this._rawData,data:this._data,suppData:obj,zipContent:this._zipFileObjs},null,this._curFile,FILETYPE.JSON,obj,false);if(!obj.obj.type){compType="composite"}if(compType){this._rules.fireRules({type:"compjson"+"-"+compType,node:obj.ast,tagNode:null,rawData:this._rawData,data:this._data,suppData:obj,zipContent:this._zipFileObjs},null,this._curFile,FILETYPE.JSON,obj,false)}return true};JafCore.prototype._parseCss=function(text){var ret=false;try{this._debug("Parsing CSS...");this._CssLib.parse(text,this._curFile,this._startCssPosition);ret=true}catch(e){for(var i=0;i<e.length;i++){this._console("[Fail]: ("+this._curFile+")\n "+e[i].message,"E");this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(2)] : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}}return ret};JafCore.prototype._cssErrorEvent=function(ev){var opts=this._rules.getRuleOptions(RULE_CSS_DIAGNOSE,JAF_RSI);if(!opts||!opts.enabled){for(var i=0;i<ev.length;i++){this._console("[Fail]: ("+this._curFile+")\n "+ev[i].message,"E");this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(2)] : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}return}var rowWas,rowNow,colWas,colNow,msg;var i,error;for(i=0;i<ev.length;i++){error=ev[i];rowWas=error.line;colWas=error.column;rowNow=rowWas+this._startCssPosition.row-1;colNow=colWas+this._startCssPosition.col-1;msg="("+error.name+") "+this._CssLib.formatMsg(error);this._reportJafIssue(new Issue(msg),RULE_CSS_DIAGNOSE,rowNow,colNow,0+this._startCssPosition.index+error.offset,1+this._startCssPosition.index+error.offset);this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(3) : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}};JafCore.prototype._setupCssParser=function(){this._CssLib.addListener("error",this._cssErrorEvent.bind(this));this._CssLib.addListener("Rule",this._cssRule.bind(this));this._CssLib.addListener("Selector",this._cssSelectorX.bind(this));this._CssLib.addListener("ClassSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("TypeSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("IdSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("PseudoClassSelector",this._cssSelectorX.bind(this));this._CssLib.addListener("SelectorList",this._cssSelectorX.bind(this));this._CssLib.addListener("Atrule",this._cssAtrule.bind(this));this._CssLib.addListener("StyleSheet",this._cssSheet.bind(this))};function _mapSelNodeToRegisterType(node){const SELTYPES={"Selector":"css-selector","SelectorList":"css-sel-list","ClassSelector":"css-sel-class","IdSelector":"css-sel-id","TypeSelector":"css-sel-type","PseudoClassSelector":"css-sel-pseudo"};return SELTYPES[node.type]};JafCore.prototype._cssRule=function(node,ast,list){var ctx;if(this._rules.isTypeRegistered("css-rule")){ctx=this._cssPrepCtx("css-rule",node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,node,this._curFile,this._curFileType,list,this._curFileType===FILETYPE.HTML)}if(this._rules.isTypeRegistered("css-var")){if(node.prelude&&node.prelude.children&&node.prelude.children.length){let i,decl;let block=node.block.children;for(i=0;i<block.length;i++){decl=block[i];if(decl.type==="Declaration"&&decl.property.startsWith("--")){if(ctx){ctx.type="css-var"}else{ctx=this._cssPrepCtx("css-var",node,ast)}ctx.offset=this._startCssPosition;ctx.position={line:decl.loc.start.line+this._startCssPosition.row-1,col:decl.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,decl,this._curFile,this._curFileType,node,this._curFileType===FILETYPE.HTML)}}}}};JafCore.prototype._cssSelectorX=function(node,ast){var type=_mapSelNodeToRegisterType(node);if(!type){return}if(!this._rules.isTypeRegistered(type)){return}var ctx=this._cssPrepCtx(type,node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,node,this._curFile,this._curFileType,null,this._curFileType===FILETYPE.HTML)};JafCore.prototype._cssAtrule=function(node,ast){var type,fire,ctx,i;for(i=0;i<2;i++){switch(i){case 0:type="css-@"+node.name;break;case 1:type="css-atrule";break}fire=this._rules.isTypeRegistered(type);if(fire){if(!ctx){ctx=this._cssPrepCtx(type,node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1}}else{ctx.type=type}this._rules.fireRules(ctx,node,this._curFile,this._curFileType,node.name,this._curFileType===FILETYPE.HTML)}}};JafCore.prototype._cssSheet=function(node,ast,list){if(!this._rules.isTypeRegistered("css-sheet")){return}var ctx=this._cssPrepCtx("css-sheet",node,ast);ctx.offset=this._startCssPosition;ctx.position={line:node.loc.start.line+this._startCssPosition.row-1,col:node.loc.start.column+this._startCssPosition.col-1};this._rules.fireRules(ctx,node,this._curFile,this._curFileType,list,this._curFileType===FILETYPE.HTML)};JafCore.prototype._cssPrepCtx=function(type,node,ast){var ctx=this._ctxCss;ctx.type=type;ctx.CssNode=node;ctx.ast=ast;ctx.position={},ctx.tagNode=this._curTagNode,ctx.rawData=this._rawData,ctx.data=this._data,ctx.suppData=this._suppData,ctx.zipContent=this._zipFileObjs,ctx.utils.CssUtils=CssUtils;return ctx};JafCore.prototype._auditTsOrTsx=function(data,inner){this._debug("Auditing TS...");this._reporter.clearIssues();this._parser.startJsPosition={row:0,col:0,startIndex:0,endIndex:0};this._fileIndex.clear();this._data=data;this._rawData=!this._inZip?data:null;this._metaLib.setCurFileType(this._curFileType);this._parser.parse(data,this._curFile,this._curFileType,inner);this._flushIssues(data)};JafCore.prototype._auditJS=function(data){this._debug("Auditing JS...");var _self=this,rc;this._reporter.clearIssues();this._startJsPosition={row:0,col:0,startIndex:0,endIndex:0};this._fileIndex.clear();this._data=data;this._rawData=!this._inZip?data:null;this._parseJS(data,function(treenode){rc=_self._fireHookFileRules(treenode,null)});_self._fireHookFileRules(null,null);this._flushIssues(data);return rc};JafCore.prototype._parseJS=function(data,cb){var ret=false,rowNow,colNow,issue,opts,arRawComs,isConfigComments;try{this._debug("Parsing JS...");isConfigComments=this._config.getComments();this._Ast=new AST(data,this._config.getEcmaVer(),isConfigComments,this._getMsgCtx());ret=true}catch(e){opts=this._rules.getRuleOptions(RULE_JS_DIAGNOSE,JAF_RSI);if(opts&&opts.enabled){rowNow=e.lineNumber+(this._startJsPosition.row===0?0:this._startJsPosition.row-1);colNow=e.column+(this._startJsPosition.col===0?0:this._startJsPosition.col-1);issue=new Issue("JavaScript syntax - "+e.message);this._reportJafIssue(issue,RULE_JS_DIAGNOSE,rowNow,colNow,e.index+this._startJsPosition.startIndex,e.index+this._startJsPosition.startIndex+1)}else{rowNow=e.lineNumber+(this._startJsPosition.row===0?0:this._startJsPosition.row-2);colNow=e.column+(this._startJsPosition.col===0?0:this._startJsPosition.col-1);console.log("\nJS-DIAGNOSE : ["+rowNow+", "+colNow+"] "+e.message+"\n File -> "+this._curFile)}this._stats.parseErrors++;if(this._debugMode||this._verboseMode){this._info("[PARSE ERROR(4) : FILE "+(this._curFile?this._curFile:"N/A")+" "+this._stats.parseErrors)}}if(ret){if(cb)cb(this._Ast.getProgram());ret=false;try{this._debug("Walking JS...");if(isConfigComments){arRawComs=this._Ast.getRawComments();if(arRawComs&&arRawComs.length){if(!this._comments){this._comments=new Comments(this._nd,this._rules,this._getMsgCtx,this._Utils)}this._comments.reset(this._Ast)}}this._Ast.walk(this._AstNodeHandler.bind(this));ret=true}catch(e){this._error("JavaScript walk failure - "+e+" in "+this._curFile)}}return ret};JafCore.prototype._AstNodeHandler=function(node){var coms;if(this._rules.isTypeRegistered(node.type)){if(this._comments){coms=this._comments.isDisabled(node);if(coms&&(!coms.rules||coms.rules.length===0)){return}this._rules.setJSCommentCallback(coms?function(ruleName){var b=coms.rules.includes(ruleName);return!coms.invert?b:!b}:null)}this._rules.fireRules({type:node.type,node:node,position:{offset:this._startJsPosition.startIndex,start:node.start,end:node.end},data:this._Ast.getData(),utils:{AstUtils:this._Ast.getUtils()}},node,this._curFile,this._curFileType,null)}};JafCore.prototype._processResource=function(url){var resp;this._loadComponentServices();resp=this._compSvcs.loadUrl(url);if(resp.statusCode==4242){this._error("Test server not started?");resp.statusCode==999}if(resp.statusCode!==200){this._warn("Server returned status "+resp.statusCode+" for resource '"+url+"'")}return resp};JafCore.prototype._flushIssues=function(data,noZeroIssueFlush){var i,len,issues,issue,rowcol,showContainer;issues=this._reporter.getIssues();len=issues.length;if(this._debugMode){this._debug(`${len} issue${len===1?"":"s"} reported`)}for(i=0;i<len;i++){issue=issues[i];if(issue.index&&issue.index.line!==undefined){rowcol={row:issue.index.line,col:issue.index.col}}else if(data===null||!issue.index||issue.index.start===undefined){rowcol={row:0,col:0}}else{rowcol=this._fileIndex.getRowCol(data,issue.index,this._curFileType)}issue.rowcol=rowcol}if(len){this._sortIssues(issues)}else{if(!noZeroIssueFlush){if(this._isAPI&&!this._isAsyncTemp||this._isAMD){this._flushIssuesObjects(issues,data);this._reporter.clearIssues()}}return}if(this._curFile||this._curContainer){this._stats.totalIssueFiles++}this._stats.totalIssues+=len;this._updateSeverityStats(issues);if(this._outFormat===OUTFMT.PROSE&&this._curFile){if(!this._titleShown&&this._config.getTitle()){this._showTitle();this._titleShown=true}if(this._outPath||this._isCLI){showContainer=this._curContainer&&this._curContainer!==this._curFile;this._msg("\n** Audit for "+(this._colorMode?this._clr.BRIGHTCYAN(this._curFile):"'"+this._curFile+"'")+(showContainer?" ("+this._curContainer+")":""),"I")}}if(this._isAPI&&this._isAsyncTemp||this._unitTest){this._flushIssuesJson(issues,data)}else{switch(this._outFormat){case OUTFMT.JSON:this._flushIssuesJson(issues,data);break;default:this._flushIssuesProse(issues,data)}}this._reporter.clearIssues()};JafCore.prototype._flushIssuesProse=function(issues,data){if(!this._outPath&&this._isApiOrAmd){this._flushIssuesObjects(issues,data);return}let i,len,issue,msg,fmt,clr=this._clr;let sev,arrow,diagnostic,container,customFmt;len=issues.length;for(i=0;i<len;i++){issue=issues[i];fmt=this._config.getProseFormat();if(fmt){msg=this._applyFormat(fmt,issue.severity,this._curFile,issue.msg,issue,true)}else if(this._outFormat===OUTFMT.LINE){if(this._severity.isBlocker(issue.severity)||this._severity.isCritical(issue.severity)||this._severity.isMajor(issue.severity)){sev=clr.BRIGHTRED(issue.severity);arrow=clr.BRIGHTRED(ARROW)}else if(issue.severity===Severity.MINOR){sev=clr.YELLOW(issue.severity);arrow=clr.YELLOW(ARROW)}else{sev=clr.GREEN(issue.severity);arrow=clr.GREEN(ARROW)}container=this._curContainer&&this._curContainer!==this._curFile?this._curContainer+"/":"";diagnostic=clr.CYAN(issue.msg);if(!(fmt=this._config.getLineFormat())){fmt="\u25CF %s : %m"+(this._msgIdMode?" [%mid]":"")+"\n "+arrow+" %f:%l:%c"}else{customFmt=true}msg=this._applyFormat(fmt,sev,container+this._curFile,diagnostic,issue,customFmt)}else{fmt=DEF_PROSE_FORMAT;msg=this._applyFormat(fmt,issue.severity,"",issue.msg,issue,false);if(this._verboseMode||this._config.getOptions().ruleName){msg+=" ["+issue.prefix+"-"+issue.msgId+" : "+issue.ruleName+"]"}else if(this._msgIdMode){msg+=" ["+issue.prefix+"-"+issue.msgId+"]"}}if(this._isCLI&&this._outFormat!==OUTFMT.LINE){if(this._severity.isBlocker(issue.severity)||this._severity.isCritical(issue.severity)||this._severity.isMajor(issue.severity)){msg=clr.BRIGHTRED(msg)}}this._writeIssue(msg)}};JafCore.prototype._applyFormat=function(fmt,sev,file,message,issue,customFmt){var msg,pos,linecol;pos=issue.rowcol;linecol=pos.row+", "+pos.col;msg=fmt.replace("%pos1","["+linecol+"]");msg=msg.replace("%pos2","("+linecol+")");msg=msg.replace("%mid",issue.prefix+"-"+issue.msgId);msg=msg.replace("%l",pos.row);msg=msg.replace("%c",pos.col);msg=msg.replace("%s",sev);msg=msg.replace("%m",message);msg=msg.replace("%p",issue.prefix);msg=msg.replace("%n",issue.msgId);msg=msg.replace("%r",issue.ruleName);msg=msg.replace("%f",file);if(customFmt){let ruleOpts=this._rules.getRuleOptions(issue.ruleName,issue.rsi);msg=msg.replace("%itag",ruleOpts.hasOwnProperty("issueTag")?ruleOpts.issueTag:"")}return msg};JafCore.prototype._flushIssuesObjects=function(issues){var obj,diag,position,i,len,issues,issue,rowcol;var ruleOpts,loadedRule,ruleDescriptType,descriptObj;ruleDescriptType=this._config.getRuleDescriptions();if(this._curContainer!==this._curFile){if(this._curContainer&&!this._containerIssues){this._containerIssues={container:this._curContainer,issues:[]}}}obj={file:this._curFile,issues:[]};if(ruleDescriptType!=="none"){obj.descriptions={}}len=issues.length;for(i=0;i<len;i++){diag={};issue=issues[i];if(!obj.file&&issue.filepath){obj.file=issue.filepath}ruleOpts=this._rules.getRuleOptions(issue.ruleName,issue.rsi);rowcol=issue.rowcol;diag.msg=issue.msg;diag.msgId=issue.prefix+"-"+issue.msgId;diag.severity=issue.severity;diag.rule=issue.ruleName;diag.position=position={};position.row=rowcol.row;position.col=rowcol.col;if(issue.index&&issue.index.start!==undefined){position.index={};position.index.start=issue.index.start;position.index.end=issue.index.end}if(ruleOpts.hasOwnProperty("issueTag")){diag.issueTag=ruleOpts.issueTag}diag.$hook=ruleOpts&&ruleOpts.$hook?true:false;loadedRule=this._ruleSets.getLoadedRule(issue.rsi,issue.ruleName);if(issue._msgEx){diag.msgEx=issue._msgEx}if(ruleDescriptType==="none"){if(loadedRule){diag.getDescription=loadedRule.getDescription.bind(loadedRule);diag.getShortDescription=loadedRule.getShortDescription.bind(loadedRule)}else{if(issue.ruleName===RULE_HTML_DIAGNOSE){diag.getDescription=function(){return"HTML syntax error."}}else if(issue.ruleName===RULE_JS_DIAGNOSE){diag.getDescription=function(){return"JavaScript syntax error."}}else if(issue.ruleName===RULE_TS_DIAGNOSE){diag.getDescription=function(){return"TypeScript syntax error."}}else if(issue.ruleName===RULE_CSS_DIAGNOSE){diag.getDescription=function(){return"CSS syntax error"}}diag.getShortDescription=diag.getDescription}}else{if(!obj.descriptions[diag.MsgId]){descriptObj={};if(loadedRule){if(ruleDescriptType==="short"||ruleDescriptType==="all"){descriptObj.short=loadedRule.getShortDescription()}if(ruleDescriptType==="long"||ruleDescriptType==="all"){descriptObj.long=loadedRule.getDescription()}}else{var fn;if(issue.ruleName===RULE_HTML_DIAGNOSE){fn=function(){return"HTML syntax error."}}else if(issue.ruleName===RULE_JS_DIAGNOSE){fn=function(){return"Javascript syntax error."}}else if(issue.ruleName===RULE_CSS_DIAGNOSE){fn=function(){return"CSS syntax error"}}else if(issue.ruleName===RULE_INIT_SCHEMA){fn=function(){return"component.json schema violation error"}}if(ruleDescriptType==="short"||ruleDescriptType==="all"){descriptObj.short=fn}if(ruleDescriptType==="long"||ruleDescriptType==="all"){descriptObj.long=fn}}obj.descriptions[diag.msgId]=descriptObj}}obj.issues.push(diag)}this._containerIssues?this._containerIssues.issues.push(obj):this._callbackIssue(obj)};JafCore.prototype._flushContainerIssuesAsObjects=function(){if(this._containerIssues){this._callbackIssue(this._containerIssues);this._containerIssues=null}};JafCore.prototype._flushIssuesJson=function(issues,data){var i,len,issues,issue,rowcol,position,curReport,curIssue,reported;var ruleOpts,ruleDescriptType,descriptObj;if(!this._isCLI&&!this._isAsyncTemp){return}ruleDescriptType=this._config.getRuleDescriptions();if(!this._json){this._json={};this._json.reported=[];this._json.summary={};this._json.messages=[];this._json.run={};if(ruleDescriptType!=="none"){this._json.descriptions={}}}len=issues.length;if(!len){return};reported=this._json.reported;curReport={};if(this._curContainer){curReport.container=this._curContainer}curReport.file=this._curFile;curReport.issues=[];for(i=0;i<len;i++){curIssue={};issue=issues[i];if(!curReport.file&&issue.filepath){curReport.file=issue.filepath}curIssue.severity=issue.severity;curIssue.msg=issue.msg;curIssue.msgId=issue.prefix+"-"+issue.msgId;curIssue.position=position={};ruleOpts=this._rules.getRuleOptions(issue.ruleName,issue.rsi);rowcol=issue.rowcol;position.row=rowcol.row;position.col=rowcol.col;if(issue.index){if(data!==null){position.start=issue.index.start!==undefined?issue.index.start:0;position.end=issue.index.end!==undefined?issue.index.end:0}}if(ruleOpts.hasOwnProperty("issueTag")){curIssue.issueTag=ruleOpts.issueTag}curIssue.$hook=ruleOpts&&ruleOpts.$hook?true:false;curIssue.rule=issue.ruleName;if(ruleDescriptType!=="none"){if(!this._json.descriptions[curIssue.msgId]){descriptObj={};if(ruleDescriptType==="short"||ruleDescriptType==="all"){descriptObj.short=this._rules.getRuleDescription(issue.prefix,issue.ruleName,true)}if(ruleDescriptType==="long"||ruleDescriptType==="all"){descriptObj.long=this._rules.getRuleDescription(issue.prefix,issue.ruleName,false)}this._json.descriptions[curIssue.msgId]=descriptObj}}if(issue._msgEx){curIssue.msgEx=issue._msgEx}curReport.issues.push(curIssue)}reported.push(curReport);if(this._unitTest||this._config.getAppendFileList()){this._json.fileset=this._fileSetList}};JafCore.prototype._sortIssues=function(issues){if(!issues){return}issues.sort(function(a,b){if(a.rowcol.row===b.rowcol.row){return a.rowcol.col-b.rowcol.col}return a.rowcol.row-b.rowcol.row})};JafCore.prototype._flushFinalJson=function(){if(!this._json){this._json={};this._json.summary={};this._json.summary.severities={};this._json.messages=[];this._json.run={}}this._createRunSummary(this._json);this._json.messages=this._messageStack;if(this._isAPI&&this._isAsyncTemp){return this._json}if(this._outPath){const JsonFile=require("../lib//outfile");JsonFile.writeFileSync(this._nd,this._outPath,this._json)}else{this._console(JSON.stringify(this._json,null,4))}};JafCore.prototype._reportJafIssue=function(issue,ruleName,line,col,start,end){var rulePack=this._rules.getRulePack(JAF_RSI);var ctx={rulePack:rulePack,_rsi:JAF_RSI,ruleName:ruleName,position:{line:line,col:col,start:start,end:end},getMsgId:this._getMsgId.bind(this)};rulePack._setCBCtx(ctx);this._reporter.addIssue(issue,ctx)};JafCore.prototype._reportJafErrorMsg=function(key,msg,msgType){var mid=this._msgIdLookup.JAF;if(!(mid=mid[key])){mid="?"}mid=`JAF-${mid}`;if(msgType==="W")this._warn(msg,mid);else if(msgType==="I")this._info(msg);else this._error(msg,mid)};JafCore.prototype._createResponseObj=function(filePath,fileType){return{body:this._compSvcs.extractFileFromZip(filePath),type:fileType}};JafCore.prototype._createRunSummary=function(obj){var summary,run,sev,gitInfo;if(!obj){obj={}}obj.summary=summary={};summary.severities=sev={};obj.run=run={};gitInfo=this._metaLib.getRevisionInfo();summary.issues=this._stats.totalIssues;summary.issueFiles=this._stats.totalIssueFiles;summary.errorFiles=this._stats.errorFiles;summary.parseErrors=this._stats.parseErrors;summary.errors=this._stats.errors;summary.warnings=this._stats.warnings;summary.asserts=this._stats.asserts;summary.filesSelected=this._stats.totalFilesSelected;summary.files=this._stats.totalFilesAudited;summary.urls=this._stats.totalUrlsAudited;summary.rulesActive=this._rules.getActiveRuleCount();summary.rulesFired=this._stats.rulesFired;summary.hooksFired=this._stats.hooksFired;if(this._unitTest||this._config.getRulesFired()){summary.packRulesFired=this._stats.packRulesFired}var sevList=this._severity.getSevList(),sevCore,i;for(i=sevList.length-1;i>=0;i--){sevCore=sevList[i];sev[this._severity.map(sevCore)]=this._stats.totalSevStats[sevCore]}if(this._config.getTitle()){run.title=this._applyMacrosToTitle(this._config.getTitle())}run.date=new Date().toUTCString();run.revision=gitInfo.revision;run.tag=gitInfo.revision;run.jetVersion=gitInfo.jetVersion;if(typeof this._configPath==="string"){run.config=this._configPath.replace(/\\/g,"/")}return obj};JafCore.prototype._getAttrIndex=function(data,index,attrName){var i,j,c,ret=-1;if(index<this._attrIndex){index=this._attrIndex}while(true){i=data.indexOf(attrName,index);if(i>=0){j=this._Utils.eatWhitespace(data,i+attrName.length);if(j>=0){c=data.charAt(j);if(c==="="||c===">"||this._Utils.isWhitespace(data.charAt(i))){ret=i;this._attrIndex=j;break}}index=j}else{break}}if(ret<0){this._error("ASSERT: getAttrIndex '"+attrName+"', "+index+", "+this._curFile)}return ret};JafCore.prototype._getAttrRawValue=function(data,index,attrName,attrValue){var ret=null,delim,i;i=index+attrName.length;if(data.charAt(i)==="="){i=this._Utils.eatWhitespace(data,i+1);delim=data.substr(i,1);delim=delim==="'"||delim==="\""?delim:"\"";ret=delim+attrValue+data.charAt(i+attrValue.length+1)}else{ret=attrValue}return ret};JafCore.prototype._fireHookRules=function(phase,ruleCtx,rsi){ruleCtx=ruleCtx?ruleCtx:this._rules.makeRuleContext();ruleCtx.type=phase;ruleCtx.phase=phase;ruleCtx.utils={};if(phase===REG.PHASE_STARTUP_RULEPACK||phase===REG.PHASE_CLOSEDOWN_RULEPACK){ruleCtx.ojetConfig=this._scaffold?this._scaffold.getOjetConfig():null}if(phase===REG.PHASE_STARTUP||phase===REG.PHASE_STARTUP_RULEPACK||phase===REG.PHASE_START_AUDIT){if(!ruleCtx.utils.jafLib){ruleCtx.utils.jafLib=this._jafLib.getPublic()}}else if(ruleCtx.utils.jafLib){delete ruleCtx.utils.jafLib}return this._rules.fireHookRules(ruleCtx,rsi)};JafCore.prototype._fireHookFileRules=function(node,obj){var ctx;var endfile=!node&&!obj;ctx=this._ctxFileHook;if(this._curFileType!==FILETYPE.JS&&!FILETYPE.isFileTypeTsOrTsx(this._curFileType)&&ctx.utils.AstUtils!==undefined){delete ctx.utils.AstUtils}if(this._curFileType!==FILETYPE.HTML&&this._curFileType!==FILETYPE.JSON&&ctx.utils.DomUtils!==undefined){delete ctx.utils.DomUtils;delete ctx.utils.semVerUtils}if(this._curFileType!==FILETYPE.ZIP&&ctx.zipContent!==undefined){delete ctx.zipContext}ctx.type=endfile?this._inScriptJs?"endscript":"endfile":this._inScriptJs?"startscript":"file";ctx.phase=REG.PHASE_FILE;ctx.filepath=this._curFile;ctx.filetype=this._curFileType;if(obj){ctx.suppData=obj}if(this._curFileType===FILETYPE.JSON){ctx.position={start:this._parser.startIndex,end:this._parser.endIndex}}else{ctx.setPosition(0,0)}if(this._curFileType===FILETYPE.JS||FILETYPE.isFileTypeTsOrTsx(this._curFileType)||this._inScriptJs){ctx.node=node;if(this._curFileType===FILETYPE.JS||this._inScripts){ctx.utils.AstUtils=this._Ast?this._Ast.getUtils():null}else{ctx.utils.AstUtils=this._parser.getAstUtils()}}else if(this._curFileType===FILETYPE.HTML){ctx.node=node;ctx.utils.DomUtils=this._DomUtils;ctx.NodeTypes=NodeType}else if(this._curFileType===FILETYPE.JSON||this._curFileType===FILETYPE.MD){ctx.node=node}else if(this._curFileType===FILETYPE.ZIP){ctx.zipContent=node}ctx.utils.OjetLib=this._ojetLib;ctx.rawData=this._rawData;ctx.data=this._inScriptJs?this._inScriptJsData:this._data;return this._rules.fireHookRules(ctx)};JafCore.prototype._fireRPHookRules=function(phase){var rsi,packs,ruleCtx,phase,rc;packs=this._ruleSets.getRulePacks();ruleCtx=this._rules.makeRuleContext();for(rsi=0;rsi<packs.length;rsi++){rc=this._fireHookRules(phase,ruleCtx,rsi);if(typeof rc===BOOLEAN&&!rc){break}}return rc};JafCore.prototype._updateSeverityStats=function(issues){var issues,issue,sevStats,i,len;len=issues.length;sevStats=this._stats.sevStats;for(i=0;i<len;i++){issue=issues[i];switch(this._severity.unmap(issue.severity)){case this._severity.CRITICAL:sevStats.critical++;break;case this._severity.BLOCKER:sevStats.blocker++;break;case this._severity.MAJOR:sevStats.major++;break;case this._severity.MINOR:sevStats.minor++;break;case this._severity.INFO:sevStats.info++;break}}};JafCore.prototype._dumpFile=function(data){var datalen,line=1,c,i;this._console("\n----------- Dump File ------------","D");datalen=data?data.length:0;for(i=0;i<datalen;i++){c=data.charAt(i);this._console("i="+i+" c="+(c==="\n"?"\\n":c==="\r"?"\\r":c),"D");if(c==="\n"){line++;this._console("NL i="+i+" line="+line,"D");continue}}this._console("\n----------- End Dump ------------\n","D")};JafCore.prototype._dumpRegistry=function(){var reg=this._rules.dumpRegistry();console.log(reg)};JafCore.prototype._getPosition=function(){return{start:this._startIndex,end:this._endIndex}};JafCore.prototype._processCmdLine=function(){var rc,g,i,b;rc=this._cli.checkArgs(this._rtf,this._showVersion.bind(this));if(!rc||rc==="end"){return rc}this._verboseMode=this._rtf.verboseSet?this._rtf.verboseMode:false;this._verboseMode=this._rtf.verboseSetVeto?false:this._verboseMode;this._debugMode=this._rtf.debugSet?this._rtf.debugMode:false;this._debugMode=this._rtf.debugSetVeto?false:this._debugMode;this._getMsgCtx(true);this._dryRunSet=this._rtf.dryRunSet;this._configPath=this._rtf.configPath;this._outPath=this._rtf.outPath;this._outFormat=this._rtf.outFormat;this._srcStack=this._rtf.srcStack;this._base=this._rtf.base;this._followLinksSet=this._rtf.followLinksSet;this._followLinks=this._rtf.followLinksSet?this._rtf.followLinks:true;this._retCode=this._rtf.retCode;this._cliSev=this._rtf.severitySet?this._rtf.cliSev:null;this._colorMode=this._rtf.colorSet?this._rtf.colorMode:true;this._colorSet=this._rtf.colorSet;this._msgIdMode=this._rtf.msgIdModeSet?this._rtf.msgIdMode:false;this._isManual=this._rtf.isManual;this._unitTest=this._rtf.unitTest;if(!this._colorMode){this._clr.enable(false)};if(this._rtf.migrator){return true}if(this._rtf.groupsSet){this._groupsSet=this._rtf.groupsSet;for(i=0;i<this._groupsSet.length;i++){g=this._groupsSet[i];if(!GROUPS.isGroup(g)){if(g.startsWith("jet")||g.startsWith("htm")){this._error("Command line override of 'groups' -> '"+g+"' is not defined!");b=true}}}}if(b){return 0}this._cli.displayCmdLineOptionsSet(this._rtf,this._getAppCtx());return true};JafCore.prototype._dumpRules=function(){var ret=false;if(this._isCLI){if(this._debugMode||this._dryRunSet){return false}ret=this._cli.dumpRules(this._rules,this._outPath)}return ret};JafCore.prototype._dumpCompositeNames=function(){if(!this._dryRunSet){this._components.dumpComponentNames()}};JafCore.prototype._startupValidation=function(){var i,path,val,ftype,err,noMetadata=false,jafConfig,rc;var nd;if(!(this._isCLI||this._isAPI||this._isAMD)){this._error("*** Unknown run mode!");return 1}if(this._isAPI&&this._isAsync){this._error("*** SYSTEM ERROR - API and Async mode incompatability check!");return 1}if(this._isCliOrApi&&!this._checkNodeVer()){return 1}nd=this._nd;this._ageLib=new(require("../lib/checkage"))(DEFAULTS.JETVER,this._getMsgCtx());this._ageLib.checkAge();if(this._isCLI){this._cli=new nd.Cli(nd,this._curDir,this._getAppCtx());this._appCtx=null;let theme=this._cli.checkEnvColor();if(theme===this._clr.THEME_LIGHT){this._clr.setTheme(theme)}}if(!nd.jetver.init()){this._error("Start-up failure loading JET metadata versioning.");return 1}if(this._isCliOrApi&&!this._isManual){this._metaLib=new metaLib(nd,this._runMode,this._getMsgCtx(),this._Utils,this._fsUtils)}else if(this._isAMD){if(!this._AmdMeta||!this._AmdMeta.jetMeta){this._error("AMD mode - no Metadata supplied.");return 1}this._metaLib=new metaLib(nd,this._runMode,this._getMsgCtx(),this._Utils,null);this._metaLib.setAmdMeta(this._AmdMeta)}this._tsxUtils.setMetaLib(this._metaLib);if(!this._isManual){this._reporter=new Reporter(this._getMsgCtx())}if(this._isCLI){rc=this._processCmdLine();if(rc==="end"){return-1}if(!rc){return 1}rc=this._cli.checkImmedCmds(this._rtf,VERSION,this._showVersion.bind(this),this._openWriter.bind(this));if(rc===1){return-1}if(this._rtf.scaffoldSet||this._rtf.scaffoldRuleSet){if(!this._fsUtils.isFolderWritableSync(this._curDir)){this._error(`--init scaffold - CWD must be writable -> ${this._curDir}`);return 1}}this._info(`Mode: ${this._runMode.toUpperCase()}`);this._scaffold=new nd.scaffold(this._curDir,nd,this._getAppCtx(true));this._isOJET=this._scaffold.init();if(this._isOJET){jafConfig=this._scaffold.handleOjetConfig(this._rtf.scaffoldSet);if(jafConfig==="error"){return 1}if(this._rtf.scaffoldSet){return-1}}else if(this._isOJETCLI){this._error("OJET CLI configuration file not found in '"+this._curDir+"'");return 1}else if(this._rtf.scaffoldSet){jafConfig=this._scaffold.createNonOjetConfig();if(jafConfig==="error"){return 1}return-1}this._ojetLib=this._scaffold.getOjetLib();if(this._tsUtils){this._tsUtils.setOjetConfig(this._ojetLib.getConfig())}}if(this._isCliOrApi){if(this._configPath!==null){if(typeof this._configPath==="string"){ftype=this._fsUtils.getFileType(this._configPath);if(ftype==="d"){path=this._configPath+this._fileSep+CONFIG_FILE_OJAF;ftype=this._fsUtils.getFileType(path);if(ftype!=="f"){path=this._configPath+this._fileSep+CONFIG_FILE_DEF;ftype=this._fsUtils.getFileType(path)}this._configPath=path}if(ftype!=="f"){this._error("cannot find configuration file '"+this._configPath+"'");return 1}}}}if(this._isCliOrApi){if(this._configPath===null){this._configPath=nd.path.join(this._curDir,CONFIG_FILE_OJAF);this._configPath=nd.path.resolve(this._configPath);if(!this._fsUtils.fileExists(this._configPath)){this._configPath=nd.path.join(this._curDir,CONFIG_FILE_DEF);this._configPath=nd.path.resolve(this._configPath)}}let objConfig=typeof this._configPath==="object";this._info((objConfig?"C":"Active C")+"onfig "+(objConfig?"is pre-built object":this._configPath?"is '"+this._configPath+"'":" is not defined"))}this._config=new nd.Config(nd,this._base,this._configPath,this._applyMacros.bind(this),this._Rules,this._severity,this._groupsSet,this._cliSev,this._getMsgCtx(),this._getModeCtx(),this._Utils,this._fsUtils,(verbose,debug)=>{if(!this._rtf.debugSet&&!this._rtf.debugSetVeto){this._debugMode=debug}if(!this._rtf.verboseSet&&!this._rtf.verboseSetVeto){this._verboseMode=verbose}return{verbose:this._verboseMode,debug:this._debugMode}},this._metaLib.getMetaVers().runver);if(this._appCtx){this._appCtx.config=this._config}if(!this._config.isOk()){return 1}this._configLib=this._config.getConfigLib();if(this._config._config.options.$reg){this._rtf.regListenerTypesSet=true}this._processConfigOptions();this._reporter.setDebugMode(this._debugMode);if(this._tsUtils){this._tsUtils.setDebugModes(this._verboseMode,this._debugMode)}if(this._unitTest){this._console("Unit Test Invocation")}this._metaLib.setTheme(this._config.getTheme());if(this._isStdoutRedirected){this._colorMode=false}if(this._isCliMode){if(typeof this._retCode===UNDEF){let copts=this._config._config.options;let prop=typeof copts.retCode!==UNDEF?"retCode":typeof copts.rc!==UNDEF?"rc":null;this._retCode=prop?copts[prop]:AUTO}else{val=this._config.validateRetCode(this._retCode,sev=>{this._error(`command line error : --retCode severity '${sev}' is invalid!`)});this._retCode=val||typeof val==="number"?val:1}}if(this._rtf.severitySet&&this._cliSev){if(!this._severity.isValidConfigSeverity(this._cliSev)){this._error(`Config entry 'severity' ('${this._cliSev}') is not 'major/minor/blocker/critical/info', 'all', or a remapped severity!`);return 1}}if(this._verboseMode||this._debugMode){this._info("\n---------------\nOriginal Config:\n---------------\n"+(this._config._origConfig?JSON.stringify(this._config._origConfig,null,3):"None!")+"\n","I",true)}if(this._rtf.dacSet||this._verboseMode||this._debugMode){let s="+---------------+\n| Active Config |\n+---------------+\n"+(this._config._config?JSON.stringify(this._config._config,null,3):"None!")+"\n";if(this._rtf.dacSet){console.log(s)}else this._info(s,"I",true);if(this._rtf.dacSet&&!this._dryRunSet){return-1}}if(this._isManual){val=this._rtf.manCheckL||this._rtf.manCheckS;if(val.startsWith("jet-")||val.startsWith("jaf-")||val.startsWith("oj-")){this._config._config.ruleNames=[]}}if(!this._isAMD&&!this._isManual){this._tmpDir=this._config.getTempDir();this._tmpDir=nd.path.join(this._tmpDir?this._tmpDir:this._curDir,TEMP_DIR);if(this._fsUtils.fileExists(this._tmpDir,true)){this._info("[Info]: Using temp work folder : "+this._tmpDir);this._fsUtils.deleteFolder(this._tmpDir,false)}else{this._info("Creating temp work folder : "+this._tmpDir);rc=this._fsUtils.createFolder(this._tmpDir);if(typeof rc!==BOOLEAN){this._error(rc);return 1}}}if(this._isCLI){this._metaLib.setStylesets(this._config.getStylesets())}this._ojc=new OjcPack(this._isOJET,this._isAMD,this._curDir,this._getMsgCtx(),nd,this._fsUtils);if(this._isCliOrApi){if((val=this._config.getJetCorePack())||typeof val===BOOLEAN&&!val){this._ojc.setPath(val)}}else if(this._isAMD){if(this._AmdMeta&&(val=this._AmdMeta.jetCorePack)){this._ojc.setPath(val)}else{this._ojc.setPath(false)}this._ojc.load()}if(this._isAMD&&this._AmdMeta.ccaMeta){this._processAMDUserCCAMeta(this._AmdMeta.ccaMeta);if(this._components.isOk()){this._metaLib.setComponentsLib(this._compSvcs,this._components)}}if(!this._isManual){if(this._isCliOrApi){if(!this._srcStack||this._srcStack.length===0){this._srcStack=this._config.getFiles();if(!Array.isArray(this._srcStack)){this._srcStack=[]}if(this._srcStack.length===0){if(!this._isAPI){path=nd.path.resolve("./*.*");this._srcStack.push(path)}}}this._fileSet.setFiles(this._srcStack,this._config.getExclude(),this._getMsgCtx())}}if(this._isCliOrApi){val=this._rtf.jetverSet?this._rtf.jetverSet:this._config.getJetVer();this._metaPath=val.split(".");this._metaPath=this._metaPath[0]+"."+this._metaPath[1]+".0";this._metaPath=nd.path.join(__dirname,"../meta",this._metaPath,META_FILE_OBJ);this._info("[info]: Metadata path (for "+val+") is '"+this._metaPath+"'");if(noMetadata||!this._metaLib.loadMeta(this._metaPath)){return 1}}if(require("semver").gte(this._metaLib.getMetaVers().runver,"13.0.0")){this._ojc.load()}if(this._verboseMode){this._metaLib.displayImpls()}this._macros.$jetver=this._metaLib.getRevisionInfo().jetVersion;this._macros.$jafconfig=this._configPath;if(this._isCliOrApi&&!this._isManual){if(!this._outPath){val=this._config.getOutPath();if(val){if(typeof val==="string"&&val.length){this._outPath=val==="$noout"?null:val}else if(typeof val!=="string"){this._error("Config 'outPath' '"+val+"' is not a valid path - ignored");return 1}}}if(this._outPath==="$noout"){this._outPath=null}else if(this._outPath){this._info("[info]: Output path is '"+this._outPath+"'","I");if(this._fsUtils.getFileType(this._outPath)==="d"){this._error("Config 'outPath' "+this._outPath+"' is a dir and not a filename");return 1}if(!this._dryRunSet){err=this._openWriter(this._outPath)}}if(!this._outFormat){val=this._config.getFormat();this._outFormat=val?val:OUTFMT.PROSE}}if(this._isCliOrApi){if(!this._rtf.followLinksSet){this._followLinks=!!this._config.getFollowLinks()}if(this._verboseMode){this._info("[info]: "+(this._followLinks?"Following":"Not following")+" stylesheet/script <link>'s")}}if(this._config.getRunRuleNames()&&!this._isManual){val=this._config.getGroups();if(val.length>1||val.length===1&&val[0]!=="all"){this._error("Config \"groups\" and \"ruleNames\" are mutually exclusive");return 1}}val=this._config.getGroups();if(val.includes("jet-csp")&&!this._config.isBuiltinCspRules()){this._error("group 'jet-csp' specified, but CSP builtin rulepack not enabled");return 1}for(i=0;i<val.length;i++){if(val[i].startsWith("jet-")&&val[i]!=="jet-csp"){if(!this._config.isBuiltinJetRules()){this._error("group '"+val[i]+"' specified, but JET builtin rulepack not enabled");return 1}}}if(!this._isManual){this._tabs=require("../lib/tabs");this._tabs=new this._tabs;if(!this._tabs.validate(this._config.getTabs(),this._getMsgCtx())){return 1}this._fileIndex.setTabHandler(this._tabs);this._Utils.setTabHandler(this._tabs)}this._userDefs=this._config.getUserDefs();this._reporter.setOutFormat(this._outFormat);this._reporter.setSevInstance(this._severity);this._reporter.setMessageFilter(this._config._config.messages);if(this._verboseMode||this._debugMode){let pl=this._plugin.getPluginList();let l=pl.length?`${pl.join(",")}`:"None";this._info(`Plugins loaded: ${l}.`)}this._ruleSets=new RuleSet(this._config,nd,this._getAppCtx(true),this._getMsgCtx(),this._AmdRulePacks);if(!this._ruleSets.loadRulePacks(this._config._config,this._dryRunSet,this._rtf.dumpRulesSet||this._rtf.dumpRulesJsonSet||this._rtf.dumpRulesSonarSet,jafMsgIds=>{this._msgIdLookup=jafMsgIds})||this._stats.errors){return 1};this._msgIdLookup=this._ruleSets.loadMsgIds();if(this._rtf.regListenerTypesSet){this._ruleSets.dumpRegistry();return-1}if(this._isCLI&&this._rtf.xgroupList){this._cli.showExternalGroups(this._ruleSets.getRuleSets());return-1}this._targFiletypes=this._ruleSets.getActiveFiletypes();if(this._verboseMode||this._debugMode){val=function(self){var s="",i;for(i=0;i<self._targFiletypes.length;i++){if(i){s+=", "}s+="'."+self._targFiletypes[i]+"'"}return s}(this);this._info(`[info]: Filetypes targeted : [${val}]`)}this._rules=new Rules(this._ruleSets,nd,this._config._config,this._getMsgId.bind(this),this._getAppCtx());this._appCtx.rules=this._rules;this._msgIdLookup=this._ruleSets.loadMsgIds(true);if(this._msgIdLookup===-1){return 1}if(this._dumpRules()){return-1}if(this._isCLI&&this._cli.manualCheckForNonJet(this._rules)){return-1}if(!this._isManual){if(this._isCliOrApi){this._loadComponentSupport();if(this._components.isOk()){this._metaLib.setComponentsLib(this._compSvcs,this._components)}if(this._verboseMode||this._debugMode){this._dumpCompositeNames()}}}if(this._isCLI&&this._cli.dumpMaintenance(this._metaLib)){return-1}this._DomUtils=new DomUtils(nd,this._getAppCtx(),this._tabs,this._fileIndex);this._metaLib.setDomUtils(this._DomUtils);this._ctxTag=this._rules.makeRuleContext();this._ctxAttr=this._rules.makeRuleContext();this._ctxCss=this._rules.makeRuleContext();this._ctxFileHook=this._rules.makeRuleContext();this._ctxTag.utils={};this._ctxAttr.utils={};this._ctxCss.utils={};this._ctxFileHook.utils={};this._CssLib=new CssLib(this._nd,this._getAppCtx());this._setupCssParser();this._parser=new Parser(this,nd,this._rules,this._fileIndex,this._DomUtils,this._getAppCtx(),this._getMsgCtx(),{RULE_JS_DIAGNOSE:"jaf-js-diagnose",RULE_TS_DIAGNOSE:"jaf-ts-diagnose",RULE_CSS_DIAGNOSE:"jaf-css-diagnose",RULE_HTML_DIAGNOSE:"jaf-html-diagnose",RULE_INIT_SCHEMA:"jaf-init-schema",RULE_TS_NO_PARSER:"jaf-ts-noparser",FILETYPE_HTML:FILETYPE.HTML,FILETYPE_CSS:FILETYPE.CSS,JAF_RSI:0})};JafCore.prototype._displayCliFinalStats=function(){this._stats.errorFiles+=this._fileSet.getFileErrorCount();this._cli.displayFinalStats(this._stats,this._severity,this._console.bind(this),this._info.bind(this),this._unitTest,this._useStderr,elapsed)};JafCore.prototype._emitApiRunSummary=function(){var o;o=this._createRunSummary();if(this._events){this._events.emit(this._events.JAF_EVENT_SUMMARY,o)}if(this._ctxCB.cbSummary){this._ctxCB.cbSummary(o)}};JafCore.prototype.setApiCallbacks=function(cbIssue,cbMsg,cbSummary){if(this._ctxCB){if(cbIssue){this._ctxCB.cbIssue=cbIssue}if(cbMsg){this._ctxCB.cbMsg=cbMsg}if(cbSummary){this._ctxCB.cbSummary=cbSummary}}};JafCore.prototype.getStats=function(){return this._stats};JafCore.prototype._showTitle=function(){var title=this._config.getTitle();if(title){title=this._applyMacrosToTitle(title);if(Array.isArray(title)){for(var i=0;i<title.length;i++){this._msg(title[i])}}else{this._msg(title)}}};JafCore.prototype._applyMacrosToTitle=function(title){if(title){if(Array.isArray(title)){for(var i=0;i<title.length;i++){title[i]=this._applyMacros(title[i])}}else{title=this._applyMacros(title)}}return title};JafCore.prototype._readFile=function(filePath,wantBuffer){var data;this._curFile=filePath;try{if(!wantBuffer){data=this._nd.fs.readFileSync(filePath,"utf8")}else{data=this._nd.fs.readFileSync(filePath)}}catch(e){this._stats.errorFiles++;this._error(e.code+" reading file '"+filePath+"'");data=null}return data};JafCore.prototype._noteFileSet=function(filePath){if(!this._fileSetList){this._fileSetList=[]}this._fileSetList.push(filePath)};JafCore.prototype._displayStartMsg=function(){this._showVersion();this._showStartupInfo()};JafCore.prototype._showStartupInfo=function(){var info=this._metaLib.getRevisionInfo();var ojcVersion=this._ojc.getPackVersion();this._console(`JET version : ${info.jetVersionRaw}`,"I");this._console(`Meta built : ${info.date} - ${info.time.replace("edt","EDT").replace("pdt","PDT").replace("utc","UTC")}`,"I");this._console(`Core Meta : ${ojcVersion?ojcVersion:"not loaded"}`,"I");if(this._ojc.getBuildDate()){this._console(`Core Built : ${this._ojc.getBuildDate()} - ${this._ojc.getBuildTime()}`,"I")}this._console(`Audit run on: ${this._Utils.getCurrentDate()} - ${this._Utils.getCurrentTime()}`,"I");if(this._config.isBuiltinJetRules()){this._console(`Theme : ${this._config.getTheme()}`,"I")}};JafCore.prototype._showVersion=function(){var msg,descript;descript=this._rtf.migrator?DESCRIPTION_MIG:DESCRIPTION;msg=`${this._isCLI?"\n":""}${descript} (JAF ${VERSION} ${this._nd.os.platform()})`;this._console(msg,"I")};JafCore.prototype._getInfo=function(){return{version:VERSION,description:DESCRIPTION,platform:this._nd.os.platform(),packageVer:DEFAULTS.JETVER}};JafCore.prototype._console=function(msg,type){this._isCLI?console.log(msg):this._callbackMsg(msg,type?type:"N")};JafCore.prototype._msg=function(msg){this._writer.put(msg)};JafCore.prototype._callbackMsg=function(msg,type){if(this._outFormat===OUTFMT.JSON||this._isAPI&&this._isAsyncTemp){this._messageStack.push({msg:msg,type:type})}if(this._events){this._cbMsgObj.type=type;this._cbMsgObj.msg=msg;this._events.emit(this._events.JAF_EVENT_MESSAGE,this._cbMsgObj)}if(this._ctxCB.cbMsg){this._cbMsgObj.type=type;this._cbMsgObj.msg=msg;this._ctxCB.cbMsg(this._cbMsgObj)}};JafCore.prototype._callbackIssue=function(obj){if(this._events){this._events.emit(this._events.JAF_EVENT_ISSUE,obj)}if(this._ctxCB.cbIssue){this._ctxCB.cbIssue(obj)}};JafCore.prototype._writeIssue=function(msg){this._msg(msg)};JafCore.prototype._info=function(msg,type,force){if(this._verboseMode||this._debugMode||force){let nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}if(this._isCLI){msg=this._clr.YELLOW(msg)}this._console(nl+msg,type)}};JafCore.prototype._debug=function(msg){if(this._debugMode){let nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}msg="[debug]: "+msg;if(this._isCLI){msg=this._clr.CYAN(msg)}this._console(nl+msg,"D")}};JafCore.prototype._error=function(msg,prefix="Error"){var nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}var s=`[${prefix}]: ${msg}`;if(this._isCLI){s=this._clr.BRIGHTRED(s)}this._console(nl+s,"E");this._stats.errors++};JafCore.prototype._warn=function(msg,prefix="Warn",nc){var nl="";if(msg.charAt(0)==="\n"){msg=msg.substring(1);nl="\n"}msg=`[${prefix}]: ${msg}`;if(this._isCLI&&!nc){msg=this._clr.PINK(msg)}this._console(nl+msg,"W");this._stats.warnings++};JafCore.prototype._assert=function(msg){var origin=this._rules.getFiredRuleName()||"jaf ";var s=`[ASSERT]: ${msg} (<- ${origin})`;if(this._isCLI){s=this._colorMode?this._clr.BRIGHTRED(s):s}this._console(s,"A");this._stats.asserts++;if(this._debugMode){let stk;try{s.$()}catch(e){let x=e.stack.indexOf("\n");stk=e.stack.substring(x+1);stk=stk.substring(stk.indexOf("\n")+1);if(origin!=="jaf"){let x2;if((x=stk.lastIndexOf(origin))>=0){if((x2=stk.indexOf("\n",x))>=0){stk=stk.substring(0,x2+1)}}}stk=stk.replace(/at /g," ")}this._debug("Assert Trace:\n"+stk)}};JafCore.prototype._getAppCtx=function(refresh){if(!this._appCtx){refresh=true;this._appCtx={msg:this._msg.bind(this),info:this._info.bind(this),debug:this._debug.bind(this),error:this._error.bind(this),warn:this._warn.bind(this),assert:this._assert.bind(this),console:this._console.bind(this),config:this._config,metaLib:this._metaLib,utils:this._Utils,fsUtils:this._fsUtils,tsUtils:this._tsUtils,tsxUtils:this._tsxUtils,ojetLib:this._ojetLib,plugin:this._plugin,configLib:this._configLib,colors:this._clr,tmpDir:this._tmpDir,reporter:this._reporter,Issue:Issue,flushIssues:this._flushIssues.bind(this),fireHookFileRules:this._fireHookFileRules.bind(this),getMsgId:this._getMsgId.bind(this),rules:this._rules,severity:this._severity,Stats:this._stats,runMode:this._runMode,platform:this._platform,isWindows:this._isWindows,isUnitTest:this._unitTest,defaultJetVer:DEFAULTS.JETVER,VsCodeExtHint:this._VsCodeExtHint,reportJafIssue:this._reportJafIssue.bind(this)}}if(refresh){this._appCtx.metaLib=this._metaLib;this._appCtx.tmpDir=this._tmpDir;this._appCtx.verboseMode=this._verboseMode;this._appCtx.debugMode=this._debugMode;this._isInfo=this._verboseMode||this._debugMode;this._appCtx.isUnitTest=this._unitTest;this._appCtx.configLib=this._configLib}return this._appCtx};JafCore.prototype._updateAppCtx=function(prop,value){this._appCtx[prop]=value};JafCore.prototype._getMsgId=function(context,msgKey){var o;msgKey=msgKey?msgKey:context.ruleName;o=this._msgIdLookup[context.rulePack.getPrefix()];return o?o[msgKey]:"????"};JafCore.prototype._getMsgCtx=function(refresh){if(!this._msgCtx){refresh=true;this._msgCtx={console:this._console.bind(this),info:this._info.bind(this),debug:this._debug.bind(this),warn:this._warn.bind(this),error:this._error.bind(this),msg:this._msg.bind(this),assert:this._assert.bind(this),jafMsg:this._reportJafErrorMsg.bind(this),colors:this._clr,isWindows:this._isWindows}}if(refresh){this._msgCtx.isDebug=this._debugMode;this._msgCtx.isVerbose=this._verboseMode}return this._msgCtx};JafCore.prototype._getModeCtx=function(){return{isOJET:this._isOJET,isOJETCLI:this._isOJETCLI,isCLI:this._isCLI,isAPI:this._isAPI,isAMD:this._isAMD,isUnitTest:this._unitTest,isWindows:this._isWindows}};JafCore.prototype._openWriter=function(outPath){var err;if(err=this._writer.open(outPath)){this._error("Output path error - reverting to console : \n "+err.message)}return err?false:true};JafCore.prototype._clearNL=function(text){var i,c;for(i=0;i<text.length;i++){c=text.charAt(i);if(!this._Utils.isWhitespace(c)){break}if(c==="\n"||c==="\r"){i++;if(i<text.length){c=text.charAt(i);if(c==="\n"||c==="\r"){i++}}text=text.substring(i);break}}return{text:text,stripped:i}};JafCore.prototype._checkNodeVer=function(){var ret;var ver=process.version;if(ver.charAt(0)==="v"){ver=ver.substring(1)}if(!(ret=require("semver").gte(ver,MIN_NODE_VER))){this._error(`Node version ${ver} detected - JAF requires ${MIN_NODE_VER} or later`)}return ret};JafCore.prototype._loadComponentSupport=function(){this._loadComponentServices();if(!this._components&&this._nd.Components){this._components=new this._nd.Components(this._nd,this._runMode,this._curDir,this._compSvcs,this._config.getComponentsBase(),this._config.getComponentUrls(),this._config.getComponents(),this._metaLib,this._ojc,this._config.get$JetCore(),{isDryRun:this._dryRunSet,isDebug:this._debugMode},this._getMsgCtx(),this._getAppCtx());this._metaLib.setComponentsLib(null,this._components)}};JafCore.prototype._loadComponentServices=function(){var nd=this._nd;if(!this._compSvcs&&nd.ComponentSvcs){this._compSvcs=new nd.ComponentSvcs(nd,nd.path.dirname(this._metaPath),this._config,this._tmpDir,this._getAppCtx());this._metaLib.setComponentsLib(this._compSvcs)}};JafCore.prototype._processAMDUserCCAMeta=function(arMeta){var i,comp;if(arMeta){this._loadComponentSupport();for(i=0;i<arMeta.length;i++){if(comp=arMeta[i]){this._components.processComponentJson(comp,"")}}}};JafCore.prototype._applyMacros=function(str){var s=str,macro,regex,repl;for(macro in this._macros){if(s.includes(macro)){repl=this._macros[macro];if(typeof repl==="undefined"||repl===null){continue}regex=new RegExp((macro.startsWith("$")?"\\":"")+macro,"g");s=s.replace(regex,repl)}}return s};JafCore.prototype._initMacros=function(){this._macros.$jafcwd=this._curDir;this._macros.$jafdate=this._Utils.getCurrentDate();this._macros.$jaftime=this._Utils.getCurrentTime();this._macros.$jafver=VERSION};JafCore.prototype._debugZipContents=function(entries,indent,lastPath){var i,entry,indent=indent||0,lastPath=lastPath||"";if(Array.isArray(entries)){for(i=0;i<entries.length;i++){entry=entries[i];this._debug(entry.path?entry.path:lastPath+entry.name);if(!entry.isFile){this._debugZipContents(entry.files,indent+2,entry.path)}}}else{this._debug("no valid data found in zip")}};JafCore.prototype.getUnitTestJetVer=function(){var runvers=this._metaLib.getMetaVers();return runvers.runver};JafCore.prototype._extractFileType=function(filePath,isNonFile){if(isNonFile){let i=filePath.lastIndexOf(".");return i>=0?filePath.substring(i+1):""}return this._fsUtils.getFileExtSync(filePath)};JafCore.prototype.setMarker=function(mark){let was=this._cid;this._cid=mark;return was};JafCore.prototype.getMarker=function(){return this._cid};function _isAttrExpr(attrValue){var rc=false;if(typeof attrValue==="string"){attrValue=attrValue.trim();rc=attrValue.startsWith("[[")||attrValue.startsWith("{{")}return rc};function _isLinkCSSLink(scriptNode){var ret=null;var attribs=scriptNode.attribs;if(!attribs){return ret}if(attribs.rel){if(attribs.rel.toLowerCase()==="stylesheet"){if(attribs.href){ret=attribs.href.toLowerCase().endsWith(FILETYPE.CSS)?attribs.href:null}}}return ret};function _getPackageInfo(runMode){var package=require(__dirname+"./../package.json");if(runMode==="amd"){package=JSON.parse(package)}VERSION=package.Jaf.version;DESCRIPTION=package.description;DESCRIPTION_MIG="JET Core Pack Migrator"};function _beginsWithNL(text,utils){var i,c,ret=false;for(i=0;i<text.length;i++){c=text.charAt(i);if(!utils.isWhitespace(c)){break}if(c==="\n"||c==="\r"){ret=true;break}}return ret};JafCore.prototype._processConfigOptions=function(){var val,theme,clr,refresh=false;;if(!(val=this._config.getOptions())){return}if(!this._rtf.debugSetVeto){if(!this._rtf.debugSet){if(val.debug!==undefined){this._debugMode=!!val.debug;refresh=true}}else{val.debug=true;refresh=true}}if(!this._rtf.verboseSetVeto){if(!this._rtf.verboseSet){if(val.verbose!==undefined){this._verboseMode=!!val.verbose;refresh=true}}else{val.verbose=true;refresh=true}}this._isInfo=this._verboseMode||this._debugMode;if(this._clr){clr=this._clr;if(this._rtf.colorSet){val.nocolor=!this._rtf.colorSet}else{if(val.color!==undefined){this._colorMode=!!val.color;if(typeof val.color==="string"){theme=val.color.startsWith("l")?clr.LIGHT:clr.DARK}}else if(this._isCLI){if(theme=this._cli.checkEnvColor()){this._colorMode=theme!="no"}}}if(!this._colorMode){clr.enable(false)}else{if(theme){clr.setTheme(theme)}}}else{this._colorMode=this._rtf.colorSet=false}if(!this._rtf.msgIdModeSet){if(val.msgid!==undefined){this._msgIdMode=!!val.msgid}}else{val.msgid=this._rtf.msgIdMode}val.ruleName=!!val.ruleName;if(!this._rtf.unitTest&&val["$unittest"]){this._unitTest=true}if(!this._rtf.experimentalSet&&(val=this._config._config?.options?.experimental)){this._rtf.experimental=val;FILETYPE.addExperimentalFileTypeTsx();this._info("WARNING: Unsupported experimental '.tsx' file handling enabled!")}if(refresh){this._getMsgCtx(true);this._getAppCtx(true)}};function _getScriptData(data,start,end){var s=data.substring(start,end);var x=s.indexOf("</script");s=s.substring(0,x);return s};module.exports=JafCore;
package/types/index.d.ts CHANGED
@@ -468,6 +468,7 @@
468
468
  */
469
469
  export interface Utils {
470
470
  hasAnyProps(obj: object): boolean,
471
+ isObject(varName: any): boolean,
471
472
  isProperty(obj: object, name: string): boolean,
472
473
  getProperty(obj: object, name: string): any,
473
474
  getType(varName: any): string,
@@ -490,6 +491,7 @@
490
491
  readDirSync(filePath:string):Array<FsUtilsFileSetEntry>,
491
492
  createFolderSync(filePath:string):boolean,
492
493
  deleteFolderSync (filePath:string,deleteTarget?:boolean),
494
+ isFolderWritableSync(filePath:string):boolean,
493
495
  getUniqueFilenameSync(template:string):string
494
496
  }
495
497
  export interface FsUtilsErrorCallback {
@@ -584,7 +586,9 @@
584
586
  isWCTag(tag:string):boolean,
585
587
  isJetTag(tag:string):boolean,
586
588
  isJetCoreTag(tag:string):boolean,
589
+ isJetLegacyTag(tag:string):boolean,
587
590
  isComponentTag(tag:string):boolean,
591
+ isVComponentTag(tag:string):boolean,
588
592
  isTagDeprecated(tag:string):string|null,
589
593
  isTagPackPrivate(tag:string):boolean,
590
594
  isTagAttrDeprecated(tag:string, attrName:string):string|null,
@@ -648,6 +652,7 @@
648
652
  getAllCustomMetadata():object, //TODO
649
653
  getTagMetadata(tag:string):object|null, //TODO
650
654
  getTagPropMetadata(tag:string, attrName:string):object|null, //TODO
655
+ getTagRequirementsMetadata(tag:string):Array<object>|null, //TODO
651
656
  getOjcMetadataByPath(path:string):object|null, //TODO
652
657
 
653
658
  getAllPackMetadata():object, //TODO
@@ -1,41 +0,0 @@
1
- {
2
- "legacyTag": "oj-messages",
3
- "corePackTag": "oj-c-message-toast",
4
- "migrateImports": {
5
- "from": "ojs/ojmessages",
6
- "to": "oj-c/message-toast"
7
- },
8
- "migrateTagByAttribute": [
9
- {
10
- "fromTag": "oj-messages",
11
- "toTag": "oj-c-message-toast",
12
- "attribute": "display",
13
- "attributeValue": "notification"
14
- }
15
- ],
16
- "migrateAttributes": [
17
- {
18
- "fromAttribute": "display",
19
- "fromValue": "notification",
20
- "toAttribute": "",
21
- "toValue": ""
22
- },
23
- {
24
- "fromAttribute": "display-options",
25
- "fromValue": "",
26
- "toAttribute": "",
27
- "toValue": ""
28
- },
29
- {
30
- "fromAttribute": "display-options.category",
31
- "fromValue": "",
32
- "toAttribute": "",
33
- "toValue": ""
34
- }
35
- ],
36
- "ruleSetToIgnore": [
37
- {
38
- "attribute": "messages"
39
- }
40
- ]
41
- }