@@ -2,6 +2,10 @@ import { JourneyError } from '@journeyapps-labs/micro-errors';
22import { Command , ux } from '@oclif/core' ;
33import { join } from 'node:path' ;
44
5+ import {
6+ formatPowersyncServiceErrorDisplay ,
7+ isPowersyncAuthServiceError
8+ } from '../utils/format-powersync-service-error-display.js' ;
59import { CommandHelpGroup } from './HelpGroup.js' ;
610
711export type StyledErrorParams = {
@@ -35,20 +39,25 @@ export abstract class PowerSyncCommand extends Command {
3539 styledError ( params : StyledErrorParams ) : never {
3640 const { error, exitCode = 1 , message, suggestions } = params ;
3741 // Journey SDK errors contain additional fields that we want to pass to the error handler.
38- const journeyError =
42+ const serviceError =
3943 error != null && typeof error === 'object' && 'is_journey_error' in error ? ( error as JourneyError ) : undefined ;
40- const journeyErrorMessage = journeyError ? JSON . stringify ( journeyError . toJSON ( ) , null , '\t' ) : undefined ;
44+ const serviceErrorDetails = serviceError ? formatPowersyncServiceErrorDisplay ( serviceError ) : undefined ;
4145
4246 const errorDetails =
43- journeyErrorMessage ?? ( error == null ? '' : error instanceof Error ? error . message : String ( error ) ) ;
47+ serviceErrorDetails ?? ( error == null ? '' : error instanceof Error ? error . message : String ( error ) ) ;
4448 const displayMessage = errorDetails ? `${ message } , :: ${ errorDetails } ` : message ;
4549
50+ const authSuggestions =
51+ serviceError && isPowersyncAuthServiceError ( serviceError ) && ! suggestions ?. length
52+ ? [ 'Run `powersync login` to refresh your credentials.' ]
53+ : suggestions ;
54+
4655 this . error ( ux . colorize ( 'red' , displayMessage ) , {
4756 ...( error instanceof Error ? error : { } ) ,
48- ...( journeyError ?. errorData ?. code && { code : journeyError . errorData . code } ) ,
57+ ...( serviceError ?. errorData ?. code && { code : serviceError . errorData . code } ) ,
4958 exit : exitCode ,
50- message : journeyErrorMessage ?? message ,
51- ...( suggestions ?. length && { suggestions } )
59+ message : serviceErrorDetails ?? message ,
60+ ...( authSuggestions ?. length && { suggestions : authSuggestions } )
5261 } ) ;
5362 }
5463}
0 commit comments