1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const debug_1 = __importDefault(require("debug"));
|
7 | const common_1 = require("@boost/common");
|
8 | const internal_1 = require("@boost/internal");
|
9 | const constants_1 = require("./constants");
|
10 | function 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 |
|
23 |
|
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 | }
|
45 | exports.default = createDebugger;
|