text: // MIT License
  
  // Copyright 2017 Electric Imp
  
  // SPDX-License-Identifier: MIT
  
  // Permission is hereby granted, free of charge, to any person obtaining a copy
  // of this software and associated documentation files (the "Software"), to deal
  // in the Software without restriction, including without limitation the rights
  // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  // copies of the Software, and to permit persons to whom the Software is
  // furnished to do so, subject to the following conditions:
  
  // The above copyright notice and this permission notice shall be
  // included in all copies or substantial portions of the Software.
  
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
  // EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
  // OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  // OTHER DEALINGS IN THE SOFTWARE.
  
  'use strict';
  
  class RewriterWarning {
     constructor(message, file, checker) {
      this._message = message;
      this._file = file;
      this._checker = checker;
    }
  
    toString() {
      return `${this._checker} log:
              \t${this._message}
              \tin ${this._file}`;
    }
  }
  
  class AbstractRewriter {
  
    /**
     * rewrite path
     * @param {string} path
     * @return {[RewriterWarning]}
     */
    rewrite(path) {
    }
  
    /**
     * @return {{debug(),info(),warning(),error()}}
     */
    get logger() {
      return this._logger || {
          debug: console.log,
          info: console.info,
          warning: console.warning,
          error: console.error
        };
    }
  
    /**
     * @param {{debug(),info(),warning(),error()}} value
     */
    set logger(value) {
      this._logger = value;
    }
  }
  
  module.exports = AbstractRewriter;
  module.exports.Warning = RewriterWarning;
  