"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultCommandValues = exports.DefaultCommandOptions = void 0;
/**
 * @description Default command options for CLI commands.
 * @summary Defines the structure and default values for common command-line options used across various CLI commands.
 * @const DefaultCommandOptions
 * @typedef {Object} DefaultCommandOptions
 * @property {Object} verbose - Verbosity level option.
 * @property {string} verbose.type - The type of the verbose option (number).
 * @property {string} verbose.short - The short flag for the verbose option (V).
 * @property {number} verbose.default - The default value for verbosity (0).
 * @property {Object} version - Version display option.
 * @property {string} version.type - The type of the version option (boolean).
 * @property {string} version.short - The short flag for the version option (v).
 * @property {undefined} version.default - The default value for version display (undefined).
 * @property {Object} help - Help display option.
 * @property {string} help.type - The type of the help option (boolean).
 * @property {string} help.short - The short flag for the help option (h).
 * @property {boolean} help.default - The default value for help display (false).
 * @property {Object} logLevel - Log level option.
 * @property {string} logLevel.type - The type of the logLevel option (string).
 * @property {string} logLevel.default - The default value for log level ("info").
 * @property {Object} logStyle - Log styling option.
 * @property {string} logStyle.type - The type of the logStyle option (boolean).
 * @property {boolean} logStyle.default - The default value for log styling (true).
 * @property {Object} timestamp - Timestamp display option.
 * @property {string} timestamp.type - The type of the timestamp option (boolean).
 * @property {boolean} timestamp.default - The default value for timestamp display (true).
 * @property {Object} banner - Banner display option.
 * @property {string} banner.type - The type of the banner option (boolean).
 * @property {boolean} banner.default - The default value for banner display (false).
 * @memberOf module:utils
 */
exports.DefaultCommandOptions = {
    verbose: {
        type: "boolean",
        short: "V",
        default: undefined,
    },
    version: {
        type: "boolean",
        short: "v",
        default: undefined,
    },
    help: {
        type: "boolean",
        short: "h",
        default: false,
    },
    logLevel: {
        type: "string",
        default: "info",
    },
    logStyle: {
        type: "boolean",
        default: true,
    },
    timestamp: {
        type: "boolean",
        default: true,
    },
    banner: {
        type: "boolean",
        default: true,
    },
};
/**
 * @description Default command values derived from DefaultCommandOptions.
 * @summary Creates an object with the default values of all options defined in DefaultCommandOptions.
 * @const DefaultCommandValues
 * @typedef {Object} DefaultCommandValues
 * @property {unknown} [key: string] - The default value for each option in DefaultCommandOptions.
 * @memberOf module:utils
 */
exports.DefaultCommandValues = Object.keys(exports.DefaultCommandOptions).reduce((acc, key) => {
    acc[key] =
        exports.DefaultCommandOptions[key].default;
    return acc;
}, {});
//# sourceMappingURL=constants.js.map