mirror of
https://github.com/sstent/node.git
synced 2026-01-27 23:51:45 +00:00
updated app
This commit is contained in:
75
first-project/node_modules/derby/lib/refresh.server.js
generated
vendored
Normal file
75
first-project/node_modules/derby/lib/refresh.server.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
var isProduction = require('racer').util.isProduction
|
||||
, files = require('./files')
|
||||
, refresh = module.exports = require('./refresh');
|
||||
|
||||
refresh.cssError = cssError;
|
||||
refresh.templateError = templateError;
|
||||
refresh.autoRefresh = autoRefresh;
|
||||
|
||||
function cssError(err) {
|
||||
if (err.stack) {
|
||||
console.error('\nCSS PARSE ERROR\n' + err.stack);
|
||||
return err.stack;
|
||||
} else {
|
||||
console.error('\nCSS PARSE ERROR\n' + err.message + '\n' + err.filename);
|
||||
return err.message + '\n' + err.filename;
|
||||
}
|
||||
}
|
||||
|
||||
function templateError(err) {
|
||||
console.error('\nTEMPLATE ERROR\n' + err.stack);
|
||||
return err.stack;
|
||||
}
|
||||
|
||||
function autoRefresh(store, options, view) {
|
||||
if (isProduction || store._derbySocketsSetup) return;
|
||||
store._derbySocketsSetup = true;
|
||||
var listeners = {};
|
||||
|
||||
store.sockets.on('connection', function(socket) {
|
||||
socket.on('derbyClient', function(appHash, callback) {
|
||||
var appFilename, reload, sockets;
|
||||
reload = appHash !== view._appHash;
|
||||
callback(reload);
|
||||
if (reload) return;
|
||||
|
||||
appFilename = view._appFilename;
|
||||
if (listeners[appFilename]) {
|
||||
return listeners[appFilename].push(socket);
|
||||
}
|
||||
|
||||
sockets = listeners[appFilename] = [socket];
|
||||
addWatches(appFilename, options, sockets, view);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function addWatches(appFilename, options, sockets, view) {
|
||||
var parsed = files.parseName(appFilename, options)
|
||||
, root = parsed.root
|
||||
, clientName = parsed.clientName;
|
||||
|
||||
files.watch(root, 'css', function() {
|
||||
view._loadCss(root, clientName, function(err, css) {
|
||||
var errText;
|
||||
if (err) errText = cssError(err);
|
||||
for (var i = sockets.length; i--;) {
|
||||
sockets[i].emit('refreshCss', errText, css);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
files.watch(root, 'html', function() {
|
||||
view._loadTemplates(root, clientName, function(err, templates, instances, libraryData) {
|
||||
var errText;
|
||||
if (err) errText = templateError(err);
|
||||
for (var i = sockets.length; i--;) {
|
||||
sockets[i].emit('refreshHtml', errText, templates, instances, libraryData);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
files.watch(root, 'js', function() {
|
||||
process.send({type: 'reload'});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user