{"version":3,"sources":["webpack:///./node_modules/aurelia-fetch-client/dist/native-modules/aurelia-fetch-client.js"],"names":["json","body","replacer","JSON","stringify","undefined","retryStrategy","defaultRetryConfig","maxRetries","interval","strategy","RetryInterceptor","retryConfig","this","Object","assign","Error","prototype","request","$r","counter","requestClone","clone","response","responseError","error","httpClient","Promise","resolve","then","result","doRetry","global","setTimeout","minRandomInterval","maxRandomInterval","retryStrategies","calculateDelay","newRequest","beforeRetry","fetch","retryCount","Math","pow","random","HttpClientConfiguration","baseUrl","defaults","interceptors","withBaseUrl","withDefaults","withInterceptor","interceptor","push","useStandardConfiguration","credentials","rejectErrorResponses","rejectOnError","withRetry","config","ok","HttpClient","activeRequestCount","isRequesting","isConfigured","configure","normalizedConfig","c","isPrototypeOf","Headers","headers","length","filter","x","retryInterceptorIndex","findIndex","input","init","_this","client","evt_1","createCustomEvent","bubbles","cancelable","dispatchEvent","trackRequestStart","buildRequest","http","applyInterceptors","processRequest","Response","Request","processResponse","trackRequestEnd","requestContentType","parsedDefaultHeaders","parsedHeaders","name_1","hasOwnProperty","parseHeaderValues","get","bodyObj","requestInit","url","absoluteUrlRegexp","test","getRequestUrl","has","set","str","parse","err","isJSON","defaultHeaders","name_2","setDefaultHeaders","Blob","type","post","callFetch","put","patch","delete","evt_2","successName","errorName","interceptorArgs","_i","arguments","reduce","chain","successHandler","errorHandler","value","call","apply","concat","identity","reason","thrower","method"],"mappings":"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","file":"vendor.aurelia-fetch-client~e761a4f7.28a4f7fcacf05ec36d86.chunk.js","sourcesContent":["import { PLATFORM, DOM } from 'aurelia-pal';\n\nfunction json(body, replacer) {\r\n return JSON.stringify((body !== undefined ? body : {}), replacer);\r\n}\n\nvar retryStrategy = {\r\n fixed: 0,\r\n incremental: 1,\r\n exponential: 2,\r\n random: 3\r\n};\r\nvar defaultRetryConfig = {\r\n maxRetries: 3,\r\n interval: 1000,\r\n strategy: retryStrategy.fixed\r\n};\r\nvar RetryInterceptor = (function () {\r\n function RetryInterceptor(retryConfig) {\r\n this.retryConfig = Object.assign({}, defaultRetryConfig, retryConfig || {});\r\n if (this.retryConfig.strategy === retryStrategy.exponential &&\r\n this.retryConfig.interval <= 1000) {\r\n throw new Error('An interval less than or equal to 1 second is not allowed when using the exponential retry strategy');\r\n }\r\n }\r\n RetryInterceptor.prototype.request = function (request) {\r\n var $r = request;\r\n if (!$r.retryConfig) {\r\n $r.retryConfig = Object.assign({}, this.retryConfig);\r\n $r.retryConfig.counter = 0;\r\n }\r\n $r.retryConfig.requestClone = request.clone();\r\n return request;\r\n };\r\n RetryInterceptor.prototype.response = function (response, request) {\r\n delete request.retryConfig;\r\n return response;\r\n };\r\n RetryInterceptor.prototype.responseError = function (error, request, httpClient) {\r\n var retryConfig = request.retryConfig;\r\n var requestClone = retryConfig.requestClone;\r\n return Promise.resolve().then(function () {\r\n if (retryConfig.counter < retryConfig.maxRetries) {\r\n var result = retryConfig.doRetry ? retryConfig.doRetry(error, request) : true;\r\n return Promise.resolve(result).then(function (doRetry) {\r\n if (doRetry) {\r\n retryConfig.counter++;\r\n return new Promise(function (resolve) { return PLATFORM.global.setTimeout(resolve, calculateDelay(retryConfig) || 0); })\r\n .then(function () {\r\n var newRequest = requestClone.clone();\r\n if (typeof (retryConfig.beforeRetry) === 'function') {\r\n return retryConfig.beforeRetry(newRequest, httpClient);\r\n }\r\n return newRequest;\r\n })\r\n .then(function (newRequest) {\r\n return httpClient.fetch(Object.assign(newRequest, { retryConfig: retryConfig }));\r\n });\r\n }\r\n delete request.retryConfig;\r\n throw error;\r\n });\r\n }\r\n delete request.retryConfig;\r\n throw error;\r\n });\r\n };\r\n return RetryInterceptor;\r\n}());\r\nfunction calculateDelay(retryConfig) {\r\n var interval = retryConfig.interval, strategy = retryConfig.strategy, minRandomInterval = retryConfig.minRandomInterval, maxRandomInterval = retryConfig.maxRandomInterval, counter = retryConfig.counter;\r\n if (typeof (strategy) === 'function') {\r\n return retryConfig.strategy(counter);\r\n }\r\n switch (strategy) {\r\n case (retryStrategy.fixed):\r\n return retryStrategies[retryStrategy.fixed](interval);\r\n case (retryStrategy.incremental):\r\n return retryStrategies[retryStrategy.incremental](counter, interval);\r\n case (retryStrategy.exponential):\r\n return retryStrategies[retryStrategy.exponential](counter, interval);\r\n case (retryStrategy.random):\r\n return retryStrategies[retryStrategy.random](counter, interval, minRandomInterval, maxRandomInterval);\r\n default:\r\n throw new Error('Unrecognized retry strategy');\r\n }\r\n}\r\nvar retryStrategies = [\r\n function (interval) { return interval; },\r\n function (retryCount, interval) { return interval * retryCount; },\r\n function (retryCount, interval) { return retryCount === 1 ? interval : Math.pow(interval, retryCount) / 1000; },\r\n function (retryCount, interval, minRandomInterval, maxRandomInterval) {\r\n if (minRandomInterval === void 0) { minRandomInterval = 0; }\r\n if (maxRandomInterval === void 0) { maxRandomInterval = 60000; }\r\n return Math.random() * (maxRandomInterval - minRandomInterval) + minRandomInterval;\r\n }\r\n];\n\nvar HttpClientConfiguration = (function () {\r\n function HttpClientConfiguration() {\r\n this.baseUrl = '';\r\n this.defaults = {};\r\n this.interceptors = [];\r\n }\r\n HttpClientConfiguration.prototype.withBaseUrl = function (baseUrl) {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n };\r\n HttpClientConfiguration.prototype.withDefaults = function (defaults) {\r\n this.defaults = defaults;\r\n return this;\r\n };\r\n HttpClientConfiguration.prototype.withInterceptor = function (interceptor) {\r\n this.interceptors.push(interceptor);\r\n return this;\r\n };\r\n HttpClientConfiguration.prototype.useStandardConfiguration = function () {\r\n var standardConfig = { credentials: 'same-origin' };\r\n Object.assign(this.defaults, standardConfig, this.defaults);\r\n return this.rejectErrorResponses();\r\n };\r\n HttpClientConfiguration.prototype.rejectErrorResponses = function () {\r\n return this.withInterceptor({ response: rejectOnError });\r\n };\r\n HttpClientConfiguration.prototype.withRetry = function (config) {\r\n var interceptor = new RetryInterceptor(config);\r\n return this.withInterceptor(interceptor);\r\n };\r\n return HttpClientConfiguration;\r\n}());\r\nfunction rejectOnError(response) {\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n return response;\r\n}\n\nvar HttpClient = (function () {\r\n function HttpClient() {\r\n this.activeRequestCount = 0;\r\n this.isRequesting = false;\r\n this.isConfigured = false;\r\n this.baseUrl = '';\r\n this.defaults = null;\r\n this.interceptors = [];\r\n if (typeof fetch === 'undefined') {\r\n throw new Error('HttpClient requires a Fetch API implementation, but the current environment doesn\\'t support it. You may need to load a polyfill such as https://github.com/github/fetch');\r\n }\r\n }\r\n HttpClient.prototype.configure = function (config) {\r\n var normalizedConfig;\r\n if (typeof config === 'object') {\r\n normalizedConfig = { defaults: config };\r\n }\r\n else if (typeof config === 'function') {\r\n normalizedConfig = new HttpClientConfiguration();\r\n normalizedConfig.baseUrl = this.baseUrl;\r\n normalizedConfig.defaults = Object.assign({}, this.defaults);\r\n normalizedConfig.interceptors = this.interceptors;\r\n var c = config(normalizedConfig);\r\n if (HttpClientConfiguration.prototype.isPrototypeOf(c)) {\r\n normalizedConfig = c;\r\n }\r\n }\r\n else {\r\n throw new Error('invalid config');\r\n }\r\n var defaults = normalizedConfig.defaults;\r\n if (defaults && Headers.prototype.isPrototypeOf(defaults.headers)) {\r\n throw new Error('Default headers must be a plain object.');\r\n }\r\n var interceptors = normalizedConfig.interceptors;\r\n if (interceptors && interceptors.length) {\r\n if (interceptors.filter(function (x) { return RetryInterceptor.prototype.isPrototypeOf(x); }).length > 1) {\r\n throw new Error('Only one RetryInterceptor is allowed.');\r\n }\r\n var retryInterceptorIndex = interceptors.findIndex(function (x) { return RetryInterceptor.prototype.isPrototypeOf(x); });\r\n if (retryInterceptorIndex >= 0 && retryInterceptorIndex !== interceptors.length - 1) {\r\n throw new Error('The retry interceptor must be the last interceptor defined.');\r\n }\r\n }\r\n this.baseUrl = normalizedConfig.baseUrl;\r\n this.defaults = defaults;\r\n this.interceptors = normalizedConfig.interceptors || [];\r\n this.isConfigured = true;\r\n return this;\r\n };\r\n HttpClient.prototype.fetch = function (input, init) {\r\n var _this = this;\r\n trackRequestStart(this);\r\n var request = this.buildRequest(input, init);\r\n return processRequest(request, this.interceptors, this).then(function (result) {\r\n var response = null;\r\n if (Response.prototype.isPrototypeOf(result)) {\r\n response = Promise.resolve(result);\r\n }\r\n else if (Request.prototype.isPrototypeOf(result)) {\r\n request = result;\r\n response = fetch(result);\r\n }\r\n else {\r\n throw new Error(\"An invalid result was returned by the interceptor chain. Expected a Request or Response instance, but got [\" + result + \"]\");\r\n }\r\n return processResponse(response, _this.interceptors, request, _this);\r\n })\r\n .then(function (result) {\r\n if (Request.prototype.isPrototypeOf(result)) {\r\n return _this.fetch(result);\r\n }\r\n return result;\r\n })\r\n .then(function (result) {\r\n trackRequestEnd(_this);\r\n return result;\r\n }, function (error) {\r\n trackRequestEnd(_this);\r\n throw error;\r\n });\r\n };\r\n HttpClient.prototype.buildRequest = function (input, init) {\r\n var defaults = this.defaults || {};\r\n var request;\r\n var body;\r\n var requestContentType;\r\n var parsedDefaultHeaders = parseHeaderValues(defaults.headers);\r\n if (Request.prototype.isPrototypeOf(input)) {\r\n request = input;\r\n requestContentType = new Headers(request.headers).get('Content-Type');\r\n }\r\n else {\r\n if (!init) {\r\n init = {};\r\n }\r\n body = init.body;\r\n var bodyObj = body ? { body: body } : null;\r\n var requestInit = Object.assign({}, defaults, { headers: {} }, init, bodyObj);\r\n requestContentType = new Headers(requestInit.headers).get('Content-Type');\r\n request = new Request(getRequestUrl(this.baseUrl, input), requestInit);\r\n }\r\n if (!requestContentType) {\r\n if (new Headers(parsedDefaultHeaders).has('content-type')) {\r\n request.headers.set('Content-Type', new Headers(parsedDefaultHeaders).get('content-type'));\r\n }\r\n else if (body && isJSON(body)) {\r\n request.headers.set('Content-Type', 'application/json');\r\n }\r\n }\r\n setDefaultHeaders(request.headers, parsedDefaultHeaders);\r\n if (body && Blob.prototype.isPrototypeOf(body) && body.type) {\r\n request.headers.set('Content-Type', body.type);\r\n }\r\n return request;\r\n };\r\n HttpClient.prototype.get = function (input, init) {\r\n return this.fetch(input, init);\r\n };\r\n HttpClient.prototype.post = function (input, body, init) {\r\n return callFetch(this, input, body, init, 'POST');\r\n };\r\n HttpClient.prototype.put = function (input, body, init) {\r\n return callFetch(this, input, body, init, 'PUT');\r\n };\r\n HttpClient.prototype.patch = function (input, body, init) {\r\n return callFetch(this, input, body, init, 'PATCH');\r\n };\r\n HttpClient.prototype.delete = function (input, body, init) {\r\n return callFetch(this, input, body, init, 'DELETE');\r\n };\r\n return HttpClient;\r\n}());\r\nvar absoluteUrlRegexp = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\r\nfunction trackRequestStart(client) {\r\n client.isRequesting = !!(++client.activeRequestCount);\r\n if (client.isRequesting) {\r\n var evt_1 = DOM.createCustomEvent('aurelia-fetch-client-request-started', { bubbles: true, cancelable: true });\r\n setTimeout(function () { return DOM.dispatchEvent(evt_1); }, 1);\r\n }\r\n}\r\nfunction trackRequestEnd(client) {\r\n client.isRequesting = !!(--client.activeRequestCount);\r\n if (!client.isRequesting) {\r\n var evt_2 = DOM.createCustomEvent('aurelia-fetch-client-requests-drained', { bubbles: true, cancelable: true });\r\n setTimeout(function () { return DOM.dispatchEvent(evt_2); }, 1);\r\n }\r\n}\r\nfunction parseHeaderValues(headers) {\r\n var parsedHeaders = {};\r\n for (var name_1 in headers || {}) {\r\n if (headers.hasOwnProperty(name_1)) {\r\n parsedHeaders[name_1] = (typeof headers[name_1] === 'function') ? headers[name_1]() : headers[name_1];\r\n }\r\n }\r\n return parsedHeaders;\r\n}\r\nfunction getRequestUrl(baseUrl, url) {\r\n if (absoluteUrlRegexp.test(url)) {\r\n return url;\r\n }\r\n return (baseUrl || '') + url;\r\n}\r\nfunction setDefaultHeaders(headers, defaultHeaders) {\r\n for (var name_2 in defaultHeaders || {}) {\r\n if (defaultHeaders.hasOwnProperty(name_2) && !headers.has(name_2)) {\r\n headers.set(name_2, defaultHeaders[name_2]);\r\n }\r\n }\r\n}\r\nfunction processRequest(request, interceptors, http) {\r\n return applyInterceptors(request, interceptors, 'request', 'requestError', http);\r\n}\r\nfunction processResponse(response, interceptors, request, http) {\r\n return applyInterceptors(response, interceptors, 'response', 'responseError', request, http);\r\n}\r\nfunction applyInterceptors(input, interceptors, successName, errorName) {\r\n var interceptorArgs = [];\r\n for (var _i = 4; _i < arguments.length; _i++) {\r\n interceptorArgs[_i - 4] = arguments[_i];\r\n }\r\n return (interceptors || [])\r\n .reduce(function (chain, interceptor) {\r\n var successHandler = interceptor[successName];\r\n var errorHandler = interceptor[errorName];\r\n return chain.then(successHandler && (function (value) { return successHandler.call.apply(successHandler, [interceptor, value].concat(interceptorArgs)); }) || identity, errorHandler && (function (reason) { return errorHandler.call.apply(errorHandler, [interceptor, reason].concat(interceptorArgs)); }) || thrower);\r\n }, Promise.resolve(input));\r\n}\r\nfunction isJSON(str) {\r\n try {\r\n JSON.parse(str);\r\n }\r\n catch (err) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction identity(x) {\r\n return x;\r\n}\r\nfunction thrower(x) {\r\n throw x;\r\n}\r\nfunction callFetch(client, input, body, init, method) {\r\n if (!init) {\r\n init = {};\r\n }\r\n init.method = method;\r\n if (body) {\r\n init.body = body;\r\n }\r\n return client.fetch(input, init);\r\n}\n\nexport { json, retryStrategy, RetryInterceptor, HttpClientConfiguration, HttpClient };\n"],"sourceRoot":""}