@vultisig/cli 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +391 -0
- package/dist/adapters/cli-context.js +25 -0
- package/dist/adapters/cli-context.js.map +1 -0
- package/dist/adapters/cli-runner.js +47 -0
- package/dist/adapters/cli-runner.js.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/commands/balance.js +65 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/chains.js +46 -0
- package/dist/commands/chains.js.map +1 -0
- package/dist/commands/index.js +12 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/settings.js +151 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/swap.js +180 -0
- package/dist/commands/swap.js.map +1 -0
- package/dist/commands/tokens.js +116 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/commands/transaction.js +99 -0
- package/dist/commands/transaction.js.map +1 -0
- package/dist/commands/vault-management.js +360 -0
- package/dist/commands/vault-management.js.map +1 -0
- package/dist/core/command-context.js +81 -0
- package/dist/core/command-context.js.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/password-manager.js +92 -0
- package/dist/core/password-manager.js.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.js +440 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive/completer.js +170 -0
- package/dist/interactive/completer.js.map +1 -0
- package/dist/interactive/event-buffer.js +186 -0
- package/dist/interactive/event-buffer.js.map +1 -0
- package/dist/interactive/index.js +9 -0
- package/dist/interactive/index.js.map +1 -0
- package/dist/interactive/session.js +525 -0
- package/dist/interactive/session.js.map +1 -0
- package/dist/interactive/shell-commands.js +167 -0
- package/dist/interactive/shell-commands.js.map +1 -0
- package/dist/interactive/shell-context.js +112 -0
- package/dist/interactive/shell-context.js.map +1 -0
- package/dist/lib/completion.js +375 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/config.js +172 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.js +163 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/index.js +9 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/output.js +155 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/version.js +210 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/ui.js +286 -0
- package/dist/ui.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Management for Vultisig CLI
|
|
3
|
+
*
|
|
4
|
+
* Handles CLI configuration files and environment variables
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
/**
|
|
10
|
+
* Default configuration
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
version: 1,
|
|
14
|
+
initialized: false,
|
|
15
|
+
preferences: {
|
|
16
|
+
currency: 'usd',
|
|
17
|
+
autoUpdate: true,
|
|
18
|
+
telemetry: false,
|
|
19
|
+
colorOutput: true,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Get the configuration directory path
|
|
24
|
+
*/
|
|
25
|
+
export function getConfigDir() {
|
|
26
|
+
return process.env.VULTISIG_CONFIG_DIR ?? join(homedir(), '.vultisig');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get the configuration file path
|
|
30
|
+
*/
|
|
31
|
+
export function getConfigPath() {
|
|
32
|
+
return join(getConfigDir(), 'config.json');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Ensure the config directory exists
|
|
36
|
+
*/
|
|
37
|
+
export function ensureConfigDir() {
|
|
38
|
+
const configDir = getConfigDir();
|
|
39
|
+
if (!existsSync(configDir)) {
|
|
40
|
+
mkdirSync(configDir, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read the CLI configuration
|
|
45
|
+
*/
|
|
46
|
+
export function readConfig() {
|
|
47
|
+
try {
|
|
48
|
+
const configPath = getConfigPath();
|
|
49
|
+
if (!existsSync(configPath)) {
|
|
50
|
+
return { ...DEFAULT_CONFIG };
|
|
51
|
+
}
|
|
52
|
+
const data = readFileSync(configPath, 'utf-8');
|
|
53
|
+
const parsed = JSON.parse(data);
|
|
54
|
+
// Merge with defaults to ensure all fields exist
|
|
55
|
+
return {
|
|
56
|
+
...DEFAULT_CONFIG,
|
|
57
|
+
...parsed,
|
|
58
|
+
preferences: {
|
|
59
|
+
...DEFAULT_CONFIG.preferences,
|
|
60
|
+
...parsed.preferences,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return { ...DEFAULT_CONFIG };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Write the CLI configuration
|
|
70
|
+
*/
|
|
71
|
+
export function writeConfig(config) {
|
|
72
|
+
ensureConfigDir();
|
|
73
|
+
const configPath = getConfigPath();
|
|
74
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Update specific config values
|
|
78
|
+
*/
|
|
79
|
+
export function updateConfig(updates) {
|
|
80
|
+
const current = readConfig();
|
|
81
|
+
const updated = {
|
|
82
|
+
...current,
|
|
83
|
+
...updates,
|
|
84
|
+
preferences: {
|
|
85
|
+
...current.preferences,
|
|
86
|
+
...(updates.preferences ?? {}),
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
writeConfig(updated);
|
|
90
|
+
return updated;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if this is the first run
|
|
94
|
+
*/
|
|
95
|
+
export function isFirstRun() {
|
|
96
|
+
const config = readConfig();
|
|
97
|
+
return !config.initialized;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Mark as initialized
|
|
101
|
+
*/
|
|
102
|
+
export function markInitialized() {
|
|
103
|
+
updateConfig({
|
|
104
|
+
initialized: true,
|
|
105
|
+
initializedAt: new Date().toISOString(),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get a preference value
|
|
110
|
+
*/
|
|
111
|
+
export function getPreference(key) {
|
|
112
|
+
const config = readConfig();
|
|
113
|
+
return config.preferences[key];
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Set a preference value
|
|
117
|
+
*/
|
|
118
|
+
export function setPreference(key, value) {
|
|
119
|
+
const config = readConfig();
|
|
120
|
+
config.preferences[key] = value;
|
|
121
|
+
writeConfig(config);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Environment variable helpers
|
|
125
|
+
*/
|
|
126
|
+
export const EnvVars = {
|
|
127
|
+
/**
|
|
128
|
+
* Check if debug mode is enabled
|
|
129
|
+
*/
|
|
130
|
+
isDebug() {
|
|
131
|
+
return process.env.VULTISIG_DEBUG === '1';
|
|
132
|
+
},
|
|
133
|
+
/**
|
|
134
|
+
* Check if silent mode is enabled via environment
|
|
135
|
+
*/
|
|
136
|
+
isSilent() {
|
|
137
|
+
return process.env.VULTISIG_SILENT === '1';
|
|
138
|
+
},
|
|
139
|
+
/**
|
|
140
|
+
* Check if color output is disabled
|
|
141
|
+
*/
|
|
142
|
+
isNoColor() {
|
|
143
|
+
return process.env.VULTISIG_NO_COLOR === '1' || process.env.NO_COLOR === '1';
|
|
144
|
+
},
|
|
145
|
+
/**
|
|
146
|
+
* Check if update checking is disabled
|
|
147
|
+
*/
|
|
148
|
+
isNoUpdateCheck() {
|
|
149
|
+
return process.env.VULTISIG_NO_UPDATE_CHECK === '1';
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* Get custom config directory
|
|
153
|
+
*/
|
|
154
|
+
getConfigDir() {
|
|
155
|
+
return process.env.VULTISIG_CONFIG_DIR;
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Get effective config value (env vars override config file)
|
|
160
|
+
*/
|
|
161
|
+
export function getEffectiveConfig() {
|
|
162
|
+
const config = readConfig();
|
|
163
|
+
// Apply environment variable overrides
|
|
164
|
+
if (EnvVars.isNoColor()) {
|
|
165
|
+
config.preferences.colorOutput = false;
|
|
166
|
+
}
|
|
167
|
+
if (EnvVars.isNoUpdateCheck()) {
|
|
168
|
+
config.preferences.autoUpdate = false;
|
|
169
|
+
}
|
|
170
|
+
return config;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Error Handling for Vultisig CLI
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent exit codes and user-friendly error messages
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
/**
|
|
8
|
+
* Exit codes for the CLI
|
|
9
|
+
*/
|
|
10
|
+
export var ExitCode;
|
|
11
|
+
(function (ExitCode) {
|
|
12
|
+
ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS";
|
|
13
|
+
ExitCode[ExitCode["GENERAL_ERROR"] = 1] = "GENERAL_ERROR";
|
|
14
|
+
ExitCode[ExitCode["INVALID_USAGE"] = 2] = "INVALID_USAGE";
|
|
15
|
+
ExitCode[ExitCode["CONFIG_ERROR"] = 3] = "CONFIG_ERROR";
|
|
16
|
+
ExitCode[ExitCode["AUTH_ERROR"] = 4] = "AUTH_ERROR";
|
|
17
|
+
ExitCode[ExitCode["NETWORK_ERROR"] = 5] = "NETWORK_ERROR";
|
|
18
|
+
ExitCode[ExitCode["VAULT_ERROR"] = 6] = "VAULT_ERROR";
|
|
19
|
+
ExitCode[ExitCode["TRANSACTION_ERROR"] = 7] = "TRANSACTION_ERROR";
|
|
20
|
+
})(ExitCode || (ExitCode = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Error names mapped to exit codes
|
|
23
|
+
*/
|
|
24
|
+
const ERROR_CODE_MAP = {
|
|
25
|
+
INVALID_USAGE: ExitCode.INVALID_USAGE,
|
|
26
|
+
CONFIG_ERROR: ExitCode.CONFIG_ERROR,
|
|
27
|
+
AUTH_ERROR: ExitCode.AUTH_ERROR,
|
|
28
|
+
NETWORK_ERROR: ExitCode.NETWORK_ERROR,
|
|
29
|
+
VAULT_ERROR: ExitCode.VAULT_ERROR,
|
|
30
|
+
TRANSACTION_ERROR: ExitCode.TRANSACTION_ERROR,
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* CLI Error with structured information
|
|
34
|
+
*/
|
|
35
|
+
export class CLIError extends Error {
|
|
36
|
+
code;
|
|
37
|
+
suggestions;
|
|
38
|
+
debugInfo;
|
|
39
|
+
constructor(message, options = {}) {
|
|
40
|
+
super(message);
|
|
41
|
+
this.name = 'CLIError';
|
|
42
|
+
this.code = options.code ?? ExitCode.GENERAL_ERROR;
|
|
43
|
+
this.suggestions = options.suggestions ?? [];
|
|
44
|
+
this.debugInfo = options.debugInfo;
|
|
45
|
+
if (options.cause) {
|
|
46
|
+
this.cause = options.cause;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format error for display
|
|
51
|
+
*/
|
|
52
|
+
format(debug = false) {
|
|
53
|
+
const lines = [];
|
|
54
|
+
lines.push(chalk.red(`Error: ${this.message}`));
|
|
55
|
+
lines.push('');
|
|
56
|
+
if (this.suggestions.length > 0) {
|
|
57
|
+
lines.push(' Suggestions:');
|
|
58
|
+
for (const suggestion of this.suggestions) {
|
|
59
|
+
lines.push(chalk.yellow(` - ${suggestion}`));
|
|
60
|
+
}
|
|
61
|
+
lines.push('');
|
|
62
|
+
}
|
|
63
|
+
if (debug && this.cause instanceof Error) {
|
|
64
|
+
lines.push(chalk.gray(' Stack trace:'));
|
|
65
|
+
lines.push(chalk.gray(` ${this.cause.stack?.replace(/\n/g, '\n ')}`));
|
|
66
|
+
lines.push('');
|
|
67
|
+
}
|
|
68
|
+
const codeName = Object.entries(ERROR_CODE_MAP).find(([, v]) => v === this.code)?.[0] ?? 'GENERAL_ERROR';
|
|
69
|
+
lines.push(chalk.gray(` Debug info: ${codeName} (code: ${this.code})`));
|
|
70
|
+
return lines.join('\n');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Error factory functions for common error types
|
|
75
|
+
*/
|
|
76
|
+
export const Errors = {
|
|
77
|
+
invalidUsage(message, suggestions) {
|
|
78
|
+
return new CLIError(message, {
|
|
79
|
+
code: ExitCode.INVALID_USAGE,
|
|
80
|
+
suggestions: suggestions ?? ['Run "vultisig --help" for usage information'],
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
configError(message, suggestions) {
|
|
84
|
+
return new CLIError(message, {
|
|
85
|
+
code: ExitCode.CONFIG_ERROR,
|
|
86
|
+
suggestions: suggestions ?? ['Check your configuration in ~/.vultisig/config.json'],
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
authError(message, suggestions) {
|
|
90
|
+
return new CLIError(message, {
|
|
91
|
+
code: ExitCode.AUTH_ERROR,
|
|
92
|
+
suggestions: suggestions ?? ['Double-check your password', 'Use "vultisig vaults" to verify the vault ID'],
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
networkError(message, cause) {
|
|
96
|
+
return new CLIError(message, {
|
|
97
|
+
code: ExitCode.NETWORK_ERROR,
|
|
98
|
+
suggestions: [
|
|
99
|
+
'Check your internet connection',
|
|
100
|
+
'Try again in a few moments',
|
|
101
|
+
'Run "vultisig server" to check connectivity',
|
|
102
|
+
],
|
|
103
|
+
cause,
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
vaultError(message, suggestions) {
|
|
107
|
+
return new CLIError(message, {
|
|
108
|
+
code: ExitCode.VAULT_ERROR,
|
|
109
|
+
suggestions: suggestions ?? [
|
|
110
|
+
'Use "vultisig vaults" to list available vaults',
|
|
111
|
+
'Create a vault with "vultisig create"',
|
|
112
|
+
],
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
transactionError(message, cause) {
|
|
116
|
+
return new CLIError(message, {
|
|
117
|
+
code: ExitCode.TRANSACTION_ERROR,
|
|
118
|
+
suggestions: [
|
|
119
|
+
'Check your balance with "vultisig balance"',
|
|
120
|
+
'Verify the recipient address',
|
|
121
|
+
'Ensure you have enough for gas fees',
|
|
122
|
+
],
|
|
123
|
+
cause,
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Check if an error is a CLIError
|
|
129
|
+
*/
|
|
130
|
+
export function isCLIError(error) {
|
|
131
|
+
return error instanceof CLIError;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get exit code from an error
|
|
135
|
+
*/
|
|
136
|
+
export function getExitCode(error) {
|
|
137
|
+
if (isCLIError(error)) {
|
|
138
|
+
return error.code;
|
|
139
|
+
}
|
|
140
|
+
if (error instanceof Error && 'exitCode' in error) {
|
|
141
|
+
return error.exitCode;
|
|
142
|
+
}
|
|
143
|
+
return ExitCode.GENERAL_ERROR;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Format any error for display
|
|
147
|
+
*/
|
|
148
|
+
export function formatError(error, debug = false) {
|
|
149
|
+
if (isCLIError(error)) {
|
|
150
|
+
return error.format(debug);
|
|
151
|
+
}
|
|
152
|
+
if (error instanceof Error) {
|
|
153
|
+
const lines = [chalk.red(`Error: ${error.message}`)];
|
|
154
|
+
if (debug && error.stack) {
|
|
155
|
+
lines.push('');
|
|
156
|
+
lines.push(chalk.gray(' Stack trace:'));
|
|
157
|
+
lines.push(chalk.gray(` ${error.stack.replace(/\n/g, '\n ')}`));
|
|
158
|
+
}
|
|
159
|
+
return lines.join('\n');
|
|
160
|
+
}
|
|
161
|
+
return chalk.red(`Error: ${String(error)}`);
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output Service - Centralized console output with silent mode support
|
|
3
|
+
*
|
|
4
|
+
* In silent mode, only results and errors are shown.
|
|
5
|
+
* Informational messages, spinners, and success/warn messages are suppressed.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import ora from 'ora';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// State
|
|
11
|
+
// ============================================================================
|
|
12
|
+
let silentMode = false;
|
|
13
|
+
let outputFormat = 'table';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Configuration
|
|
16
|
+
// ============================================================================
|
|
17
|
+
export function setSilentMode(silent) {
|
|
18
|
+
silentMode = silent;
|
|
19
|
+
}
|
|
20
|
+
export function isSilent() {
|
|
21
|
+
return silentMode;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Initialize output mode from CLI flags and environment variables
|
|
25
|
+
*/
|
|
26
|
+
export function initOutputMode(options) {
|
|
27
|
+
outputFormat = options.output ?? 'table';
|
|
28
|
+
silentMode = options.silent ?? process.env.VULTISIG_SILENT === '1';
|
|
29
|
+
// JSON mode implies silent (no spinners, colors)
|
|
30
|
+
if (outputFormat === 'json') {
|
|
31
|
+
silentMode = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if output format is JSON
|
|
36
|
+
*/
|
|
37
|
+
export function isJsonOutput() {
|
|
38
|
+
return outputFormat === 'json';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get current output format
|
|
42
|
+
*/
|
|
43
|
+
export function getOutputFormat() {
|
|
44
|
+
return outputFormat;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* JSON replacer that converts BigInt to string
|
|
48
|
+
*/
|
|
49
|
+
function bigIntReplacer(_key, value) {
|
|
50
|
+
return typeof value === 'bigint' ? value.toString() : value;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Output structured data as JSON (handles BigInt serialization)
|
|
54
|
+
*/
|
|
55
|
+
export function outputJson(data) {
|
|
56
|
+
console.log(JSON.stringify({ success: true, data }, bigIntReplacer, 2));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Output JSON error (for withExit handler)
|
|
60
|
+
*/
|
|
61
|
+
export function outputJsonError(message, code) {
|
|
62
|
+
console.log(JSON.stringify({ success: false, error: { message, code } }, bigIntReplacer, 2));
|
|
63
|
+
}
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Core Output Functions
|
|
66
|
+
// ============================================================================
|
|
67
|
+
/**
|
|
68
|
+
* Print informational message - suppressed in silent mode
|
|
69
|
+
*/
|
|
70
|
+
export function info(message) {
|
|
71
|
+
if (!silentMode) {
|
|
72
|
+
console.log(chalk.blue(message));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Print success message - suppressed in silent mode
|
|
77
|
+
*/
|
|
78
|
+
export function success(message) {
|
|
79
|
+
if (!silentMode) {
|
|
80
|
+
console.log(chalk.green(`\n${message}`));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Print warning message - suppressed in silent mode
|
|
85
|
+
*/
|
|
86
|
+
export function warn(message) {
|
|
87
|
+
if (!silentMode) {
|
|
88
|
+
console.log(chalk.yellow(message));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Print error message - always shown
|
|
93
|
+
*/
|
|
94
|
+
export function error(message) {
|
|
95
|
+
console.error(chalk.red(`\n${message}`));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Print result data - always shown (this is the command output)
|
|
99
|
+
*/
|
|
100
|
+
export function printResult(message) {
|
|
101
|
+
console.log(message);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Print table data - always shown (command output)
|
|
105
|
+
*/
|
|
106
|
+
export function printTable(data) {
|
|
107
|
+
console.table(data);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Print error to stderr - always shown
|
|
111
|
+
*/
|
|
112
|
+
export function printError(message) {
|
|
113
|
+
console.error(chalk.red(message));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* No-op spinner for silent mode
|
|
117
|
+
*/
|
|
118
|
+
function createNoopSpinner(text) {
|
|
119
|
+
const noopSpinner = {
|
|
120
|
+
text,
|
|
121
|
+
start() {
|
|
122
|
+
return this;
|
|
123
|
+
},
|
|
124
|
+
stop() {
|
|
125
|
+
return this;
|
|
126
|
+
},
|
|
127
|
+
succeed() {
|
|
128
|
+
return this;
|
|
129
|
+
},
|
|
130
|
+
fail(text) {
|
|
131
|
+
// Errors are always shown
|
|
132
|
+
if (text)
|
|
133
|
+
printError(text);
|
|
134
|
+
return this;
|
|
135
|
+
},
|
|
136
|
+
warn() {
|
|
137
|
+
return this;
|
|
138
|
+
},
|
|
139
|
+
info() {
|
|
140
|
+
return this;
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
return noopSpinner;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Create a spinner that respects silent mode
|
|
147
|
+
* In silent mode, returns a no-op spinner (except fail() still prints)
|
|
148
|
+
*/
|
|
149
|
+
export function createSpinner(text) {
|
|
150
|
+
if (silentMode) {
|
|
151
|
+
return createNoopSpinner(text);
|
|
152
|
+
}
|
|
153
|
+
return ora(text).start();
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|