Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(common): add error options object #10460

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
b5fe06d
feat(common): add error options object
thiagomini Oct 25, 2022
f5edb0f
chore(common): add deprecated warning
thiagomini Oct 26, 2022
587fbae
feat(common): add error cause option
thiagomini Oct 26, 2022
071c4c5
refactor(common): change parameter assignment
thiagomini Oct 26, 2022
d63b6df
refactor(common): rearrange test blocks
thiagomini Oct 26, 2022
7e763fa
refactor(common): rename method parameter
thiagomini Oct 26, 2022
1a8ada5
test(common): add http exception test
thiagomini Oct 26, 2022
4ded779
refactor(common): add description attribute
thiagomini Oct 27, 2022
c5c818e
chore(common): change deprecated message
thiagomini Oct 27, 2022
60cb953
feat(common): add error cause option
thiagomini Oct 27, 2022
7a71035
refactor(common): extract description and options
thiagomini Oct 27, 2022
a4a8557
refactor(common): extract description and options
thiagomini Oct 27, 2022
5a186af
docs(common): add static method docs
thiagomini Oct 27, 2022
86c5084
test(common): test error cause option
thiagomini Oct 27, 2022
472c711
test(common): aggregate exception tests
thiagomini Oct 27, 2022
88ac6aa
feat(common): add error cause option
thiagomini Oct 27, 2022
1dff9c0
docs(common): update exception docs
thiagomini Oct 27, 2022
c3ced1d
feat(common): add error cause option
thiagomini Oct 27, 2022
f629dc1
feat(common): add error cause option
thiagomini Oct 27, 2022
bd7daf1
feat(common): add error cause option
thiagomini Oct 27, 2022
0328a5c
feat(common): add error cause option
thiagomini Oct 27, 2022
11d2763
feat(common): add error cause option
thiagomini Oct 27, 2022
b815143
feat(common): add error cause option
thiagomini Oct 27, 2022
789e99c
feat(common): add error cause option
thiagomini Oct 27, 2022
cd44ff3
feat(common): add error cause option
thiagomini Oct 27, 2022
3a10258
feat(common): add error cause option
thiagomini Oct 27, 2022
d569aaa
feat(common): add error cause option
thiagomini Oct 27, 2022
2416df6
feat(common): add error cause option
thiagomini Oct 27, 2022
dfc28fc
feat(common): add error cause option
thiagomini Oct 27, 2022
d40ebd1
feat(common): add error cause option
thiagomini Oct 27, 2022
5031f41
feat(common): add error cause option
thiagomini Oct 27, 2022
e8abd9a
feat(common): add error cause option
thiagomini Oct 27, 2022
f62acac
feat(common): add error cause option
thiagomini Oct 27, 2022
b4aca5d
feat(common): add error cause option
thiagomini Oct 27, 2022
379b82c
feat(common): add error cause option
thiagomini Oct 27, 2022
971ce5f
test(common): reuse error cause variable
thiagomini Oct 27, 2022
45b6cc1
test(common): add http exception tests
thiagomini Oct 27, 2022
ab881e3
test(common): add http exception tests
thiagomini Oct 27, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 9 additions & 4 deletions packages/common/exceptions/bad-gateway.exception.ts
@@ -1,5 +1,6 @@
import { HttpStatus } from '../enums/http-status.enum';
import { HttpException } from './http.exception';
import { isString } from '../utils/shared.utils';
import { HttpException, HttpExceptionOptions } from './http.exception';

/**
* Defines an HTTP exception for *Bad Gateway* type errors.
Expand All @@ -18,7 +19,7 @@ export class BadGatewayException extends HttpException {
* @usageNotes
* The HTTP response status code will be 502.
* - The `objectOrError` argument defines the JSON response body or the message string.
* - The `description` argument contains a short description of the HTTP error.
* - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.
*
* By default, the JSON response body contains two properties:
* - `statusCode`: this will be the value 502.
Expand All @@ -31,19 +32,23 @@ export class BadGatewayException extends HttpException {
* and return it as the JSON response body.
*
* @param objectOrError string or object describing the error condition.
* @param description a short description of the HTTP error.
* @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause
*/
constructor(
objectOrError?: string | object | any,
description = 'Bad Gateway',
descriptionOrOptions: string | HttpExceptionOptions = 'Bad Gateway',
) {
const { description, httpExceptionOptions } =
HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);

super(
HttpException.createBody(
objectOrError,
description,
HttpStatus.BAD_GATEWAY,
),
HttpStatus.BAD_GATEWAY,
httpExceptionOptions,
);
}
}
13 changes: 9 additions & 4 deletions packages/common/exceptions/bad-request.exception.ts
@@ -1,5 +1,6 @@
import { isString } from 'class-validator';
import { HttpStatus } from '../enums/http-status.enum';
import { HttpException } from './http.exception';
import { HttpException, HttpExceptionOptions } from './http.exception';

/**
* Defines an HTTP exception for *Bad Request* type errors.
Expand All @@ -18,7 +19,7 @@ export class BadRequestException extends HttpException {
* @usageNotes
* The HTTP response status code will be 400.
* - The `objectOrError` argument defines the JSON response body or the message string.
* - The `description` argument contains a short description of the HTTP error.
* - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.
*
* By default, the JSON response body contains two properties:
* - `statusCode`: this will be the value 400.
Expand All @@ -31,19 +32,23 @@ export class BadRequestException extends HttpException {
* and return it as the JSON response body.
*
* @param objectOrError string or object describing the error condition.
* @param description a short description of the HTTP error.
* @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause
*/
constructor(
objectOrError?: string | object | any,
description = 'Bad Request',
descriptionOrOptions: string | HttpExceptionOptions = 'Bad Request',
) {
const { description, httpExceptionOptions } =
HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);

super(
HttpException.createBody(
objectOrError,
description,
HttpStatus.BAD_REQUEST,
),
HttpStatus.BAD_REQUEST,
httpExceptionOptions,
);
}
}
15 changes: 11 additions & 4 deletions packages/common/exceptions/conflict.exception.ts
@@ -1,5 +1,5 @@
import { HttpStatus } from '../enums/http-status.enum';
import { HttpException } from './http.exception';
import { HttpException, HttpExceptionOptions } from './http.exception';

/**
* Defines an HTTP exception for *Conflict* type errors.
Expand All @@ -18,7 +18,7 @@ export class ConflictException extends HttpException {
* @usageNotes
* The HTTP response status code will be 409.
* - The `objectOrError` argument defines the JSON response body or the message string.
* - The `description` argument contains a short description of the HTTP error.
* - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.
*
* By default, the JSON response body contains two properties:
* - `statusCode`: this will be the value 409.
Expand All @@ -31,12 +31,19 @@ export class ConflictException extends HttpException {
* and return it as the JSON response body.
*
* @param objectOrError string or object describing the error condition.
* @param description a short description of the HTTP error.
* @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause
*/
constructor(objectOrError?: string | object | any, description = 'Conflict') {
constructor(
objectOrError?: string | object | any,
descriptionOrOptions: string | HttpExceptionOptions = 'Conflict',
) {
const { description, httpExceptionOptions } =
HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);

super(
HttpException.createBody(objectOrError, description, HttpStatus.CONFLICT),
HttpStatus.CONFLICT,
httpExceptionOptions,
);
}
}
12 changes: 8 additions & 4 deletions packages/common/exceptions/forbidden.exception.ts
@@ -1,5 +1,5 @@
import { HttpStatus } from '../enums/http-status.enum';
import { HttpException } from './http.exception';
import { HttpException, HttpExceptionOptions } from './http.exception';

/**
* Defines an HTTP exception for *Forbidden* type errors.
Expand All @@ -18,7 +18,7 @@ export class ForbiddenException extends HttpException {
* @usageNotes
* The HTTP response status code will be 403.
* - The `objectOrError` argument defines the JSON response body or the message string.
* - The `description` argument contains a short description of the HTTP error.
* - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.
*
* By default, the JSON response body contains two properties:
* - `statusCode`: this will be the value 403.
Expand All @@ -31,19 +31,23 @@ export class ForbiddenException extends HttpException {
* and return it as the JSON response body.
*
* @param objectOrError string or object describing the error condition.
* @param description a short description of the HTTP error.
* @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause
*/
constructor(
objectOrError?: string | object | any,
description = 'Forbidden',
descriptionOrOptions: string | HttpExceptionOptions = 'Forbidden',
) {
const { description, httpExceptionOptions } =
HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);

super(
HttpException.createBody(
objectOrError,
description,
HttpStatus.FORBIDDEN,
),
HttpStatus.FORBIDDEN,
httpExceptionOptions,
);
}
}
12 changes: 8 additions & 4 deletions packages/common/exceptions/gateway-timeout.exception.ts
@@ -1,5 +1,5 @@
import { HttpStatus } from '../enums/http-status.enum';
import { HttpException } from './http.exception';
import { HttpException, HttpExceptionOptions } from './http.exception';

/**
* Defines an HTTP exception for *Gateway Timeout* type errors.
Expand All @@ -18,7 +18,7 @@ export class GatewayTimeoutException extends HttpException {
* @usageNotes
* The HTTP response status code will be 504.
* - The `objectOrError` argument defines the JSON response body or the message string.
* - The `description` argument contains a short description of the HTTP error.
* - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.
*
* By default, the JSON response body contains two properties:
* - `statusCode`: this will be the value 504.
Expand All @@ -31,19 +31,23 @@ export class GatewayTimeoutException extends HttpException {
* and return it as the JSON response body.
*
* @param objectOrError string or object describing the error condition.
* @param description a short description of the HTTP error.
* @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause
*/
constructor(
objectOrError?: string | object | any,
description = 'Gateway Timeout',
descriptionOrOptions: string | HttpExceptionOptions = 'Gateway Timeout',
) {
const { description, httpExceptionOptions } =
HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);

super(
HttpException.createBody(
objectOrError,
description,
HttpStatus.GATEWAY_TIMEOUT,
),
HttpStatus.GATEWAY_TIMEOUT,
httpExceptionOptions,
);
}
}
15 changes: 11 additions & 4 deletions packages/common/exceptions/gone.exception.ts
@@ -1,5 +1,5 @@
import { HttpStatus } from '../enums/http-status.enum';
import { HttpException } from './http.exception';
import { HttpException, HttpExceptionOptions } from './http.exception';

/**
* Defines an HTTP exception for *Gone* type errors.
Expand All @@ -18,7 +18,7 @@ export class GoneException extends HttpException {
* @usageNotes
* The HTTP response status code will be 410.
* - The `objectOrError` argument defines the JSON response body or the message string.
* - The `description` argument contains a short description of the HTTP error.
* - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.
*
* By default, the JSON response body contains two properties:
* - `statusCode`: this will be the value 410.
Expand All @@ -31,12 +31,19 @@ export class GoneException extends HttpException {
* and return it as the JSON response body.
*
* @param objectOrError string or object describing the error condition.
* @param description a short description of the HTTP error.
* @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause
*/
constructor(objectOrError?: string | object | any, description = 'Gone') {
constructor(
objectOrError?: string | object | any,
descriptionOrOptions: string | HttpExceptionOptions = 'Gone',
) {
const { description, httpExceptionOptions } =
HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);

super(
HttpException.createBody(objectOrError, description, HttpStatus.GONE),
HttpStatus.GONE,
httpExceptionOptions,
);
}
}
14 changes: 10 additions & 4 deletions packages/common/exceptions/http-version-not-supported.exception.ts
@@ -1,5 +1,5 @@
import { HttpStatus } from '../enums/http-status.enum';
import { HttpException } from './http.exception';
import { HttpException, HttpExceptionOptions } from './http.exception';

/**
* Defines an HTTP exception for *Http Version Not Supported* type errors.
Expand All @@ -18,7 +18,7 @@ export class HttpVersionNotSupportedException extends HttpException {
* @usageNotes
* The HTTP response status code will be 505.
* - The `objectOrError` argument defines the JSON response body or the message string.
* - The `description` argument contains a short description of the HTTP error.
* - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.
*
* By default, the JSON response body contains two properties:
* - `statusCode`: this will be the value 505.
Expand All @@ -31,19 +31,25 @@ export class HttpVersionNotSupportedException extends HttpException {
* and return it as the JSON response body.
*
* @param objectOrError string or object describing the error condition.
* @param description a short description of the HTTP error.
* @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause
*/
constructor(
objectOrError?: string | object | any,
description = 'HTTP Version Not Supported',
descriptionOrOptions:
| string
| HttpExceptionOptions = 'HTTP Version Not Supported',
) {
const { description, httpExceptionOptions } =
HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);

super(
HttpException.createBody(
objectOrError,
description,
HttpStatus.HTTP_VERSION_NOT_SUPPORTED,
),
HttpStatus.HTTP_VERSION_NOT_SUPPORTED,
httpExceptionOptions,
);
}
}