'use strict'; var Headers = function() { this.clear(); }; Headers.prototype.ALLOWED_DUPLICATES = ['set-cookie', 'set-cookie2', 'warning', 'www-authenticate']; Headers.prototype.clear = function() { this._sent = {}; this._lines = []; }; Headers.prototype.set = function(name, value) { if (value === undefined) return; name = this._strip(name); value = this._strip(value); var key = name.toLowerCase(); if (!this._sent.hasOwnProperty(key) || this.ALLOWED_DUPLICATES.indexOf(key) >= 0) { this._sent[key] = true; this._lines.push(name + ': ' + value + '\r\n'); } }; Headers.prototype.toString = function() { return this._lines.join(''); }; Headers.prototype._strip = function(string) { return string.toString().replace(/^ */, '').replace(/ *$/, ''); }; module.exports = Headers;