1234567891011121314151617181920212223242526272829303132333435363738394041 |
- '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;
|