microsoft/vscode-react-native
Publicmirrored from https://github.com/microsoft/vscode-react-nativeAvailable
src/common/error/errorHelper.ts
62lines · modeblame
17161993Meena Kunnathur Balakrishnan10 years ago | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. |
| 2 | // Licensed under the MIT license. See LICENSE file in the project root for details. | |
| 3 | | |
190e393cMeena Kunnathur Balakrishnan10 years ago | 4 | import {InternalError, NestedError, InternalErrorLevel} from "./internalError"; |
17161993Meena Kunnathur Balakrishnan10 years ago | 5 | import {InternalErrorCode} from "./internalErrorCode"; |
3c172a05Artem Egorov8 years ago | 6 | import {ERROR_STRINGS} from "./errorStrings"; |
17161993Meena Kunnathur Balakrishnan10 years ago | 7 | |
| 8 | export class ErrorHelper { | |
3c172a05Artem Egorov8 years ago | 9 | public static ERROR_STRINGS = ERROR_STRINGS; |
17161993Meena Kunnathur Balakrishnan10 years ago | 10 | public static getInternalError(errorCode: InternalErrorCode, ...optionalArgs: any[]): InternalError { |
adaa8cc8Meena Kunnathur Balakrishnan10 years ago | 11 | let message = ErrorHelper.getErrorMessage(errorCode, ...optionalArgs); |
17161993Meena Kunnathur Balakrishnan10 years ago | 12 | return new InternalError(<number> errorCode, message); |
| 13 | } | |
| 14 | | |
190e393cMeena Kunnathur Balakrishnan10 years ago | 15 | public static getNestedError(innerError: Error, errorCode: InternalErrorCode, ...optionalArgs: any[]): NestedError { |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 16 | let message = ErrorHelper.getErrorMessage(errorCode, ...optionalArgs); |
17161993Meena Kunnathur Balakrishnan10 years ago | 17 | return new NestedError(<number> errorCode, message, innerError); |
| 18 | } | |
| 19 | | |
190e393cMeena Kunnathur Balakrishnan10 years ago | 20 | public static wrapError(error: InternalError, innerError: Error): NestedError { |
| 21 | return NestedError.getWrappedError(error, innerError); | |
| 22 | } | |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 23 | public static getWarning(message: string, ...optionalArgs: any[]): InternalError { |
190e393cMeena Kunnathur Balakrishnan10 years ago | 24 | return new InternalError(-1, message, InternalErrorLevel.Warning); |
| 25 | } | |
| 26 | | |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 27 | public static getNestedWarning(innerError: Error, message: string, ...optionalArgs: any[]): NestedError { |
499fe4ebMeena Kunnathur Balakrishnan10 years ago | 28 | return new NestedError(-1, message, innerError, null /* extras */, InternalErrorLevel.Warning); |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 29 | } |
| 30 | | |
17161993Meena Kunnathur Balakrishnan10 years ago | 31 | private static getErrorMessage(errorCode: InternalErrorCode, ...optionalArgs: any[]): string { |
3c172a05Artem Egorov8 years ago | 32 | return ErrorHelper.formatErrorMessage(ErrorHelper.ERROR_STRINGS[InternalErrorCode[errorCode]], ...optionalArgs); |
17161993Meena Kunnathur Balakrishnan10 years ago | 33 | } |
| 34 | | |
| 35 | private static formatErrorMessage(errorMessage: string, ...optionalArgs: any[]): string { | |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 36 | if (!errorMessage) { |
| 37 | return errorMessage; | |
| 38 | } | |
| 39 | | |
| 40 | let result: string = <string> errorMessage; | |
| 41 | let args: string[] = ErrorHelper.getOptionalArgsArrayFromFunctionCall(arguments, 1); | |
| 42 | if (args) { | |
cdf34447digeff10 years ago | 43 | for (let i: number = 0; i < args.length; i++) { |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 44 | result = result.replace(new RegExp("\\{" + i + "\\}", "g"), args[i]); |
17161993Meena Kunnathur Balakrishnan10 years ago | 45 | } |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 46 | } |
17161993Meena Kunnathur Balakrishnan10 years ago | 47 | |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 48 | return result; |
17161993Meena Kunnathur Balakrishnan10 years ago | 49 | } |
adaa8cc8Meena Kunnathur Balakrishnan10 years ago | 50 | |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 51 | private static getOptionalArgsArrayFromFunctionCall(functionArguments: IArguments, startIndex: number): any[] { |
adaa8cc8Meena Kunnathur Balakrishnan10 years ago | 52 | if (functionArguments.length <= startIndex) { |
5c8365a6Artem Egorov8 years ago | 53 | return []; |
adaa8cc8Meena Kunnathur Balakrishnan10 years ago | 54 | } |
| 55 | | |
| 56 | if (Array.isArray(functionArguments[startIndex])) { | |
| 57 | return functionArguments[startIndex]; | |
| 58 | } | |
| 59 | | |
| 60 | return Array.prototype.slice.apply(functionArguments, [startIndex]); | |
| 61 | } | |
17161993Meena Kunnathur Balakrishnan10 years ago | 62 | } |