microsoft/vscode-react-native

Public

mirrored fromhttps://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
df4bce4041caa61af1460ef87f2380820508a455

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/common/error/errorHelper.ts

63lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
4import * as path from "path";
5import {InternalError, NestedError, InternalErrorLevel} from "./internalError";
6import {InternalErrorCode} from "./internalErrorCode";
7
8export class ErrorHelper {
9 private static errorStringsJsonLoc = path.resolve(__dirname, "..", "..", "..", "errorStrings", "errorStrings.json");
10 public static getInternalError(errorCode: InternalErrorCode, ...optionalArgs: any[]): InternalError {
11 let message = ErrorHelper.getErrorMessage(errorCode, ...optionalArgs);
12 return new InternalError(<number> errorCode, message);
13 }
14
15 public static getNestedError(innerError: Error, errorCode: InternalErrorCode, ...optionalArgs: any[]): NestedError {
16 let message = ErrorHelper.getErrorMessage(errorCode, ...optionalArgs);
17 return new NestedError(<number> errorCode, message, innerError);
18 }
19
20 public static wrapError(error: InternalError, innerError: Error): NestedError {
21 return NestedError.getWrappedError(error, innerError);
22 }
23 public static getWarning(message: string, ...optionalArgs: any[]): InternalError {
24 return new InternalError(-1, message, InternalErrorLevel.Warning);
25 }
26
27 public static getNestedWarning(innerError: Error, message: string, ...optionalArgs: any[]): NestedError {
28 return new NestedError(-1, message, innerError, null /* extras */, InternalErrorLevel.Warning);
29 }
30
31 private static getErrorMessage(errorCode: InternalErrorCode, ...optionalArgs: any[]): string {
32 let errorStrings = require (ErrorHelper.errorStringsJsonLoc);
33 return ErrorHelper.formatErrorMessage(errorStrings[InternalErrorCode[errorCode]], ...optionalArgs);
34 }
35
36 private static formatErrorMessage(errorMessage: string, ...optionalArgs: any[]): string {
37 if (!errorMessage) {
38 return errorMessage;
39 }
40
41 let result: string = <string> errorMessage;
42 let args: string[] = ErrorHelper.getOptionalArgsArrayFromFunctionCall(arguments, 1);
43 if (args) {
44 for (let i: number = 0; i < args.length; i++) {
45 result = result.replace(new RegExp("\\{" + i + "\\}", "g"), args[i]);
46 }
47 }
48
49 return result;
50 }
51
52 private static getOptionalArgsArrayFromFunctionCall(functionArguments: IArguments, startIndex: number): any[] {
53 if (functionArguments.length <= startIndex) {
54 return null;
55 }
56
57 if (Array.isArray(functionArguments[startIndex])) {
58 return functionArguments[startIndex];
59 }
60
61 return Array.prototype.slice.apply(functionArguments, [startIndex]);
62 }
63}
64