{"version":3,"file":"breeze-client-adapter-ajax-jquery.mjs","sources":["../../src/adapter-ajax-jquery.ts","../../src/breeze-client-adapter-ajax-jquery.ts"],"sourcesContent":["import { AjaxAdapter, AjaxConfig, AjaxRequestInterceptor, BreezeConfig, config, core } from 'breeze-client';\r\n\r\ndeclare var jQuery: any;\r\n\r\nexport class AjaxJQueryAdapter implements AjaxAdapter {\r\n  name: string;\r\n  defaultSettings: { headers?: { [name: string]: string } };\r\n  requestInterceptor?: AjaxRequestInterceptor;\r\n  jQuery: any;\r\n\r\n  constructor() {\r\n    this.name = \"jQuery\";\r\n    this.defaultSettings = { };\r\n    this.requestInterceptor = undefined;\r\n  }\r\n\r\n  static register(breezeConfig?: BreezeConfig) {\r\n    breezeConfig = breezeConfig || config;\r\n    breezeConfig.registerAdapter(\"ajax\", AjaxJQueryAdapter);\r\n    return breezeConfig.initializeAdapterInstance(\"ajax\", \"jQuery\", true) as AjaxJQueryAdapter;\r\n  }\r\n\r\n  initialize() {\r\n    this.jQuery = jQuery;\r\n    // look for the jQuery lib but don't fail immediately if not found\r\n    if (!jQuery) {\r\n      this.jQuery = core.requireLib(\"jQuery;jquery\");\r\n    }\r\n  }\r\n\r\n  ajax(config: AjaxConfig) {\r\n    if (!this.jQuery) {\r\n      throw new Error(\"Unable to locate jQuery\");\r\n    }\r\n    let jqConfig = {\r\n      type: config.type,\r\n      url: config.url,\r\n      data: config.params || config.data,\r\n      dataType: config.dataType,\r\n      contentType: config.contentType,\r\n      crossDomain: config.crossDomain,\r\n      headers: config.headers || {}\r\n    };\r\n\r\n    if (!core.isEmpty(this.defaultSettings)) {\r\n      let compositeConfig = core.extend({}, this.defaultSettings);\r\n      jqConfig = core.extend(compositeConfig, jqConfig) 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      jqConfig.headers = core.extend(headers, jqConfig.headers);\r\n    }\r\n\r\n    let requestInfo = {\r\n      adapter: this,      // this adapter\r\n      config: jqConfig,   // jQuery's ajax 'settings' 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    };\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      (requestInfo as any).jqXHR = this.jQuery.ajax(requestInfo.config)\r\n        .done(requestInfo.success)\r\n        .fail(requestInfo.error);\r\n    }\r\n\r\n    function successFn(data: any, statusText: string, jqXHR: XMLHttpRequest) {\r\n      let httpResponse = {\r\n        config: config,\r\n        data: data,\r\n        getHeaders: getHeadersFn(jqXHR),\r\n        status: jqXHR.status,\r\n        statusText: statusText\r\n      };\r\n      config.success(httpResponse);\r\n      // TODO: not sure how to do this or if needed.\r\n      // jqXHR.onreadystatechange = null;\r\n      // jqXHR.abort = null;\r\n    }\r\n\r\n    function errorFn(jqXHR: XMLHttpRequest, statusText: string, errorThrown: any) {\r\n      let httpResponse = {\r\n        config: config,\r\n        data: jqXHR.responseText,\r\n        error: errorThrown,\r\n        getHeaders: getHeadersFn(jqXHR),\r\n        status: jqXHR.status,\r\n        statusText: statusText\r\n      };\r\n      config.error(httpResponse);\r\n      // TODO: not sure how to do this or if needed.\r\n      // jqXHR.onreadystatechange = null;\r\n      // jqXHR.abort = null;\r\n    }\r\n  }\r\n}\r\n\r\nconfig.registerAdapter(\"ajax\", AjaxJQueryAdapter);\r\n\r\nfunction getHeadersFn(jqXHR: XMLHttpRequest): any {\r\n  if (jqXHR.status === 0) { // timeout or abort; no headers\r\n    return function (headerName: string) {\r\n      return (headerName && headerName.length > 0) ? \"\" : {};\r\n    };\r\n  } else { // jqXHR should have header functions\r\n    return function (headerName: string) {\r\n      return (headerName && headerName.length > 0) ?\r\n        jqXHR.getResponseHeader(headerName) :\r\n        jqXHR.getAllResponseHeaders();\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-ajax-jquery';\n"],"names":[],"mappings":"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"}