{"version":3,"sources":["webpack://CoveoForSitecore/./src/utils/TabUtils.ts","webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreRankingExpression.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/QueryRankingNodeExpressionResolver.ts"],"names":["coveo_search_ui_1","__webpack_require__","exports","isTabCurrentlySelected","selected","searchInterface","queryStateModel","get","QueryStateModel","attributesEnum","t","TabUtils_1","QueryRankingNodeExpressionResolver_1","CoveoForSitecoreRankingExpression","_super","element","options","bindings","_this","call","this","ID","ComponentOptions","initComponentOptions","bind","onRootElement","QueryEvents","buildingQuery","onBuildingQuery","__extends","prototype","shouldAddRankingExpression","scRankingExpression","queryBuilder","advancedExpression","add","trim","scRankingScopeNode","builder","getNodeResolver","parseQueryRankingNode","rankingFunctions","forEach","rankingFunction","push","copyQueryBuilderAttributes","from","to","fromExpressionBuilder","nodeResolver","QueryRankingNodeExpressionResolverFactory","createQueryFilterNodeExpression","logger","scScopeToTab","buildStringOption","buildCustomOption","value","JSON","parse","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","replace","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","exception","error","QueryNodeTreeParserFactory_1","rankingExpressionFieldsRegex","QueryRankingNodeExpressionResolver","fieldsHandler","queryRankingNode","QueryBuilder","rankingExpressions","ranking","parsedExpression","expression","modifier","translateRankingExpressionFieldNames","textualRankingExpressions","rankingExpression","matchingExpression","matchingGroup"],"mappings":"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","file":"CoveoForSitecoreRankingExpression.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 QueryBuilder,\r\n IBuildingQueryEventArgs,\r\n} from 'coveo-search-ui';\r\n\r\nimport { isTabCurrentlySelected } from '../../utils/TabUtils';\r\nimport {\r\n IQueryRankingNode,\r\n IQueryRankingNodeExpressionResolver,\r\n QueryRankingNodeExpressionResolverFactory,\r\n} from '../../resolvers/nodes/QueryRankingNodeExpressionResolver';\r\n\r\nexport interface ICoveoForSitecoreRankingExpressionOptions {\r\n scScopeToTab: string;\r\n scRankingExpression: string;\r\n scRankingScopeNode: IQueryRankingNode;\r\n}\r\n\r\nexport class CoveoForSitecoreRankingExpression extends Component {\r\n private nodeResolver: IQueryRankingNodeExpressionResolver;\r\n\r\n static ID = 'ForSitecoreRankingExpression';\r\n\r\n static options: ICoveoForSitecoreRankingExpressionOptions = {\r\n scScopeToTab: ComponentOptions.buildStringOption(),\r\n scRankingExpression: ComponentOptions.buildStringOption(),\r\n scRankingScopeNode: ComponentOptions.buildCustomOption((value) => {\r\n return JSON.parse(value);\r\n }),\r\n };\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ICoveoForSitecoreRankingExpressionOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, CoveoForSitecoreRankingExpression.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreRankingExpression, 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.shouldAddRankingExpression()) {\r\n if (!!this.options.scRankingExpression) {\r\n buildingQuery.queryBuilder.advancedExpression.add(this.options.scRankingExpression.trim());\r\n }\r\n if (!!this.options.scRankingScopeNode) {\r\n const resolver = this.getNodeResolver();\r\n const builder = resolver.parseQueryRankingNode(this.options.scRankingScopeNode);\r\n builder.rankingFunctions.forEach((rankingFunction) =>\r\n buildingQuery.queryBuilder.rankingFunctions.push(rankingFunction)\r\n );\r\n this.copyQueryBuilderAttributes(builder, buildingQuery.queryBuilder);\r\n }\r\n }\r\n }\r\n\r\n private copyQueryBuilderAttributes(from: QueryBuilder, to: QueryBuilder): void {\r\n from.rankingFunctions.forEach((rankingFunction) => to.rankingFunctions.push(rankingFunction));\r\n to.advancedExpression.fromExpressionBuilder(from.advancedExpression);\r\n }\r\n\r\n private getNodeResolver(): IQueryRankingNodeExpressionResolver {\r\n return (\r\n this.nodeResolver ||\r\n (this.nodeResolver = new QueryRankingNodeExpressionResolverFactory().createQueryFilterNodeExpression(\r\n this.logger\r\n ))\r\n );\r\n }\r\n\r\n private shouldAddRankingExpression(): boolean {\r\n return isTabCurrentlySelected(this.options.scScopeToTab, this.searchInterface);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreRankingExpression);\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\nimport { ICoveoFieldHandler } from '../../handlers/CoveoFieldsHandler';\r\nimport { Context } from '../../base/Context';\r\n\r\nimport { QueryBuilder, IRankingFunction, Logger } from 'coveo-search-ui';\r\n\r\nexport interface IQueryRankingNode {\r\n rankingExpressions: IRankingExpressionNode[];\r\n rankingFunctions: IRankingFunction[];\r\n textualRankingExpressions: ITextualRankingExpression[];\r\n}\r\n\r\nexport interface IRankingExpressionNode {\r\n expression: IQueryNode;\r\n modifier: number;\r\n}\r\n\r\nexport interface ITextualRankingExpression {\r\n expression: string;\r\n}\r\n\r\n/*\r\n Matches \"@[x]\"\" and return x as matching group.\r\n Examples:\r\n * @[blublu] gives \"blublu\".\r\n * @[[blublu]] gives \"[blublu]\"\r\n * @[blublu]] gives \"blublu]\"\r\n*/\r\nconst rankingExpressionFieldsRegex: RegExp = /@\\[(.*?\\]*)\\]/g;\r\n\r\nexport class QueryRankingNodeExpressionResolver implements IQueryRankingNodeExpressionResolver {\r\n constructor(private parser: IQueryNodeParser, private fieldsHandler: ICoveoFieldHandler) {}\r\n\r\n parseQueryRankingNode(queryRankingNode: IQueryRankingNode): QueryBuilder {\r\n const queryBuilder = new QueryBuilder();\r\n queryRankingNode.rankingExpressions.map((ranking) => {\r\n const parsedExpression = this.parser.parse(ranking.expression);\r\n if (parsedExpression !== '') {\r\n queryBuilder.advancedExpression.add(\r\n `$qre(expression:'${parsedExpression}', modifier:${ranking.modifier})`\r\n );\r\n }\r\n });\r\n queryRankingNode.rankingFunctions.forEach((rankingFunction) => {\r\n rankingFunction.expression = this.translateRankingExpressionFieldNames(rankingFunction.expression);\r\n queryBuilder.rankingFunctions.push(rankingFunction);\r\n });\r\n queryRankingNode.textualRankingExpressions\r\n .filter((rankingExpression) => rankingExpression.expression !== '')\r\n .forEach((rankingExpression) => {\r\n queryBuilder.advancedExpression.add(rankingExpression.expression);\r\n });\r\n return queryBuilder;\r\n }\r\n\r\n private translateRankingExpressionFieldNames(expression: string): string {\r\n expression.replace(rankingExpressionFieldsRegex, (matchingExpression, matchingGroup) => {\r\n return this.fieldsHandler.toCoveo(matchingGroup);\r\n });\r\n return expression;\r\n }\r\n}\r\n\r\nexport interface IQueryRankingNodeExpressionResolver {\r\n parseQueryRankingNode(queryRankingNode: IQueryRankingNode): QueryBuilder;\r\n}\r\n\r\nexport class QueryRankingNodeExpressionResolverFactory {\r\n createQueryFilterNodeExpression(logger: Logger): IQueryRankingNodeExpressionResolver {\r\n const parserFactory = new QueryNodeTreeParserFactory();\r\n const parser = parserFactory.createParser(logger);\r\n return new QueryRankingNodeExpressionResolver(parser, Context.fields);\r\n }\r\n}\r\n"],"sourceRoot":""}