microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
adaa8cc8f60a38b1fa04c05f16ea1168c702051c

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/common/error/errorHelper.ts

65lines · 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 util from "util";
5import * as path from "path";
6import {InternalError, NestedError, InternalErrorLevel} from "./internalError";
7import {InternalErrorCode} from "./internalErrorCode";
8
9export class ErrorHelper {
10 private static errorStringsJsonLoc = path.resolve(__dirname, "..", "..", "..", "errorStrings", "errorStrings.json");
11 public static getInternalError(errorCode: InternalErrorCode, ...optionalArgs: any[]): InternalError {
12 let message = ErrorHelper.getErrorMessage(errorCode, ...optionalArgs);
13 return new InternalError(<number> errorCode, message);
14 }
15
16 public static getNestedError(innerError: Error, errorCode: InternalErrorCode, ...optionalArgs: any[]): NestedError {
17 let message = util.format(ErrorHelper.getErrorMessage(errorCode), ...optionalArgs);
18 return new NestedError(<number> errorCode, message, innerError);
19 }
20
21 public static wrapError(error: InternalError, innerError: Error): NestedError {
22 return NestedError.getWrappedError(error, innerError);
23 }
24 public static getWarning(warningMessage: string, ...optionalArgs: any[]): InternalError {
25 let message = util.format(warningMessage, ...optionalArgs);
26
27 // Warnings do not use error codes
28 return new InternalError(-1, message, InternalErrorLevel.Warning);
29 }
30
31 private static getErrorMessage(errorCode: InternalErrorCode, ...optionalArgs: any[]): string {
32 console.log(optionalArgs);
33 let errorStrings = require (ErrorHelper.errorStringsJsonLoc);
34 return ErrorHelper.formatErrorMessage(errorStrings[InternalErrorCode[errorCode]], ...optionalArgs);
35 }
36
37 private static formatErrorMessage(errorMessage: string, ...optionalArgs: any[]): string {
38 console.log(optionalArgs);
39 if (!errorMessage) {
40 return errorMessage;
41 }
42
43 let result: string = <string> errorMessage;
44 let args: string[] = ErrorHelper.getOptionalArgsArrayFromFunctionCall(arguments, 1);
45 if (args) {
46 for (var i: number = 0; i < args.length; i++) {
47 result = result.replace(new RegExp("\\{" + i + "\\}", "g"), args[i]);
48 }
49 }
50
51 return result;
52 }
53
54 public static getOptionalArgsArrayFromFunctionCall(functionArguments: IArguments, startIndex: number): any[] {
55 if (functionArguments.length <= startIndex) {
56 return null;
57 }
58
59 if (Array.isArray(functionArguments[startIndex])) {
60 return functionArguments[startIndex];
61 }
62
63 return Array.prototype.slice.apply(functionArguments, [startIndex]);
64 }
65}
66