index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _server = require('./server');
  6. var _server2 = _interopRequireDefault(_server);
  7. var _client = require('./client');
  8. var _client2 = _interopRequireDefault(_client);
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  10. var debug = require('debug')('tinylr');
  11. // Need to keep track of LR servers when notifying
  12. var servers = [];
  13. exports.default = tinylr;
  14. // Expose Server / Client objects
  15. tinylr.Server = _server2.default;
  16. tinylr.Client = _client2.default;
  17. // and the middleware helpers
  18. tinylr.middleware = middleware;
  19. tinylr.changed = changed;
  20. // Main entry point
  21. function tinylr(opts) {
  22. var srv = new _server2.default(opts);
  23. servers.push(srv);
  24. return srv;
  25. }
  26. // A facade to Server#handle
  27. function middleware(opts) {
  28. var srv = new _server2.default(opts);
  29. servers.push(srv);
  30. return function tinylr(req, res, next) {
  31. srv.handler(req, res, next);
  32. };
  33. }
  34. // Changed helper, helps with notifying the server of a file change
  35. function changed(done) {
  36. var files = [].slice.call(arguments);
  37. if (typeof files[files.length - 1] === 'function') done = files.pop();
  38. done = typeof done === 'function' ? done : function () {};
  39. debug('Notifying %d servers - Files: ', servers.length, files);
  40. servers.forEach(function (srv) {
  41. var params = { params: { files: files } };
  42. srv && srv.changed(params);
  43. });
  44. done();
  45. }
  46. module.exports = exports['default'];