Create ui/cli/src/utils/errors.ts with extractErrorMessage(error: unknown): string
and replace 3 inline occurrences of the pattern across formatter.ts, json.ts,
and loader.ts.
type UIServerConfigurationSection,
} from 'ui-common'
+import { extractErrorMessage } from '../utils/errors.js'
import { DEFAULT_PROTOCOL, DEFAULT_SECURE, DEFAULT_VERSION } from './defaults.js'
interface LoadConfigOptions {
configPath != null ||
!(error instanceof Error && 'code' in error && error.code === 'ENOENT')
) {
- const message = error instanceof Error ? error.message : String(error)
+ const message = extractErrorMessage(error)
const context = configPath != null ? `'${configPath}'` : `'${targetPath}'`
throw new Error(`Failed to load configuration file ${context}: ${message}`, { cause: error })
}
import type { ResponsePayload } from 'ui-common'
+import { extractErrorMessage } from '../utils/errors.js'
import { printError } from './human.js'
import { outputJson, outputJsonError } from './json.js'
import { outputTable } from './table.js'
}
return {
error: (error: unknown) => {
- const message = error instanceof Error ? error.message : String(error)
+ const message = extractErrorMessage(error)
printError(message)
},
output: outputTable,
import process from 'node:process'
import { type ResponsePayload, ResponseStatus } from 'ui-common'
+import { extractErrorMessage } from '../utils/errors.js'
+
export const outputJson = (payload: ResponsePayload): void => {
process.stdout.write(JSON.stringify(payload, null, 2) + '\n')
}
export const outputJsonError = (error: unknown): void => {
- const message = error instanceof Error ? error.message : String(error)
+ const message = extractErrorMessage(error)
process.stdout.write(
JSON.stringify({ error: true, message, status: ResponseStatus.FAILURE }, null, 2) + '\n'
)
--- /dev/null
+export const extractErrorMessage = (error: unknown): string =>
+ error instanceof Error ? error.message : String(error)