'use strict' 
 | 
  
 | 
function InterceptorManager() { 
 | 
    this.handlers = [] 
 | 
} 
 | 
  
 | 
/** 
 | 
 * Add a new interceptor to the stack 
 | 
 * 
 | 
 * @param {Function} fulfilled The function to handle `then` for a `Promise` 
 | 
 * @param {Function} rejected The function to handle `reject` for a `Promise` 
 | 
 * 
 | 
 * @return {Number} An ID used to remove interceptor later 
 | 
 */ 
 | 
InterceptorManager.prototype.use = function use(fulfilled, rejected) { 
 | 
    this.handlers.push({ 
 | 
        fulfilled, 
 | 
        rejected 
 | 
    }) 
 | 
    return this.handlers.length - 1 
 | 
} 
 | 
  
 | 
/** 
 | 
 * Remove an interceptor from the stack 
 | 
 * 
 | 
 * @param {Number} id The ID that was returned by `use` 
 | 
 */ 
 | 
InterceptorManager.prototype.eject = function eject(id) { 
 | 
    if (this.handlers[id]) { 
 | 
        this.handlers[id] = null 
 | 
    } 
 | 
} 
 | 
  
 | 
/** 
 | 
 * Iterate over all the registered interceptors 
 | 
 * 
 | 
 * This method is particularly useful for skipping over any 
 | 
 * interceptors that may have become `null` calling `eject`. 
 | 
 * 
 | 
 * @param {Function} fn The function to call for each interceptor 
 | 
 */ 
 | 
InterceptorManager.prototype.forEach = function forEach(fn) { 
 | 
    this.handlers.forEach((h) => { 
 | 
        if (h !== null) { 
 | 
            fn(h) 
 | 
        } 
 | 
    }) 
 | 
} 
 | 
  
 | 
export default InterceptorManager 
 |