123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- "use strict";
- var messages = require("./connect-utils");
- var utils = require("./utils");
- var _ = require("./lodash.custom");
- var template = "[{blue:%s}] ";
- var logger = require("eazy-logger").Logger({
- useLevelPrefixes: false
- });
- module.exports.logger = logger;
- /**
- * @param name
- * @returns {*}
- */
- module.exports.getLogger = function (name) {
- return logger.clone(function (config) {
- config.prefix = config.prefix + template.replace("%s", name);
- return config;
- });
- };
- /**
- * Logging Callbacks
- */
- module.exports.callbacks = {
- /**
- * Log when file-watching has started
- * @param {BrowserSync} bs
- * @param data
- */
- "file:watching": function (bs, data) {
- if (Object.keys(data).length) {
- logger.info("Watching files...");
- }
- },
- /**
- * Log when a file changes
- * @param {BrowserSync} bs
- * @param data
- */
- "file:reload": function (bs, data) {
- if (canLogFileChange(bs, data)) {
- if (data.path[0] === "*") {
- return logger.info("{cyan:Reloading files that match: {magenta:%s", data.path);
- }
- logger.info("{cyan:File event [" + data.event + "] : {magenta:%s", data.path);
- }
- },
- /**
- *
- */
- "service:exit": function () {
- logger.debug("Exiting...");
- },
- /**
- *
- */
- "browser:reload": function (bs, data = {}) {
- if (canLogFileChange(bs)) {
- if (data.files && data.files.length > 1) {
- return logger.info(`{cyan:Reloading Browsers... (buffered ${data.files.length} events)`);
- }
- logger.info("{cyan:Reloading Browsers...");
- }
- },
- /**
- *
- */
- "browser:error": function () {
- logger.error("Couldn't open browser (if you are using BrowserSync in a headless environment, you might want to set the {cyan:open} option to {cyan:false})");
- },
- /**
- * @param {BrowserSync} bs
- * @param data
- */
- "stream:changed": function (bs, data) {
- if (canLogFileChange(bs)) {
- var changed = data.changed;
- logger.info("{cyan:%s %s changed} ({magenta:%s})", changed.length, changed.length > 1 ? "files" : "file", changed.join(", "));
- }
- },
- /**
- * Client connected logging
- * @param {BrowserSync} bs
- * @param data
- */
- "client:connected": function (bs, data) {
- var uaString = utils.getUaString(data.ua);
- var msg = "{cyan:Browser Connected: {magenta:%s, version: %s}";
- var method = "info";
- if (!bs.options.get("logConnections")) {
- method = "debug";
- }
- logger.log(method, msg, uaString.name, uaString.version);
- },
- /**
- * Main logging when the service is running
- * @param {BrowserSync} bs
- * @param data
- */
- "service:running": function (bs, data) {
- const type = data.type;
- if (bs.options.get("json")) {
- return console.log(JSON.stringify({
- "service:running": {
- options: bs.options.toJS()
- }
- }));
- }
- if (type === "server") {
- var baseDir = bs.options.getIn(["server", "baseDir"]);
- logUrls(bs.options.get("urls").toJS());
- if (baseDir) {
- if (utils.isList(baseDir)) {
- baseDir.forEach(serveFiles);
- }
- else {
- serveFiles(baseDir);
- }
- }
- }
- if (type === "proxy") {
- logger.info("Proxying: {cyan:%s}", bs.options.getIn(["proxy", "target"]));
- logUrls(bs.options.get("urls").toJS());
- }
- if (type === "snippet") {
- if (bs.options.get("logSnippet")) {
- logger.info("{bold:Copy the following snippet into your website, " +
- "just before the closing {cyan:</body>} tag");
- logger.unprefixed("info", messages.scriptTags(bs.options));
- }
- logUrls(bs.options
- .get("urls")
- .filter(function (value, key) {
- return key.slice(0, 2) === "ui";
- })
- .toJS());
- }
- function serveFiles(base) {
- logger.info("Serving files from: {magenta:%s}", base);
- }
- }
- };
- /**
- * Plugin interface for BrowserSync
- * @param {EventEmitter} emitter
- * @param {BrowserSync} bs
- * @returns {Object}
- */
- module.exports.plugin = function (emitter, bs) {
- var logPrefix = bs.options.get("logPrefix");
- var logLevel = bs.options.get("logLevel");
- // Should set logger level here!
- logger.setLevel(logLevel);
- if (logPrefix) {
- if (_.isFunction(logPrefix)) {
- logger.setPrefix(logPrefix);
- }
- else {
- logger.setPrefix(template.replace("%s", logPrefix));
- }
- }
- _.each(exports.callbacks, function (func, event) {
- emitter.on(event, func.bind(this, bs));
- });
- return logger;
- };
- /**
- *
- * @param urls
- */
- function logUrls(urls) {
- var keys = Object.keys(urls);
- var longestName = 0;
- var longesturl = 0;
- var offset = 2;
- if (!keys.length) {
- return;
- }
- var names = keys.map(function (key) {
- if (key.length > longestName) {
- longestName = key.length;
- }
- if (urls[key].length > longesturl) {
- longesturl = urls[key].length;
- }
- return key;
- });
- var underline = getChars(longestName + offset + longesturl + 1, "-");
- var underlined = false;
- logger.info("{bold:Access URLs:");
- logger.unprefixed("info", "{grey: %s", underline);
- keys.forEach(function (key, i) {
- var keyname = getKeyName(key);
- logger.unprefixed("info", " %s: {magenta:%s}", getPadding(key.length, longestName + offset) + keyname, urls[key]);
- if (!underlined && names[i + 1] && names[i + 1].indexOf("ui") > -1) {
- underlined = true;
- logger.unprefixed("info", "{grey: %s}", underline);
- }
- });
- logger.unprefixed("info", "{grey: %s}", underline);
- }
- /**
- * @param {Number} len
- * @param {Number} max
- * @returns {string}
- */
- function getPadding(len, max) {
- return new Array(max - (len + 1)).join(" ");
- }
- /**
- * @param {Number} len
- * @param {String} char
- * @returns {string}
- */
- function getChars(len, char) {
- return new Array(len).join(char);
- }
- /**
- * Transform url-key names into something more presentable
- * @param key
- * @returns {string}
- */
- function getKeyName(key) {
- if (key.indexOf("ui") > -1) {
- if (key === "ui") {
- return "UI";
- }
- if (key === "ui-external") {
- return "UI External";
- }
- }
- return key.substr(0, 1).toUpperCase() + key.substring(1);
- }
- /**
- * Determine if file changes should be logged
- * @param bs
- * @param data
- * @returns {boolean}
- */
- function canLogFileChange(bs, data) {
- if (data && data.log === false) {
- return false;
- }
- return bs.options.get("logFileChanges");
- }
- //# sourceMappingURL=logger.js.map
|