{"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":""}