woldner/VisualLinter

Unexpected character encountered while parsing value: =. Path '', line 0, position 0.

Closed this issue · 9 comments

We have installed this extension in VS2019 and whenever we make a change to file and save it we are getting the error

Unexpected character encountered while parsing value: =. Path '', line 0, position 0.

However the errors are displayed in the error list. Dont know which is causing the issue.

this is the config file we have

module.exports = {
parser: '@typescript-eslint/parser', // Specifies the ESLint parser
plugins: ['@typescript-eslint'],
extends: [
'plugin:@typescript-eslint/recommended' // Uses the recommended rules from the @typescript-eslint/eslint-plugin
],
parserOptions: {
ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features
sourceType: 'module', // Allows for the use of imports
},
rules: {
"@typescript-eslint/interface-name-prefix": "error",
"@typescript-eslint/explicit-function-return-type": "error",
"@typescript-eslint/array-type": "error"
}
};

Thanks

Hey @rbmanian75 thanks for the report. Could you share the source code for the file throwing the error?

Oh sorry we cant share the source. Since it is part of big project. But when i run eslint from command line it works without any errors.

but i get this in the output

[{"filePath":"C:\S\SGC\Sgc.Web\Sgc.Web\Scripts\Default.ts","messages":[{"ruleId":"@typescript-eslint/prefer-namespace-keyword","severity":2,"message":"Use 'namespace' instead of 'module' to declare custom TypeScript modules.","line":1,"column":1,"nodeType":"TSModuleDeclaration","messageId":"useNamespace","endLine":485,"endColumn":2,"fix":{"range":[0,6],"text":"namespace"}},{"ruleId":"@typescript-eslint/no-namespace","severity":2,"message":"ES2015 module syntax is preferred over custom TypeScript modules and namespaces.","line":1,"column":1,"nodeType":"TSModuleDeclaration","messageId":"moduleSyntaxIsPreferred","endLine":485,"endColumn":2},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":5,"column":38,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":5,"endColumn":41},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":28,"column":40,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":28,"endColumn":43},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":43,"column":35,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":43,"endColumn":38},{"ruleId":"@typescript-eslint/explicit-member-accessibility","severity":2,"message":"Missing accessibility modifier on method definition constructor.","line":89,"column":9,"nodeType":"MethodDefinition","messageId":"missingAccessibility","endLine":105,"endColumn":10},{"ruleId":"@typescript-eslint/array-type","severity":2,"message":"Array type using 'Array' is forbidden. Use 'any[]' instead.","line":89,"column":42,"nodeType":"TSTypeReference","messageId":"errorStringArray","endLine":89,"endColumn":52,"fix":{"range":[2641,2651],"text":"any[]"}},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":89,"column":48,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":89,"endColumn":51},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":114,"column":35,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":120,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":122,"column":30,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":124,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":126,"column":24,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":130,"endColumn":10},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":126,"column":61,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":126,"endColumn":64},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":143,"column":26,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":167,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":173,"column":31,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":185,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":192,"column":31,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":230,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":237,"column":37,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":256,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":262,"column":32,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":269,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":271,"column":36,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":285,"endColumn":10},{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'event' is defined but never used.","line":271,"column":37,"nodeType":"Identifier","endLine":271,"endColumn":48},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":271,"column":45,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":271,"endColumn":48},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":287,"column":35,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":301,"endColumn":10},{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'event' is defined but never used.","line":287,"column":36,"nodeType":"Identifier","endLine":287,"endColumn":47},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":287,"column":44,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":287,"endColumn":47},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":303,"column":35,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":305,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":307,"column":28,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":324,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":335,"column":43,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":339,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":341,"column":34,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":370,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":353,"column":17,"nodeType":"ArrowFunctionExpression","messageId":"missingReturnType","endLine":353,"endColumn":91},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":372,"column":36,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":391,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":393,"column":31,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":414,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":416,"column":40,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":443,"endColumn":10},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":433,"column":21,"nodeType":"ArrowFunctionExpression","messageId":"missingReturnType","endLine":441,"endColumn":22},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":439,"column":29,"nodeType":"ArrowFunctionExpression","messageId":"missingReturnType","endLine":439,"endColumn":60},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":448,"column":39,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":456,"endColumn":10},{"ruleId":"@typescript-eslint/array-type","severity":2,"message":"Array type using 'Array' is forbidden. Use 'any[]' instead.","line":448,"column":61,"nodeType":"TSTypeReference","messageId":"errorStringArray","endLine":448,"endColumn":71,"fix":{"range":[16587,16597],"text":"any[]"}},{"ruleId":"@typescript-eslint/no-explicit-any","severity":1,"message":"Unexpected any. Specify a different type.","line":448,"column":67,"nodeType":"TSAnyKeyword","messageId":"unexpectedAny","endLine":448,"endColumn":70},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":465,"column":25,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":474,"endColumn":10},{"ruleId":"@typescript-eslint/no-unused-vars","severity":1,"message":"'y' is assigned a value but never used.","line":468,"column":19,"nodeType":"Identifier","endLine":468,"endColumn":20},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":470,"column":20,"nodeType":"ArrowFunctionExpression","messageId":"missingReturnType","endLine":473,"endColumn":14},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":472,"column":43,"nodeType":"ArrowFunctionExpression","messageId":"missingReturnType","endLine":472,"endColumn":55},{"ruleId":"@typescript-eslint/explicit-function-return-type","severity":2,"message":"Missing return type on function.","line":476,"column":52,"nodeType":"FunctionExpression","messageId":"missingReturnType","endLine":481,"endColumn":10}],"errorCount":30,"warningCount":11,"fixableErrorCount":3,"fixableWarningCount":0,"source":"module Pages {\r\n\r\n "use strict";\r\n\r\n declare let libMenuSidebarReact: any;\r\n\r\n /\r\n * Script file associated with Default.aspx.\r\n */\r\n export class Default extends Pages.SuperPage {\r\n\r\n //#region Static Variables\r\n\r\n public static Page: Default;\r\n\r\n //#endregion\r\n\r\n //#region Instance Variables\r\n\r\n /\r\n * Is the contentFrame still loading ?\r\n */\r\n public isContentFrameLoading: boolean = false;\r\n\r\n /\r\n * Class instance for MenuSiebar's App entry point class\r\n */\r\n public libMenuSidebarReactApp: any = null;\r\n\r\n /\r\n * Is the jqxSplitter collapsed ?\r\n */\r\n private isSplitterCollapsed: boolean = false;\r\n\r\n /\r\n * the top container (SGC top image + superfish menu)\r\n */\r\n private $headerContainer: JQuery = null;\r\n\r\n /\r\n * the central container (menu sidebar + splitter + content frame)\r\n */\r\n private $centerContainer: any = null;\r\n\r\n /\r\n * the container

that holds inside the content <iframe>\r\n */\r\n private $contentAreaDiv: JQuery = null;\r\n\r\n /\r\n * the sub container <iframe> to display SGC's web pages content on the right\r\n */\r\n private $contentFrame: JQuery = null;\r\n\r\n /\r\n * the that hold the image to collapse/expand the splitter\r\n */\r\n private $imgSplitterExpandCollapse: JQuery = null;\r\n\r\n // the footer is inside the centerContainer, below the contentFrame\r\n private $footerContainer: JQuery = null;\r\n\r\n private $downloadFrame: JQuery = null;\r\n\r\n private $menuCtrlClick: JQuery = null;\r\n\r\n private $imgSgcLogo: JQuery = null;\r\n\r\n private $window: JQuery = null;\r\n\r\n private $document: JQuery = null;\r\n\r\n private dialog: Interfaces.Controls.Others.IDialog = null;\r\n\r\n /\r\n * browser window width after previous resize after event (because the splitter expand/collapse causes resize events)\r\n */\r\n private previousResizeAfterWidth: number = 0;\r\n\r\n /\r\n * the previous size of centerContainer; to compare with current size to decide on resize operation.\r\n */\r\n private previousSizeCenterContainer: Interfaces.Sys.ISize = new Sys.Size(-1, -1);\r\n\r\n //#endregion\r\n\r\n //#region Constructors\r\n\r\n constructor(menuSidebarSections: Array) {\r\n super();\r\n\r\n this.initJQueryVariables();\r\n\r\n this.addMenuSidebarSections(menuSidebarSections);\r\n\r\n this.manageEnvironmentLabels();\r\n\r\n this.createSplitter();\r\n\r\n this.onWindowResize();\r\n\r\n this.bindEventHandlers();\r\n\r\n this.onWindowResizedAfter();\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Public Methods\r\n\r\n /\r\n * Go to login info page when clicked the SGC logo image and refresh menusidebar sections 'Relacionadas'\r\n */\r\n public navigateToLoginInfo() {\r\n Pages.Default.Page.setContentPage(Constants.PageName.LOGIN_INFO);\r\n\r\n if (this.libMenuSidebarReactApp) {\r\n this.libMenuSidebarReactApp.refreshSectionRelated();\r\n }\r\n }\r\n\r\n public setContentPage(relativePath: string) {\r\n this.setContentPageAbsolutePath(Globals.Static.url.getAbsolutePath(relativePath));\r\n }\r\n\r\n public download(relativePath: string, queryString?: any) {\r\n this.$downloadFrame.attr(\r\n Constants.DomAttributes.SRC,\r\n Globals.Static.url.buildAbsolutePath(relativePath, queryString));\r\n }\r\n\r\n /\r\n Create and open (and close if previously opened) any of the following dialogs:\r\n - Controlo/Processos Pendentes/Todos Utilizadores\r\n - Controlo/Processos Pendentes/Estado Servicos\r\n\r\n @method openDialog\r\n @param title {String} the dialog title\r\n @param url {String} the web page relative path to open inside the dialog\r\n @param width {String} the dialog width\r\n @param height {String} the dialog height.\r\n */\r\n public openDialog(title: string, url: string, width: string, height: string) {\r\n var dialogOptions: Interfaces.Controls.Others.IDialogOptions = new Controls.Others.DialogOptions();\r\n\r\n dialogOptions.setContainerIds("ControloPendingProcesses_DialogDiv");\r\n\r\n dialogOptions.title = title;\r\n dialogOptions.resizable = true;\r\n\r\n dialogOptions.minWidth = 350;\r\n dialogOptions.minHeight = 300;\r\n\r\n dialogOptions.width = width;\r\n dialogOptions.height = height;\r\n\r\n dialogOptions.relativePath = url;\r\n\r\n // close a previous dialog if it was opened\r\n if (this.dialog\r\n && this.dialog.isOpen()) {\r\n this.dialog.close();\r\n }\r\n\r\n // open a new dialog\r\n this.dialog = Controls.ControlFactory.createDialogOpen(dialogOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Event Handlers\r\n\r\n private onWindowUnload() {\r\n this.$contentFrame.off();\r\n\r\n this.$centerContainer.off();\r\n\r\n this.$centerContainer.jqxSplitter("destroy");\r\n\r\n this.$menuCtrlClick.off();\r\n\r\n this.$document.off();\r\n\r\n this.$window.off();\r\n }\r\n\r\n /\r\n * Adjust the several visual containers inside the default page, only when the width or height changes.\r\n *\r\n * @method onWindowResize\r\n */\r\n private onWindowResize() {\r\n var currentSizeCenterContainer: Interfaces.Sys.ISize =\r\n new Sys.Size(\r\n DefaultContainerSize.getCenterContainerWidth(),\r\n DefaultContainerSize.getCenterContainerHeight()\r\n );\r\n\r\n if (currentSizeCenterContainer.equals(this.previousSizeCenterContainer)) {\r\n return;\r\n }\r\n\r\n this.previousSizeCenterContainer = currentSizeCenterContainer;\r\n\r\n // resize headerContainer width to prevent its overflow into new row when browser window is too narrow\r\n this.$headerContainer.css(Constants.CssProperty.WIDTH, currentSizeCenterContainer.width);\r\n\r\n // resize width of the jqxSplitter\r\n var jqxSplitterOptions: jqwidgets.SplitterOptions = {};\r\n\r\n jqxSplitterOptions.width = currentSizeCenterContainer.width;\r\n jqxSplitterOptions.height = currentSizeCenterContainer.height;\r\n\r\n this.$centerContainer.jqxSplitter(jqxSplitterOptions);\r\n\r\n // resize width/height of contentFrame & footer\r\n var contentFrameWidth: number =\r\n this.isSplitterCollapsed\r\n ? DefaultContainerSize.getContentFrameWidth() + DefaultContainerSize.getMenuSidebarWidth()\r\n : DefaultContainerSize.getContentFrameWidth();\r\n\r\n this.$contentFrame\r\n .width(contentFrameWidth)\r\n .height(currentSizeCenterContainer.height - this.$footerContainer.height());\r\n\r\n this.$footerContainer.width(contentFrameWidth);\r\n\r\n // make the initially invisible content area VISIBLE now, to solve the visual clutter we get after a login in GC.\r\n this.$contentAreaDiv.css(Constants.CssProperty.VISIBILITY, "visible");\r\n }\r\n\r\n /\r\n * To be called after the browser window is resized to either expand/collapse the menu sidebar if the browser window is too wide/narrow.\r\n *\r\n * @method onWindowResizedAfter\r\n */\r\n private onWindowResizedAfter() {\r\n\r\n var browserCurrentWindowWidth: number = DefaultContainerSize.getWindowWidth();\r\n\r\n if (this.previousResizeAfterWidth !== browserCurrentWindowWidth) {\r\n this.previousResizeAfterWidth = browserCurrentWindowWidth;\r\n\r\n if (browserCurrentWindowWidth < DefaultContainerSize.getWindowWidthToSlideMenusidebar()) {\r\n if (!this.isSplitterCollapsed) {\r\n // if window width resized below the limit and the splitter is expanded then collapse it\r\n this.$centerContainer.jqxSplitter("collapse");\r\n }\r\n } else {\r\n if (this.isSplitterCollapsed) {\r\n // if window width resized above a limit and the splitter is collapsed then expand it\r\n this.$centerContainer.jqxSplitter("expand");\r\n }\r\n }\r\n }\r\n }\r\n\r\n /\r\n * Local Storage event handler. To be used in a scenario of multiple browser tabs opened for SGC and\r\n * we want the logoff of any 1 tab to cause the remaining tabs logoff.\r\n */\r\n private onWindowStorage(eventObject: JQuery.TriggeredEvent) {\r\n var storageEventKey: string = (eventObject.originalEvent as StorageEvent).key;\r\n\r\n if (storageEventKey === "SGC_Action"\r\n && localStorage.getItem("SGC_Action") === "LogOut") {\r\n window.location.replace(Constants.PageName.LOGOUT);\r\n }\r\n }\r\n\r\n private onSplitterCollapsed(event?: any) {\r\n this.isSplitterCollapsed = true;\r\n\r\n // set the content area
left position next to the collapsed splitter gray border\r\n this.$contentAreaDiv\r\n .removeClass("contentArea--sidebarExpanded")\r\n .addClass("contentArea--sidebarCollapsed");\r\n\r\n // put the expand image\r\n this.$imgSplitterExpandCollapse\r\n .removeClass("img__splitterExpanded")\r\n .addClass("img__splitterCollapsed");\r\n\r\n this.setContentFrameFooterContainerWidth(DefaultContainerSize.getMenuSidebarWidth());\r\n }\r\n\r\n private onSplitterExpanded(event?: any) {\r\n this.isSplitterCollapsed = false;\r\n\r\n // set the content area
left position next to the expanded splitter blue edge\r\n this.$contentAreaDiv\r\n .removeClass("contentArea--sidebarCollapsed")\r\n .addClass("contentArea--sidebarExpanded");\r\n\r\n // put the collapse image\r\n this.$imgSplitterExpandCollapse\r\n .removeClass("img__splitterCollapsed")\r\n .addClass("img__splitterExpanded");\r\n\r\n this.setContentFrameFooterContainerWidth();\r\n }\r\n\r\n private onContentFrameLoad() {\r\n this.isContentFrameLoading = false;\r\n }\r\n\r\n private onMenuClick(eventObject: JQuery.TriggeredEvent) {\r\n var url: string;\r\n\r\n eventObject.preventDefault();\r\n\r\n if (!this.isContentFrameLoading) {\r\n if (eventObject.ctrlKey) {\r\n url = Globals.Static.url.getDefaultPagePath(\r\n "menukey=" + $(eventObject.currentTarget).attr("data-menukey"));\r\n\r\n Globals.Static.page.browserWindow.open(url);\r\n } else {\r\n url = $(eventObject.currentTarget).attr("data-url");\r\n\r\n this.setContentPage(url);\r\n }\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Private Methods\r\n\r\n /\r\n * Set the web page on the contentFrame.\r\n *\r\n * @param absolutePath {String} the absolute URL to the web page to set.\r\n */\r\n private setContentPageAbsolutePath(absolutePath: string) {\r\n this.isContentFrameLoading = true;\r\n\r\n this.$contentFrame.attr(Constants.DomAttributes.SRC, absolutePath);\r\n }\r\n\r\n private bindEventHandlers() {\r\n this.$window\r\n .on(Constants.DomEvents.UNLOAD, this.onWindowUnload.bind(this))\r\n // normal window resize continuously triggered\r\n .on(Constants.DomEvents.RESIZE, this.onWindowResize.bind(this))\r\n // window resize triggered only after 500 ms of no resizing,\r\n // after a resize operation(to resize splitter only once after a continuous window resize operation)\r\n .on(Constants.DomEvents.RESIZE, this.debounce(this.onWindowResizedAfter.bind(this), 500))\r\n .on(Constants.DomEvents.STORAGE, this.onWindowStorage.bind(this));\r\n\r\n this.$menuCtrlClick.on(\r\n Constants.DomEvents.CLICK,\r\n (eventObject: JQuery.TriggeredEvent) => { this.onMenuClick(eventObject); });\r\n\r\n this.$centerContainer.on(\r\n "collapsed",\r\n this.onSplitterCollapsed.bind(this));\r\n\r\n this.$centerContainer.on(\r\n "expanded",\r\n this.onSplitterExpanded.bind(this));\r\n\r\n this.$contentFrame.on(\r\n Constants.DomEvents.LOAD,\r\n this.onContentFrameLoad.bind(this));\r\n\r\n this.$imgSgcLogo.on(\r\n Constants.DomEvents.CLICK,\r\n this.navigateToLoginInfo.bind(this));\r\n }\r\n\r\n private initJQueryVariables() {\r\n this.$headerContainer = $("#headerContainer");\r\n\r\n // centerContainer/Splitter (by default it's created with a width of 5px, not specified here)\r\n this.$centerContainer = $("#centerContainer");\r\n\r\n // content area\r\n this.$contentAreaDiv = $("#contentArea");\r\n\r\n this.$contentFrame = $("#ContentFrame");\r\n\r\n this.$footerContainer = $("#footerContainer");\r\n this.$downloadFrame = $("#DownloadFrame");\r\n\r\n this.$menuCtrlClick = $(".menuCtrlClick");\r\n this.$imgSgcLogo = $("#imgSgcLogo");\r\n\r\n this.$window = $(window);\r\n this.$document = $(document);\r\n }\r\n\r\n private createSplitter() {\r\n // Set Splitter\r\n var jqxSplitterOptions: jqwidgets.SplitterOptions = {};\r\n jqxSplitterOptions.resizable = false;\r\n jqxSplitterOptions.splitBarSize = DefaultContainerSize.getSplitterWidth();\r\n\r\n var jqxSplitterPanelMenuSidebar: jqwidgets.SplitterPanel = {};\r\n jqxSplitterPanelMenuSidebar.size = DefaultContainerSize.getMenuSidebarWidth();\r\n\r\n jqxSplitterOptions.panels = [];\r\n jqxSplitterOptions.panels.push(jqxSplitterPanelMenuSidebar);\r\n\r\n this.$centerContainer.jqxSplitter(jqxSplitterOptions);\r\n\r\n //add an with texture to the splitter div\r\n this.$imgSplitterExpandCollapse =\r\n $("")\r\n .appendTo($("div.jqx-fill-state-pressed"));\r\n\r\n // to put the correct image and state flag\r\n this.onSplitterExpanded();\r\n }\r\n\r\n private manageEnvironmentLabels() {\r\n var spanMenuSidebarEnvironmentLabel: JQuery = $("#MenuSidebarEnvironmentLabel");\r\n\r\n if (spanMenuSidebarEnvironmentLabel.length\r\n && spanMenuSidebarEnvironmentLabel.is(":visible")) {\r\n // if the menusidebar environment label was activated on server side then pulsate it 30 times for 30s\r\n spanMenuSidebarEnvironmentLabel.effect(\r\n "pulsate",\r\n { "times": 30 },\r\n 30000);\r\n }\r\n\r\n var watermarkContainer: JQuery = $("#watermarkContainer");\r\n\r\n if (watermarkContainer.length\r\n && watermarkContainer.is(":visible")) {\r\n watermarkContainer.mouseenter(\r\n () => {\r\n // hide the watermark when mouse hovered on the container...\r\n watermarkContainer.hide();\r\n\r\n // ... and then show it after 30s !\r\n window.setTimeout(\r\n () => watermarkContainer.show(),\r\n 30000);\r\n });\r\n }\r\n }\r\n\r\n /\r\n * Add/render the MenuSidebar React entry point class, with the sections 'Mais Recentes', 'Favoritos', 'Relatórios', 'Relacionadas'\r\n */\r\n private addMenuSidebarSections(menuSidebarSections: Array) {\r\n if (libMenuSidebarReact) {\r\n this.libMenuSidebarReactApp = new libMenuSidebarReact.App();\r\n\r\n if (this.libMenuSidebarReactApp) {\r\n this.libMenuSidebarReactApp.domRender(menuSidebarSections);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Debounce function taken from https://gist.github.com/ca0v/73a31f57b397606c9813472f7493a940.\r\n * Useful for implementing behavior that should only happen after a repeated action has completed.\r\n *\r\n * @param func the function to execute after the specified wait time interval\r\n * @param wait the wait time interval in milliseconds\r\n */\r\n private debounce(func: () => void, wait: number) {\r\n let timer: number;\r\n\r\n const y = 5;\r\n\r\n return () => {\r\n clearTimeout(timer);\r\n timer = window.setTimeout(() => func(), wait);\r\n };\r\n }\r\n\r\n private setContentFrameFooterContainerWidth(additionalWidth: number = 0) {\r\n var contentFrameWidth: number = DefaultContainerSize.getContentFrameWidth() + additionalWidth;\r\n\r\n this.$contentFrame.width(contentFrameWidth);\r\n this.$footerContainer.width(contentFrameWidth);\r\n }\r\n\r\n //#endregion\r\n }\r\n}\r\n"}]

Unexpected character encountered while parsing value: =. Path '', line 0, position 0.

I am not sure whether the problem is the config file or source.

Thanks

Ok. I'll have a look tomorrow. You can edit your comment above as it contains some information you might not want to share. Just a heads up.

I have what I need to debug this issue though. Thanks!

@rbmanian75 Could you share your package json, including versions for installed dependencies?
Thanks!

Hi @rbmanian75

The cause of this error is because the typescript-eslint dependency typescript-estree is using stdout to warn about an unsupported TypeScript version. See below:

exception: error trying to deserialize output:
=============

WARNING: You are currently running a version of TypeScript which is not officially supported by typescript-estree.

You may find that it works just fine, or you may not.

SUPPORTED TYPESCRIPT VERSIONS: >=3.2.1 <3.5.0

YOUR TYPESCRIPT VERSION: 3.5.1

Please only submit bug reports when using the officially supported version.

=============
[{ ... json }]

Source:
https://github.com/typescript-eslint/typescript-eslint/blob/5d2b9626d86ca0ef14c2a45c233f096f356bccbd/packages/typescript-estree/src/parser.ts#L259

VisualLinter expect the output to be json, but since the warning message is part of the stdout stream, we cannot deserialize the output. See this line:
https://github.com/jwldnr/VisualLinter/blob/master/src/VisualLinter/Linting/Linter.cs#L58

You can disable this warning (once you've acknowledged it of course) by setting warnOnUnsupportedTypeScriptVersion: false in your eslint config file (e.g. .eslintrc.js) under parserOptions.
See the documentation for more information:
https://github.com/typescript-eslint/typescript-eslint/blob/f513a143f549f8ccc8ec4851f245364c4542af73/packages/parser/README.md#configuration

Hope I've shed some light to resolving this issue. I'm going to close this issue, but if there's anything else- don't hesitate to ask!

thanks for the reply. It helped us in solving the issue.

but small correction

warnOnUnsupportedTypeScriptVersion: false in your package.json under parserOptions

this has to be done in the eslint configuration file and not in package.json.

@rbmanian75 of course! I've edited the response above. Thanks!