shaungrady/angular-http-etag

View on GitHub
release/angular-http-etag.min.js.map

Summary

Maintainability
Test Coverage
{"version":3,"sources":["webpack://http-etag/webpack/universalModuleDefinition","webpack://http-etag/webpack/bootstrap","webpack://http-etag/external \"angular\"","webpack://http-etag/./node_modules/array-map/index.js","webpack://http-etag/./node_modules/type-detect/type-detect.js","webpack://http-etag/./node_modules/object-keys/index.js","webpack://http-etag/(webpack)/buildin/global.js","webpack://http-etag/./node_modules/object-keys/isArguments.js","webpack://http-etag/./node_modules/deepcopy/src/buffer.mjs","webpack://http-etag/./node_modules/deepcopy/src/detector.mjs","webpack://http-etag/./node_modules/deepcopy/src/collection.mjs","webpack://http-etag/./node_modules/deepcopy/src/copy_map.mjs","webpack://http-etag/./node_modules/deepcopy/src/copier.mjs","webpack://http-etag/./node_modules/deepcopy/src/index.mjs","webpack://http-etag/./src/service.js","webpack://http-etag/./src/httpDecorator.js","webpack://http-etag/./src/httpInterceptor.js","webpack://http-etag/./src/cacheServiceAdapters.js","webpack://http-etag/./src/index.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","xs","f","map","res","length","x","hasOwn","push","global","this","promiseExists","Promise","globalObject","self","symbolExists","mapExists","Map","setExists","Set","weakMapExists","WeakMap","weakSetExists","WeakSet","dataViewExists","DataView","symbolIteratorExists","iterator","symbolToStringTagExists","setEntriesExists","entries","mapEntriesExists","setIteratorPrototype","getPrototypeOf","mapIteratorPrototype","arrayIteratorExists","Array","arrayIteratorPrototype","stringIteratorExists","String","stringIteratorPrototype","toStringLeftSliceLength","toStringRightSliceLength","obj","typeofObj","isArray","location","document","navigator","mimeTypes","plugins","HTMLElement","tagName","stringTag","objPrototype","RegExp","Date","toString","slice","has","toStr","isArgs","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","constructor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","k","e","keysShim","isObject","isFunction","isArguments","isString","theKeys","TypeError","skipProto","j","skipConstructor","equalsConstructorPrototypeIfNotBuggy","shim","keys","arguments","originalKeys","g","Function","eval","str","callee","isBufferExists","Buffer","isBufferFromExists","from","isBuffer","buffer_copy","detectType","type_detect","collectionTypeSet","collection","type","isCollection","set","add","copyTypedArray","shallowCopy","getEmptyArray","copy_map","Boolean","valueOf","buffer","getTime","Number","source","flags","copier_copy","customizer","valueType","copyFunction","result","undefined","recursiveCopy","clone","references","visited","copiedValue","getOwnPropertySymbols","collectionKey","collectionValue","collectionValueType","copiedCollectionValue","httpEtagProvider","serviceAdapterMethods","cacheAdapterMethods","requiredAdapterMethods","concat","cacheAdapters","cacheDefinitions","defaultCacheId","defaultEtagCacheConfig","deepCopy","cacheResponseData","cacheService","cacheOptions","number","setDefaultCacheConfig","config","external_angular_default","a","extend","getDefaultCacheConfig","defineCache","cacheId","id","defineCacheServiceAdapter","serviceName","Error","methods","forEach","method","getCacheServiceAdapter","$get","$injector","httpEtagService","services","adaptedServices","caches","adaptedCaches","adapter","service","adaptedService","createCache","cache","getCache","adaptedCache","serviceDeepCopies","storesDeepCopies","copy","options","deepcopy","wrappedMethod","wrappedRawMethod","adapterMethod","itemKey","cachedData","responseData","$getItem","unsetItem","setItem","expireItem","data","etagHeader","$setItem","getItemCache","info","isCache","processCacheId","itemCache","itemCacheInfo","isItemCache","purgeCaches","removeAllItems","httpDecorator","httpEtagHttpDecorator","$delegate","httpEtag","$http","cachableHttpMethods","$httpDecorator","httpConfig","httpPromise","useLegacyPromiseExtensions","hasConfig","etagCache","isCacheableMethod","indexOf","etagCacheConfig","etagValue","etagValueType","generateCacheItemKey","processHttpConfigEtagValue","cacheInfo","rawCacheData","cachedEtag","cachedResponse","$$_itemCache","headers","If-None-Match","httpEtagPromiseFactory","then","success","cached","callback","ifCached","status","successCallback","errorCallback","progressBackCallback","thenPromise","apply","response","partializedCallback","fn","args","arg","partial","url","params","array_map_default","object_keys_default","sort","val","val2","encodeURIComponent","join","stringifyParams","joiner","httpMethod","toLowerCase","$inject","httpInterceptor","etag","cacheData","$set","cacheServiceAdapters","cacheAdaptersConfig","$cacheFactory","put","getItem","removeItem","remove","removeAll","noop","localStorage","JSON","stringify","parse","keyPrefix","sessionStorage","__webpack_exports__","provider","src_service","$provide","$httpProvider","version","major","minor","decorator","interceptors"],"mappings":"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","file":"angular-http-etag.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"http-etag\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"http-etag\"] = factory(root[\"angular\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = function (xs, f) {\n    if (xs.map) return xs.map(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        var x = xs[i];\n        if (hasOwn.call(xs, i)) res.push(f(x, i, xs));\n    }\n    return res;\n};\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.typeDetect = factory());\n}(this, (function () { 'use strict';\n\n/* !\n * type-detect\n * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\nvar promiseExists = typeof Promise === 'function';\n\n/* eslint-disable no-undef */\nvar globalObject = typeof self === 'object' ? self : global; // eslint-disable-line id-blacklist\n\nvar symbolExists = typeof Symbol !== 'undefined';\nvar mapExists = typeof Map !== 'undefined';\nvar setExists = typeof Set !== 'undefined';\nvar weakMapExists = typeof WeakMap !== 'undefined';\nvar weakSetExists = typeof WeakSet !== 'undefined';\nvar dataViewExists = typeof DataView !== 'undefined';\nvar symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\nvar symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\nvar setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\nvar mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\nvar setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\nvar mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\nvar arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\nvar arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\nvar stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\nvar stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\nvar toStringLeftSliceLength = 8;\nvar toStringRightSliceLength = -1;\n/**\n * ### typeOf (obj)\n *\n * Uses `Object.prototype.toString` to determine the type of an object,\n * normalising behaviour across engine versions & well optimised.\n *\n * @param {Mixed} object\n * @return {String} object type\n * @api public\n */\nfunction typeDetect(obj) {\n  /* ! Speed optimisation\n   * Pre:\n   *   string literal     x 3,039,035 ops/sec ±1.62% (78 runs sampled)\n   *   boolean literal    x 1,424,138 ops/sec ±4.54% (75 runs sampled)\n   *   number literal     x 1,653,153 ops/sec ±1.91% (82 runs sampled)\n   *   undefined          x 9,978,660 ops/sec ±1.92% (75 runs sampled)\n   *   function           x 2,556,769 ops/sec ±1.73% (77 runs sampled)\n   * Post:\n   *   string literal     x 38,564,796 ops/sec ±1.15% (79 runs sampled)\n   *   boolean literal    x 31,148,940 ops/sec ±1.10% (79 runs sampled)\n   *   number literal     x 32,679,330 ops/sec ±1.90% (78 runs sampled)\n   *   undefined          x 32,363,368 ops/sec ±1.07% (82 runs sampled)\n   *   function           x 31,296,870 ops/sec ±0.96% (83 runs sampled)\n   */\n  var typeofObj = typeof obj;\n  if (typeofObj !== 'object') {\n    return typeofObj;\n  }\n\n  /* ! Speed optimisation\n   * Pre:\n   *   null               x 28,645,765 ops/sec ±1.17% (82 runs sampled)\n   * Post:\n   *   null               x 36,428,962 ops/sec ±1.37% (84 runs sampled)\n   */\n  if (obj === null) {\n    return 'null';\n  }\n\n  /* ! Spec Conformance\n   * Test: `Object.prototype.toString.call(window)``\n   *  - Node === \"[object global]\"\n   *  - Chrome === \"[object global]\"\n   *  - Firefox === \"[object Window]\"\n   *  - PhantomJS === \"[object Window]\"\n   *  - Safari === \"[object Window]\"\n   *  - IE 11 === \"[object Window]\"\n   *  - IE Edge === \"[object Window]\"\n   * Test: `Object.prototype.toString.call(this)``\n   *  - Chrome Worker === \"[object global]\"\n   *  - Firefox Worker === \"[object DedicatedWorkerGlobalScope]\"\n   *  - Safari Worker === \"[object DedicatedWorkerGlobalScope]\"\n   *  - IE 11 Worker === \"[object WorkerGlobalScope]\"\n   *  - IE Edge Worker === \"[object WorkerGlobalScope]\"\n   */\n  if (obj === globalObject) {\n    return 'global';\n  }\n\n  /* ! Speed optimisation\n   * Pre:\n   *   array literal      x 2,888,352 ops/sec ±0.67% (82 runs sampled)\n   * Post:\n   *   array literal      x 22,479,650 ops/sec ±0.96% (81 runs sampled)\n   */\n  if (\n    Array.isArray(obj) &&\n    (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))\n  ) {\n    return 'Array';\n  }\n\n  // Not caching existence of `window` and related properties due to potential\n  // for `window` to be unset before tests in quasi-browser environments.\n  if (typeof window === 'object' && window !== null) {\n    /* ! Spec Conformance\n     * (https://html.spec.whatwg.org/multipage/browsers.html#location)\n     * WhatWG HTML$7.7.3 - The `Location` interface\n     * Test: `Object.prototype.toString.call(window.location)``\n     *  - IE <=11 === \"[object Object]\"\n     *  - IE Edge <=13 === \"[object Object]\"\n     */\n    if (typeof window.location === 'object' && obj === window.location) {\n      return 'Location';\n    }\n\n    /* ! Spec Conformance\n     * (https://html.spec.whatwg.org/#document)\n     * WhatWG HTML$3.1.1 - The `Document` object\n     * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n     *       (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-26809268)\n     *       which suggests that browsers should use HTMLTableCellElement for\n     *       both TD and TH elements. WhatWG separates these.\n     *       WhatWG HTML states:\n     *         > For historical reasons, Window objects must also have a\n     *         > writable, configurable, non-enumerable property named\n     *         > HTMLDocument whose value is the Document interface object.\n     * Test: `Object.prototype.toString.call(document)``\n     *  - Chrome === \"[object HTMLDocument]\"\n     *  - Firefox === \"[object HTMLDocument]\"\n     *  - Safari === \"[object HTMLDocument]\"\n     *  - IE <=10 === \"[object Document]\"\n     *  - IE 11 === \"[object HTMLDocument]\"\n     *  - IE Edge <=13 === \"[object HTMLDocument]\"\n     */\n    if (typeof window.document === 'object' && obj === window.document) {\n      return 'Document';\n    }\n\n    if (typeof window.navigator === 'object') {\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/multipage/webappapis.html#mimetypearray)\n       * WhatWG HTML$8.6.1.5 - Plugins - Interface MimeTypeArray\n       * Test: `Object.prototype.toString.call(navigator.mimeTypes)``\n       *  - IE <=10 === \"[object MSMimeTypesCollection]\"\n       */\n      if (typeof window.navigator.mimeTypes === 'object' &&\n          obj === window.navigator.mimeTypes) {\n        return 'MimeTypeArray';\n      }\n\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n       * WhatWG HTML$8.6.1.5 - Plugins - Interface PluginArray\n       * Test: `Object.prototype.toString.call(navigator.plugins)``\n       *  - IE <=10 === \"[object MSPluginsCollection]\"\n       */\n      if (typeof window.navigator.plugins === 'object' &&\n          obj === window.navigator.plugins) {\n        return 'PluginArray';\n      }\n    }\n\n    if ((typeof window.HTMLElement === 'function' ||\n        typeof window.HTMLElement === 'object') &&\n        obj instanceof window.HTMLElement) {\n      /* ! Spec Conformance\n      * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n      * WhatWG HTML$4.4.4 - The `blockquote` element - Interface `HTMLQuoteElement`\n      * Test: `Object.prototype.toString.call(document.createElement('blockquote'))``\n      *  - IE <=10 === \"[object HTMLBlockElement]\"\n      */\n      if (obj.tagName === 'BLOCKQUOTE') {\n        return 'HTMLQuoteElement';\n      }\n\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/#htmltabledatacellelement)\n       * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableDataCellElement`\n       * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n       *       (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n       *       which suggests that browsers should use HTMLTableCellElement for\n       *       both TD and TH elements. WhatWG separates these.\n       * Test: Object.prototype.toString.call(document.createElement('td'))\n       *  - Chrome === \"[object HTMLTableCellElement]\"\n       *  - Firefox === \"[object HTMLTableCellElement]\"\n       *  - Safari === \"[object HTMLTableCellElement]\"\n       */\n      if (obj.tagName === 'TD') {\n        return 'HTMLTableDataCellElement';\n      }\n\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/#htmltableheadercellelement)\n       * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableHeaderCellElement`\n       * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n       *       (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n       *       which suggests that browsers should use HTMLTableCellElement for\n       *       both TD and TH elements. WhatWG separates these.\n       * Test: Object.prototype.toString.call(document.createElement('th'))\n       *  - Chrome === \"[object HTMLTableCellElement]\"\n       *  - Firefox === \"[object HTMLTableCellElement]\"\n       *  - Safari === \"[object HTMLTableCellElement]\"\n       */\n      if (obj.tagName === 'TH') {\n        return 'HTMLTableHeaderCellElement';\n      }\n    }\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   Float64Array       x 625,644 ops/sec ±1.58% (80 runs sampled)\n  *   Float32Array       x 1,279,852 ops/sec ±2.91% (77 runs sampled)\n  *   Uint32Array        x 1,178,185 ops/sec ±1.95% (83 runs sampled)\n  *   Uint16Array        x 1,008,380 ops/sec ±2.25% (80 runs sampled)\n  *   Uint8Array         x 1,128,040 ops/sec ±2.11% (81 runs sampled)\n  *   Int32Array         x 1,170,119 ops/sec ±2.88% (80 runs sampled)\n  *   Int16Array         x 1,176,348 ops/sec ±5.79% (86 runs sampled)\n  *   Int8Array          x 1,058,707 ops/sec ±4.94% (77 runs sampled)\n  *   Uint8ClampedArray  x 1,110,633 ops/sec ±4.20% (80 runs sampled)\n  * Post:\n  *   Float64Array       x 7,105,671 ops/sec ±13.47% (64 runs sampled)\n  *   Float32Array       x 5,887,912 ops/sec ±1.46% (82 runs sampled)\n  *   Uint32Array        x 6,491,661 ops/sec ±1.76% (79 runs sampled)\n  *   Uint16Array        x 6,559,795 ops/sec ±1.67% (82 runs sampled)\n  *   Uint8Array         x 6,463,966 ops/sec ±1.43% (85 runs sampled)\n  *   Int32Array         x 5,641,841 ops/sec ±3.49% (81 runs sampled)\n  *   Int16Array         x 6,583,511 ops/sec ±1.98% (80 runs sampled)\n  *   Int8Array          x 6,606,078 ops/sec ±1.74% (81 runs sampled)\n  *   Uint8ClampedArray  x 6,602,224 ops/sec ±1.77% (83 runs sampled)\n  */\n  var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n  if (typeof stringTag === 'string') {\n    return stringTag;\n  }\n\n  var objPrototype = Object.getPrototypeOf(obj);\n  /* ! Speed optimisation\n  * Pre:\n  *   regex literal      x 1,772,385 ops/sec ±1.85% (77 runs sampled)\n  *   regex constructor  x 2,143,634 ops/sec ±2.46% (78 runs sampled)\n  * Post:\n  *   regex literal      x 3,928,009 ops/sec ±0.65% (78 runs sampled)\n  *   regex constructor  x 3,931,108 ops/sec ±0.58% (84 runs sampled)\n  */\n  if (objPrototype === RegExp.prototype) {\n    return 'RegExp';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   date               x 2,130,074 ops/sec ±4.42% (68 runs sampled)\n  * Post:\n  *   date               x 3,953,779 ops/sec ±1.35% (77 runs sampled)\n  */\n  if (objPrototype === Date.prototype) {\n    return 'Date';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-promise.prototype-@@tostringtag)\n   * ES6$25.4.5.4 - Promise.prototype[@@toStringTag] should be \"Promise\":\n   * Test: `Object.prototype.toString.call(Promise.resolve())``\n   *  - Chrome <=47 === \"[object Object]\"\n   *  - Edge <=20 === \"[object Object]\"\n   *  - Firefox 29-Latest === \"[object Promise]\"\n   *  - Safari 7.1-Latest === \"[object Promise]\"\n   */\n  if (promiseExists && objPrototype === Promise.prototype) {\n    return 'Promise';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   set                x 2,222,186 ops/sec ±1.31% (82 runs sampled)\n  * Post:\n  *   set                x 4,545,879 ops/sec ±1.13% (83 runs sampled)\n  */\n  if (setExists && objPrototype === Set.prototype) {\n    return 'Set';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   map                x 2,396,842 ops/sec ±1.59% (81 runs sampled)\n  * Post:\n  *   map                x 4,183,945 ops/sec ±6.59% (82 runs sampled)\n  */\n  if (mapExists && objPrototype === Map.prototype) {\n    return 'Map';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   weakset            x 1,323,220 ops/sec ±2.17% (76 runs sampled)\n  * Post:\n  *   weakset            x 4,237,510 ops/sec ±2.01% (77 runs sampled)\n  */\n  if (weakSetExists && objPrototype === WeakSet.prototype) {\n    return 'WeakSet';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   weakmap            x 1,500,260 ops/sec ±2.02% (78 runs sampled)\n  * Post:\n  *   weakmap            x 3,881,384 ops/sec ±1.45% (82 runs sampled)\n  */\n  if (weakMapExists && objPrototype === WeakMap.prototype) {\n    return 'WeakMap';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-dataview.prototype-@@tostringtag)\n   * ES6$24.2.4.21 - DataView.prototype[@@toStringTag] should be \"DataView\":\n   * Test: `Object.prototype.toString.call(new DataView(new ArrayBuffer(1)))``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (dataViewExists && objPrototype === DataView.prototype) {\n    return 'DataView';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%mapiteratorprototype%-@@tostringtag)\n   * ES6$23.1.5.2.2 - %MapIteratorPrototype%[@@toStringTag] should be \"Map Iterator\":\n   * Test: `Object.prototype.toString.call(new Map().entries())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (mapExists && objPrototype === mapIteratorPrototype) {\n    return 'Map Iterator';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%setiteratorprototype%-@@tostringtag)\n   * ES6$23.2.5.2.2 - %SetIteratorPrototype%[@@toStringTag] should be \"Set Iterator\":\n   * Test: `Object.prototype.toString.call(new Set().entries())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (setExists && objPrototype === setIteratorPrototype) {\n    return 'Set Iterator';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%arrayiteratorprototype%-@@tostringtag)\n   * ES6$22.1.5.2.2 - %ArrayIteratorPrototype%[@@toStringTag] should be \"Array Iterator\":\n   * Test: `Object.prototype.toString.call([][Symbol.iterator]())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n    return 'Array Iterator';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%stringiteratorprototype%-@@tostringtag)\n   * ES6$21.1.5.2.2 - %StringIteratorPrototype%[@@toStringTag] should be \"String Iterator\":\n   * Test: `Object.prototype.toString.call(''[Symbol.iterator]())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n    return 'String Iterator';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   object from null   x 2,424,320 ops/sec ±1.67% (76 runs sampled)\n  * Post:\n  *   object from null   x 5,838,000 ops/sec ±0.99% (84 runs sampled)\n  */\n  if (objPrototype === null) {\n    return 'Object';\n  }\n\n  return Object\n    .prototype\n    .toString\n    .call(obj)\n    .slice(toStringLeftSliceLength, toStringRightSliceLength);\n}\n\nreturn typeDetect;\n\n})));\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$applicationCache: true,\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","const isBufferExists = typeof Buffer !== 'undefined';\nconst isBufferFromExists = isBufferExists && typeof Buffer.from !== 'undefined';\n\nexport const isBuffer = isBufferExists\n  ? /**\n     * is value is Buffer?\n     *\n     * @param {*} value\n     * @return {boolean}\n     */\n    function isBuffer(value) {\n      return Buffer.isBuffer(value);\n    }\n  : /**\n     * return false\n     *\n     * NOTE: for Buffer unsupported\n     *\n     * @return {boolean}\n     */\n    function isBuffer() {\n      return false;\n    };\n\nexport const copy = isBufferFromExists\n  ? /**\n     * copy Buffer\n     *\n     * @param {Buffer} value\n     * @return {Buffer}\n     */\n    function copy(value) {\n      return Buffer.from(value);\n    }\n  : isBufferExists\n    ? /**\n       * copy Buffer\n       *\n       * NOTE: for old node.js\n       *\n       * @param {Buffer} value\n       * @return {Buffer}\n       */\n      function copy(value) {\n        return new Buffer(value);\n      }\n    : /**\n       * shallow copy\n       *\n       * NOTE: for Buffer unsupported\n       *\n       * @param {*}\n       * @return {*}\n       */\n      function copy(value) {\n        return value;\n      };\n","import typeDetect from 'type-detect';\n\nimport { isBuffer } from './buffer';\n\n/**\n * detect type of value\n *\n * @param {*} value\n * @return {string}\n */\nexport function detectType(value) {\n  // NOTE: isBuffer must execute before type-detect,\n  // because type-detect returns 'Uint8Array'.\n  if (isBuffer(value)) {\n    return 'Buffer';\n  }\n\n  return typeDetect(value);\n}\n","import { detectType } from './detector';\n\n/**\n * collection types\n */\nconst collectionTypeSet = new Set([\n  'Arguments',\n  'Array',\n  'Map',\n  'Object',\n  'Set'\n]);\n\n/**\n * get value from collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {string} [type=null]\n * @return {*}\n */\nexport function get(collection, key, type = null) {\n  const valueType = type || detectType(collection);\n\n  switch (valueType) {\n    case 'Arguments':\n    case 'Array':\n    case 'Object':\n      return collection[key];\n    case 'Map':\n      return collection.get(key);\n    case 'Set':\n      // NOTE: Set.prototype.keys is alias of Set.prototype.values\n      // it means key is equals value\n      return key;\n    default:\n  }\n}\n\n/**\n * check to type string is collection\n *\n * @param {string} type\n */\nexport function isCollection(type) {\n  return collectionTypeSet.has(type);\n}\n\n/**\n * set value to collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {*} value\n * @param {string} [type=null]\n * @return {Array|Object|Map|Set}\n */\nexport function set(collection, key, value, type = null) {\n  const valueType = type || detectType(collection);\n\n  switch (valueType) {\n    case 'Arguments':\n    case 'Array':\n    case 'Object':\n      collection[key] = value;\n      break;\n    case 'Map':\n      collection.set(key, value);\n      break;\n    case 'Set':\n      collection.add(value);\n      break;\n    default:\n  }\n\n  return collection;\n}\n","import { copy as cloneBuffer } from './buffer';\n\nconst globalObject = Function('return this')();\n\n/**\n * copy ArrayBuffer\n *\n * @param {ArrayBuffer} value\n * @return {ArrayBuffer}\n */\nfunction copyArrayBuffer(value) {\n  return value.slice(0);\n}\n\n/**\n * copy Boolean\n *\n * @param {Boolean} value\n * @return {Boolean}\n */\nfunction copyBoolean(value) {\n  return new Boolean(value.valueOf());\n}\n\n/**\n * copy DataView\n *\n * @param {DataView} value\n * @return {DataView}\n */\nfunction copyDataView(value) {\n  // TODO: copy ArrayBuffer?\n  return new DataView(value.buffer);\n}\n\n/**\n * copy Buffer\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\nfunction copyBuffer(value) {\n  return cloneBuffer(value);\n}\n\n/**\n * copy Date\n *\n * @param {Date} value\n * @return {Date}\n */\nfunction copyDate(value) {\n  return new Date(value.getTime());\n}\n\n/**\n * copy Number\n *\n * @param {Number} value\n * @return {Number}\n */\nfunction copyNumber(value) {\n  return new Number(value);\n}\n\n/**\n * copy RegExp\n *\n * @param {RegExp} value\n * @return {RegExp}\n */\nfunction copyRegExp(value) {\n  return new RegExp(value.source || '(?:)', value.flags);\n}\n\n/**\n * copy String\n *\n * @param {String} value\n * @return {String}\n */\nfunction copyString(value) {\n  return new String(value);\n}\n\n/**\n * copy TypedArray\n *\n * @param {*} value\n * @return {*}\n */\nfunction copyTypedArray(value, type) {\n  return globalObject[type].from(value);\n}\n\n/**\n * shallow copy\n *\n * @param {*} value\n * @return {*}\n */\nfunction shallowCopy(value) {\n  return value;\n}\n\n/**\n * get empty Array\n *\n * @return {Array}\n */\nfunction getEmptyArray() {\n  return [];\n}\n\n/**\n * get empty Map\n *\n * @return {Map}\n */\nfunction getEmptyMap() {\n  return new Map();\n}\n\n/**\n * get empty Object\n *\n * @return {Object}\n */\nfunction getEmptyObject() {\n  return {};\n}\n\n/**\n * get empty Set\n *\n * @return {Set}\n */\nfunction getEmptySet() {\n  return new Set();\n}\n\nexport default new Map([\n  // deep copy\n  ['ArrayBuffer', copyArrayBuffer],\n  ['Boolean', copyBoolean],\n  ['Buffer', copyBuffer],\n  ['DataView', copyDataView],\n  ['Date', copyDate],\n  ['Number', copyNumber],\n  ['RegExp', copyRegExp],\n  ['String', copyString],\n\n  // typed arrays\n  // TODO: pass bound function\n  ['Float32Array', copyTypedArray],\n  ['Float64Array', copyTypedArray],\n  ['Int16Array', copyTypedArray],\n  ['Int32Array', copyTypedArray],\n  ['Int8Array', copyTypedArray],\n  ['Uint16Array', copyTypedArray],\n  ['Uint32Array', copyTypedArray],\n  ['Uint8Array', copyTypedArray],\n  ['Uint8ClampedArray', copyTypedArray],\n\n  // shallow copy\n  ['Array Iterator', shallowCopy],\n  ['Map Iterator', shallowCopy],\n  ['Promise', shallowCopy],\n  ['Set Iterator', shallowCopy],\n  ['String Iterator', shallowCopy],\n  ['function', shallowCopy],\n  ['global', shallowCopy],\n  // NOTE: WeakMap and WeakSet cannot get entries\n  ['WeakMap', shallowCopy],\n  ['WeakSet', shallowCopy],\n\n  // primitives\n  ['boolean', shallowCopy],\n  ['null', shallowCopy],\n  ['number', shallowCopy],\n  ['string', shallowCopy],\n  ['symbol', shallowCopy],\n  ['undefined', shallowCopy],\n\n  // collections\n  // NOTE: return empty value, because recursively copy later.\n  ['Arguments', getEmptyArray],\n  ['Array', getEmptyArray],\n  ['Map', getEmptyMap],\n  ['Object', getEmptyObject],\n  ['Set', getEmptySet]\n\n  // NOTE: type-detect returns following types\n  // 'Location'\n  // 'Document'\n  // 'MimeTypeArray'\n  // 'PluginArray'\n  // 'HTMLQuoteElement'\n  // 'HTMLTableDataCellElement'\n  // 'HTMLTableHeaderCellElement'\n\n  // TODO: is type-detect never return 'object'?\n  // 'object'\n]);\n","import copyMap from './copy_map';\nimport { detectType } from './detector';\n\n/**\n * no operation\n */\nfunction noop() {}\n\n/**\n * copy value\n *\n * @param {*} value\n * @param {string} [type=null]\n * @param {Function} [customizer=noop]\n * @return {*}\n */\nexport function copy(value, type = null, customizer = noop) {\n  if (arguments.length === 2 && typeof type === 'function') {\n    customizer = type;\n    type = null;\n  }\n\n  const valueType = type || detectType(value);\n  const copyFunction = copyMap.get(valueType);\n\n  if (valueType === 'Object') {\n    const result = customizer(value, valueType);\n\n    if (result !== undefined) {\n      return result;\n    }\n  }\n\n  // NOTE: TypedArray needs pass type to argument\n  return copyFunction ? copyFunction(value, valueType) : value;\n}\n","import { detectType } from './detector';\nimport { get, isCollection, set } from './collection';\nimport { copy } from './copier';\n\n/**\n * deepcopy function\n *\n * @param {*} value\n * @param {Object|Function} [options]\n * @return {*}\n */\nexport default function deepcopy(value, options = {}) {\n  if (typeof options === 'function') {\n    options = {\n      customizer: options\n    };\n  }\n\n  const {\n    // TODO: before/after customizer\n    customizer\n    // TODO: max depth\n    // depth = Infinity,\n  } = options;\n\n  const valueType = detectType(value);\n\n  if (!isCollection(valueType)) {\n    return recursiveCopy(value, null, null, null, customizer);\n  }\n\n  const copiedValue = copy(value, valueType, customizer);\n\n  const references = new WeakMap([[value, copiedValue]]);\n  const visited = new WeakSet([value]);\n\n  return recursiveCopy(value, copiedValue, references, visited, customizer);\n}\n\n/**\n * recursively copy\n *\n * @param {*} value target value\n * @param {*} clone clone of value\n * @param {WeakMap} references visited references of clone\n * @param {WeakSet} visited visited references of value\n * @param {Function} customizer user customize function\n * @return {*}\n */\nfunction recursiveCopy(value, clone, references, visited, customizer) {\n  const type = detectType(value);\n  const copiedValue = copy(value, type);\n\n  // return if not a collection value\n  if (!isCollection(type)) {\n    return copiedValue;\n  }\n\n  let keys;\n\n  switch (type) {\n    case 'Arguments':\n    case 'Array':\n      keys = Object.keys(value);\n      break;\n    case 'Object':\n      keys = Object.keys(value);\n      keys.push(...Object.getOwnPropertySymbols(value));\n      break;\n    case 'Map':\n    case 'Set':\n      keys = value.keys();\n      break;\n    default:\n  }\n\n  // walk within collection with iterator\n  for (let collectionKey of keys) {\n    const collectionValue = get(value, collectionKey, type);\n\n    if (visited.has(collectionValue)) {\n      // for [Circular]\n      set(clone, collectionKey, references.get(collectionValue), type);\n    } else {\n      const collectionValueType = detectType(collectionValue);\n      const copiedCollectionValue = copy(collectionValue, collectionValueType);\n\n      // save reference if value is collection\n      if (isCollection(collectionValueType)) {\n        references.set(collectionValue, copiedCollectionValue);\n        visited.add(collectionValue);\n      }\n\n      set(\n        clone,\n        collectionKey,\n        recursiveCopy(\n          collectionValue,\n          copiedCollectionValue,\n          references,\n          visited,\n          customizer\n        ),\n        type\n      );\n    }\n  }\n\n  // TODO: isSealed/isFrozen/isExtensible\n\n  return clone;\n}\n","import angular from 'angular'\nimport deepcopy from 'deepcopy'\n\nexport default httpEtagProvider\n\nfunction httpEtagProvider () {\n  var httpEtagProvider = this\n\n  var serviceAdapterMethods = [\n    'createCache',\n    'getCache'\n  ]\n\n  var cacheAdapterMethods = [\n    'setItem',\n    'getItem',\n    'removeItem',\n    'removeAllItems'\n    // info method hard-coded\n  ]\n\n  var requiredAdapterMethods = serviceAdapterMethods.concat(cacheAdapterMethods)\n\n  // Built-in adapters defined in ./cacheServiceAdapters.js\n  var cacheAdapters = {}\n  var cacheDefinitions = {}\n\n  // Cache config defaults\n  var defaultCacheId = 'httpEtagCache'\n  var defaultEtagCacheConfig = {\n    deepCopy: false,\n    cacheResponseData: true,\n    cacheService: '$cacheFactory',\n    cacheOptions: {\n      number: 25\n    }\n  }\n\n  /**\n   * SERVICE PROVIDER\n   * .setDefaultCacheConfig(config)\n   * .defineCache(cacheId, config)\n   * .defineCacheServiceAdapter(serviceName, config)\n   * .getCacheServiceAdapter(serviceName)\n   */\n\n  httpEtagProvider.setDefaultCacheConfig = function httpEtagSetDefaultCacheOptions (config) {\n    defaultEtagCacheConfig = angular.extend({}, defaultEtagCacheConfig, config)\n    return httpEtagProvider\n  }\n\n  httpEtagProvider.getDefaultCacheConfig = function httpEtagGetDefaultCacheOptions () {\n    return defaultEtagCacheConfig\n  }\n\n  httpEtagProvider.defineCache = function httpEtagDefineCache (cacheId, config) {\n    config = angular.extend({}, defaultEtagCacheConfig, config, { id: cacheId })\n    cacheDefinitions[cacheId] = config\n    return httpEtagProvider\n  }\n\n  httpEtagProvider.defineCacheServiceAdapter = function httpEtagDefineCacheServiceAdapter (serviceName, config) {\n    if (!config) throw new Error('Missing cache service adapter configuration')\n    if (!config.methods) throw new Error('Missing cache service adapter configuration methods')\n    angular.forEach(requiredAdapterMethods, function (method) {\n      if (typeof config.methods[method] !== 'function') {\n        throw new Error('Expected cache service adapter method \"' + method + '\" to be a function')\n      }\n    })\n\n    cacheAdapters[serviceName] = config\n    return httpEtagProvider\n  }\n\n  httpEtagProvider.getCacheServiceAdapter = function httpEtagGetCacheServiceAdapter (serviceName) {\n    return cacheAdapters[serviceName]\n  }\n\n  /**\n   * SERVICE\n   * .info()\n   * .getCache(acheId)\n   * .getItemCache(cacheId, itemKey)\n   */\n\n  httpEtagProvider.$get = ['$injector', function httpEtagFactory ($injector) {\n    var httpEtagService = {}\n\n    var services = {}\n    var adaptedServices = {}\n    var caches = {}\n    var adaptedCaches = {}\n\n    // Add default cache if not already defined\n    if (!cacheDefinitions[defaultCacheId]) httpEtagProvider.defineCache(defaultCacheId)\n\n    // Find/inject cache service and create adapted versions\n    angular.forEach(cacheAdapters, function adaptCacheService (adapter, serviceName) {\n      var service = services[serviceName] = window[serviceName] || $injector.get(serviceName)\n      var adaptedService = adaptedServices[serviceName] = {}\n\n      angular.forEach(serviceAdapterMethods, function (method) {\n        adaptedService[method] = angular.bind({}, adapter.methods[method], service)\n      })\n    })\n\n    // Instantiate caches and create adapted versions\n    angular.forEach(cacheDefinitions, function adaptCache (config, cacheId) {\n      adaptedServices[config.cacheService].createCache(cacheId, config)\n      var cache = caches[cacheId] = adaptedServices[config.cacheService].getCache(cacheId)\n      var adaptedCache = adaptedCaches[cacheId] = {}\n      // Determine whether to perform deepcopying or not\n      var serviceDeepCopies = cacheAdapters[config.cacheService].config.storesDeepCopies\n      var deepCopy = !serviceDeepCopies && cacheDefinitions[cacheId].deepCopy\n      var copy = function (value) {\n        return deepCopy ? deepcopy(value) : value\n      }\n\n      angular.forEach(cacheAdapterMethods, function (method) {\n        var adapterMethod = cacheAdapters[config.cacheService].methods[method]\n        var wrappedMethod\n        var wrappedRawMethod\n\n        // Wrap set/get methods to set/get to the `responseData` property of an\n        // object. This is where the $http interceptor stores response data.\n        if (method === 'getItem') {\n          wrappedMethod = function getCacheItemResponseData (cache, itemKey, options) {\n            var cachedData = adapterMethod(cache, itemKey, options)\n            return cachedData && copy(cachedData.responseData)\n          }\n\n          wrappedRawMethod = function getCacheItemData (cache, itemKey, options) {\n            return copy(adapterMethod(cache, itemKey, options))\n          }\n        }\n\n        if (method === 'setItem') {\n          wrappedMethod = function setCacheItemResponseData (cache, itemKey, value, options) {\n            var cachedData = adaptedCache.$getItem(itemKey)\n            value = copy(value)\n\n            if (cachedData && typeof cachedData === 'object') {\n              cachedData.responseData = value\n              value = cachedData\n            } else value = { responseData: value }\n\n            adapterMethod(cache, itemKey, value, options)\n          }\n\n          wrappedRawMethod = function setCacheItemData (cache, itemKey, value, options) {\n            adapterMethod(cache, itemKey, copy(value), options)\n          }\n        }\n\n        adaptedCache[method] = angular.bind({}, (wrappedMethod || adapterMethod), cache)\n        if (wrappedRawMethod) {\n          adaptedCache['$' + method] = angular.bind({}, wrappedRawMethod, cache)\n        }\n      })\n\n      adaptedCache.unsetItem = function adaptedCacheUnsetItemCache (itemKey) {\n        adaptedCache.setItem(itemKey, undefined)\n      }\n      adaptedCache.expireItem = function adaptedCacheUnsetItemCache (itemKey) {\n        var data = adaptedCache.$getItem(itemKey)\n        delete data.etagHeader\n        adaptedCache.$setItem(itemKey, data)\n      }\n      adaptedCache.getItemCache = function adaptedCacheGetItemCache (itemKey) {\n        return httpEtagService.getItemCache(cacheId, itemKey)\n      }\n      adaptedCache.info = function adaptedCacheInfo () {\n        return cacheDefinitions[cacheId]\n      }\n      adaptedCache.isCache = true\n    })\n\n    httpEtagService.info = function httpEtagServiceInfo () {\n      return cacheDefinitions\n    }\n\n    httpEtagService.getCache = function httpEtagServiceGetCache (cacheId) {\n      var cache = adaptedCaches[processCacheId(cacheId)]\n      if (cache) return cache\n    }\n\n    httpEtagService.getItemCache = function httpEtagServiceGeItemCache (cacheId, itemKey) {\n      var cache = httpEtagService.getCache(cacheId)\n      var itemCache = {}\n      if (!cache) return\n\n      var methodMappings = [\n        ['set', 'setItem'],\n        ['get', 'getItem'],\n        ['$set', '$setItem'],\n        ['$get', '$getItem'],\n        ['unset', 'unsetItem'],\n        ['expire', 'expireItem'],\n        ['remove', 'removeItem']\n      ]\n\n      angular.forEach(methodMappings, function mapCacheMethdodsToItemCache (methods) {\n        itemCache[methods[0]] = angular.bind({}, cache[methods[1]], itemKey)\n      })\n\n      itemCache.info = function itemCacheInfo () {\n        var itemCacheInfo = cache.info()\n        itemCacheInfo.itemKey = itemKey\n        return itemCacheInfo\n      }\n\n      itemCache.isItemCache = true\n\n      return itemCache\n    }\n\n    httpEtagService.purgeCaches = function httpEtagPurgeCaches () {\n      angular.forEach(adaptedCaches, function (cache) {\n        cache.removeAllItems()\n      })\n    }\n\n    function processCacheId (cacheId) {\n      var type = typeof cacheId\n      var isDefined = type === 'number' || (type === 'string' && !!cacheId)\n      return isDefined ? cacheId : defaultCacheId\n    }\n\n    return httpEtagService\n  }]\n}\n","import angular from 'angular'\nimport objectKeys from 'object-keys'\nimport arrayMap from 'array-map'\n\nexport default httpEtagHttpDecorator\n\nhttpEtagHttpDecorator.$inject = ['$delegate', 'httpEtag']\n\nfunction httpEtagHttpDecorator ($delegate, httpEtag) {\n  var $http = $delegate\n  var cachableHttpMethods = [\n    'GET',\n    'JSONP'\n  ]\n\n  function $httpDecorator (httpConfig) {\n    var useLegacyPromiseExtensions = httpEtagHttpDecorator.useLegacyPromiseExtensions()\n    var hasConfig = !!httpConfig.etagCache\n    var isCacheableMethod = cachableHttpMethods.indexOf(httpConfig.method) >= 0\n    var isCachable = hasConfig && isCacheableMethod\n    var httpPromise\n\n    if (isCachable) {\n      var etagCacheConfig = processHttpConfigEtagValue(httpConfig)\n      if (etagCacheConfig) {\n        var itemCache = httpEtag.getItemCache(etagCacheConfig.id, etagCacheConfig.itemKey)\n        if (!itemCache) throw new Error('No defined ETag caches match specified cache ID')\n\n        var cacheInfo = itemCache.info()\n        var rawCacheData = itemCache.$get()\n        var cachedEtag = rawCacheData && rawCacheData.etagHeader\n        var cachedResponse = cachedEtag && rawCacheData.responseData\n\n        // Allow easy access to cache in interceptor\n        httpConfig.$$_itemCache = itemCache\n\n        if (cachedEtag) {\n          httpConfig.headers = angular.extend({}, httpConfig.headers, {\n            'If-None-Match': cachedEtag\n          })\n        }\n      }\n    }\n\n    httpPromise = $http.apply($http, arguments)\n    httpEtagPromiseFactory(httpPromise)\n\n    function httpEtagPromiseFactory (httpPromise) {\n      var then = httpPromise.then\n      var success = httpPromise.success\n\n      if (useLegacyPromiseExtensions) {\n        httpPromise.cached = function httpEtagPromiseCached (callback) {\n          if (rawCacheData && cacheInfo.cacheResponseData) {\n            callback(cachedResponse, 'cached', undefined, httpConfig, itemCache)\n          }\n          return httpPromise\n        }\n      } else {\n        httpPromise.cached = function deprecatedEtagPromiseCached () {\n          throw new Error('The method `cached` on the promise returned from `$http` has been disabled in favor of `ifCached`.')\n        }\n      }\n\n      httpPromise.ifCached = function httpEtagPromiseIfCached (callback) {\n        if (rawCacheData && cacheInfo.cacheResponseData) {\n          // We're simply mimicking the Angular API here, so... sorry, Standard.\n          // eslint-disable-next-line standard/no-callback-literal\n          callback({\n            data: cachedResponse,\n            status: 'cached',\n            headers: undefined,\n            config: httpConfig\n          }, itemCache)\n        }\n        return httpPromise\n      }\n\n      httpPromise.then = function httpEtagThenWrapper (successCallback, errorCallback, progressBackCallback) {\n        var thenPromise = then.apply(httpPromise, [\n          successCallback ? httpEtagSuccessWrapper : undefined,\n          errorCallback ? httpEtagErrorWrapper : undefined,\n          progressBackCallback\n        ])\n\n        function httpEtagSuccessWrapper (response) {\n          return successCallback(response, itemCache)\n        }\n\n        function httpEtagErrorWrapper (response) {\n          return errorCallback(response, itemCache)\n        }\n\n        return httpEtagPromiseFactory(thenPromise)\n      }\n\n      if (useLegacyPromiseExtensions && itemCache) {\n        httpPromise.success = function httpEtagPromiseSuccess (callback) {\n          var partializedCallback = partial(callback, undefined, undefined, undefined, undefined, itemCache)\n          return success.apply(httpPromise, [partializedCallback])\n        }\n      }\n\n      return httpPromise\n    }\n\n    return httpPromise\n  }\n\n  // Decorate the cachable shortcut methods, too\n  angular.forEach(cachableHttpMethods, function (httpMethod) {\n    var method = httpMethod.toLowerCase()\n    $httpDecorator[method] = function httpEtagHttpShortcutWrapper (url, config) {\n      config = angular.extend({}, config, {\n        method: httpMethod,\n        url: url\n      })\n\n      return $httpDecorator.call($http, config)\n    }\n  })\n\n  // Copy over all other properties and methods\n  angular.forEach($http, function copyHttpPropertyToDectorator (value, key) {\n    if (!$httpDecorator[key]) $httpDecorator[key] = value\n  })\n\n  /**\n   * HELPERS\n   */\n\n  function processHttpConfigEtagValue (httpConfig) {\n    var etagValue = httpConfig.etagCache\n    var etagValueType = typeof etagValue\n    var etagCacheConfig = {}\n\n    // Evaluate function first\n    if (etagValueType === 'function') {\n      etagValue = etagValue(httpConfig)\n      etagValueType = typeof etagValue\n    }\n\n    // Plain, cache, or itemCache objects\n    if (etagValueType === 'object') {\n      var id, itemKey\n\n      if (etagValue.isCache) {\n        id = etagValue.info().id\n        itemKey = generateCacheItemKey(httpConfig)\n      } else if (etagValue.isItemCache) {\n        id = etagValue.info().id\n        itemKey = etagValue.info().itemKey\n      } else {\n        id = etagValue.id\n        itemKey = etagValue.itemKey || generateCacheItemKey(httpConfig)\n      }\n\n      etagCacheConfig.id = id\n      etagCacheConfig.itemKey = itemKey\n    } else if (etagValueType === 'string') {\n      etagCacheConfig.id = etagValue\n      etagCacheConfig.itemKey = generateCacheItemKey(httpConfig)\n    } else if (etagValue === true) {\n      // Undefined cacheId will use the default cacheId as defined in provider\n      etagCacheConfig.itemKey = generateCacheItemKey(httpConfig)\n    } else return\n    return etagCacheConfig\n  }\n\n  function generateCacheItemKey (httpConfig) {\n    var url = httpConfig.url\n    var params = stringifyParams(httpConfig.params)\n    var joiner = ((params && url.indexOf('?') > 0) ? '&' : '?')\n    var queryString = (params && joiner + params) || ''\n    return url + queryString\n  }\n\n  // Based on npm package \"query-string\"\n  function stringifyParams (obj) {\n    return obj ? arrayMap(objectKeys(obj).sort(), function (key) {\n      var val = obj[key]\n\n      if (angular.isArray(val)) {\n        return arrayMap(val.sort(), function (val2) {\n          return encodeURIComponent(key) + '=' + encodeURIComponent(val2)\n        }).join('&')\n      }\n\n      return encodeURIComponent(key) + '=' + encodeURIComponent(val)\n    }).join('&') : ''\n  }\n\n  // http://ejohn.org/blog/partial-functions-in-javascript/\n  function partial (fn) {\n    var args = Array.prototype.slice.call(arguments, 1)\n    return function () {\n      var arg = 0\n      for (var i = 0; i < args.length && arg < arguments.length; i++) {\n        if (args[i] === undefined) args[i] = arguments[arg++]\n      }\n      return fn.apply(this, args)\n    }\n  }\n\n  return $httpDecorator\n}\n","export default httpEtagInterceptorFactory\n\nfunction httpEtagInterceptorFactory () {\n  function responseInterceptor (response) {\n    var itemCache = response.config.$$_itemCache\n\n    if (itemCache) {\n      var cacheInfo = itemCache.info()\n      var cacheResponseData = cacheInfo.cacheResponseData\n      var etag = response.headers().etag\n      var cacheData = {}\n\n      if (etag) {\n        cacheData.etagHeader = etag\n        if (cacheResponseData) cacheData.responseData = response.data\n        itemCache.$set(cacheData)\n      }\n\n      delete response.config.$$_itemCache\n    }\n\n    return response\n  }\n\n  return {\n    response: responseInterceptor\n  }\n}\n","import angular from 'angular'\n\nexport default cacheAdaptersConfig\n\ncacheAdaptersConfig.$inject = ['httpEtagProvider']\n\nfunction cacheAdaptersConfig (httpEtagProvider) {\n  httpEtagProvider\n\n    .defineCacheServiceAdapter('$cacheFactory', {\n      config: {\n        storesDeepCopies: false\n      },\n      methods: {\n        createCache: function createCache ($cacheFactory, cacheId, options) {\n          $cacheFactory(cacheId, options)\n        },\n        getCache: function getCache ($cacheFactory, cacheId) {\n          return $cacheFactory.get(cacheId)\n        },\n        setItem: function setItem (cache, itemKey, value) {\n          cache.put(itemKey, value)\n        },\n        getItem: function getItem (cache, itemKey) {\n          return cache.get(itemKey)\n        },\n        removeItem: function removeItem (cache, itemKey) {\n          cache.remove(itemKey)\n        },\n        removeAllItems: function removeAllItems (cache, itemKey) {\n          cache.removeAll()\n        }\n      }\n    })\n\n    .defineCacheServiceAdapter('localStorage', {\n      config: {\n        storesDeepCopies: true\n      },\n      methods: {\n        createCache: angular.noop,\n        getCache: function getCache (localStorage, cacheId) {\n          return cacheId\n        },\n        setItem: function setItem (cacheId, itemKey, value) {\n          try {\n            itemKey = cacheId + ':' + itemKey\n            localStorage.setItem(itemKey, JSON.stringify(value))\n          } catch (e) {\n\n          }\n        },\n        getItem: function getItem (cacheId, itemKey) {\n          itemKey = cacheId + ':' + itemKey\n          return JSON.parse(localStorage.getItem(itemKey))\n        },\n        removeItem: function removeItem (cacheId, itemKey) {\n          itemKey = cacheId + ':' + itemKey\n          localStorage.removeItem(itemKey)\n        },\n        removeAllItems: function removeAllItems (cacheId, itemKey) {\n          var keyPrefix = cacheId + ':'\n\n          angular.forEach(localStorage, function (value, key) {\n            if (key.indexOf(keyPrefix) === 0) {\n              localStorage.removeItem(key)\n            }\n          })\n        }\n      }\n    })\n\n    .defineCacheServiceAdapter('sessionStorage', {\n      config: {\n        storesDeepCopies: true\n      },\n      methods: {\n        createCache: angular.noop,\n        getCache: function getCache (sessionStorage, cacheId) {\n          return cacheId\n        },\n        setItem: function setItem (cacheId, itemKey, value) {\n          try {\n            itemKey = cacheId + ':' + itemKey\n            sessionStorage.setItem(itemKey, JSON.stringify(value))\n          } catch (e) {\n\n          }\n        },\n        getItem: function getItem (cacheId, itemKey) {\n          itemKey = cacheId + ':' + itemKey\n          return JSON.parse(sessionStorage.getItem(itemKey))\n        },\n        removeItem: function removeItem (cacheId, itemKey) {\n          itemKey = cacheId + ':' + itemKey\n          sessionStorage.removeItem(itemKey)\n        },\n        removeAllItems: function removeAllItems (cacheId, itemKey) {\n          var keyPrefix = cacheId + ':'\n\n          angular.forEach(sessionStorage, function (value, key) {\n            if (key.indexOf(keyPrefix) === 0) {\n              sessionStorage.removeItem(key)\n            }\n          })\n        }\n      }\n    })\n}\n","import angular from 'angular'\nimport service from './service'\nimport httpDecorator from './httpDecorator'\nimport httpInterceptor from './httpInterceptor'\nimport cacheServiceAdapters from './cacheServiceAdapters'\n\nexport default angular\n  .module('http-etag', [])\n  .provider('httpEtag', service)\n  .config(cacheServiceAdapters)\n  .config(['$provide', '$httpProvider', function addHttpEtagInterceptor ($provide, $httpProvider) {\n    httpDecorator.useLegacyPromiseExtensions =\n      $httpProvider.useLegacyPromiseExtensions ||\n      function useLegacyPromiseExtensions () {\n        return angular.version.major === 1 && angular.version.minor < 6\n      }\n    $provide.decorator('$http', httpDecorator)\n    $httpProvider.interceptors.push(httpInterceptor)\n  }])\n  .name\n"],"sourceRoot":""}