You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
'use strict'; |
|
|
|
var assert = require('assert'); |
|
|
|
function isFunction(fn) { |
|
return typeof fn === 'function'; |
|
} |
|
|
|
function isConstructor(registry) { |
|
if (!(registry && registry.prototype)) { |
|
return false; |
|
} |
|
|
|
var hasProtoGet = isFunction(registry.prototype.get); |
|
var hasProtoSet = isFunction(registry.prototype.set); |
|
var hasProtoInit = isFunction(registry.prototype.init); |
|
var hasProtoTasks = isFunction(registry.prototype.tasks); |
|
|
|
if (hasProtoGet || hasProtoSet || hasProtoInit || hasProtoTasks) { |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
function validateRegistry(registry) { |
|
try { |
|
assert(isFunction(registry.get), 'Custom registry must have `get` function'); |
|
assert(isFunction(registry.set), 'Custom registry must have `set` function'); |
|
assert(isFunction(registry.init), 'Custom registry must have `init` function'); |
|
assert(isFunction(registry.tasks), 'Custom registry must have `tasks` function'); |
|
} catch (err) { |
|
if (isConstructor(registry)) { |
|
assert(false, 'Custom registries must be instantiated, but it looks like you passed a constructor'); |
|
} else { |
|
throw err; |
|
} |
|
} |
|
} |
|
|
|
module.exports = validateRegistry;
|
|
|