diff --git a/example/custom_service/index.js b/example/custom_service/index.js index 9cb0374172..eaefd0dafa 100644 --- a/example/custom_service/index.js +++ b/example/custom_service/index.js @@ -14,7 +14,7 @@ var users = [ ]; var service = { - index : function (params, cb) { + find: function (params, cb) { cb(null, users); }, diff --git a/example/rest_memory/index.js b/example/rest_memory/index.js index fbb49868b5..5e88072d0f 100644 --- a/example/rest_memory/index.js +++ b/example/rest_memory/index.js @@ -1,6 +1,6 @@ var feathers = require('../../lib/feathers'); var Proto = require('uberproto'); -var memoryService = feathers.memory(); +var memoryService = feathers.service.memory(); var express = require('express'); feathers.createServer({ port: 3000 }) diff --git a/lib/mixins/event.js b/lib/mixins/event.js index 77f6fbaf84..5a435a409e 100644 --- a/lib/mixins/event.js +++ b/lib/mixins/event.js @@ -13,7 +13,7 @@ var eventMappings = { * * @type {{setup: Function}} */ -var Mixin = { +var EventMixin = { setup: function() { var emitter = this._rubberDuck = rubberduck.emitter(this); var self = this; @@ -47,7 +47,7 @@ var Mixin = { // Add EventEmitter prototype methods (if they don't already exist) _.each(EventEmitter.prototype, function(fn, name) { - Mixin[name] = function() { + EventMixin[name] = function() { if(this._super) { return this._super.apply(this, arguments); } @@ -55,4 +55,8 @@ _.each(EventEmitter.prototype, function(fn, name) { } }); -module.exports = Mixin; +module.exports = function(service) { + service.mixin && service.mixin(EventMixin); +}; + +module.exports.Mixin = EventMixin; diff --git a/lib/mixins/index.js b/lib/mixins/index.js index bc4ae63d06..56c6a3bb19 100644 --- a/lib/mixins/index.js +++ b/lib/mixins/index.js @@ -1,5 +1,4 @@ -exports.Event = require('./event'); -exports.Validation = require('./validation'); - -// TODO exports.Association = require('./association'); -// TODO exports.Authentication = require('./authentication'); +module.exports = [ + require('./event'), + require('./validation') +]; diff --git a/lib/mixins/validation.js b/lib/mixins/validation.js index 41f917fcfb..e367a4e67e 100644 --- a/lib/mixins/validation.js +++ b/lib/mixins/validation.js @@ -1,7 +1,7 @@ var _ = require('underscore'); var ValidationError = require('../errors').ValidationError; -module.exports = { +var ValidationMixin = { create: function(data, params, cb) { var self = this; this.validate(data, _.extend({ validates: 'create' }, params), function(errors) { @@ -22,3 +22,11 @@ module.exports = { }); } }; + +module.exports = function(service) { + if(typeof service.validate === 'function' && service.mixin) { + service.mixin(ValidationMixin); + } +}; + +module.exports.Mixin = ValidationMixin; \ No newline at end of file diff --git a/lib/server.js b/lib/server.js index 6a63ba989b..421c7dbbe9 100644 --- a/lib/server.js +++ b/lib/server.js @@ -20,16 +20,7 @@ var Server = Proto.extend({ methods: [ 'find', 'get', 'create', 'update', 'destroy' ], // Mixins to add when registering a service. // An array of functions that get passed the service object and can do something with it. - mixins: [ - function(service) { - service.mixin && service.mixin(mixins.Event); - }, - function(service) { - if(typeof service.validate === 'function' && service.mixin) { - service.mixin(mixins.Validation); - } - } - ] + mixins: mixins }); this.services = {}; @@ -73,7 +64,7 @@ var Server = Proto.extend({ return this.config.app.get(setting); }, - service: function (location, service, options) { + service: function (location, service) { var protoService = Proto.extend(service); // Add all the mixins diff --git a/test/mixins/event.test.js b/test/mixins/event.test.js index 2d1d22fd19..446df0adb3 100644 --- a/test/mixins/event.test.js +++ b/test/mixins/event.test.js @@ -1,7 +1,8 @@ var assert = require('assert'); var _ = require('underscore'); var Proto = require('uberproto'); -var EventMixin = require('../../lib/mixins/event'); +var mixinEvent = require('../../lib/mixins/event'); +var EventMixin = mixinEvent.Mixin; describe('Event mixin', function () { it('initializes', function () { @@ -11,7 +12,7 @@ describe('Event mixin', function () { } }); - FixtureService.mixin(EventMixin); + mixinEvent(FixtureService); assert.equal(typeof FixtureService.setup, 'function'); assert.equal(typeof FixtureService.on, 'function'); @@ -27,7 +28,7 @@ describe('Event mixin', function () { }, emit: function() { - return 'Original emit' + return 'Original emit'; } } @@ -47,7 +48,7 @@ describe('Event mixin', function () { } }); - FixtureService.mixin(EventMixin); + mixinEvent(FixtureService); var instance = Proto.create.call(FixtureService); instance.setup(); @@ -75,7 +76,7 @@ describe('Event mixin', function () { } }); - FixtureService.mixin(EventMixin); + mixinEvent(FixtureService); var instance = Proto.create.call(FixtureService); instance.setup(); @@ -103,7 +104,7 @@ describe('Event mixin', function () { } }); - FixtureService.mixin(EventMixin); + mixinEvent(FixtureService); var instance = Proto.create.call(FixtureService); instance.setup(); @@ -128,7 +129,7 @@ describe('Event mixin', function () { } }); - FixtureService.mixin(EventMixin); + mixinEvent(FixtureService); var instance = Proto.create.call(FixtureService); instance.setup(); diff --git a/test/mixins/validations.test.js b/test/mixins/validations.test.js index 619b484f9a..40ee26b9a2 100644 --- a/test/mixins/validations.test.js +++ b/test/mixins/validations.test.js @@ -2,7 +2,7 @@ var assert = require('assert'); var _ = require('underscore'); var Proto = require('uberproto'); var errors = require('../../lib/errors'); -var ValidationMixin = require('../../lib/mixins/validation'); +var mixinValidation = require('../../lib/mixins/validation'); describe('Validation mixin', function () { it('initializes', function () { @@ -17,7 +17,7 @@ describe('Validation mixin', function () { } }); - ValidationService.mixin(ValidationMixin); + mixinValidation(ValidationService); assert.equal(typeof ValidationService.create, 'function'); assert.equal(typeof ValidationService.update, 'function'); @@ -58,7 +58,7 @@ describe('Validation mixin', function () { } }); - ValidationService.mixin(ValidationMixin); + mixinValidation(ValidationService); var instance = Proto.create.call(ValidationService); instance.create({ name: 'Tester' }, {}, function(error, data) { @@ -96,7 +96,7 @@ describe('Validation mixin', function () { } }); - ValidationService.mixin(ValidationMixin); + mixinValidation(ValidationService); var instance = Proto.create.call(ValidationService); instance.update(14, { name: 'Tester' }, {}, function(error, data) {