{"version":3,"sources":["webpack:///./node_modules/aurelia-fetch-client/dist/native-modules/aurelia-fetch-client.js"],"names":["json","body","replacer","JSON","stringify","undefined","retryStrategy","fixed","incremental","exponential","random","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","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":"npm.aurelia-fetch-client.8926147f09641c655269.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":""}