A simple framework with functional tools for koa.
const kk = require('koa-kit');
const app = kk();
app.listen();
const app = kk({
body: {formidable: {uploadDir: path.join(__dirname, '..', 'public/upload')}}, // <- by default, see https://github.com/dlau/koa-body
error: undefined, // <- by default, see https://github.com/zedgu/koa-http-errors
csrf: undefined, // <- by default, false for not setting, see https://github.com/pillarjs/csrf
xss: '1; mode=block', // <- by default, false for not setting
xtype: 'nosniff', // <- by default, false for not setting
xframe: 'SAMEORIGIN', // <- by default, false for not setting
hsts: false, // <- by default, true for set('Strict-Transport-Security', 'max-age=7776000; includeSubDomains'). But setting this in nginx is better.
context: true, // <- by default, false for not using
etag: true, // <- by default, false for not using
logger: true, // <- by default, false for not using, only for 'development' env
debug: 'koa:kit', // <- by default, name for debug (https://www.npmjs.com/package/debug)
assertOK: 'assertOK', // <- by default, false for not using, see APIs - ctx.assertOK
assertEqual: 'assertEqual' // <- by default, false for not using, see APIs - ctx.assertEqual
assertQuery: 'assertQuery' // <- by default, false for not using, see APIs - ctx.assertQuery
});
#### Deprecatedapp.listen([port], [callback], [onException]);
port: 9030 by default, or set process.env.PORT;callback: call by http.Server.listen;onException: handler for Event: 'uncaughtException'.
####app.listen();
- Same as
koa.listen
;
####ctx.assertOK(value[, statusCode][, statusMeassage][, errorProperties])
Just like the ctx.assert, but throw error when value instanceof Error
;
####ctx.assertEqual(actual, expected[, statusCode][, statusMeassage][, errorProperties])
Throw HTTPError
if actual
is not match the type or value of expected
.
- actual: required, throw error when it is undefined;
- expected:
- RegExp
- return expected.test(actual)
- Function
- return expected(actual);
- expected must return a Boolean.
- Object
- Wrapper Object, check the type of the actual. (For example,
{userName: String, age: Number}
.) - Normal Object, deeply checking by
expected
. (For example,{userName: 'abc', age: 18, address: /^No\./i}
.)
- Wrapper Object, check the type of the actual. (For example,
- RegExp
var obj = {
userName: 'abc',
age: 18,
address: 'No.123 xyz Road.'
};
this.assertEqual(obj.age, 19);
// => HTTPError, 18 != 19
this.assertEqual(obj.address, /^No\./i);
// => true, /^No\./i.test('No.123 xyz Road.')
this.assertEqual(obj, {userName: String, age: Number});
// => Do nothing, type matched.
// String, Number, Array, Object, Boolean, Function
this.assertEqual(obj, {userName: 'abc', age: '18', address: /^No\./i});
// => HTTPError, using Strict Equal, 18 !== '18'.
this.assertEqual(obj, {userName: 'abc', age: function (value){ return value > 17 && value < 25; }});
// => Do nothing, age function return true.
####ctx.assertQuery(actual, expected[, statusCode][, statusMeassage][, errorProperties])
Almost the same as ctx.assertEqual
, but:
- actual:
- undefined
- return HTTP 400 by default
- undefined
- expected:
- String
- Tests required properties when actual is an object, property names should set off by ONE
"userName aget"
.)
- Tests required properties when actual is an object, property names should set off by ONE
- String
var obj = {
userName: 'abc',
age: 18,
address: 'No.123 xyz Road.'
};
this.assertEqual(obj, 'userName age');
// => Do nothing.
this.assertEqual(obj, 'userName fullName');
// => HTTPError, fullName was missing.