leaky.js
function LeakError (opts, src, file) {
  Error.call(this);

  this.message = 'global leak detected: ' + opts.variable;

  this.line = opts.line - 1;
  this.column = opts.column;

  this.annotated = '\n'
    + (file || '(anonymous file)')
    + ':' + this.line
    + '\n'
    + src.split('\n')[this.line]
    + '\n'
    + Array(this.column + 1).join(' ') + '^'
    + '\n'
    + 'LeakError: ' + this.message
  ;
}
function LeakError (opts, src, file) {
  Error.call(this);

  this.message = 'global leak detected: ' + opts.variable;

  this.line = opts.line - 1;
  this.column = opts.column;

  this.annotated = '\n'
    + (file || '(anonymous file)')
    + ':' + this.line
    + '\n'
    + src.split('\n')[this.line]
    + '\n'
    + Array(this.column + 1).join(' ') + '^'
    + '\n'
    + 'LeakError: ' + this.message
  ;
}
function LeakError ( opts , src , file ) { Error . call ( this ) ; this . message = 'global leak detected: ' + opts . variable ; this . line = opts . line - 1 ; this . column = opts . column ; this . annotated = '\n' + ( file || '(anonymous file)' ) + ':' + this . line + '\n' + src . split ( '\n' ) [ this . line ] + '\n' + Array ( this . column + 1 ) . join ( ' ' ) + '^' + '\n' + 'LeakError: ' + this . message ; }
LeakError copied from https://github.com/substack/node-syntax-error
LeakError copied from https : // github . com / substack / node - syntax - error