UNPKG

1.95 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const debug_1 = __importDefault(require("debug"));
7const common_1 = require("@boost/common");
8const internal_1 = require("@boost/internal");
9const constants_1 = require("./constants");
10function createDebugger(namespace) {
11 const globalNamespace = process.env.BOOST_DEBUG_GLOBAL_NAMESPACE;
12 const namespaces = common_1.toArray(namespace);
13 if (globalNamespace) {
14 namespaces.unshift(globalNamespace);
15 }
16 const mainNamespace = namespaces.join(':');
17 constants_1.debug('New debugger created');
18 constants_1.debug(' Namespace: %s', mainNamespace);
19 constants_1.debug(' Global namespace: %s', globalNamespace);
20 constants_1.debug(' Verbose enabled: %s', process.env.BOOST_DEBUG_VERBOSE);
21 const logger = debug_1.default(mainNamespace);
22 // `debug` doesn't support this on an individual namespace basis,
23 // so we have to manually support it using this hacky regex.
24 logger.disable = () => {
25 constants_1.debug('Debugger %s disabled', mainNamespace);
26 process.env.DEBUG = (process.env.DEBUG || '')
27 .replace(new RegExp(`${logger.namespace}(:\\*)?`, 'u'), '')
28 .replace(/(^,)|(,$)/u, '')
29 .replace(',,', ',');
30 };
31 logger.enable = () => {
32 constants_1.debug('Debugger %s enabled', mainNamespace);
33 debug_1.default.enable(mainNamespace);
34 };
35 logger.invariant = (condition, message, pass, fail) => {
36 logger('%s: %s', message, condition ? internal_1.color.pass(pass) : internal_1.color.fail(fail));
37 };
38 logger.verbose = (message, ...args) => {
39 if (process.env.BOOST_DEBUG_VERBOSE) {
40 logger(message, ...args);
41 }
42 };
43 return logger;
44}
45exports.default = createDebugger;