tribe
Version:
Tribe is a platform for building rich, powerful, highly scalable distributed HTML5 web and mobile systems.
35 lines (30 loc) • 1.26 kB
JavaScript
var repository = require('./repository'),
facetModule = require('tribe.pubsub/facet'),
_ = require('underscore');
var api = module.exports = {
register: repository.register,
definition: repository.definition,
indexes: function (scopes) {
// deprecated - facets no longer specify their own scope
var indexes = _.unique(_.reduce(repository.facets, function (indexes, facet) {
var expression = repository.definition(facet.path).expression;
if (expression)
if (expression.constructor === Array) {
if (expression.length > 0)
indexes.push.apply(indexes, _.pluck(expression, 'p'));
} else
indexes.push(expression.p);
return indexes;
}, []));
if(scopes)
indexes = indexes.concat(scopes.map(function (scope) {
return 'data.' + scope;
}));
return indexes;
},
create: function (pubsub, path, scope, dependencies) {
var constructor = repository.facet(path).constructor;
return new facetModule(pubsub, constructor, scope, dependencies);
}
};
require('./extensions')(api);