{"version":3,"sources":["webpack:///./node_modules/aurelia-event-aggregator/dist/native-modules/aurelia-event-aggregator.js","webpack:///./node_modules/aurelia-framework/dist/native-modules/aurelia-framework.js","webpack:///./node_modules/aurelia-history-browser/dist/native-modules/aurelia-history-browser.js","webpack:///./node_modules/aurelia-history/dist/native-modules/aurelia-history.js","webpack:///./node_modules/aurelia-fetch-client/dist/native-modules/aurelia-fetch-client.js"],"names":["logger","Handler","messageType","callback","this","prototype","handle","message","call","invokeCallback","data","event","e","error","invokeHandler","handler","EventAggregator","eventLookup","messageHandlers","publish","subscribers","i","Error","slice","length","subscribe","push","dispose","idx","indexOf","splice","subscribeOnce","sub","a","b","includeEventsIn","obj","ea","configure","config","instance","aurelia","_typeof","Symbol","iterator","constructor","Aurelia","loader","container","resources","Loader","makeGlobal","use","FrameworkConfiguration","hostConfigured","host","start","_this","_started","info","apply","then","addEventListener","evt","target","action","tagName","toLowerCase","preventDefault","hasResolver","createCustomEvent","bubbles","cancelable","dispatchEvent","enhance","_this2","bindingContext","arguments","undefined","applicationHost","_configureHost","querySelectorAll","Promise","resolve","engine","get","root","element","attached","_onAureliaComposed","setRoot","_this3","instruction","viewModel","router","deactivate","reset","transaction","initialComposition","configModuleId","childContainer","viewSlot","hostSlot","compose","r","getElementById","transformChildNodesIntoView","registerInstance","boundary","setTimeout","extPattern","runTasks","tasks","current","next","shift","loadResources","resourcesToLoad","appResources","Object","keys","viewEngine","all","map","n","load","moduleId","ext","getExt","isOtherResource","removeExt","normalize","relativeTo","normalized","name","importId","addOriginalExt","_normalize","loads","names","importIds","forEach","l","importViewResources","replace","match","split","loadBehaviors","behaviorsToLoad","m","assertProcessed","plugins","processed","invalidConfigMsg","cfg","type","_this4","preTasks","postTasks","configuredPlugins","preTask","bootstrapperName","postTask","_instance","singleton","implementation","registerSingleton","transient","registerTransient","task","feature","plugin","hasIndex","test","_moduleId","substr","resourcesRelativeTo","globalResources","_this5","toAdd","Array","isArray","resource","ii","parent","grandParent","startsWith","meta","autoRegister","elementName","globalName","resourcePath","newName","_plugin","pluginConfig","_addNormalizedPlugin","_this6","defaultBindingLanguage","history","defaultResources","eventAggregator","basicConfiguration","standardConfiguration","developmentLogging","level","_this7","logLevel","debug","loadModule","ConsoleAppender","_this8","fwConfig","id","normalizedId","_loadPlugin","loadPlugin","extendStatics","d","setPrototypeOf","__proto__","p","hasOwnProperty","__extends","__","create","LinkHandler","activate","DefaultLinkHandler","_super","_a","getEventInfo","shouldHandleEvent","href","navigate","_hasPushState","removeEventListener","$event","anchor","findClosestAnchor","targetIsThisWindow","hasAttribute","altKey","ctrlKey","metaKey","shiftKey","getAttribute","leftButtonClicked","which","isRelative","charAt","el","parentNode","targetWindow","win","global","attr","BrowserHistory","linkHandler","_isActive","_checkUrlCallback","_checkUrl","bind","location","options","$history","wantsPushState","pushState","eventName","normalizedOptions","assign","rootUrl","rootStripper","wantsHashChange","_wantsHashChange","hashChange","hasPushState","$location","atRoot","pathname","fragment","_getFragment","search","hash","_getHash","routeStripper","replaceState","title","silent","_loadUrl","getAbsoluteRoot","protocol","hostname","port","_b","_c","trigger","_d","absoluteUrl","url","updateHash","navigateBack","back","setTitle","setState","key","value","state","getState","getHistoryIndex","historyIndex","go","movement","forcePushState","location_1","trailingSlash","fragmentOverride","routeHandler","inject","$config","mi","History","retryStrategy","defaultRetryConfig","maxRetries","interval","strategy","RetryInterceptor","retryConfig","request","$r","counter","requestClone","clone","response","responseError","httpClient","result","doRetry","minRandomInterval","maxRandomInterval","retryStrategies","calculateDelay","newRequest","beforeRetry","fetch","retryCount","Math","pow","random","HttpClientConfiguration","baseUrl","defaults","interceptors","withBaseUrl","withDefaults","withInterceptor","interceptor","useStandardConfiguration","credentials","rejectErrorResponses","rejectOnError","withRetry","ok","HttpClient","activeRequestCount","isRequesting","isConfigured","normalizedConfig","c","isPrototypeOf","Headers","headers","filter","x","retryInterceptorIndex","findIndex","input","init","client","evt_1","trackRequestStart","buildRequest","http","applyInterceptors","processRequest","Response","Request","processResponse","trackRequestEnd","body","requestContentType","parsedDefaultHeaders","parsedHeaders","name_1","parseHeaderValues","bodyObj","requestInit","absoluteUrlRegexp","getRequestUrl","has","set","str","JSON","parse","err","isJSON","defaultHeaders","name_2","setDefaultHeaders","Blob","post","callFetch","put","patch","delete","evt_2","successName","errorName","interceptorArgs","_i","reduce","chain","successHandler","errorHandler","concat","identity","reason","thrower","method"],"mappings":"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","file":"vendors~7811e4db.4d03662c36528abf1846.chunk.js","sourcesContent":["\n\nimport * as LogManager from 'aurelia-logging';\n\nvar logger = LogManager.getLogger('event-aggregator');\n\nvar Handler = function () {\n  function Handler(messageType, callback) {\n    \n\n    this.messageType = messageType;\n    this.callback = callback;\n  }\n\n  Handler.prototype.handle = function handle(message) {\n    if (message instanceof this.messageType) {\n      this.callback.call(null, message);\n    }\n  };\n\n  return Handler;\n}();\n\nfunction invokeCallback(callback, data, event) {\n  try {\n    callback(data, event);\n  } catch (e) {\n    logger.error(e);\n  }\n}\n\nfunction invokeHandler(handler, data) {\n  try {\n    handler.handle(data);\n  } catch (e) {\n    logger.error(e);\n  }\n}\n\nexport var EventAggregator = function () {\n  function EventAggregator() {\n    \n\n    this.eventLookup = {};\n    this.messageHandlers = [];\n  }\n\n  EventAggregator.prototype.publish = function publish(event, data) {\n    var subscribers = void 0;\n    var i = void 0;\n\n    if (!event) {\n      throw new Error('Event was invalid.');\n    }\n\n    if (typeof event === 'string') {\n      subscribers = this.eventLookup[event];\n      if (subscribers) {\n        subscribers = subscribers.slice();\n        i = subscribers.length;\n\n        while (i--) {\n          invokeCallback(subscribers[i], data, event);\n        }\n      }\n    } else {\n      subscribers = this.messageHandlers.slice();\n      i = subscribers.length;\n\n      while (i--) {\n        invokeHandler(subscribers[i], event);\n      }\n    }\n  };\n\n  EventAggregator.prototype.subscribe = function subscribe(event, callback) {\n    var handler = void 0;\n    var subscribers = void 0;\n\n    if (!event) {\n      throw new Error('Event channel/type was invalid.');\n    }\n\n    if (typeof event === 'string') {\n      handler = callback;\n      subscribers = this.eventLookup[event] || (this.eventLookup[event] = []);\n    } else {\n      handler = new Handler(event, callback);\n      subscribers = this.messageHandlers;\n    }\n\n    subscribers.push(handler);\n\n    return {\n      dispose: function dispose() {\n        var idx = subscribers.indexOf(handler);\n        if (idx !== -1) {\n          subscribers.splice(idx, 1);\n        }\n      }\n    };\n  };\n\n  EventAggregator.prototype.subscribeOnce = function subscribeOnce(event, callback) {\n    var sub = this.subscribe(event, function (a, b) {\n      sub.dispose();\n      return callback(a, b);\n    });\n\n    return sub;\n  };\n\n  return EventAggregator;\n}();\n\nexport function includeEventsIn(obj) {\n  var ea = new EventAggregator();\n\n  obj.subscribeOnce = function (event, callback) {\n    return ea.subscribeOnce(event, callback);\n  };\n\n  obj.subscribe = function (event, callback) {\n    return ea.subscribe(event, callback);\n  };\n\n  obj.publish = function (event, data) {\n    ea.publish(event, data);\n  };\n\n  return ea;\n}\n\nexport function configure(config) {\n  config.instance(EventAggregator, includeEventsIn(config.aurelia));\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nimport * as TheLogManager from 'aurelia-logging';\nimport { Container } from 'aurelia-dependency-injection';\nimport { Loader } from 'aurelia-loader';\nimport { BindingLanguage, ViewSlot, ViewResources, TemplatingEngine, CompositionTransaction, ViewEngine, HtmlBehaviorResource } from 'aurelia-templating';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { relativeToFile, join } from 'aurelia-path';\n\nfunction preventActionlessFormSubmit() {\n  DOM.addEventListener('submit', function (evt) {\n    var target = evt.target;\n    var action = target.action;\n\n    if (target.tagName.toLowerCase() === 'form' && !action) {\n      evt.preventDefault();\n    }\n  });\n}\n\nexport var Aurelia = function () {\n  function Aurelia(loader, container, resources) {\n    \n\n    this.loader = loader || new PLATFORM.Loader();\n    this.container = container || new Container().makeGlobal();\n    this.resources = resources || new ViewResources();\n    this.use = new FrameworkConfiguration(this);\n    this.logger = TheLogManager.getLogger('aurelia');\n    this.hostConfigured = false;\n    this.host = null;\n\n    this.use.instance(Aurelia, this);\n    this.use.instance(Loader, this.loader);\n    this.use.instance(ViewResources, this.resources);\n  }\n\n  Aurelia.prototype.start = function start() {\n    var _this = this;\n\n    if (this._started) {\n      return this._started;\n    }\n\n    this.logger.info('Aurelia Starting');\n    return this._started = this.use.apply().then(function () {\n      preventActionlessFormSubmit();\n\n      if (!_this.container.hasResolver(BindingLanguage)) {\n        var message = 'You must configure Aurelia with a BindingLanguage implementation.';\n        _this.logger.error(message);\n        throw new Error(message);\n      }\n\n      _this.logger.info('Aurelia Started');\n      var evt = DOM.createCustomEvent('aurelia-started', { bubbles: true, cancelable: true });\n      DOM.dispatchEvent(evt);\n      return _this;\n    });\n  };\n\n  Aurelia.prototype.enhance = function enhance() {\n    var _this2 = this;\n\n    var bindingContext = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var applicationHost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    this._configureHost(applicationHost || DOM.querySelectorAll('body')[0]);\n\n    return new Promise(function (resolve) {\n      var engine = _this2.container.get(TemplatingEngine);\n      _this2.root = engine.enhance({ container: _this2.container, element: _this2.host, resources: _this2.resources, bindingContext: bindingContext });\n      _this2.root.attached();\n      _this2._onAureliaComposed();\n      resolve(_this2);\n    });\n  };\n\n  Aurelia.prototype.setRoot = function setRoot() {\n    var _this3 = this;\n\n    var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var applicationHost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    var instruction = {};\n\n    if (this.root && this.root.viewModel && this.root.viewModel.router) {\n      this.root.viewModel.router.deactivate();\n      this.root.viewModel.router.reset();\n    }\n\n    this._configureHost(applicationHost);\n\n    var engine = this.container.get(TemplatingEngine);\n    var transaction = this.container.get(CompositionTransaction);\n    delete transaction.initialComposition;\n\n    if (!root) {\n      if (this.configModuleId) {\n        root = relativeToFile('./app', this.configModuleId);\n      } else {\n        root = 'app';\n      }\n    }\n\n    instruction.viewModel = root;\n    instruction.container = instruction.childContainer = this.container;\n    instruction.viewSlot = this.hostSlot;\n    instruction.host = this.host;\n\n    return engine.compose(instruction).then(function (r) {\n      _this3.root = r;\n      instruction.viewSlot.attached();\n      _this3._onAureliaComposed();\n      return _this3;\n    });\n  };\n\n  Aurelia.prototype._configureHost = function _configureHost(applicationHost) {\n    if (this.hostConfigured) {\n      return;\n    }\n    applicationHost = applicationHost || this.host;\n\n    if (!applicationHost || typeof applicationHost === 'string') {\n      this.host = DOM.getElementById(applicationHost || 'applicationHost');\n    } else {\n      this.host = applicationHost;\n    }\n\n    if (!this.host) {\n      throw new Error('No applicationHost was specified.');\n    }\n\n    this.hostConfigured = true;\n    this.host.aurelia = this;\n    this.hostSlot = new ViewSlot(this.host, true);\n    this.hostSlot.transformChildNodesIntoView();\n    this.container.registerInstance(DOM.boundary, this.host);\n  };\n\n  Aurelia.prototype._onAureliaComposed = function _onAureliaComposed() {\n    var evt = DOM.createCustomEvent('aurelia-composed', { bubbles: true, cancelable: true });\n    setTimeout(function () {\n      return DOM.dispatchEvent(evt);\n    }, 1);\n  };\n\n  return Aurelia;\n}();\n\nvar logger = TheLogManager.getLogger('aurelia');\nvar extPattern = /\\.[^/.]+$/;\n\nfunction runTasks(config, tasks) {\n  var current = void 0;\n  var next = function next() {\n    current = tasks.shift();\n    if (current) {\n      return Promise.resolve(current(config)).then(next);\n    }\n\n    return Promise.resolve();\n  };\n\n  return next();\n}\n\nfunction loadPlugin(fwConfig, loader, info) {\n  logger.debug('Loading plugin ' + info.moduleId + '.');\n  if (typeof info.moduleId === 'string') {\n    fwConfig.resourcesRelativeTo = info.resourcesRelativeTo;\n\n    var id = info.moduleId;\n\n    if (info.resourcesRelativeTo.length > 1) {\n      return loader.normalize(info.moduleId, info.resourcesRelativeTo[1]).then(function (normalizedId) {\n        return _loadPlugin(normalizedId);\n      });\n    }\n\n    return _loadPlugin(id);\n  } else if (typeof info.configure === 'function') {\n    if (fwConfig.configuredPlugins.indexOf(info.configure) !== -1) {\n      return Promise.resolve();\n    }\n    fwConfig.configuredPlugins.push(info.configure);\n\n    return Promise.resolve(info.configure.call(null, fwConfig, info.config || {}));\n  }\n  throw new Error(invalidConfigMsg(info.moduleId || info.configure, 'plugin'));\n\n  function _loadPlugin(moduleId) {\n    return loader.loadModule(moduleId).then(function (m) {\n      if ('configure' in m) {\n        if (fwConfig.configuredPlugins.indexOf(m.configure) !== -1) {\n          return Promise.resolve();\n        }\n        return Promise.resolve(m.configure(fwConfig, info.config || {})).then(function () {\n          fwConfig.configuredPlugins.push(m.configure);\n          fwConfig.resourcesRelativeTo = null;\n          logger.debug('Configured plugin ' + info.moduleId + '.');\n        });\n      }\n\n      fwConfig.resourcesRelativeTo = null;\n      logger.debug('Loaded plugin ' + info.moduleId + '.');\n    });\n  }\n}\n\nfunction loadResources(aurelia, resourcesToLoad, appResources) {\n  if (Object.keys(resourcesToLoad).length === 0) {\n    return Promise.resolve();\n  }\n  var viewEngine = aurelia.container.get(ViewEngine);\n\n  return Promise.all(Object.keys(resourcesToLoad).map(function (n) {\n    return _normalize(resourcesToLoad[n]);\n  })).then(function (loads) {\n    var names = [];\n    var importIds = [];\n\n    loads.forEach(function (l) {\n      names.push(undefined);\n      importIds.push(l.importId);\n    });\n\n    return viewEngine.importViewResources(importIds, names, appResources);\n  });\n\n  function _normalize(load) {\n    var moduleId = load.moduleId;\n    var ext = getExt(moduleId);\n\n    if (isOtherResource(moduleId)) {\n      moduleId = removeExt(moduleId);\n    }\n\n    return aurelia.loader.normalize(moduleId, load.relativeTo).then(function (normalized) {\n      return {\n        name: load.moduleId,\n        importId: isOtherResource(load.moduleId) ? addOriginalExt(normalized, ext) : normalized\n      };\n    });\n  }\n\n  function isOtherResource(name) {\n    var ext = getExt(name);\n    if (!ext) return false;\n    if (ext === '') return false;\n    if (ext === '.js' || ext === '.ts') return false;\n    return true;\n  }\n\n  function removeExt(name) {\n    return name.replace(extPattern, '');\n  }\n\n  function addOriginalExt(normalized, ext) {\n    return removeExt(normalized) + '.' + ext;\n  }\n}\n\nfunction getExt(name) {\n  var match = name.match(extPattern);\n  if (match && match.length > 0) {\n    return match[0].split('.')[1];\n  }\n}\n\nfunction loadBehaviors(config) {\n  return Promise.all(config.behaviorsToLoad.map(function (m) {\n    return m.load(config.container, m.target);\n  })).then(function () {\n    config.behaviorsToLoad = null;\n  });\n}\n\nfunction assertProcessed(plugins) {\n  if (plugins.processed) {\n    throw new Error('This config instance has already been applied. To load more plugins or global resources, create a new FrameworkConfiguration instance.');\n  }\n}\n\nfunction invalidConfigMsg(cfg, type) {\n  return 'Invalid ' + type + ' [' + cfg + '], ' + type + ' must be specified as functions or relative module IDs.';\n}\n\nvar FrameworkConfiguration = function () {\n  function FrameworkConfiguration(aurelia) {\n    var _this4 = this;\n\n    \n\n    this.aurelia = aurelia;\n    this.container = aurelia.container;\n\n    this.info = [];\n    this.processed = false;\n    this.preTasks = [];\n    this.postTasks = [];\n\n    this.behaviorsToLoad = [];\n\n    this.configuredPlugins = [];\n    this.resourcesToLoad = {};\n    this.preTask(function () {\n      return aurelia.loader.normalize('aurelia-bootstrapper').then(function (name) {\n        return _this4.bootstrapperName = name;\n      });\n    });\n    this.postTask(function () {\n      return loadResources(aurelia, _this4.resourcesToLoad, aurelia.resources);\n    });\n  }\n\n  FrameworkConfiguration.prototype.instance = function instance(type, _instance) {\n    this.container.registerInstance(type, _instance);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.singleton = function singleton(type, implementation) {\n    this.container.registerSingleton(type, implementation);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.transient = function transient(type, implementation) {\n    this.container.registerTransient(type, implementation);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.preTask = function preTask(task) {\n    assertProcessed(this);\n    this.preTasks.push(task);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.postTask = function postTask(task) {\n    assertProcessed(this);\n    this.postTasks.push(task);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.feature = function feature(plugin) {\n    var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    switch (typeof plugin === 'undefined' ? 'undefined' : _typeof(plugin)) {\n      case 'string':\n        var hasIndex = /\\/index$/i.test(plugin);\n        var _moduleId = hasIndex || getExt(plugin) ? plugin : plugin + '/index';\n        var root = hasIndex ? plugin.substr(0, plugin.length - 6) : plugin;\n        this.info.push({ moduleId: _moduleId, resourcesRelativeTo: [root, ''], config: config });\n        break;\n\n      case 'function':\n        this.info.push({ configure: plugin, config: config || {} });\n        break;\n      default:\n        throw new Error(invalidConfigMsg(plugin, 'feature'));\n    }\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.globalResources = function globalResources(resources) {\n    var _this5 = this;\n\n    assertProcessed(this);\n\n    var toAdd = Array.isArray(resources) ? resources : arguments;\n    var resource = void 0;\n    var resourcesRelativeTo = this.resourcesRelativeTo || ['', ''];\n\n    for (var i = 0, ii = toAdd.length; i < ii; ++i) {\n      resource = toAdd[i];\n      switch (typeof resource === 'undefined' ? 'undefined' : _typeof(resource)) {\n        case 'string':\n          var parent = resourcesRelativeTo[0];\n          var grandParent = resourcesRelativeTo[1];\n          var name = resource;\n\n          if ((resource.startsWith('./') || resource.startsWith('../')) && parent !== '') {\n            name = join(parent, resource);\n          }\n\n          this.resourcesToLoad[name] = { moduleId: name, relativeTo: grandParent };\n          break;\n        case 'function':\n          var meta = this.aurelia.resources.autoRegister(this.container, resource);\n          if (meta instanceof HtmlBehaviorResource && meta.elementName !== null) {\n            if (this.behaviorsToLoad.push(meta) === 1) {\n              this.postTask(function () {\n                return loadBehaviors(_this5);\n              });\n            }\n          }\n          break;\n        default:\n          throw new Error(invalidConfigMsg(resource, 'resource'));\n      }\n    }\n\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.globalName = function globalName(resourcePath, newName) {\n    assertProcessed(this);\n    this.resourcesToLoad[resourcePath] = { moduleId: newName, relativeTo: '' };\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.plugin = function plugin(_plugin, pluginConfig) {\n    assertProcessed(this);\n\n    var info = void 0;\n    switch (typeof _plugin === 'undefined' ? 'undefined' : _typeof(_plugin)) {\n      case 'string':\n        info = { moduleId: _plugin, resourcesRelativeTo: [_plugin, ''], config: pluginConfig || {} };\n        break;\n      case 'function':\n        info = { configure: _plugin, config: pluginConfig || {} };\n        break;\n      default:\n        throw new Error(invalidConfigMsg(_plugin, 'plugin'));\n    }\n    this.info.push(info);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype._addNormalizedPlugin = function _addNormalizedPlugin(name, config) {\n    var _this6 = this;\n\n    var plugin = { moduleId: name, resourcesRelativeTo: [name, ''], config: config || {} };\n    this.info.push(plugin);\n\n    this.preTask(function () {\n      var relativeTo = [name, _this6.bootstrapperName];\n      plugin.moduleId = name;\n      plugin.resourcesRelativeTo = relativeTo;\n      return Promise.resolve();\n    });\n\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.defaultBindingLanguage = function defaultBindingLanguage() {\n    return this._addNormalizedPlugin('aurelia-templating-binding');\n  };\n\n  FrameworkConfiguration.prototype.router = function router() {\n    return this._addNormalizedPlugin('aurelia-templating-router');\n  };\n\n  FrameworkConfiguration.prototype.history = function history() {\n    return this._addNormalizedPlugin('aurelia-history-browser');\n  };\n\n  FrameworkConfiguration.prototype.defaultResources = function defaultResources() {\n    return this._addNormalizedPlugin('aurelia-templating-resources');\n  };\n\n  FrameworkConfiguration.prototype.eventAggregator = function eventAggregator() {\n    return this._addNormalizedPlugin('aurelia-event-aggregator');\n  };\n\n  FrameworkConfiguration.prototype.basicConfiguration = function basicConfiguration() {\n    return this.defaultBindingLanguage().defaultResources().eventAggregator();\n  };\n\n  FrameworkConfiguration.prototype.standardConfiguration = function standardConfiguration() {\n    return this.basicConfiguration().history().router();\n  };\n\n  FrameworkConfiguration.prototype.developmentLogging = function developmentLogging(level) {\n    var _this7 = this;\n\n    var logLevel = level ? TheLogManager.logLevel[level] : undefined;\n\n    if (logLevel === undefined) {\n      logLevel = TheLogManager.logLevel.debug;\n    }\n\n    this.preTask(function () {\n      return _this7.aurelia.loader.normalize('aurelia-logging-console', _this7.bootstrapperName).then(function (name) {\n        return _this7.aurelia.loader.loadModule(name).then(function (m) {\n          TheLogManager.addAppender(new m.ConsoleAppender());\n          TheLogManager.setLevel(logLevel);\n        });\n      });\n    });\n\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.apply = function apply() {\n    var _this8 = this;\n\n    if (this.processed) {\n      return Promise.resolve();\n    }\n\n    return runTasks(this, this.preTasks).then(function () {\n      var loader = _this8.aurelia.loader;\n      var info = _this8.info;\n      var current = void 0;\n\n      var next = function next() {\n        current = info.shift();\n        if (current) {\n          return loadPlugin(_this8, loader, current).then(next);\n        }\n\n        _this8.processed = true;\n        _this8.configuredPlugins = null;\n        return Promise.resolve();\n      };\n\n      return next().then(function () {\n        return runTasks(_this8, _this8.postTasks);\n      });\n    });\n  };\n\n  return FrameworkConfiguration;\n}();\n\nexport { FrameworkConfiguration };\n\n\nexport * from 'aurelia-dependency-injection';\nexport * from 'aurelia-binding';\nexport * from 'aurelia-metadata';\nexport * from 'aurelia-templating';\nexport * from 'aurelia-loader';\nexport * from 'aurelia-task-queue';\nexport * from 'aurelia-path';\nexport * from 'aurelia-pal';\n\nexport var LogManager = TheLogManager;","import { History } from 'aurelia-history';\nimport { DOM, PLATFORM } from 'aurelia-pal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\nvar LinkHandler = (function () {\r\n    function LinkHandler() {\r\n    }\r\n    LinkHandler.prototype.activate = function (history) { };\r\n    LinkHandler.prototype.deactivate = function () { };\r\n    return LinkHandler;\r\n}());\r\nvar DefaultLinkHandler = (function (_super) {\r\n    __extends(DefaultLinkHandler, _super);\r\n    function DefaultLinkHandler() {\r\n        var _this = _super.call(this) || this;\r\n        _this.handler = function (e) {\r\n            var _a = DefaultLinkHandler.getEventInfo(e), shouldHandleEvent = _a.shouldHandleEvent, href = _a.href;\r\n            if (shouldHandleEvent) {\r\n                e.preventDefault();\r\n                _this.history.navigate(href);\r\n            }\r\n        };\r\n        return _this;\r\n    }\r\n    DefaultLinkHandler.prototype.activate = function (history) {\r\n        if (history._hasPushState) {\r\n            this.history = history;\r\n            DOM.addEventListener('click', this.handler, true);\r\n        }\r\n    };\r\n    DefaultLinkHandler.prototype.deactivate = function () {\r\n        DOM.removeEventListener('click', this.handler, true);\r\n    };\r\n    DefaultLinkHandler.getEventInfo = function (event) {\r\n        var $event = event;\r\n        var info = {\r\n            shouldHandleEvent: false,\r\n            href: null,\r\n            anchor: null\r\n        };\r\n        var target = DefaultLinkHandler.findClosestAnchor($event.target);\r\n        if (!target || !DefaultLinkHandler.targetIsThisWindow(target)) {\r\n            return info;\r\n        }\r\n        if (hasAttribute(target, 'download')\r\n            || hasAttribute(target, 'router-ignore')\r\n            || hasAttribute(target, 'data-router-ignore')) {\r\n            return info;\r\n        }\r\n        if ($event.altKey || $event.ctrlKey || $event.metaKey || $event.shiftKey) {\r\n            return info;\r\n        }\r\n        var href = target.getAttribute('href');\r\n        info.anchor = target;\r\n        info.href = href;\r\n        var leftButtonClicked = $event.which === 1;\r\n        var isRelative = href && !(href.charAt(0) === '#' || (/^[a-z]+:/i).test(href));\r\n        info.shouldHandleEvent = leftButtonClicked && isRelative;\r\n        return info;\r\n    };\r\n    DefaultLinkHandler.findClosestAnchor = function (el) {\r\n        while (el) {\r\n            if (el.tagName === 'A') {\r\n                return el;\r\n            }\r\n            el = el.parentNode;\r\n        }\r\n    };\r\n    DefaultLinkHandler.targetIsThisWindow = function (target) {\r\n        var targetWindow = target.getAttribute('target');\r\n        var win = PLATFORM.global;\r\n        return !targetWindow ||\r\n            targetWindow === win.name ||\r\n            targetWindow === '_self';\r\n    };\r\n    return DefaultLinkHandler;\r\n}(LinkHandler));\r\nvar hasAttribute = function (el, attr) { return el.hasAttribute(attr); };\n\nvar BrowserHistory = (function (_super) {\r\n    __extends(BrowserHistory, _super);\r\n    function BrowserHistory(linkHandler) {\r\n        var _this = _super.call(this) || this;\r\n        _this._isActive = false;\r\n        _this._checkUrlCallback = _this._checkUrl.bind(_this);\r\n        _this.location = PLATFORM.location;\r\n        _this.history = PLATFORM.history;\r\n        _this.linkHandler = linkHandler;\r\n        return _this;\r\n    }\r\n    BrowserHistory.prototype.activate = function (options) {\r\n        if (this._isActive) {\r\n            throw new Error('History has already been activated.');\r\n        }\r\n        var $history = this.history;\r\n        var wantsPushState = !!options.pushState;\r\n        this._isActive = true;\r\n        var normalizedOptions = this.options = Object.assign({}, { root: '/' }, this.options, options);\r\n        var rootUrl = this.root = ('/' + normalizedOptions.root + '/').replace(rootStripper, '/');\r\n        var wantsHashChange = this._wantsHashChange = normalizedOptions.hashChange !== false;\r\n        var hasPushState = this._hasPushState = !!(normalizedOptions.pushState && $history && $history.pushState);\r\n        var eventName;\r\n        if (hasPushState) {\r\n            eventName = 'popstate';\r\n        }\r\n        else if (wantsHashChange) {\r\n            eventName = 'hashchange';\r\n        }\r\n        PLATFORM.addEventListener(eventName, this._checkUrlCallback);\r\n        if (wantsHashChange && wantsPushState) {\r\n            var $location = this.location;\r\n            var atRoot = $location.pathname.replace(/[^\\/]$/, '$&/') === rootUrl;\r\n            if (!hasPushState && !atRoot) {\r\n                var fragment = this.fragment = this._getFragment(null, true);\r\n                $location.replace(rootUrl + $location.search + '#' + fragment);\r\n                return true;\r\n            }\r\n            else if (hasPushState && atRoot && $location.hash) {\r\n                var fragment = this.fragment = this._getHash().replace(routeStripper, '');\r\n                $history.replaceState({}, DOM.title, rootUrl + fragment + $location.search);\r\n            }\r\n        }\r\n        if (!this.fragment) {\r\n            this.fragment = this._getFragment('');\r\n        }\r\n        this.linkHandler.activate(this);\r\n        if (!normalizedOptions.silent) {\r\n            return this._loadUrl('');\r\n        }\r\n    };\r\n    BrowserHistory.prototype.deactivate = function () {\r\n        var handler = this._checkUrlCallback;\r\n        PLATFORM.removeEventListener('popstate', handler);\r\n        PLATFORM.removeEventListener('hashchange', handler);\r\n        this._isActive = false;\r\n        this.linkHandler.deactivate();\r\n    };\r\n    BrowserHistory.prototype.getAbsoluteRoot = function () {\r\n        var $location = this.location;\r\n        var origin = createOrigin($location.protocol, $location.hostname, $location.port);\r\n        return \"\" + origin + this.root;\r\n    };\r\n    BrowserHistory.prototype.navigate = function (fragment, _a) {\r\n        var _b = _a === void 0 ? {} : _a, _c = _b.trigger, trigger = _c === void 0 ? true : _c, _d = _b.replace, replace = _d === void 0 ? false : _d;\r\n        var location = this.location;\r\n        if (fragment && absoluteUrl.test(fragment)) {\r\n            location.href = fragment;\r\n            return true;\r\n        }\r\n        if (!this._isActive) {\r\n            return false;\r\n        }\r\n        fragment = this._getFragment(fragment || '');\r\n        if (this.fragment === fragment && !replace) {\r\n            return false;\r\n        }\r\n        this.fragment = fragment;\r\n        var url = this.root + fragment;\r\n        if (fragment === '' && url !== '/') {\r\n            url = url.slice(0, -1);\r\n        }\r\n        if (this._hasPushState) {\r\n            url = url.replace('//', '/');\r\n            this.history[replace ? 'replaceState' : 'pushState']({}, DOM.title, url);\r\n        }\r\n        else if (this._wantsHashChange) {\r\n            updateHash(location, fragment, replace);\r\n        }\r\n        else {\r\n            location.assign(url);\r\n        }\r\n        if (trigger) {\r\n            return this._loadUrl(fragment);\r\n        }\r\n        return true;\r\n    };\r\n    BrowserHistory.prototype.navigateBack = function () {\r\n        this.history.back();\r\n    };\r\n    BrowserHistory.prototype.setTitle = function (title) {\r\n        DOM.title = title;\r\n    };\r\n    BrowserHistory.prototype.setState = function (key, value) {\r\n        var $history = this.history;\r\n        var state = Object.assign({}, $history.state);\r\n        var _a = this.location, pathname = _a.pathname, search = _a.search, hash = _a.hash;\r\n        state[key] = value;\r\n        $history.replaceState(state, null, \"\" + pathname + search + hash);\r\n    };\r\n    BrowserHistory.prototype.getState = function (key) {\r\n        var state = Object.assign({}, this.history.state);\r\n        return state[key];\r\n    };\r\n    BrowserHistory.prototype.getHistoryIndex = function () {\r\n        var historyIndex = this.getState('HistoryIndex');\r\n        if (historyIndex === undefined) {\r\n            historyIndex = this.history.length - 1;\r\n            this.setState('HistoryIndex', historyIndex);\r\n        }\r\n        return historyIndex;\r\n    };\r\n    BrowserHistory.prototype.go = function (movement) {\r\n        this.history.go(movement);\r\n    };\r\n    BrowserHistory.prototype._getHash = function () {\r\n        return this.location.hash.substr(1);\r\n    };\r\n    BrowserHistory.prototype._getFragment = function (fragment, forcePushState) {\r\n        var rootUrl;\r\n        if (!fragment) {\r\n            if (this._hasPushState || !this._wantsHashChange || forcePushState) {\r\n                var location_1 = this.location;\r\n                fragment = location_1.pathname + location_1.search;\r\n                rootUrl = this.root.replace(trailingSlash, '');\r\n                if (!fragment.indexOf(rootUrl)) {\r\n                    fragment = fragment.substr(rootUrl.length);\r\n                }\r\n            }\r\n            else {\r\n                fragment = this._getHash();\r\n            }\r\n        }\r\n        return '/' + fragment.replace(routeStripper, '');\r\n    };\r\n    BrowserHistory.prototype._checkUrl = function () {\r\n        var current = this._getFragment('');\r\n        if (current !== this.fragment) {\r\n            this._loadUrl('');\r\n        }\r\n    };\r\n    BrowserHistory.prototype._loadUrl = function (fragmentOverride) {\r\n        var fragment = this.fragment = this._getFragment(fragmentOverride);\r\n        return this.options.routeHandler ?\r\n            this.options.routeHandler(fragment) :\r\n            false;\r\n    };\r\n    BrowserHistory.inject = [LinkHandler];\r\n    return BrowserHistory;\r\n}(History));\r\nvar routeStripper = /^#?\\/*|\\s+$/g;\r\nvar rootStripper = /^\\/+|\\/+$/g;\r\nvar trailingSlash = /\\/$/;\r\nvar absoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\r\nfunction updateHash($location, fragment, replace) {\r\n    if (replace) {\r\n        var href = $location.href.replace(/(javascript:|#).*$/, '');\r\n        $location.replace(href + '#' + fragment);\r\n    }\r\n    else {\r\n        $location.hash = '#' + fragment;\r\n    }\r\n}\r\nfunction createOrigin(protocol, hostname, port) {\r\n    return protocol + \"//\" + hostname + (port ? ':' + port : '');\r\n}\n\nfunction configure(config) {\r\n    var $config = config;\r\n    $config.singleton(History, BrowserHistory);\r\n    $config.transient(LinkHandler, DefaultLinkHandler);\r\n}\n\nexport { BrowserHistory, DefaultLinkHandler, LinkHandler, configure };\n//# sourceMappingURL=aurelia-history-browser.js.map\n","\n\nfunction mi(name) {\n  throw new Error('History must implement ' + name + '().');\n}\n\nexport var History = function () {\n  function History() {\n    \n  }\n\n  History.prototype.activate = function activate(options) {\n    mi('activate');\n  };\n\n  History.prototype.deactivate = function deactivate() {\n    mi('deactivate');\n  };\n\n  History.prototype.getAbsoluteRoot = function getAbsoluteRoot() {\n    mi('getAbsoluteRoot');\n  };\n\n  History.prototype.navigate = function navigate(fragment, options) {\n    mi('navigate');\n  };\n\n  History.prototype.navigateBack = function navigateBack() {\n    mi('navigateBack');\n  };\n\n  History.prototype.setTitle = function setTitle(title) {\n    mi('setTitle');\n  };\n\n  History.prototype.setState = function setState(key, value) {\n    mi('setState');\n  };\n\n  History.prototype.getState = function getState(key) {\n    mi('getState');\n  };\n\n  History.prototype.getHistoryIndex = function getHistoryIndex() {\n    mi('getHistoryIndex');\n  };\n\n  History.prototype.go = function go(movement) {\n    mi('go');\n  };\n\n  return History;\n}();","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":""}