91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| var __read = (this && this.__read) || function (o, n) {
 | |
|     var m = typeof Symbol === "function" && o[Symbol.iterator];
 | |
|     if (!m) return o;
 | |
|     var i = m.call(o), r, ar = [], e;
 | |
|     try {
 | |
|         while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
 | |
|     }
 | |
|     catch (error) { e = { error: error }; }
 | |
|     finally {
 | |
|         try {
 | |
|             if (r && !r.done && (m = i["return"])) m.call(i);
 | |
|         }
 | |
|         finally { if (e) throw e.error; }
 | |
|     }
 | |
|     return ar;
 | |
| };
 | |
| var __spread = (this && this.__spread) || function () {
 | |
|     for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
 | |
|     return ar;
 | |
| };
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| var fs_1 = require("fs");
 | |
| var path_1 = require("path");
 | |
| var cache_getters_1 = require("../utils/cache-getters");
 | |
| var level_1 = require("./level");
 | |
| var message_1 = require("./message");
 | |
| var logTargetWithLevelRegex = new RegExp("^\\s*(.+):([0-9]+|" + level_1.LogLevelNames.join('|') + ")\\s*$", 'i');
 | |
| var parseLogTargets = function (targetString) {
 | |
|     var items = (targetString || '').split(/([^\\]),/g).reduce(function (list, item, index) {
 | |
|         if (index % 2 === 1) {
 | |
|             list[list.length - 1] += item;
 | |
|         }
 | |
|         else {
 | |
|             list.push(item);
 | |
|         }
 | |
|         return list;
 | |
|     }, []);
 | |
|     return items.reduce(function (targets, str) {
 | |
|         var format;
 | |
|         str = str.replace(/^(.+)%([a-z_][a-z0-9_]*)$/, function (_, before, key) {
 | |
|             format = message_1.LogFormatters[key];
 | |
|             return before;
 | |
|         });
 | |
|         var pieces = str.match(logTargetWithLevelRegex);
 | |
|         var file;
 | |
|         var level;
 | |
|         if (pieces) {
 | |
|             file = pieces[1].trim();
 | |
|             level = pieces[2].trim();
 | |
|         }
 | |
|         else {
 | |
|             file = str.trim();
 | |
|         }
 | |
|         var append = file.endsWith('+');
 | |
|         if (append) {
 | |
|             file = file.slice(0, -1).trim();
 | |
|         }
 | |
|         file = file.replace(/\\,/g, ',');
 | |
|         if (!file) {
 | |
|             return targets;
 | |
|         }
 | |
|         var isStandardFd = /^(stdout|stderr)$/i.test(file);
 | |
|         if (format == null) {
 | |
|             format = isStandardFd ? message_1.LogFormatters.simple : message_1.LogFormatters.json;
 | |
|         }
 | |
|         var target = cache_getters_1.cacheGetters({
 | |
|             format: format,
 | |
|             get minLevel() {
 | |
|                 return level_1.parseLogLevel(level) || -Infinity;
 | |
|             },
 | |
|             get stream() {
 | |
|                 if (isStandardFd) {
 | |
|                     return process[file.toLowerCase()];
 | |
|                 }
 | |
|                 else {
 | |
|                     return fs_1.createWriteStream(path_1.resolve(process.cwd(), file), {
 | |
|                         flags: append ? 'a' : 'w',
 | |
|                         autoClose: true,
 | |
|                         encoding: 'utf8',
 | |
|                     });
 | |
|                 }
 | |
|             },
 | |
|         }, 'minLevel', 'stream');
 | |
|         return __spread(targets, [target]);
 | |
|     }, []);
 | |
| };
 | |
| exports.parseLogTargets = parseLogTargets;
 | |
| var DEFAULT_LOG_TARGET = "stderr:" + level_1.LogLevels.warn;
 | |
| exports.DEFAULT_LOG_TARGET = DEFAULT_LOG_TARGET;
 |