Skip to content

Commit

Permalink
Inheritance
Browse files Browse the repository at this point in the history
  • Loading branch information
siakmun-aws committed Jan 28, 2025
1 parent 9a1d964 commit 977af16
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 20 deletions.
32 changes: 16 additions & 16 deletions packages/core/src/amazonqFeatureDev/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,60 +3,60 @@
* SPDX-License-Identifier: Apache-2.0
*/

import { SafeMessageError, ToolkitError } from '../shared/errors'
import { SafeMessageToolkitError, ToolkitError } from '../shared/errors'
import { featureName } from './constants'
import { uploadCodeError } from './userFacingText'
import { i18n } from '../shared/i18n-helper'

export class ConversationIdNotFoundError extends ToolkitError implements SafeMessageError {
export class ConversationIdNotFoundError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.conversationIdNotFoundError'), {
code: 'ConversationIdNotFound',
})
}
}

export class TabIdNotFoundError extends ToolkitError implements SafeMessageError {
export class TabIdNotFoundError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.tabIdNotFoundError'), {
code: 'TabIdNotFound',
})
}
}

export class WorkspaceFolderNotFoundError extends ToolkitError implements SafeMessageError {
export class WorkspaceFolderNotFoundError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.workspaceFolderNotFoundError'), {
code: 'WorkspaceFolderNotFound',
})
}
}

export class UserMessageNotFoundError extends ToolkitError implements SafeMessageError {
export class UserMessageNotFoundError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.userMessageNotFoundError'), {
code: 'MessageNotFound',
})
}
}

export class SelectedFolderNotInWorkspaceFolderError extends ToolkitError implements SafeMessageError {
export class SelectedFolderNotInWorkspaceFolderError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.selectedFolderNotInWorkspaceFolderError'), {
code: 'SelectedFolderNotInWorkspaceFolder',
})
}
}

export class PromptRefusalException extends ToolkitError implements SafeMessageError {
export class PromptRefusalException extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.promptRefusalException'), {
code: 'PromptRefusalException',
})
}
}

export class NoChangeRequiredException extends ToolkitError implements SafeMessageError {
export class NoChangeRequiredException extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.noChangeRequiredException'), {
code: 'NoChangeRequiredException',
Expand All @@ -65,51 +65,51 @@ export class NoChangeRequiredException extends ToolkitError implements SafeMessa
}

// To prevent potential security issues, message passed in should be predictably safe for telemetry
export class FeatureDevServiceError extends ToolkitError implements SafeMessageError {
export class FeatureDevServiceError extends SafeMessageToolkitError {
constructor(message: string, code: string) {
super(message, { code })
}
}

export class PrepareRepoFailedError extends ToolkitError implements SafeMessageError {
export class PrepareRepoFailedError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.prepareRepoFailedError'), {
code: 'PrepareRepoFailed',
})
}
}

export class UploadCodeError extends ToolkitError implements SafeMessageError {
export class UploadCodeError extends SafeMessageToolkitError {
constructor(statusCode: string) {
super(uploadCodeError, { code: `UploadCode-${statusCode}` })
}
}

export class UploadURLExpired extends ToolkitError implements SafeMessageError {
export class UploadURLExpired extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.uploadURLExpired'), { code: 'UploadURLExpired' })
}
}

export class IllegalStateTransition extends ToolkitError implements SafeMessageError {
export class IllegalStateTransition extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.illegalStateTransition'), { code: 'IllegalStateTransition' })
}
}

export class ContentLengthError extends ToolkitError implements SafeMessageError {
export class ContentLengthError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.contentLengthError'), { code: ContentLengthError.name })
}
}

export class ZipFileError extends ToolkitError implements SafeMessageError {
export class ZipFileError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.zipFileError'), { code: ZipFileError.name })
}
}

export class CodeIterationLimitError extends ToolkitError implements SafeMessageError {
export class CodeIterationLimitError extends SafeMessageToolkitError {
constructor() {
super(i18n('AWS.amazonq.featureDev.error.codeIterationLimitError'), { code: CodeIterationLimitError.name })
}
Expand Down
8 changes: 6 additions & 2 deletions packages/core/src/shared/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,11 @@ export function getTelemetryResult(error: unknown | undefined): Result {
return 'Failed'
}

export class SafeMessageError extends Error {}
export class SafeMessageToolkitError extends ToolkitError {
public constructor(message: string, info: ErrorInformation = {}) {
super(message, info)
}
}

/**
* This function constructs a string similar to error.printStackTrace() for telemetry,
Expand All @@ -388,7 +392,7 @@ export function getStackTraceForError(error: Error): string {
}
seenExceptions.add(err)

if (error instanceof SafeMessageError) {
if (error instanceof SafeMessageToolkitError) {
lines.push(`${prefix}${err.constructor.name}: ${err.message}`)
} else {
lines.push(`${prefix}${err.constructor.name}`)
Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/test/shared/errors.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ import {
tryRun,
UnknownError,
getErrorId,
SafeMessageError,
getStackTraceForError,
SafeMessageToolkitError,
} from '../../shared/errors'
import { CancellationError } from '../../shared/utilities/timeoutUtils'
import { UnauthorizedException } from '@aws-sdk/client-sso'
Expand Down Expand Up @@ -351,7 +351,7 @@ describe('Telemetry', function () {
})

describe('getStackTraceForError', () => {
class SafeError extends ToolkitError implements SafeMessageError {}
class SafeError extends SafeMessageToolkitError {}
class UnsafeError extends ToolkitError {}

it('includes message for safe exceptions', () => {
Expand Down

0 comments on commit 977af16

Please sign in to comment.