Comparing version 2.0.2 to 2.0.3
@@ -146,3 +146,3 @@ import { Metadata, ServiceError } from '@grpc/grpc-js'; | ||
/** constructor reference. */ | ||
ctor?: (message: string, metadata?: Metadata) => any; | ||
ctor?: (message: string, metadata?: Metadata, details?: string) => any; | ||
/** error - the gRPC status message. */ | ||
@@ -152,2 +152,4 @@ error?: string; | ||
message?: string | Error; | ||
/** details - the error details. */ | ||
details?: string; | ||
} | ||
@@ -181,7 +183,22 @@ | ||
/** | ||
* Attempts to convert an http exception to a grpc boom error. | ||
* Fails over to an unknown grpc error if the error code cannot be inferred. | ||
* @param httpException the http exception. | ||
*/ | ||
public static fromHttpException(httpException: { | ||
code?: number; | ||
details?: string; | ||
message?: string; | ||
output?: { payload?: { message?: string; statusCode?: number }, statusCode?: number } | ||
status?: number; | ||
statusCode?: number | ||
}): GrpcBoom; | ||
/** | ||
* Not an error; returned on success | ||
* @param message the message. | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static ok(message: string, metadata?: Metadata): GrpcBoom; | ||
public static ok(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -192,4 +209,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static cancelled(message: string, metadata?: Metadata): GrpcBoom; | ||
public static cancelled(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -204,4 +222,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static unknown(message: string, metadata?: Metadata): GrpcBoom; | ||
public static unknown(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -215,4 +234,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static invalidArgument(message: string, metadata?: Metadata): GrpcBoom; | ||
public static invalidArgument(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -227,4 +247,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static deadlineExceeded(message: string, metadata?: Metadata): GrpcBoom; | ||
public static deadlineExceeded(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -235,4 +256,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static notFound(message: string, metadata?: Metadata): GrpcBoom; | ||
public static notFound(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -244,4 +266,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static alreadyExists(message: string, metadata?: Metadata): GrpcBoom; | ||
public static alreadyExists(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -257,4 +280,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static permissionDenied(message: string, metadata?: Metadata): GrpcBoom; | ||
public static permissionDenied(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -266,4 +290,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static resourceExhausted(message: string, metadata?: Metadata): GrpcBoom; | ||
public static resourceExhausted(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -293,4 +318,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static failedPrecondition(message: string, metadata?: Metadata): GrpcBoom; | ||
public static failedPrecondition(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -305,4 +331,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static aborted(message: string, metadata?: Metadata): GrpcBoom; | ||
public static aborted(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -327,4 +354,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static outOfRange(message: string, metadata?: Metadata): GrpcBoom; | ||
public static outOfRange(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -335,4 +363,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static unimplemented(message: string, metadata?: Metadata): GrpcBoom; | ||
public static unimplemented(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -345,4 +374,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static internal(message: string, metadata?: Metadata): GrpcBoom; | ||
public static internal(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -358,4 +388,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static unavailable(message: string, metadata?: Metadata): GrpcBoom; | ||
public static unavailable(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -366,4 +397,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static dataLoss(message: string, metadata?: Metadata): GrpcBoom; | ||
public static dataLoss(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
@@ -375,4 +407,5 @@ /** | ||
* @param metadata optional grpc metadata. | ||
* @param details optional grpc details. | ||
*/ | ||
public static unauthenticated(message: string, metadata?: Metadata): GrpcBoom; | ||
public static unauthenticated(message: string, metadata?: Metadata, details?: string): GrpcBoom; | ||
} |
{ | ||
"name": "grpc-boom", | ||
"version": "2.0.2", | ||
"version": "2.0.3", | ||
"description": "A gRPC implementation of the awesome Boom library to help create gRPC-friendly error objects", | ||
@@ -34,3 +34,3 @@ "main": "src/index.js", | ||
"@types/node": "^16.4.13", | ||
"@grpc/grpc-js": "^1.3.6", | ||
"@grpc/grpc-js": "^1.3.7", | ||
"jest": "^27.0.6", | ||
@@ -42,3 +42,3 @@ "jest-coverage-badges": "^1.1.2", | ||
"ts-jest": "^27.0.4", | ||
"ts-node": "^10.1.0", | ||
"ts-node": "^10.2.0", | ||
"tslint": "^6.1.3", | ||
@@ -45,0 +45,0 @@ "typescript": "^4.3.5" |
111
src/index.js
@@ -34,2 +34,5 @@ "use strict"; | ||
this.message = message; | ||
if (options && options.details !== undefined) { | ||
this.details = options.details; | ||
} | ||
if (options && options.metadata !== undefined) { | ||
@@ -45,2 +48,3 @@ this.metadata = options.metadata; | ||
static boomify(errorInstance, options) { | ||
var _a, _b; | ||
let message = errorInstance && errorInstance.message ? errorInstance.message : GrpcBoom.fallbackMessage; | ||
@@ -65,2 +69,6 @@ if (options && options.message && !(options.message instanceof Error)) { | ||
const newOptions = { code, error }; | ||
newOptions.details = (_a = errorInstance.details) !== null && _a !== void 0 ? _a : undefined; | ||
if (options && options.details !== undefined) { | ||
newOptions.details = (_b = errorInstance.details) !== null && _b !== void 0 ? _b : options.details; | ||
} | ||
if (options && options.metadata) { | ||
@@ -71,63 +79,78 @@ newOptions.metadata = options.metadata; | ||
} | ||
static ok(message, metadata) { | ||
return this.create(message, Status.OK, metadata, this.ok); | ||
static ok(message, metadata, details) { | ||
return this.create(message, Status.OK, metadata, this.ok, details); | ||
} | ||
static cancelled(message, metadata) { | ||
return this.create(message, Status.CANCELLED, metadata, this.cancelled); | ||
static cancelled(message, metadata, details) { | ||
return this.create(message, Status.CANCELLED, metadata, this.cancelled, details); | ||
} | ||
static unknown(message, metadata) { | ||
return this.create(message, Status.UNKNOWN, metadata, this.unknown); | ||
static unknown(message, metadata, details) { | ||
return this.create(message, Status.UNKNOWN, metadata, this.unknown, details); | ||
} | ||
static invalidArgument(message, metadata) { | ||
return this.create(message, Status.INVALID_ARGUMENT, metadata, this.invalidArgument); | ||
static invalidArgument(message, metadata, details) { | ||
return this.create(message, Status.INVALID_ARGUMENT, metadata, this.invalidArgument, details); | ||
} | ||
static deadlineExceeded(message, metadata) { | ||
return this.create(message, Status.DEADLINE_EXCEEDED, metadata, this.deadlineExceeded); | ||
static deadlineExceeded(message, metadata, details) { | ||
return this.create(message, Status.DEADLINE_EXCEEDED, metadata, this.deadlineExceeded, details); | ||
} | ||
static notFound(message, metadata) { | ||
return this.create(message, Status.NOT_FOUND, metadata, this.notFound); | ||
static notFound(message, metadata, details) { | ||
return this.create(message, Status.NOT_FOUND, metadata, this.notFound, details); | ||
} | ||
static alreadyExists(message, metadata) { | ||
return this.create(message, Status.ALREADY_EXISTS, metadata, this.alreadyExists); | ||
static alreadyExists(message, metadata, details) { | ||
return this.create(message, Status.ALREADY_EXISTS, metadata, this.alreadyExists, details); | ||
} | ||
static permissionDenied(message, metadata) { | ||
return this.create(message, Status.PERMISSION_DENIED, metadata, this.permissionDenied); | ||
static permissionDenied(message, metadata, details) { | ||
return this.create(message, Status.PERMISSION_DENIED, metadata, this.permissionDenied, details); | ||
} | ||
static resourceExhausted(message, metadata) { | ||
return this.create(message, Status.RESOURCE_EXHAUSTED, metadata, this.resourceExhausted); | ||
static resourceExhausted(message, metadata, details) { | ||
return this.create(message, Status.RESOURCE_EXHAUSTED, metadata, this.resourceExhausted, details); | ||
} | ||
static failedPrecondition(message, metadata) { | ||
return this.create(message, Status.FAILED_PRECONDITION, metadata, this.failedPrecondition); | ||
static failedPrecondition(message, metadata, details) { | ||
return this.create(message, Status.FAILED_PRECONDITION, metadata, this.failedPrecondition, details); | ||
} | ||
static aborted(message, metadata) { | ||
return this.create(message, Status.ABORTED, metadata, this.aborted); | ||
static aborted(message, metadata, details) { | ||
return this.create(message, Status.ABORTED, metadata, this.aborted, details); | ||
} | ||
static outOfRange(message, metadata) { | ||
return this.create(message, Status.OUT_OF_RANGE, metadata, this.outOfRange); | ||
static outOfRange(message, metadata, details) { | ||
return this.create(message, Status.OUT_OF_RANGE, metadata, this.outOfRange, details); | ||
} | ||
static unimplemented(message, metadata) { | ||
return this.create(message, Status.UNIMPLEMENTED, metadata, this.unimplemented); | ||
static unimplemented(message, metadata, details) { | ||
return this.create(message, Status.UNIMPLEMENTED, metadata, this.unimplemented, details); | ||
} | ||
static internal(message, metadata) { | ||
return this.create(message, Status.INTERNAL, metadata, this.internal); | ||
static internal(message, metadata, details) { | ||
return this.create(message, Status.INTERNAL, metadata, this.internal, details); | ||
} | ||
static unavailable(message, metadata) { | ||
return this.create(message, Status.UNAVAILABLE, metadata, this.unavailable); | ||
static unavailable(message, metadata, details) { | ||
return this.create(message, Status.UNAVAILABLE, metadata, this.unavailable, details); | ||
} | ||
static dataLoss(message, metadata) { | ||
return this.create(message, Status.DATA_LOSS, metadata, this.dataLoss); | ||
static dataLoss(message, metadata, details) { | ||
return this.create(message, Status.DATA_LOSS, metadata, this.dataLoss, details); | ||
} | ||
static unauthenticated(message, metadata) { | ||
return this.create(message, Status.UNAUTHENTICATED, metadata, this.unauthenticated); | ||
static unauthenticated(message, metadata, details) { | ||
return this.create(message, Status.UNAUTHENTICATED, metadata, this.unauthenticated, details); | ||
} | ||
static create(message, code, metadata, ctor) { | ||
static fromHttpException(httpException) { | ||
var _a, _b, _c, _d, _e; | ||
const { code, details, message, output, status, statusCode } = httpException; | ||
const httpStatusCode = (_c = (_b = (_a = code !== null && code !== void 0 ? code : status) !== null && _a !== void 0 ? _a : statusCode) !== null && _b !== void 0 ? _b : output === null || output === void 0 ? void 0 : output.statusCode) !== null && _c !== void 0 ? _c : (_d = output === null || output === void 0 ? void 0 : output.payload) === null || _d === void 0 ? void 0 : _d.statusCode; | ||
const grpcErrorCode = httpStatusCode ? GrpcBoom.httpStatusCodeToGrpcErrorCodeMapper[httpStatusCode] : GrpcBoom.fallbackStatus; | ||
return GrpcBoom.boomify({ | ||
code: grpcErrorCode, | ||
details, | ||
message: message !== null && message !== void 0 ? message : (_e = output === null || output === void 0 ? void 0 : output.payload) === null || _e === void 0 ? void 0 : _e.message, | ||
}); | ||
} | ||
static create(message, code, metadata, ctor, details) { | ||
const grpcBoom = new GrpcBoom(message, { | ||
code, | ||
details, | ||
metadata, | ||
ctor, | ||
}); | ||
return grpcBoom.initialize(grpcBoom, code, message, metadata); | ||
return grpcBoom.initialize(grpcBoom, code, message, metadata, details); | ||
} | ||
initialize(errorInstance, code, message, metadata) { | ||
initialize(errorInstance, code, message, metadata, details) { | ||
this.isBoom = true; | ||
if (details) { | ||
this.details = details; | ||
} | ||
if (metadata) { | ||
@@ -144,3 +167,3 @@ this.metadata = metadata; | ||
} | ||
reformat(debug) { | ||
reformat() { | ||
if (this.code === undefined) { | ||
@@ -160,1 +183,13 @@ this.code = GrpcBoom.fallbackStatus; | ||
GrpcBoom.fallbackMessage = 'An unknown error occurred'; | ||
GrpcBoom.httpStatusCodeToGrpcErrorCodeMapper = { | ||
400: Status.INVALID_ARGUMENT.valueOf(), | ||
401: Status.UNAUTHENTICATED.valueOf(), | ||
403: Status.PERMISSION_DENIED.valueOf(), | ||
404: Status.NOT_FOUND.valueOf(), | ||
408: Status.DEADLINE_EXCEEDED.valueOf(), | ||
409: Status.ALREADY_EXISTS.valueOf(), | ||
422: Status.ABORTED.valueOf(), | ||
500: Status.INTERNAL.valueOf(), | ||
501: Status.UNIMPLEMENTED.valueOf(), | ||
503: Status.UNAVAILABLE.valueOf(), | ||
}; |
41731
559