fastify
Version:
Fast and low overhead web framework, for Node.js
69 lines (56 loc) • 1.48 kB
JavaScript
function decorate (name, fn, dependencies) {
if (checkExistence(this, name)) {
throw new Error(`The decorator '${name}' has been already added!`)
}
if (dependencies) {
checkDependencies(this, dependencies)
}
this[name] = fn
return this
}
function checkExistence (instance, name) {
if (!name) {
name = instance
instance = this
}
return name in instance
}
function checkDependencies (instance, deps) {
if (!deps) {
deps = instance
instance = this
}
for (var i = 0; i < deps.length; i++) {
if (!checkExistence(instance, deps[i])) {
throw new Error(`Fastify decorator: missing dependency: '${deps[i]}'.`)
}
}
}
function decorateReply (name, fn, dependencies) {
if (checkExistence(this._Reply, name)) {
throw new Error(`The decorator '${name}' has been already added to Reply!`)
}
if (dependencies) {
checkDependencies(this._Reply, dependencies)
}
this._Reply.prototype[name] = fn
return this
}
function decorateRequest (name, fn, dependencies) {
if (checkExistence(this._Request, name)) {
throw new Error(`The decorator '${name}' has been already added to Request!`)
}
if (dependencies) {
checkDependencies(this._Request, dependencies)
}
this._Request.prototype[name] = fn
return this
}
module.exports = {
add: decorate,
exist: checkExistence,
dependencies: checkDependencies,
decorateReply: decorateReply,
decorateRequest: decorateRequest
}