{"version":3,"file":"breeze-client-adapter-ajax-angularjs.mjs","sources":["../../src/adapter-core.ts","../../src/adapter-ajax-angularjs.ts","../../src/breeze-client-adapter-ajax-angularjs.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 { AjaxAdapter, AjaxRequestInterceptor, BreezeConfig, config, core } from 'breeze-client';\r\nimport { appendQueryStringParameter, encodeParams } from './adapter-core';\r\n\r\nexport class AjaxAngularjsAdapter implements AjaxAdapter {\r\n  name: string;\r\n  defaultSettings: { headers?: { [name: string]: string } };\r\n  requestInterceptor?: AjaxRequestInterceptor;\r\n  $http: any;\r\n  $rootScope: any;\r\n  constructor() {\r\n    this.name = \"angularjs\";\r\n    this.defaultSettings = {};\r\n    this.requestInterceptor = undefined;\r\n    // Will set:\r\n    //   this.$http;\r\n    //   this.$rootScope;\r\n  }\r\n\r\n  static register(breezeConfig?: BreezeConfig) {\r\n    breezeConfig = breezeConfig || config;\r\n    breezeConfig.registerAdapter(\"ajax\", AjaxAngularjsAdapter);\r\n    return breezeConfig.initializeAdapterInstance(\"ajax\", \"angularjs\", true) as AjaxAngularjsAdapter;\r\n  }\r\n\r\n  initialize() {\r\n\r\n    let ng = core.requireLib(\"angular\");\r\n    if (ng) {\r\n      let $injector = ng.injector(['ng']);\r\n      let http: any, rootScope: any;\r\n      $injector.invoke(['$http', '$rootScope', function ($http: any, $rootScope: any) {\r\n        http = $http;\r\n        rootScope = $rootScope;\r\n      }]);\r\n      this.$http = http;\r\n      this.$rootScope = rootScope;\r\n    }\r\n\r\n  }\r\n\r\n  setHttp(http: any) {\r\n    this.$http = http;\r\n    this.$rootScope = null; // to suppress $rootScope.digest\r\n  }\r\n\r\n\r\n  ajax(config: any) {\r\n    if (!this.$http) {\r\n      throw new Error(\"Unable to locate angularjs for ajax adapter\");\r\n    }\r\n    let ngConfig = {\r\n      method: config.type,\r\n      url: config.url,\r\n      dataType: config.dataType,\r\n      contentType: config.contentType,\r\n      crossDomain: config.crossDomain,\r\n      headers: config.headers || {},\r\n      data: undefined as any\r\n    };\r\n\r\n    if (config.params) {\r\n      // Hack: because of the way that Angular handles writing parameters out to the url.\r\n      // so this approach takes over the url param writing completely.\r\n      // See: http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/\r\n      ngConfig.url = appendQueryStringParameter(ngConfig.url, encodeParams(config.params));\r\n    }\r\n\r\n    if (config.data) {\r\n      ngConfig.data = config.data;\r\n    }\r\n\r\n    if (!core.isEmpty(this.defaultSettings)) {\r\n      let compositeConfig = core.extend({}, this.defaultSettings);\r\n      ngConfig = core.extend(compositeConfig, ngConfig) as any;\r\n      // extend is shallow; extend headers separately\r\n      let headers = core.extend({}, this.defaultSettings.headers); // copy default headers 1st\r\n      ngConfig.headers = core.extend(headers, ngConfig.headers);\r\n    }\r\n\r\n    let requestInfo = {\r\n      adapter: this,      // this adapter\r\n      config: ngConfig,   // angular's $http configuration object\r\n      dsaConfig: config,  // the config arg from the calling Breeze DataServiceAdapter\r\n      success: successFn, // adapter's success callback\r\n      error: errorFn,      // adapter's error callback\r\n      responseSuccess: responseSuccessFn, // adapter's success callback (ng 1.6+)\r\n      responseError: responseErrorFn      // adapter's error callback (ng 1.6+)\r\n    };\r\n\r\n    if (core.isFunction(this.requestInterceptor)) {\r\n      let ri = this.requestInterceptor as any;\r\n      ri(requestInfo);\r\n      if (ri.oneTime) {\r\n        this.requestInterceptor = undefined;\r\n      }\r\n    }\r\n\r\n    if (requestInfo.config) { // exists unless requestInterceptor killed it.\r\n      let prom = this.$http(requestInfo.config);\r\n      if (prom.success) {\r\n        // response for ng < 1.6        \r\n        prom.success(requestInfo.success).error(requestInfo.error);\r\n      } else {\r\n        // response for ng 1.6+\r\n        prom.then(requestInfo.responseSuccess).catch(requestInfo.responseError);\r\n      }\r\n      this.$rootScope && this.$rootScope.$digest();\r\n    }\r\n\r\n    function responseSuccessFn(response: any) {\r\n      return successFn(response.data, response.status, response.headers, response.config, response.statusText);\r\n    }\r\n\r\n    function successFn(data: any, status: any, headers: any, xconfig: any, statusText: string) {\r\n      // HACK: because $http returns a server side null as a string containing \"null\" - this is WRONG.\r\n      if (data === \"null\") data = null;\r\n      let httpResponse = {\r\n        config: config,\r\n        data: data,\r\n        getHeaders: headers,\r\n        ngConfig: xconfig,\r\n        status: status,\r\n        statusText: statusText\r\n      };\r\n      config.success(httpResponse);\r\n    }\r\n\r\n    function responseErrorFn(response: any) {\r\n      return errorFn(response.data, response.status, response.headers, response.config, response.statusText);\r\n    }\r\n\r\n    function errorFn(data: any, status: any, headers: any, xconfig: any, statusText: string) {\r\n      // Timeout appears as an error with status===0 and no data.\r\n      // Make it better\r\n      if (status === 0 && data == null) {\r\n        data = 'timeout';\r\n      }\r\n      let httpResponse = {\r\n        config: config,\r\n        data: data,\r\n        getHeaders: headers,\r\n        ngConfig: xconfig,\r\n        status: status,\r\n        statusText: statusText\r\n      };\r\n      config.error(httpResponse);\r\n    }\r\n  }\r\n}\r\n\r\nconfig.registerAdapter(\"ajax\", AjaxAngularjsAdapter);\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-ajax-angularjs';\n"],"names":[],"mappings":"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"}