{"version":3,"sources":["webpack://CoveoForSitecore/./src/utils/TabUtils.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreFilterExpression.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/QueryNodeTreeParserFactory.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/AndNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/FalseNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/FieldNodeParser.ts","webpack://CoveoForSitecore/./node_modules/dateformat/lib/dateformat.js","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/NotNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/OrNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/parsers/TrueNodeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/queryNodes/QueryNodeTreeParser.ts","webpack://CoveoForSitecore/./src/resolvers/nodes/QueryFilterNodeExpressionResolver.ts"],"names":["coveo_search_ui_1","__webpack_require__","exports","isTabCurrentlySelected","selected","searchInterface","queryStateModel","get","QueryStateModel","attributesEnum","t","TabUtils_1","QueryFilterNodeExpressionResolver_1","QueryFilterNodeOptions","parseQueryFilterNode","rawValue","JSON","parse","this","unescapeAttributeValue","value","replace","CoveoForSitecoreFilterExpression","_super","element","options","bindings","queryFilterNodeFactory","QueryFilterNodeExpressionResolverFactory","_this","call","ID","ComponentOptions","initComponentOptions","bind","onRootElement","QueryEvents","buildingQuery","onBuildingQuery","__extends","prototype","shouldAddFilterExpression","scAdvancedFilter","queryBuilder","advancedExpression","add","trim","scFilterScopeNode","resultingBuilder","getQueryFilterNodeExpressionResolver","fromExpressionBuilder","exception","logger","error","queryFilterNodeResolver","createQueryFilterNodeExpression","scScopeToTab","buildStringOption","buildCustomOption","Component","Initialization","registerAutoCreateComponent","AndNodeParser_1","FalseNodeParser_1","FieldNodeParser_1","NotNodeParser_1","OrNodeParser_1","TrueNodeParser_1","QueryNodeTreeParser_1","Context_1","QueryNodeTreeParserFactory","createParser","parser","QueryNodeTreeParser","registerParser","AndNodeParser","FalseNodeParser","FieldNodeParser","Context","fields","NotNodeParser","OrNodeParser","TrueNodeParser","nodeParser","type","node","concat","left","right","dateformat","fieldHandler","indexDateFormat","fieldValueType","name","parseString","toCoveo","fieldName","operator","fieldValues","QueryUtils","buildFieldExpression","parseFieldValuesFromType","values","map","parseBoolean","parseDate","parseNumber","date","Date","parseInt","toString","some","filter","parseEmptyField","__WEBPACK_AMD_DEFINE_RESULT__","global","token","timezone","timezoneClip","dateFormat","mask","utc","gmt","arguments","length","val","undefined","Array","isArray","slice","toLowerCase","test","isNaN","TypeError","maskSlice","String","masks","_","d","D","m","y","H","M","s","L","o","getTimezoneOffset","W","targetThursday","getFullYear","getMonth","getDate","setDate","getDay","firstThursday","ds","setHours","getHours","weekDiff","Math","floor","getWeek","N","dow","getDayOfWeek","flags","dd","pad","ddd","i18n","dayNames","dddd","mm","mmm","monthNames","mmmm","yy","yyyy","h","hh","HH","MM","ss","l","round","tt","T","TT","Z","match","pop","abs","S","len","default","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","expiresHeaderFormat","module","operand","parsers","queryNodeParser","QueryNodeTreeParserFactory_1","QueryFilterNodeExpressionResolver","queryFilterNode","Assert","isNotNull","QueryBuilder","advanced"],"mappings":"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","file":"CoveoForSitecoreFilterExpression.min.js","sourcesContent":["import { SearchInterface, QueryStateModel } from 'coveo-search-ui';\r\n\r\nexport function isTabCurrentlySelected(selected: string, searchInterface: SearchInterface): boolean {\r\n return !(!!selected && selected !== searchInterface.queryStateModel.get(QueryStateModel.attributesEnum.t));\r\n}\r\n","import {\r\n Component,\r\n ComponentOptions,\r\n IComponentBindings,\r\n Initialization,\r\n QueryEvents,\r\n IBuildingQueryEventArgs,\r\n} from 'coveo-search-ui';\r\n\r\nimport { isTabCurrentlySelected } from '../../utils/TabUtils';\r\nimport {\r\n IQueryFilterNode,\r\n IQueryFilterNodeExpressionResolver,\r\n QueryFilterNodeExpressionResolverFactory,\r\n IQueryFilterNodeExpressionResolverFactory,\r\n} from '../../resolvers/nodes/QueryFilterNodeExpressionResolver';\r\n\r\nexport interface ICoveoForSitecoreFilterExpressionOptions {\r\n scScopeToTab: string;\r\n scAdvancedFilter: string;\r\n scFilterScopeNode: IQueryFilterNode;\r\n}\r\n\r\nexport class QueryFilterNodeOptions {\r\n public static parseQueryFilterNode(rawValue: string): IQueryFilterNode {\r\n return JSON.parse(this.unescapeAttributeValue(rawValue));\r\n }\r\n\r\n private static unescapeAttributeValue(value: string): string {\r\n return value\r\n .replace(/</g, '<')\r\n .replace(/&g‌​t;/g, '>')\r\n .replace(/"/g, '\"')\r\n .replace(/&/g, '&');\r\n }\r\n}\r\n\r\nexport class CoveoForSitecoreFilterExpression extends Component {\r\n private queryFilterNodeResolver: IQueryFilterNodeExpressionResolver;\r\n\r\n static ID = 'ForSitecoreFilterExpression';\r\n\r\n static options: ICoveoForSitecoreFilterExpressionOptions = {\r\n scScopeToTab: ComponentOptions.buildStringOption(),\r\n scAdvancedFilter: ComponentOptions.buildStringOption(),\r\n scFilterScopeNode: ComponentOptions.buildCustomOption((value) => {\r\n return QueryFilterNodeOptions.parseQueryFilterNode(value);\r\n }),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreFilterExpressionOptions,\r\n public bindings: IComponentBindings,\r\n private queryFilterNodeFactory: IQueryFilterNodeExpressionResolverFactory = new QueryFilterNodeExpressionResolverFactory()\r\n ) {\r\n super(element, CoveoForSitecoreFilterExpression.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreFilterExpression, options);\r\n this.bind.onRootElement(QueryEvents.buildingQuery, this.onBuildingQuery);\r\n }\r\n\r\n private onBuildingQuery(buildingQuery: IBuildingQueryEventArgs): void {\r\n if (this.shouldAddFilterExpression()) {\r\n if (!!this.options.scAdvancedFilter) {\r\n buildingQuery.queryBuilder.advancedExpression.add(this.options.scAdvancedFilter.trim());\r\n }\r\n if (!!this.options.scFilterScopeNode) {\r\n try {\r\n const resolver = this.getQueryFilterNodeExpressionResolver();\r\n const resultingBuilder = resolver.parseQueryFilterNode(this.options.scFilterScopeNode);\r\n buildingQuery.queryBuilder.advancedExpression.fromExpressionBuilder(\r\n resultingBuilder.advancedExpression\r\n );\r\n } catch (exception) {\r\n this.logger.error('Could not parse the query filter node.', exception);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getQueryFilterNodeExpressionResolver(): IQueryFilterNodeExpressionResolver {\r\n return (\r\n this.queryFilterNodeResolver ||\r\n (this.queryFilterNodeResolver = this.queryFilterNodeFactory.createQueryFilterNodeExpression(this.logger))\r\n );\r\n }\r\n\r\n private shouldAddFilterExpression(): boolean {\r\n return isTabCurrentlySelected(this.options.scScopeToTab, this.searchInterface);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreFilterExpression);\r\n","import { AndNodeParser } from './parsers/AndNodeParser';\r\nimport { FalseNodeParser } from './parsers/FalseNodeParser';\r\nimport { FieldNodeParser } from './parsers/FieldNodeParser';\r\nimport { NotNodeParser } from './parsers/NotNodeParser';\r\nimport { OrNodeParser } from './parsers/OrNodeParser';\r\nimport { TrueNodeParser } from './parsers/TrueNodeParser';\r\nimport { IQueryNodeTreeParser, QueryNodeTreeParser } from './QueryNodeTreeParser';\r\nimport { Context } from '../../../base/Context';\r\n\r\nimport { Logger } from 'coveo-search-ui';\r\n\r\nexport class QueryNodeTreeParserFactory implements IQueryNodeTreeParserFactory {\r\n createParser(logger: Logger): IQueryNodeTreeParser {\r\n const parser: IQueryNodeTreeParser = new QueryNodeTreeParser(logger);\r\n\r\n parser.registerParser(new AndNodeParser(parser));\r\n parser.registerParser(new FalseNodeParser());\r\n parser.registerParser(new FieldNodeParser(Context.fields));\r\n parser.registerParser(new NotNodeParser(parser));\r\n parser.registerParser(new OrNodeParser(parser));\r\n parser.registerParser(new TrueNodeParser());\r\n\r\n return parser;\r\n }\r\n}\r\n\r\nexport interface IQueryNodeTreeParserFactory {\r\n createParser(logger: Logger): IQueryNodeTreeParser;\r\n}\r\n","import { IRegisterableQueryNodeParser, IQueryNodeParser } from '../QueryNodeParser';\r\nimport { IAndNode } from '../QueryNodeTypes';\r\nexport class AndNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'and';\r\n\r\n constructor(private nodeParser: IQueryNodeParser) {}\r\n\r\n parse(node: IAndNode): string {\r\n return `(${this.nodeParser.parse(node.left)} ${this.nodeParser.parse(node.right)})`;\r\n }\r\n}\r\n","import { IFalseNode } from '../QueryNodeTypes';\r\nimport { IRegisterableQueryNodeParser } from '../QueryNodeParser';\r\nexport class FalseNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'false';\r\n\r\n parse(node: IFalseNode): string {\r\n return `(NOT @uri)`;\r\n }\r\n}\r\n","import { IRegisterableQueryNodeParser } from '../QueryNodeParser';\r\nimport { ICoveoFieldHandler } from '../../../../handlers/CoveoFieldsHandler';\r\nimport { IFieldNode } from '../QueryNodeTypes';\r\nimport { QueryUtils } from 'coveo-search-ui';\r\n\r\nimport * as dateformat from 'dateformat';\r\n\r\nexport class FieldNodeParser implements IRegisterableQueryNodeParser {\r\n private indexDateFormat = 'yyyy/mm/dd@HH:MM:ss';\r\n type: string = 'field';\r\n\r\n constructor(private fieldHandler: ICoveoFieldHandler) {}\r\n\r\n parse(node: IFieldNode): string {\r\n if (node.fieldValueType.name === 'string') {\r\n return this.parseString(\r\n this.fieldHandler.toCoveo(`@${node.fieldName}`),\r\n node.operator.name,\r\n node.fieldValues\r\n );\r\n } else {\r\n return QueryUtils.buildFieldExpression(\r\n this.fieldHandler.toCoveo(`@${node.fieldName}`),\r\n node.operator.name,\r\n this.parseFieldValuesFromType(node.fieldValueType.name, node.fieldValues)\r\n );\r\n }\r\n }\r\n\r\n parseFieldValuesFromType(type: string, values: any[]): string[] {\r\n switch (type) {\r\n case 'boolean':\r\n return values.map((value) => this.parseBoolean(value));\r\n case 'date':\r\n return values.map((value) => this.parseDate(value));\r\n case 'number':\r\n return values.map((value) => this.parseNumber(value));\r\n default:\r\n return values;\r\n }\r\n }\r\n\r\n parseBoolean(value: any): string {\r\n return !!value ? '1' : '0';\r\n }\r\n\r\n parseDate(value: any): string {\r\n const date = new Date(parseInt(value.replace('/Date(', '')));\r\n return dateformat(date, this.indexDateFormat);\r\n }\r\n\r\n parseNumber(value: any): string {\r\n return value.toString();\r\n }\r\n\r\n parseString(fieldName: any, operator: string, values: string[]): string {\r\n if (values.some((value) => value !== '')) {\r\n return QueryUtils.buildFieldExpression(\r\n `${fieldName}`,\r\n operator,\r\n values.filter((value) => value !== '')\r\n );\r\n } else {\r\n return this.parseEmptyField(fieldName, operator);\r\n }\r\n }\r\n\r\n parseEmptyField(fieldName: string, operator: string): string {\r\n switch (operator) {\r\n case '=':\r\n case '==':\r\n return fieldName;\r\n case '!=':\r\n case '<>':\r\n return `(NOT ${fieldName})`;\r\n default:\r\n throw `Operator \"${operator}\" for field \"${fieldName}\" requires a non-empty value.`;\r\n }\r\n }\r\n}\r\n","/*\r\n * Date Format 1.2.3\r\n * (c) 2007-2009 Steven Levithan \r\n * MIT license\r\n *\r\n * Includes enhancements by Scott Trenda \r\n * and Kris Kowal \r\n *\r\n * Accepts a date, a mask, or a date and a mask.\r\n * Returns a formatted version of the given date.\r\n * The date defaults to the current date/time.\r\n * The mask defaults to dateFormat.masks.default.\r\n */\r\n\r\n(function(global) {\r\n 'use strict';\r\n\r\n var dateFormat = (function() {\r\n var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\\1?|[LloSZWN]|'[^']*'|'[^']*'/g;\r\n var timezone = /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g;\r\n var timezoneClip = /[^-+\\dA-Z]/g;\r\n \r\n // Regexes and supporting functions are cached through closure\r\n return function (date, mask, utc, gmt) {\r\n \r\n // You can't provide utc if you skip other args (use the 'UTC:' mask prefix)\r\n if (arguments.length === 1 && kindOf(date) === 'string' && !/\\d/.test(date)) {\r\n mask = date;\r\n date = undefined;\r\n }\r\n \r\n date = date || new Date;\r\n \r\n if(!(date instanceof Date)) {\r\n date = new Date(date);\r\n }\r\n \r\n if (isNaN(date)) {\r\n throw TypeError('Invalid date');\r\n }\r\n \r\n mask = String(dateFormat.masks[mask] || mask || dateFormat.masks['default']);\r\n \r\n // Allow setting the utc/gmt argument via the mask\r\n var maskSlice = mask.slice(0, 4);\r\n if (maskSlice === 'UTC:' || maskSlice === 'GMT:') {\r\n mask = mask.slice(4);\r\n utc = true;\r\n if (maskSlice === 'GMT:') {\r\n gmt = true;\r\n }\r\n }\r\n \r\n var _ = utc ? 'getUTC' : 'get';\r\n var d = date[_ + 'Date']();\r\n var D = date[_ + 'Day']();\r\n var m = date[_ + 'Month']();\r\n var y = date[_ + 'FullYear']();\r\n var H = date[_ + 'Hours']();\r\n var M = date[_ + 'Minutes']();\r\n var s = date[_ + 'Seconds']();\r\n var L = date[_ + 'Milliseconds']();\r\n var o = utc ? 0 : date.getTimezoneOffset();\r\n var W = getWeek(date);\r\n var N = getDayOfWeek(date);\r\n var flags = {\r\n d: d,\r\n dd: pad(d),\r\n ddd: dateFormat.i18n.dayNames[D],\r\n dddd: dateFormat.i18n.dayNames[D + 7],\r\n m: m + 1,\r\n mm: pad(m + 1),\r\n mmm: dateFormat.i18n.monthNames[m],\r\n mmmm: dateFormat.i18n.monthNames[m + 12],\r\n yy: String(y).slice(2),\r\n yyyy: y,\r\n h: H % 12 || 12,\r\n hh: pad(H % 12 || 12),\r\n H: H,\r\n HH: pad(H),\r\n M: M,\r\n MM: pad(M),\r\n s: s,\r\n ss: pad(s),\r\n l: pad(L, 3),\r\n L: pad(Math.round(L / 10)),\r\n t: H < 12 ? 'a' : 'p',\r\n tt: H < 12 ? 'am' : 'pm',\r\n T: H < 12 ? 'A' : 'P',\r\n TT: H < 12 ? 'AM' : 'PM',\r\n Z: gmt ? 'GMT' : utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''),\r\n o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),\r\n S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10],\r\n W: W,\r\n N: N\r\n };\r\n \r\n return mask.replace(token, function (match) {\r\n if (match in flags) {\r\n return flags[match];\r\n }\r\n return match.slice(1, match.length - 1);\r\n });\r\n };\r\n })();\r\n\r\n dateFormat.masks = {\r\n 'default': 'ddd mmm dd yyyy HH:MM:ss',\r\n 'shortDate': 'm/d/yy',\r\n 'mediumDate': 'mmm d, yyyy',\r\n 'longDate': 'mmmm d, yyyy',\r\n 'fullDate': 'dddd, mmmm d, yyyy',\r\n 'shortTime': 'h:MM TT',\r\n 'mediumTime': 'h:MM:ss TT',\r\n 'longTime': 'h:MM:ss TT Z',\r\n 'isoDate': 'yyyy-mm-dd',\r\n 'isoTime': 'HH:MM:ss',\r\n 'isoDateTime': 'yyyy-mm-dd\\'T\\'HH:MM:sso',\r\n 'isoUtcDateTime': 'UTC:yyyy-mm-dd\\'T\\'HH:MM:ss\\'Z\\'',\r\n 'expiresHeaderFormat': 'ddd, dd mmm yyyy HH:MM:ss Z'\r\n };\r\n\r\n // Internationalization strings\r\n dateFormat.i18n = {\r\n dayNames: [\r\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat',\r\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n ],\r\n monthNames: [\r\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\r\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'\r\n ]\r\n };\r\n\r\nfunction pad(val, len) {\r\n val = String(val);\r\n len = len || 2;\r\n while (val.length < len) {\r\n val = '0' + val;\r\n }\r\n return val;\r\n}\r\n\r\n/**\r\n * Get the ISO 8601 week number\r\n * Based on comments from\r\n * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html\r\n *\r\n * @param {Object} `date`\r\n * @return {Number}\r\n */\r\nfunction getWeek(date) {\r\n // Remove time components of date\r\n var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n\r\n // Change date to Thursday same week\r\n targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3);\r\n\r\n // Take January 4th as it is always in week 1 (see ISO 8601)\r\n var firstThursday = new Date(targetThursday.getFullYear(), 0, 4);\r\n\r\n // Change date to Thursday same week\r\n firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3);\r\n\r\n // Check if daylight-saving-time-switch occurred and correct for it\r\n var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset();\r\n targetThursday.setHours(targetThursday.getHours() - ds);\r\n\r\n // Number of weeks between target Thursday and first Thursday\r\n var weekDiff = (targetThursday - firstThursday) / (86400000*7);\r\n return 1 + Math.floor(weekDiff);\r\n}\r\n\r\n/**\r\n * Get ISO-8601 numeric representation of the day of the week\r\n * 1 (for Monday) through 7 (for Sunday)\r\n * \r\n * @param {Object} `date`\r\n * @return {Number}\r\n */\r\nfunction getDayOfWeek(date) {\r\n var dow = date.getDay();\r\n if(dow === 0) {\r\n dow = 7;\r\n }\r\n return dow;\r\n}\r\n\r\n/**\r\n * kind-of shortcut\r\n * @param {*} val\r\n * @return {String}\r\n */\r\nfunction kindOf(val) {\r\n if (val === null) {\r\n return 'null';\r\n }\r\n\r\n if (val === undefined) {\r\n return 'undefined';\r\n }\r\n\r\n if (typeof val !== 'object') {\r\n return typeof val;\r\n }\r\n\r\n if (Array.isArray(val)) {\r\n return 'array';\r\n }\r\n\r\n return {}.toString.call(val)\r\n .slice(8, -1).toLowerCase();\r\n};\r\n\r\n\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () {\r\n return dateFormat;\r\n });\r\n } else if (typeof exports === 'object') {\r\n module.exports = dateFormat;\r\n } else {\r\n global.dateFormat = dateFormat;\r\n }\r\n})(this);\r\n","import { IRegisterableQueryNodeParser, IQueryNodeParser } from '../QueryNodeParser';\r\nimport { INotNode } from '../QueryNodeTypes';\r\n\r\nexport class NotNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'not';\r\n\r\n constructor(private nodeParser: IQueryNodeParser) {}\r\n\r\n parse(node: INotNode): string {\r\n return `NOT ${this.nodeParser.parse(node.operand)}`;\r\n }\r\n}\r\n","import { IRegisterableQueryNodeParser, IQueryNodeParser } from '../QueryNodeParser';\r\nimport { IOrNode } from '../QueryNodeTypes';\r\n\r\nexport class OrNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'or';\r\n\r\n constructor(private nodeParser: IQueryNodeParser) {}\r\n\r\n parse(node: IOrNode): string {\r\n return `(${this.nodeParser.parse(node.left)} OR ${this.nodeParser.parse(node.right)})`;\r\n }\r\n}\r\n","import { IRegisterableQueryNodeParser } from '../QueryNodeParser';\r\nimport { ITrueNode } from '../QueryNodeTypes';\r\n\r\nexport class TrueNodeParser implements IRegisterableQueryNodeParser {\r\n type: string = 'true';\r\n\r\n parse(node: ITrueNode): string {\r\n return '@uri';\r\n }\r\n}\r\n","import { IQueryNode } from './QueryNodeTypes';\r\nimport { IQueryNodeParser, IRegisterableQueryNodeParser } from './QueryNodeParser';\r\nimport { Logger } from 'coveo-search-ui';\r\n\r\nexport class QueryNodeTreeParser implements IQueryNodeTreeParser {\r\n private parsers: { [key: string]: (node: IQueryNode) => string } = {};\r\n\r\n constructor(private logger: Logger) {}\r\n\r\n registerParser(queryNodeParser: IRegisterableQueryNodeParser): void {\r\n this.parsers[queryNodeParser.type] = (node: IQueryNode) => queryNodeParser.parse(node as T);\r\n }\r\n\r\n parse(node: IQueryNode): string {\r\n try {\r\n return this.parsers[node.type](node);\r\n } catch (exception) {\r\n this.logger.error('Error when parsing a query node:', node, exception);\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nexport interface IQueryNodeTreeParser extends IQueryNodeParser {\r\n registerParser(queryNodeParser: IRegisterableQueryNodeParser): void;\r\n}\r\n","import { IQueryNode } from './queryNodes/QueryNodeTypes';\r\nimport { IQueryNodeParser } from './queryNodes/QueryNodeParser';\r\nimport { QueryNodeTreeParserFactory } from './queryNodes/QueryNodeTreeParserFactory';\r\n\r\nimport { QueryBuilder, Logger, Assert } from 'coveo-search-ui';\r\n\r\nexport interface IQueryFilterNode {\r\n advanced: IQueryNode;\r\n}\r\n\r\nexport class QueryFilterNodeExpressionResolver implements IQueryFilterNodeExpressionResolver {\r\n constructor(private parser: IQueryNodeParser) {}\r\n\r\n parseQueryFilterNode(queryFilterNode: IQueryFilterNode): QueryBuilder {\r\n Assert.isNotNull(queryFilterNode);\r\n const queryBuilder = new QueryBuilder();\r\n queryBuilder.advancedExpression.add(this.parser.parse(queryFilterNode.advanced));\r\n return queryBuilder;\r\n }\r\n}\r\n\r\nexport interface IQueryFilterNodeExpressionResolver {\r\n parseQueryFilterNode(queryFilterNode: IQueryFilterNode): QueryBuilder;\r\n}\r\n\r\nexport interface IQueryFilterNodeExpressionResolverFactory {\r\n createQueryFilterNodeExpression(logger: Logger): IQueryFilterNodeExpressionResolver;\r\n}\r\n\r\nexport class QueryFilterNodeExpressionResolverFactory implements IQueryFilterNodeExpressionResolverFactory {\r\n createQueryFilterNodeExpression(logger: Logger): IQueryFilterNodeExpressionResolver {\r\n const parserFactory = new QueryNodeTreeParserFactory();\r\n const parser = parserFactory.createParser(logger);\r\n return new QueryFilterNodeExpressionResolver(parser);\r\n }\r\n}\r\n"],"sourceRoot":""}