{"version":3,"file":"breeze-client-adapter-uri-builder-odata.mjs","sources":["../../src/adapter-core.ts","../../src/adapter-uri-builder-odata.ts","../../src/breeze-client-adapter-uri-builder-odata.ts"],"sourcesContent":["/** Appends parameter to url, with appropriate delimiter */\r\nexport function appendQueryStringParameter(url: string, parameter: string) {\r\n  if (!parameter) return url;\r\n\r\n  let separator = url.endsWith(\"?\") ? \"\" : url.includes(\"?\") ? \"&\" : \"?\";\r\n\r\n  return url + separator + parameter;\r\n}\r\n\r\n/** Encodes the object into query string parameters */\r\nexport function encodeParams(obj: {}) {\r\n  let query = '';\r\n  let subValue: any, innerObj: any, fullSubName: any;\r\n\r\n  for (let name in obj) {\r\n    if (!obj.hasOwnProperty(name)) { continue; }\r\n\r\n    let value = obj[name];\r\n\r\n    if (value instanceof Array) {\r\n      for (let i = 0; i < value.length; ++i) {\r\n        subValue = value[i];\r\n        fullSubName = name + '[' + i + ']';\r\n        innerObj = {};\r\n        innerObj[fullSubName] = subValue;\r\n        query += encodeParams(innerObj) + '&';\r\n      }\r\n    } else if (value && value.toISOString) { // a feature of Date-like things\r\n      query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';\r\n    } else if (value instanceof Object) {\r\n      for (let subName in value) {\r\n        if (obj.hasOwnProperty(name)) {\r\n          subValue = value[subName];\r\n          fullSubName = name + '[' + subName + ']';\r\n          innerObj = {};\r\n          innerObj[fullSubName] = subValue;\r\n          query += encodeParams(innerObj) + '&';\r\n        }\r\n      }\r\n    } else if (value === null) {\r\n      query += encodeURIComponent(name) + '=&';\r\n    } else if (value !== undefined) {\r\n      query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';\r\n    }\r\n  }\r\n\r\n  return query.length ? query.substr(0, query.length - 1) : query;\r\n}\r\n","import * as breeze from 'breeze-client';\r\nimport { appendQueryStringParameter } from './adapter-core';\r\n\r\nexport class UriBuilderODataAdapter implements breeze.UriBuilderAdapter {\r\n\r\n  name: string;\r\n\r\n  constructor() {\r\n    this.name = \"odata\";\r\n  }\r\n\r\n  static register(config?: breeze.BreezeConfig) {\r\n    config = config || breeze.config;\r\n    config.registerAdapter(\"uriBuilder\", UriBuilderODataAdapter);\r\n    return config.initializeAdapterInstance(\"uriBuilder\", \"odata\", true) as UriBuilderODataAdapter;\r\n  }\r\n\r\n  initialize() { }\r\n\r\n  buildUri(entityQuery: breeze.EntityQuery, metadataStore: breeze.MetadataStore) {\r\n    // force entityType validation;\r\n    let entityType = entityQuery._getFromEntityType(metadataStore, false);\r\n    if (!entityType) {\r\n      // anonymous type but still has naming convention info avail\r\n      entityType = new breeze.EntityType(metadataStore);\r\n    }\r\n\r\n    let queryOptions = {};\r\n    queryOptions[\"$filter\"] = toWhereODataFragment(entityQuery.wherePredicate);\r\n    queryOptions[\"$orderby\"] = toOrderByODataFragment(entityQuery.orderByClause!);\r\n\r\n    if (entityQuery.skipCount) {\r\n      queryOptions[\"$skip\"] = entityQuery.skipCount;\r\n    }\r\n\r\n    if (entityQuery.takeCount != null) {\r\n      queryOptions[\"$top\"] = entityQuery.takeCount;\r\n    }\r\n\r\n    queryOptions[\"$expand\"] = toExpandODataFragment(entityQuery.expandClause);\r\n    queryOptions[\"$select\"] = toSelectODataFragment(entityQuery.selectClause!);\r\n\r\n    if (entityQuery.inlineCountEnabled) {\r\n      queryOptions[\"$inlinecount\"] = \"allpages\";\r\n    }\r\n\r\n    const qoText = toQueryOptionsString(queryOptions as breeze.QueryOptions);\r\n\r\n    return appendQueryStringParameter(entityQuery.resourceName, qoText);\r\n\r\n    // private methods to this func.\r\n\r\n    function toWhereODataFragment(wherePredicate: breeze.Predicate) {\r\n      if (!wherePredicate) return undefined;\r\n      // validation occurs inside of the toODataFragment call here.\r\n      let frag = wherePredicate.visit({ entityType: entityType }, toODataFragmentVisitor);\r\n      return (frag && frag.length > 0) ? frag : undefined;\r\n    }\r\n\r\n    function toOrderByODataFragment(orderByClause: breeze.OrderByClause) {\r\n      if (!orderByClause) return undefined;\r\n      orderByClause.validate(entityType!);\r\n      let strings = orderByClause.items.map(function (item) {\r\n        return entityType!.clientPropertyPathToServer(item.propertyPath, \"/\") + (item.isDesc ? \" desc\" : \"\");\r\n      });\r\n      // should return something like CompanyName,Address/City desc\r\n      return strings.join(',');\r\n    }\r\n\r\n    function toSelectODataFragment(selectClause?: breeze.SelectClause) {\r\n      if (!selectClause) return undefined;\r\n      selectClause.validate(entityType!);\r\n      let frag = selectClause.propertyPaths.map(function (pp) {\r\n        return entityType!.clientPropertyPathToServer(pp, \"/\");\r\n      }).join(\",\");\r\n      return frag;\r\n    }\r\n\r\n    function toExpandODataFragment(expandClause?: breeze.ExpandClause) {\r\n      if (!expandClause) return undefined;\r\n      // no validate on expand clauses currently.\r\n      // expandClause.validate(entityType);\r\n      let frag = expandClause.propertyPaths.map(function (pp) {\r\n        return entityType!.clientPropertyPathToServer(pp, \"/\");\r\n      }).join(\",\");\r\n      return frag;\r\n    }\r\n\r\n    function toQueryOptionsString(queryOptions: breeze.QueryOptions) {\r\n      let qoStrings: string[] = [];\r\n      for (let qoName in queryOptions) {\r\n        let qoValue = queryOptions[qoName];\r\n        if (qoValue !== undefined) {\r\n          if (qoValue instanceof Array) {\r\n            qoValue.forEach(function (qov) {\r\n              qoStrings.push(qoName + \"=\" + encodeURIComponent(qov));\r\n            });\r\n          } else {\r\n            qoStrings.push(qoName + \"=\" + encodeURIComponent(qoValue));\r\n          }\r\n        }\r\n      }\r\n\r\n      if (qoStrings.length > 0) {\r\n        return qoStrings.join(\"&\");\r\n      } else {\r\n        return \"\";\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n}\r\n\r\n(breeze.Predicate.prototype as any).toODataFragment = function (context: breeze.VisitContext) {\r\n  return this.visit(context, toODataFragmentVisitor);\r\n};\r\n\r\nlet toODataFragmentVisitor = {\r\n\r\n  passthruPredicate: function () {\r\n    return this.value;\r\n  },\r\n\r\n  unaryPredicate: function (this: breeze.UnaryPredicate, context: breeze.VisitContext) {\r\n    let predVal = this.pred.visit(context);\r\n    return odataOpFrom(this) + \" \" + \"(\" + predVal + \")\";\r\n  },\r\n\r\n  binaryPredicate: function (this: breeze.BinaryPredicate, context: breeze.VisitContext) {\r\n    let expr1Val = this.expr1!.visit(context);\r\n    let expr2Val = this.expr2!.visit(context);\r\n    let prefix = (context as any).prefix;\r\n    if (prefix) {\r\n      expr1Val = prefix + \"/\" + expr1Val;\r\n    }\r\n\r\n    let odataOp = odataOpFrom(this);\r\n\r\n    if (this.op.key === 'in') {\r\n      let result = expr2Val.map(function (v: any) {\r\n        return \"(\" + expr1Val + \" eq \" + v + \")\";\r\n      }).join(\" or \");\r\n      return result;\r\n    } else if (this.op.isFunction) {\r\n      if (odataOp === \"substringof\") {\r\n        return odataOp + \"(\" + expr2Val + \",\" + expr1Val + \") eq true\";\r\n      } else {\r\n        return odataOp + \"(\" + expr1Val + \",\" + expr2Val + \") eq true\";\r\n      }\r\n    } else {\r\n      return expr1Val + \" \" + odataOp + \" \" + expr2Val;\r\n    }\r\n  },\r\n\r\n  andOrPredicate: function (this: breeze.AndOrPredicate, context: breeze.VisitContext) {\r\n    let result = this.preds.map(function (pred) {\r\n      let predVal = pred.visit(context);\r\n      return \"(\" + predVal + \")\";\r\n    }).join(\" \" + odataOpFrom(this) + \" \");\r\n    return result;\r\n  },\r\n\r\n  anyAllPredicate: function (this: breeze.AnyAllPredicate, context: breeze.VisitContext) {\r\n    let exprVal = this.expr.visit(context);\r\n    if (!this.pred.op) { // added 21-Oct-2016 to fix breeze.js issue #172\r\n      return exprVal + \"/\" + odataOpFrom(this) + \"()\";\r\n    }\r\n    let prefix = (context as any).prefix;\r\n    if (prefix) {\r\n      exprVal = prefix + \"/\" + exprVal;\r\n      prefix = \"x\" + (parseInt(prefix.substring(1)) + 1);\r\n    } else {\r\n      prefix = \"x1\";\r\n    }\r\n    // need to create a new context because of 'prefix'\r\n    let newContext = breeze.core.extend({}, context) as any;\r\n    newContext.entityType = this.expr.dataType;\r\n    newContext.prefix = prefix;\r\n    let newPredVal = this.pred.visit(newContext);\r\n    return exprVal + \"/\" + odataOpFrom(this) + \"(\" + prefix + \": \" + newPredVal + \")\";\r\n  },\r\n\r\n  litExpr: function () {\r\n    if (Array.isArray(this.value)) {\r\n      return this.value.map(function (v: any) { return this.dataType.fmtOData(v); }, this);\r\n    } else {\r\n      return this.dataType.fmtOData(this.value);\r\n    }\r\n  },\r\n\r\n  propExpr: function (this: breeze.PropExpr, context: breeze.ExpressionContext) {\r\n    let entityType = context.entityType;\r\n    // '/' is the OData path delimiter\r\n    return entityType ? entityType.clientPropertyPathToServer(this.propertyPath, \"/\") : this.propertyPath;\r\n  },\r\n\r\n  fnExpr: function (this: breeze.FnExpr, context: breeze.ExpressionContext) {\r\n    let exprVals = this.exprs.map(function (expr) {\r\n      return expr.visit(context);\r\n    });\r\n    return this.fnName + \"(\" + exprVals.join(\",\") + \")\";\r\n  }\r\n};\r\n\r\nlet _operatorMap = {\r\n  'contains': 'substringof'\r\n};\r\n\r\nfunction odataOpFrom(node: any) {\r\n  let op = node.op.key;\r\n  let odataOp = _operatorMap[op];\r\n  return odataOp || op;\r\n}\r\n\r\nbreeze.config.registerAdapter(\"uriBuilder\", UriBuilderODataAdapter);\r\n\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-uri-builder-odata';\n"],"names":[],"mappings":"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"}