{"version":3,"file":"observable-api.js","sources":["webpack:///webpack/bootstrap 4597032935e2512a160a?8138*","webpack:///./lib/browser/observable-api.js","webpack:///./lib/observable-api.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 4597032935e2512a160a\n **/","'use strict';\n\nvar _observableApi = require('../observable-api');\n\nvar _observableApi2 = _interopRequireDefault(_observableApi);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (typeof window !== 'undefined') {\n  if (!window.Rx) {\n    throw new Error('Rx library must be included before ObservableAPI!');\n  }\n\n  window.ObservableAPI = window.ObservableAPI || {};\n  window.ObservableAPI.create = (0, _observableApi2.default)(window.Rx);\n} // Define globally in case AMD is not available or unused.\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/browser/observable-api.js\n ** module id = 0\n ** module chunks = 2\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = factory;\nexports.response$Factory = response$Factory;\nexports.error$Factory = error$Factory;\nexports.fetching$Factory = fetching$Factory;\nexports.createObservableFactoryFn = createObservableFactoryFn;\nfunction factory(Rx) {\n  var Observable = Rx.Observable;\n  var Subject = Rx.Subject;\n  var BehaviorSubject = Rx.BehaviorSubject;\n\n\n  return function (client) {\n    var request$ = new Subject();\n    var createEndpoint = endpointFactory(Observable, BehaviorSubject, request$, client);\n\n    return {\n      request$: request$.asObservable(),\n      createEndpoint: createEndpoint\n    };\n  };\n}\n\nfunction response$Factory(Observable, request$) {\n  return request$.flatMapLatest(function (req) {\n    return req.response.catch(function () {\n      return Observable.never();\n    });\n  });\n}\n\nfunction error$Factory(Observable, request$) {\n  return request$.flatMapLatest(function (req) {\n    return req.response.ignoreElements().catch(function (err) {\n      return Observable.of(err);\n    });\n  });\n}\n\nfunction fetching$Factory(Observable, request$) {\n  return request$.flatMapLatest(function (req) {\n    return req.response.catch(function () {\n      return Observable.of(false);\n    }).map(function () {\n      return false;\n    }).startWith(true);\n  }).distinctUntilChanged();\n}\n\nfunction createObservableFactoryFn(Observable, hot$, behavior$, fetch) {\n\n  return function (callSubscribe, includeLastValue) {\n    var cold$ = Observable.create(function (observer) {\n      fetch();\n\n      observer.onCompleted();\n    });\n\n    var hotOrCold$ = function hotOrCold$() {\n      switch (true) {\n        case callSubscribe === true:\n          return hot$.merge(cold$);\n        case callSubscribe === false:\n          return hot$;\n        case !behavior$.value:\n          return hot$.merge(cold$);\n        case !!behavior$.value:\n          return hot$;\n      }\n    };\n\n    var startWithLast = function startWithLast(source$) {\n      if (!includeLastValue || !behavior$.value) {\n        return source$;\n      }\n\n      return source$.startWith(behavior$.value);\n    };\n\n    return Observable.create(function (observer) {\n      observer.onNext(startWithLast(hotOrCold$()));\n    }).flatMap(function (observable) {\n      return observable;\n    });\n  };\n}\n\nfunction endpointFactory(Observable, BehaviorSubject, apiRequest$, client) {\n  var defaultOptions = {\n    defaultParams: undefined,\n    defaultData: undefined\n  };\n\n  return function createEndpoint(urlFactory) {\n    var method = arguments.length <= 1 || arguments[1] === undefined ? 'GET' : arguments[1];\n    var options = arguments.length <= 2 || arguments[2] === undefined ? defaultOptions : arguments[2];\n    var defaultParams = options.defaultParams;\n    var defaultData = options.defaultData;\n\n    var uri = typeof urlFactory === 'string' ? function () {\n      return urlFactory;\n    } : urlFactory;\n    var behaviorSubject = new BehaviorSubject();\n    var hotRequest$ = behaviorSubject.skip(1);\n\n    var createRequest = function createRequest(response, params, data) {\n      var url = uri(params, data);\n\n      return { url: url, method: method, params: params, data: data, response: response };\n    };\n\n    var _fetch = function _fetch() {\n      var params = arguments.length <= 0 || arguments[0] === undefined ? defaultParams : arguments[0];\n      var data = arguments.length <= 1 || arguments[1] === undefined ? defaultData : arguments[1];\n\n      var url = uri(params, data);\n      var response = client(url, method, params, data);\n      var request = createRequest(response, params, data);\n\n      apiRequest$.onNext(request);\n      behaviorSubject.onNext(request);\n\n      return createRequest(response, params, data);\n    };\n\n    var create$ = createObservableFactoryFn(Observable, hotRequest$, behaviorSubject, _fetch);\n\n    return {\n      fetch: function fetch(params, data) {\n        _fetch(params, data);\n\n        return this;\n      },\n\n      request$: create$(null, true),\n      response$: response$Factory(Observable, create$(null, true)),\n      fetching$: fetching$Factory(Observable, create$(false, false)),\n      error$: error$Factory(Observable, create$(false, false))\n    };\n  };\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/observable-api.js\n ** module id = 3\n ** module chunks = 2\n **/"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;","sourceRoot":""}