Deployed the page to Github Pages.
This commit is contained in:
parent
1d79754e93
commit
2c89899458
62797 changed files with 6551425 additions and 15279 deletions
18
node_modules/boom/.npmignore
generated
vendored
Normal file
18
node_modules/boom/.npmignore
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
.idea
|
||||
*.iml
|
||||
npm-debug.log
|
||||
dump.rdb
|
||||
node_modules
|
||||
results.tap
|
||||
results.xml
|
||||
npm-shrinkwrap.json
|
||||
config.json
|
||||
.DS_Store
|
||||
*/.DS_Store
|
||||
*/*/.DS_Store
|
||||
._*
|
||||
*/._*
|
||||
*/*/._*
|
||||
coverage.*
|
||||
lib-cov
|
||||
|
5
node_modules/boom/.travis.yml
generated
vendored
Executable file
5
node_modules/boom/.travis.yml
generated
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
language: node_js
|
||||
|
||||
node_js:
|
||||
- 0.10
|
||||
|
24
node_modules/boom/LICENSE
generated
vendored
Executable file
24
node_modules/boom/LICENSE
generated
vendored
Executable file
|
@ -0,0 +1,24 @@
|
|||
Copyright (c) 2012-2013, Walmart.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of Walmart nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL WALMART BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
6
node_modules/boom/README.md
generated
vendored
Executable file
6
node_modules/boom/README.md
generated
vendored
Executable file
|
@ -0,0 +1,6 @@
|
|||
<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a>
|
||||

|
||||
|
||||
HTTP-friendly error objects
|
||||
|
||||
[](http://travis-ci.org/spumko/boom)
|
BIN
node_modules/boom/images/boom.png
generated
vendored
Executable file
BIN
node_modules/boom/images/boom.png
generated
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
207
node_modules/boom/lib/index.js
generated
vendored
Executable file
207
node_modules/boom/lib/index.js
generated
vendored
Executable file
|
@ -0,0 +1,207 @@
|
|||
// Load modules
|
||||
|
||||
var Http = require('http');
|
||||
var NodeUtil = require('util');
|
||||
var Hoek = require('hoek');
|
||||
|
||||
|
||||
// Declare internals
|
||||
|
||||
var internals = {};
|
||||
|
||||
|
||||
exports = module.exports = internals.Boom = function (/* (new Error) or (code, message) */) {
|
||||
|
||||
var self = this;
|
||||
|
||||
Hoek.assert(this.constructor === internals.Boom, 'Error must be instantiated using new');
|
||||
|
||||
Error.call(this);
|
||||
this.isBoom = true;
|
||||
|
||||
this.response = {
|
||||
code: 0,
|
||||
payload: {},
|
||||
headers: {}
|
||||
// type: 'content-type'
|
||||
};
|
||||
|
||||
if (arguments[0] instanceof Error) {
|
||||
|
||||
// Error
|
||||
|
||||
var error = arguments[0];
|
||||
|
||||
this.data = error;
|
||||
this.response.code = error.code || 500;
|
||||
if (error.message) {
|
||||
this.message = error.message;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
// code, message
|
||||
|
||||
var code = arguments[0];
|
||||
var message = arguments[1];
|
||||
|
||||
Hoek.assert(!isNaN(parseFloat(code)) && isFinite(code) && code >= 400, 'First argument must be a number (400+)');
|
||||
|
||||
this.response.code = code;
|
||||
if (message) {
|
||||
this.message = message;
|
||||
}
|
||||
}
|
||||
|
||||
// Response format
|
||||
|
||||
this.reformat();
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
NodeUtil.inherits(internals.Boom, Error);
|
||||
|
||||
|
||||
internals.Boom.prototype.reformat = function () {
|
||||
|
||||
this.response.payload.code = this.response.code;
|
||||
this.response.payload.error = Http.STATUS_CODES[this.response.code] || 'Unknown';
|
||||
if (this.message) {
|
||||
this.response.payload.message = Hoek.escapeHtml(this.message); // Prevent XSS from error message
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Utilities
|
||||
|
||||
internals.Boom.badRequest = function (message) {
|
||||
|
||||
return new internals.Boom(400, message);
|
||||
};
|
||||
|
||||
|
||||
internals.Boom.unauthorized = function (message, scheme, attributes) { // Or function (message, wwwAuthenticate[])
|
||||
|
||||
var err = new internals.Boom(401, message);
|
||||
|
||||
if (!scheme) {
|
||||
return err;
|
||||
}
|
||||
|
||||
var wwwAuthenticate = '';
|
||||
|
||||
if (typeof scheme === 'string') {
|
||||
|
||||
// function (message, scheme, attributes)
|
||||
|
||||
wwwAuthenticate = scheme;
|
||||
if (attributes) {
|
||||
var names = Object.keys(attributes);
|
||||
for (var i = 0, il = names.length; i < il; ++i) {
|
||||
if (i) {
|
||||
wwwAuthenticate += ',';
|
||||
}
|
||||
|
||||
var value = attributes[names[i]];
|
||||
if (value === null ||
|
||||
value === undefined) { // Value can be zero
|
||||
|
||||
value = '';
|
||||
}
|
||||
wwwAuthenticate += ' ' + names[i] + '="' + Hoek.escapeHeaderAttribute(value.toString()) + '"';
|
||||
}
|
||||
}
|
||||
|
||||
if (message) {
|
||||
if (attributes) {
|
||||
wwwAuthenticate += ',';
|
||||
}
|
||||
wwwAuthenticate += ' error="' + Hoek.escapeHeaderAttribute(message) + '"';
|
||||
}
|
||||
else {
|
||||
err.isMissing = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
// function (message, wwwAuthenticate[])
|
||||
|
||||
var wwwArray = scheme;
|
||||
for (var i = 0, il = wwwArray.length; i < il; ++i) {
|
||||
if (i) {
|
||||
wwwAuthenticate += ', ';
|
||||
}
|
||||
|
||||
wwwAuthenticate += wwwArray[i];
|
||||
}
|
||||
}
|
||||
|
||||
err.response.headers['WWW-Authenticate'] = wwwAuthenticate;
|
||||
|
||||
return err;
|
||||
};
|
||||
|
||||
|
||||
internals.Boom.clientTimeout = function (message) {
|
||||
|
||||
return new internals.Boom(408, message);
|
||||
};
|
||||
|
||||
|
||||
internals.Boom.serverTimeout = function (message) {
|
||||
|
||||
return new internals.Boom(503, message);
|
||||
};
|
||||
|
||||
|
||||
internals.Boom.forbidden = function (message) {
|
||||
|
||||
return new internals.Boom(403, message);
|
||||
};
|
||||
|
||||
|
||||
internals.Boom.notFound = function (message) {
|
||||
|
||||
return new internals.Boom(404, message);
|
||||
};
|
||||
|
||||
|
||||
internals.Boom.internal = function (message, data) {
|
||||
|
||||
var err = new internals.Boom(500, message);
|
||||
|
||||
if (data && data.stack) {
|
||||
err.trace = data.stack.split('\n');
|
||||
err.outterTrace = Hoek.displayStack(1);
|
||||
}
|
||||
else {
|
||||
err.trace = Hoek.displayStack(1);
|
||||
}
|
||||
|
||||
err.data = data;
|
||||
err.response.payload.message = 'An internal server error occurred'; // Hide actual error from user
|
||||
|
||||
return err;
|
||||
};
|
||||
|
||||
|
||||
internals.Boom.passThrough = function (code, payload, contentType, headers) {
|
||||
|
||||
var err = new internals.Boom(500, 'Pass-through'); // 500 code is only used to initialize
|
||||
|
||||
err.data = {
|
||||
code: code,
|
||||
payload: payload,
|
||||
type: contentType
|
||||
};
|
||||
|
||||
err.response.code = code;
|
||||
err.response.type = contentType;
|
||||
err.response.headers = headers;
|
||||
err.response.payload = payload;
|
||||
|
||||
return err;
|
||||
};
|
||||
|
||||
|
32
node_modules/boom/package.json
generated
vendored
Executable file
32
node_modules/boom/package.json
generated
vendored
Executable file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"name": "boom",
|
||||
"description": "HTTP-friendly error objects",
|
||||
"version": "0.4.2",
|
||||
"author": "Eran Hammer <eran@hueniverse.com> (http://hueniverse.com)",
|
||||
"contributors": [],
|
||||
"repository": "git://github.com/spumko/boom",
|
||||
"main": "index",
|
||||
"keywords": [
|
||||
"error",
|
||||
"http"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"hoek": "0.9.x"
|
||||
},
|
||||
"devDependencies": {
|
||||
"lab": "0.1.x",
|
||||
"complexity-report": "0.x.x"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "make test-cov"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"type": "BSD",
|
||||
"url": "http://github.com/spumko/boom/raw/master/LICENSE"
|
||||
}
|
||||
]
|
||||
}
|
245
node_modules/boom/test/index.js
generated
vendored
Executable file
245
node_modules/boom/test/index.js
generated
vendored
Executable file
|
@ -0,0 +1,245 @@
|
|||
// Load modules
|
||||
|
||||
var Lab = require('lab');
|
||||
var Boom = require('../lib');
|
||||
|
||||
|
||||
// Declare internals
|
||||
|
||||
var internals = {};
|
||||
|
||||
|
||||
// Test shortcuts
|
||||
|
||||
var expect = Lab.expect;
|
||||
var before = Lab.before;
|
||||
var after = Lab.after;
|
||||
var describe = Lab.experiment;
|
||||
var it = Lab.test;
|
||||
|
||||
|
||||
describe('Boom', function () {
|
||||
|
||||
it('returns an error with info when constructed using another error', function (done) {
|
||||
|
||||
var error = new Error('ka-boom');
|
||||
error.xyz = 123;
|
||||
var err = new Boom(error);
|
||||
expect(err.data.xyz).to.equal(123);
|
||||
expect(err.message).to.equal('ka-boom');
|
||||
expect(err.response).to.deep.equal({
|
||||
code: 500,
|
||||
payload: {
|
||||
code: 500,
|
||||
error: 'Internal Server Error',
|
||||
message: 'ka-boom'
|
||||
},
|
||||
headers: {}
|
||||
});
|
||||
done();
|
||||
});
|
||||
|
||||
describe('#isBoom', function () {
|
||||
|
||||
it('returns true for Boom object', function (done) {
|
||||
|
||||
expect(Boom.badRequest().isBoom).to.equal(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it('returns false for Error object', function (done) {
|
||||
|
||||
expect(new Error().isBoom).to.not.exist;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#badRequest', function () {
|
||||
|
||||
it('returns a 400 error code', function (done) {
|
||||
|
||||
expect(Boom.badRequest().response.code).to.equal(400);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the message with the passed in message', function (done) {
|
||||
|
||||
expect(Boom.badRequest('my message').message).to.equal('my message');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#unauthorized', function () {
|
||||
|
||||
it('returns a 401 error code', function (done) {
|
||||
|
||||
var err = Boom.unauthorized();
|
||||
expect(err.response.code).to.equal(401);
|
||||
expect(err.response.headers).to.deep.equal({});
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the message with the passed in message', function (done) {
|
||||
|
||||
expect(Boom.unauthorized('my message').message).to.equal('my message');
|
||||
done();
|
||||
});
|
||||
|
||||
it('returns a WWW-Authenticate header when passed a scheme', function (done) {
|
||||
|
||||
var err = Boom.unauthorized('boom', 'Test');
|
||||
expect(err.response.code).to.equal(401);
|
||||
expect(err.response.headers['WWW-Authenticate']).to.equal('Test error="boom"');
|
||||
done();
|
||||
});
|
||||
|
||||
it('returns a WWW-Authenticate header when passed a scheme and attributes', function (done) {
|
||||
|
||||
var err = Boom.unauthorized('boom', 'Test', { a: 1, b: 'something', c: null, d: 0 });
|
||||
expect(err.response.code).to.equal(401);
|
||||
expect(err.response.headers['WWW-Authenticate']).to.equal('Test a="1", b="something", c="", d="0", error="boom"');
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the isMissing flag when error message is empty', function (done) {
|
||||
|
||||
var err = Boom.unauthorized('', 'Basic');
|
||||
expect(err.isMissing).to.equal(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it('does not set the isMissing flag when error message is not empty', function (done) {
|
||||
|
||||
var err = Boom.unauthorized('message', 'Basic');
|
||||
expect(err.isMissing).to.equal(undefined);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets a WWW-Authenticate when passed as an array', function (done) {
|
||||
|
||||
var err = Boom.unauthorized('message', ['Basic', 'Example e="1"', 'Another x="3", y="4"']);
|
||||
expect(err.response.headers['WWW-Authenticate']).to.equal('Basic, Example e="1", Another x="3", y="4"');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#clientTimeout', function () {
|
||||
|
||||
it('returns a 408 error code', function (done) {
|
||||
|
||||
expect(Boom.clientTimeout().response.code).to.equal(408);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the message with the passed in message', function (done) {
|
||||
|
||||
expect(Boom.clientTimeout('my message').message).to.equal('my message');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#serverTimeout', function () {
|
||||
|
||||
it('returns a 503 error code', function (done) {
|
||||
|
||||
expect(Boom.serverTimeout().response.code).to.equal(503);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the message with the passed in message', function (done) {
|
||||
|
||||
expect(Boom.serverTimeout('my message').message).to.equal('my message');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#forbidden', function () {
|
||||
|
||||
it('returns a 403 error code', function (done) {
|
||||
|
||||
expect(Boom.forbidden().response.code).to.equal(403);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the message with the passed in message', function (done) {
|
||||
|
||||
expect(Boom.forbidden('my message').message).to.equal('my message');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#notFound', function () {
|
||||
|
||||
it('returns a 404 error code', function (done) {
|
||||
|
||||
expect(Boom.notFound().response.code).to.equal(404);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the message with the passed in message', function (done) {
|
||||
|
||||
expect(Boom.notFound('my message').message).to.equal('my message');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#internal', function () {
|
||||
|
||||
it('returns a 500 error code', function (done) {
|
||||
|
||||
expect(Boom.internal().response.code).to.equal(500);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sets the message with the passed in message', function (done) {
|
||||
|
||||
var err = Boom.internal('my message');
|
||||
expect(err.message).to.equal('my message');
|
||||
expect(err.response.payload.message).to.equal('An internal server error occurred');
|
||||
done();
|
||||
});
|
||||
|
||||
it('passes data on the callback if its passed in', function (done) {
|
||||
|
||||
expect(Boom.internal('my message', { my: 'data' }).data.my).to.equal('data');
|
||||
done();
|
||||
});
|
||||
|
||||
it('uses passed in stack if its available', function (done) {
|
||||
|
||||
var error = new Error();
|
||||
error.stack = 'my stack line\nmy second stack line';
|
||||
expect(Boom.internal('my message', error).trace[0]).to.equal('my stack line');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#passThrough', function () {
|
||||
|
||||
it('returns a pass-through error', function (done) {
|
||||
|
||||
var err = Boom.passThrough(499, { a: 1 }, 'application/text', { 'X-Test': 'Boom' });
|
||||
expect(err.response.code).to.equal(499);
|
||||
expect(err.message).to.equal('Pass-through');
|
||||
expect(err.response).to.deep.equal({
|
||||
code: 499,
|
||||
payload: { a: 1 },
|
||||
headers: { 'X-Test': 'Boom' },
|
||||
type: 'application/text'
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#reformat', function () {
|
||||
|
||||
it('encodes any HTML markup in the response payload', function (done) {
|
||||
|
||||
var boom = new Boom(new Error('<script>alert(1)</script>'));
|
||||
expect(boom.response.payload.message).to.not.contain('<script>');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue