{"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<IQueryRankingNode>((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<IAndNode> {\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<IFalseNode> {\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<IFieldNode> {\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 <stevenlevithan.com>\r\n * MIT license\r\n *\r\n * Includes enhancements by Scott Trenda <scott.trenda.net>\r\n * and Kris Kowal <cixar.com/~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<INotNode> {\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<IOrNode> {\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<ITrueNode> {\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<T extends IQueryNode>(queryNodeParser: IRegisterableQueryNodeParser<T>): 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<T extends IQueryNode>(queryNodeParser: IRegisterableQueryNodeParser<T>): 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":""}