spincycle
Version:
A reactive message router and object manager that lets clients subscribe to object property changes on the server
136 lines (117 loc) • 4.44 kB
JavaScript
// Generated by CoffeeScript 1.12.6
(function() {
var ResolveModule, debug, defer, dirname,
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
defer = require('node-promise').defer;
debug = process.env["DEBUG"];
if (debug) {
console.log('resolvemodule dirname is ' + __dirname);
}
if (debug) {
console.log(__dirname);
}
dirname = __dirname.substring(0, __dirname.indexOf('/node_modules'));
if (__dirname.indexOf('node_modules') === -1) {
dirname = '..';
}
if (debug) {
console.log('starting module resolving from path ' + dirname);
}
ResolveModule = (function() {
ResolveModule.modulecache = [];
ResolveModule.modulepathcache = [];
function ResolveModule() {
this.createObjectFrom = bind(this.createObjectFrom, this);
this.resolve = bind(this.resolve, this);
if (debug) {
console.log("+++ new ResolveModule created ++");
}
process.on('resolvemodule', (function(_this) {
return function(name, cb) {
return _this.resolve(name, cb);
};
})(this));
}
ResolveModule.prototype.resolve = function(name, cb) {
var finder, rv;
rv = ResolveModule.modulepathcache[name];
if (rv) {
return cb(rv);
} else {
if (!name) {
throw new Error('ResolveModule was given an undefined type to resolve!!!');
}
finder = require('findit')(dirname);
finder.on('file', function(origfile) {
var coffeecheck, file;
file = "" + origfile;
if (file.indexOf('node_modules') === -1 && file.indexOf('.csv') === -1 && file.indexOf('bower_components') === -1 && file.indexOf('.zip') === -1 && file.indexOf('.gz') === -1) {
if (file.indexOf('/') > -1) {
file = file.substring(file.lastIndexOf('/') + 1, file.length);
}
if (file.indexOf('.') > -1) {
file = file.substring(0, file.indexOf('.'));
}
if (process.env['CHECK_COFFEE']) {
coffeecheck = origfile.indexOf('.coffee') > -1;
} else {
coffeecheck = origfile.indexOf('.coffee') === -1;
}
if (file === name && (origfile.indexOf('.js') > -1 || coffeecheck) && origfile.indexOf('.map') === -1 && origfile.indexOf('.dump') === -1) {
rv = origfile;
ResolveModule.modulepathcache[name] = rv;
finder.stop();
return cb(rv);
} else {
}
}
});
finder.on('end', function() {});
finder.on('error', function() {});
console.log('SpinCycle ResolveModule: Filesystem finder ERROR for "');
return console.dir(arguments);
}
};
ResolveModule.prototype.createObjectFrom = function(record) {
var module, o, q;
q = defer();
if (!record || (record[0] && (record[0] === null) || record[0] === 'null')) {
if (debug) {
console.log('ResolveModule.createObjectFrom ++++++++++++++!!!!!!!!!!!!!!!!!!! NULL RECORD!!');
}
q.resolve(null);
} else {
if (!record[0]) {
record = [record];
}
module = ResolveModule.modulecache[record[0].type];
if (module) {
o = Object.create(module.prototype);
o._rev = record._rev;
o.constructor(record[0]).then(function(finishedobj) {
return q.resolve(finishedobj);
});
} else {
console.log('ResolveModule could not find module ' + record[0].type + ' in cache!');
console.dir(ResolveModule.modulecache);
this.resolve(record[0].type, function(filename) {
if (debug) {
console.log('ResolveModule resolved module ' + record[0].type + " as " + filename);
}
module = ResolveModule.modulecache[record[0].type] || require(filename.replace('.js', ''));
ResolveModule.modulecache[record[0].type] = module;
o = Object.create(module.prototype);
o._rev = record._rev;
return o.constructor(record[0]).then(function(finishedobj) {
return q.resolve(finishedobj);
});
});
}
}
return q;
};
return ResolveModule;
})();
module.exports = ResolveModule;
}).call(this);
//# sourceMappingURL=ResolveModule.js.map