"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.inDebugMode = exports.debugMode = exports.debugSpinner = exports.debug = exports.info = exports.warn = exports.fail = exports.succeed = exports.getSpinner = void 0;
const ora = __importStar(require("ora"));
let debugModeFlag = false;
const dummySpinner = Object.assign(Object.assign({}, ora.default()), { start: (_text) => dummySpinner, stop: () => dummySpinner, succeed: (_text) => dummySpinner, fail: (_text) => dummySpinner, warn: (_text) => dummySpinner, info: (_text) => dummySpinner, stopAndPersist: (_options) => dummySpinner, frame: () => '', clear: () => dummySpinner, render: () => dummySpinner });
let spinner;
function getSpinner() {
    if (spinner)
        return spinner;
    spinner = oraInstance();
    return spinner;
}
exports.getSpinner = getSpinner;
function oraInstance(text) {
    return debugModeFlag ? ora.default({ text, prefixText: () => new Date().toISOString() }) : ora.default(text);
}
function succeed(text) {
    oraInstance().succeed(text);
}
exports.succeed = succeed;
function fail(text) {
    oraInstance().fail(text);
}
exports.fail = fail;
function warn(text) {
    oraInstance().warn(text);
}
exports.warn = warn;
function info(text) {
    oraInstance().info(text);
}
exports.info = info;
function debug(text) {
    if (debugModeFlag)
        oraInstance().info(text);
}
exports.debug = debug;
function debugSpinner(text) {
    return debugModeFlag ? getSpinner().info(text) : dummySpinner;
}
exports.debugSpinner = debugSpinner;
function debugMode(mode) {
    debugModeFlag = mode;
}
exports.debugMode = debugMode;
function inDebugMode() {
    return debugModeFlag;
}
exports.inDebugMode = inDebugMode;
//# sourceMappingURL=logger.js.map