@nest-yalc-2/errors 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +37 -0
- package/package.json +42 -0
- package/src/__tests__/database-exception.filter.spec.ts +71 -0
- package/src/__tests__/default.error.spec.ts +529 -0
- package/src/__tests__/error.helper.spec.ts +23 -0
- package/src/__tests__/errors.enum.spec.ts +32 -0
- package/src/__tests__/http-exception.filter.spec.ts +129 -0
- package/src/__tests__/http-status-code-to-errors.spec.ts +26 -0
- package/src/__tests__/input-validation.error.spec.ts +27 -0
- package/src/__tests__/login.error.spec.ts +23 -0
- package/src/__tests__/result.error.spec.ts +47 -0
- package/src/__tests__/system-exception.filter.spec.ts +39 -0
- package/src/__tests__/tsconfig.json +3 -0
- package/src/__tests__/validation-exception.filter.spec.ts +31 -0
- package/src/__tests__/verification.error.spec.ts +28 -0
- package/src/default.error.d.ts +93 -0
- package/src/default.error.js +266 -0
- package/src/default.error.js.map +1 -0
- package/src/default.error.ts +640 -0
- package/src/error.class.d.ts +103 -0
- package/src/error.class.js +170 -0
- package/src/error.class.js.map +1 -0
- package/src/error.class.ts +319 -0
- package/src/error.enum.d.ts +29 -0
- package/src/error.enum.js +41 -0
- package/src/error.enum.js.map +1 -0
- package/src/error.enum.ts +45 -0
- package/src/error.helper.d.ts +2 -0
- package/src/error.helper.js +20 -0
- package/src/error.helper.js.map +1 -0
- package/src/error.helper.ts +34 -0
- package/src/filters/database-exception.filter.d.ts +7 -0
- package/src/filters/database-exception.filter.js +74 -0
- package/src/filters/database-exception.filter.js.map +1 -0
- package/src/filters/database-exception.filter.ts +43 -0
- package/src/filters/http-exception.filter.d.ts +16 -0
- package/src/filters/http-exception.filter.js +145 -0
- package/src/filters/http-exception.filter.js.map +1 -0
- package/src/filters/http-exception.filter.ts +143 -0
- package/src/filters/index.d.ts +1 -0
- package/src/filters/index.js +6 -0
- package/src/filters/index.js.map +1 -0
- package/src/filters/index.ts +6 -0
- package/src/filters/system-exception.filter.d.ts +7 -0
- package/src/filters/system-exception.filter.js +29 -0
- package/src/filters/system-exception.filter.js.map +1 -0
- package/src/filters/system-exception.filter.ts +13 -0
- package/src/filters/validation-exception.filter.d.ts +8 -0
- package/src/filters/validation-exception.filter.js +66 -0
- package/src/filters/validation-exception.filter.js.map +1 -0
- package/src/filters/validation-exception.filter.ts +24 -0
- package/src/http-status-code-to-errors.d.ts +4 -0
- package/src/http-status-code-to-errors.js +24 -0
- package/src/http-status-code-to-errors.js.map +1 -0
- package/src/http-status-code-to-errors.ts +41 -0
- package/src/index.d.ts +5 -0
- package/src/index.js +24 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +7 -0
- package/src/result.error.d.ts +4 -0
- package/src/result.error.js +24 -0
- package/src/result.error.js.map +1 -0
- package/src/result.error.ts +25 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.ValidationExceptionFilter = void 0;
|
|
46
|
+
const crud_gen_error_js_1 = require("@nest-yalc-2/crud-gen/crud-gen.error.js");
|
|
47
|
+
const uuid_validation_error_js_1 = require("@nest-yalc-2/graphql/scalars/uuid-validation.error.js");
|
|
48
|
+
const common = __importStar(require("@nestjs/common"));
|
|
49
|
+
const index_js_1 = require("../index.js");
|
|
50
|
+
let ValidationExceptionFilter = class ValidationExceptionFilter {
|
|
51
|
+
constructor(logger) {
|
|
52
|
+
this.logger = logger;
|
|
53
|
+
}
|
|
54
|
+
catch(error) {
|
|
55
|
+
const newError = new index_js_1.InputValidationError(error.systemMessage, { response: { message: error.message } });
|
|
56
|
+
newError.stack = error.stack;
|
|
57
|
+
this.logger.error(error.systemMessage ?? newError.message, newError.stack);
|
|
58
|
+
return newError;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.ValidationExceptionFilter = ValidationExceptionFilter;
|
|
62
|
+
exports.ValidationExceptionFilter = ValidationExceptionFilter = __decorate([
|
|
63
|
+
common.Catch(uuid_validation_error_js_1.UUIDValidationError, crud_gen_error_js_1.CrudGenError),
|
|
64
|
+
__metadata("design:paramtypes", [Object])
|
|
65
|
+
], ValidationExceptionFilter);
|
|
66
|
+
//# sourceMappingURL=validation-exception.filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-exception.filter.js","sourceRoot":"","sources":["validation-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+EAAuE;AACvE,oGAA4F;AAC5F,uDAAyC;AAEzC,0CAAmD;AAG5C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAAoB,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAG,CAAC;IAEpD,KAAK,CAAC,KAAY;QAChB,MAAM,QAAQ,GAAG,IAAI,+BAAoB,CACxB,KAAM,CAAC,aAAa,EACnC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CACzC,CAAC;QACF,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CACA,KAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,OAAO,EACvD,QAAQ,CAAC,KAAK,CACf,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AAhBY,8DAAyB;oCAAzB,yBAAyB;IADrC,MAAM,CAAC,KAAK,CAAC,8CAAmB,EAAE,gCAAY,CAAC;;GACnC,yBAAyB,CAgBrC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CrudGenError } from '@nest-yalc-2/crud-gen/crud-gen.error.js';
|
|
2
|
+
import { UUIDValidationError } from '@nest-yalc-2/graphql/scalars/uuid-validation.error.js';
|
|
3
|
+
import * as common from '@nestjs/common';
|
|
4
|
+
import { GqlExceptionFilter } from '@nestjs/graphql';
|
|
5
|
+
import { InputValidationError } from '../index.js';
|
|
6
|
+
|
|
7
|
+
@common.Catch(UUIDValidationError, CrudGenError)
|
|
8
|
+
export class ValidationExceptionFilter implements GqlExceptionFilter {
|
|
9
|
+
constructor(private logger: common.LoggerService) {}
|
|
10
|
+
|
|
11
|
+
catch(error: Error) {
|
|
12
|
+
const newError = new InputValidationError(
|
|
13
|
+
(<CrudGenError>error).systemMessage,
|
|
14
|
+
{ response: { message: error.message } },
|
|
15
|
+
);
|
|
16
|
+
newError.stack = error.stack; // we need the stack trace for dev
|
|
17
|
+
this.logger.error(
|
|
18
|
+
(<CrudGenError>error).systemMessage ?? newError.message,
|
|
19
|
+
newError.stack,
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return newError;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.httpStatusCodeToErrors = void 0;
|
|
4
|
+
const error_class_js_1 = require("./error.class.js");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
exports.httpStatusCodeToErrors = {
|
|
7
|
+
[common_1.HttpStatus.BAD_REQUEST]: error_class_js_1.BadRequestError,
|
|
8
|
+
[common_1.HttpStatus.UNAUTHORIZED]: error_class_js_1.UnauthorizedError,
|
|
9
|
+
[common_1.HttpStatus.FORBIDDEN]: error_class_js_1.ForbiddenError,
|
|
10
|
+
[common_1.HttpStatus.NOT_FOUND]: error_class_js_1.NotFoundError,
|
|
11
|
+
[common_1.HttpStatus.CONFLICT]: error_class_js_1.ConflictError,
|
|
12
|
+
[common_1.HttpStatus.INTERNAL_SERVER_ERROR]: error_class_js_1.InternalServerError,
|
|
13
|
+
[common_1.HttpStatus.PAYMENT_REQUIRED]: error_class_js_1.PaymentRequiredError,
|
|
14
|
+
[common_1.HttpStatus.METHOD_NOT_ALLOWED]: error_class_js_1.MethodNotAllowedError,
|
|
15
|
+
[common_1.HttpStatus.GONE]: error_class_js_1.GoneError,
|
|
16
|
+
[common_1.HttpStatus.UNSUPPORTED_MEDIA_TYPE]: error_class_js_1.UnsupportedMediaTypeError,
|
|
17
|
+
[common_1.HttpStatus.UNPROCESSABLE_ENTITY]: error_class_js_1.UnprocessableEntityError,
|
|
18
|
+
[common_1.HttpStatus.TOO_MANY_REQUESTS]: error_class_js_1.TooManyRequestsError,
|
|
19
|
+
[common_1.HttpStatus.NOT_IMPLEMENTED]: error_class_js_1.NotImplementedError,
|
|
20
|
+
[common_1.HttpStatus.BAD_GATEWAY]: error_class_js_1.BadGatewayError,
|
|
21
|
+
[common_1.HttpStatus.SERVICE_UNAVAILABLE]: error_class_js_1.ServiceUnavailableError,
|
|
22
|
+
[common_1.HttpStatus.GATEWAY_TIMEOUT]: error_class_js_1.GatewayTimeoutError,
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=http-status-code-to-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-status-code-to-errors.js","sourceRoot":"","sources":["http-status-code-to-errors.ts"],"names":[],"mappings":";;;AAAA,qDAiB0B;AAE1B,2CAA4C;AAE/B,QAAA,sBAAsB,GAE/B;IACF,CAAC,mBAAU,CAAC,WAAW,CAAC,EAAE,gCAAe;IACzC,CAAC,mBAAU,CAAC,YAAY,CAAC,EAAE,kCAAiB;IAC5C,CAAC,mBAAU,CAAC,SAAS,CAAC,EAAE,+BAAc;IACtC,CAAC,mBAAU,CAAC,SAAS,CAAC,EAAE,8BAAa;IACrC,CAAC,mBAAU,CAAC,QAAQ,CAAC,EAAE,8BAAa;IACpC,CAAC,mBAAU,CAAC,qBAAqB,CAAC,EAAE,oCAAmB;IACvD,CAAC,mBAAU,CAAC,gBAAgB,CAAC,EAAE,qCAAoB;IACnD,CAAC,mBAAU,CAAC,kBAAkB,CAAC,EAAE,sCAAqB;IACtD,CAAC,mBAAU,CAAC,IAAI,CAAC,EAAE,0BAAS;IAC5B,CAAC,mBAAU,CAAC,sBAAsB,CAAC,EAAE,0CAAyB;IAC9D,CAAC,mBAAU,CAAC,oBAAoB,CAAC,EAAE,yCAAwB;IAC3D,CAAC,mBAAU,CAAC,iBAAiB,CAAC,EAAE,qCAAoB;IACpD,CAAC,mBAAU,CAAC,eAAe,CAAC,EAAE,oCAAmB;IACjD,CAAC,mBAAU,CAAC,WAAW,CAAC,EAAE,gCAAe;IACzC,CAAC,mBAAU,CAAC,mBAAmB,CAAC,EAAE,wCAAuB;IACzD,CAAC,mBAAU,CAAC,eAAe,CAAC,EAAE,oCAAmB;CAClD,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BadGatewayError,
|
|
3
|
+
BadRequestError,
|
|
4
|
+
ConflictError,
|
|
5
|
+
ForbiddenError,
|
|
6
|
+
GatewayTimeoutError,
|
|
7
|
+
GoneError,
|
|
8
|
+
InternalServerError,
|
|
9
|
+
MethodNotAllowedError,
|
|
10
|
+
NotFoundError,
|
|
11
|
+
NotImplementedError,
|
|
12
|
+
PaymentRequiredError,
|
|
13
|
+
ServiceUnavailableError,
|
|
14
|
+
TooManyRequestsError,
|
|
15
|
+
UnauthorizedError,
|
|
16
|
+
UnprocessableEntityError,
|
|
17
|
+
UnsupportedMediaTypeError,
|
|
18
|
+
} from './error.class.js';
|
|
19
|
+
import { HttpStatusCodes } from '@nest-yalc-2/utils/http.helper.js';
|
|
20
|
+
import { HttpStatus } from '@nestjs/common';
|
|
21
|
+
|
|
22
|
+
export const httpStatusCodeToErrors: {
|
|
23
|
+
[key in HttpStatusCodes]?: any;
|
|
24
|
+
} = {
|
|
25
|
+
[HttpStatus.BAD_REQUEST]: BadRequestError,
|
|
26
|
+
[HttpStatus.UNAUTHORIZED]: UnauthorizedError,
|
|
27
|
+
[HttpStatus.FORBIDDEN]: ForbiddenError,
|
|
28
|
+
[HttpStatus.NOT_FOUND]: NotFoundError,
|
|
29
|
+
[HttpStatus.CONFLICT]: ConflictError,
|
|
30
|
+
[HttpStatus.INTERNAL_SERVER_ERROR]: InternalServerError,
|
|
31
|
+
[HttpStatus.PAYMENT_REQUIRED]: PaymentRequiredError,
|
|
32
|
+
[HttpStatus.METHOD_NOT_ALLOWED]: MethodNotAllowedError,
|
|
33
|
+
[HttpStatus.GONE]: GoneError,
|
|
34
|
+
[HttpStatus.UNSUPPORTED_MEDIA_TYPE]: UnsupportedMediaTypeError,
|
|
35
|
+
[HttpStatus.UNPROCESSABLE_ENTITY]: UnprocessableEntityError,
|
|
36
|
+
[HttpStatus.TOO_MANY_REQUESTS]: TooManyRequestsError,
|
|
37
|
+
[HttpStatus.NOT_IMPLEMENTED]: NotImplementedError,
|
|
38
|
+
[HttpStatus.BAD_GATEWAY]: BadGatewayError,
|
|
39
|
+
[HttpStatus.SERVICE_UNAVAILABLE]: ServiceUnavailableError,
|
|
40
|
+
[HttpStatus.GATEWAY_TIMEOUT]: GatewayTimeoutError,
|
|
41
|
+
};
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MissingArgumentsError = void 0;
|
|
18
|
+
var crud_gen_1 = require("@nest-yalc-2/crud-gen");
|
|
19
|
+
Object.defineProperty(exports, "MissingArgumentsError", { enumerable: true, get: function () { return crud_gen_1.MissingArgumentsError; } });
|
|
20
|
+
__exportStar(require("./error.enum.js"), exports);
|
|
21
|
+
__exportStar(require("./error.class.js"), exports);
|
|
22
|
+
__exportStar(require("./default.error.js"), exports);
|
|
23
|
+
__exportStar(require("./result.error.js"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,kDAA8D;AAArD,iHAAA,qBAAqB,OAAA;AAC9B,kDAAgC;AAChC,mDAAiC;AACjC,qDAAmC;AACnC,oDAAkC"}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Result } from '@nest-yalc-2/event-manager/event-result.types.js';
|
|
2
|
+
import { IDefaultErrorOptions } from './default.error.js';
|
|
3
|
+
export declare const tryCatch: <T>(fn: () => T, options?: IDefaultErrorOptions) => Result<T>;
|
|
4
|
+
export declare const tryCatchAsync: <T>(fn: () => Promise<T>, options?: IDefaultErrorOptions) => Promise<Result<T>>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryCatchAsync = exports.tryCatch = void 0;
|
|
4
|
+
const neverthrow_1 = require("neverthrow");
|
|
5
|
+
const default_error_js_1 = require("./default.error.js");
|
|
6
|
+
const tryCatch = (fn, options = {}) => {
|
|
7
|
+
try {
|
|
8
|
+
return (0, neverthrow_1.ok)(fn());
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
return (0, neverthrow_1.err)((0, default_error_js_1.errorToDefaultError)(error, options));
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.tryCatch = tryCatch;
|
|
15
|
+
const tryCatchAsync = async (fn, options = {}) => {
|
|
16
|
+
try {
|
|
17
|
+
return (0, neverthrow_1.ok)(await fn());
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return (0, neverthrow_1.err)((0, default_error_js_1.errorToDefaultError)(error, options));
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
exports.tryCatchAsync = tryCatchAsync;
|
|
24
|
+
//# sourceMappingURL=result.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.error.js","sourceRoot":"","sources":["result.error.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AAErC,yDAA+E;AAExE,MAAM,QAAQ,GAAG,CACtB,EAAW,EACX,UAAgC,EAAE,EACvB,EAAE;IACb,IAAI,CAAC;QACH,OAAO,IAAA,eAAE,EAAC,EAAE,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,gBAAG,EAAC,IAAA,sCAAmB,EAAC,KAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC;AATW,QAAA,QAAQ,YASnB;AAEK,MAAM,aAAa,GAAG,KAAK,EAChC,EAAoB,EACpB,UAAgC,EAAE,EACd,EAAE;IACtB,IAAI,CAAC;QACH,OAAO,IAAA,eAAE,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,gBAAG,EAAC,IAAA,sCAAmB,EAAC,KAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { err, ok } from 'neverthrow';
|
|
2
|
+
import { Result } from '@nest-yalc-2/event-manager/event-result.types.js';
|
|
3
|
+
import { errorToDefaultError, IDefaultErrorOptions } from './default.error.js';
|
|
4
|
+
|
|
5
|
+
export const tryCatch = <T>(
|
|
6
|
+
fn: () => T,
|
|
7
|
+
options: IDefaultErrorOptions = {},
|
|
8
|
+
): Result<T> => {
|
|
9
|
+
try {
|
|
10
|
+
return ok(fn());
|
|
11
|
+
} catch (error) {
|
|
12
|
+
return err(errorToDefaultError(error as Error, options));
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const tryCatchAsync = async <T>(
|
|
17
|
+
fn: () => Promise<T>,
|
|
18
|
+
options: IDefaultErrorOptions = {},
|
|
19
|
+
): Promise<Result<T>> => {
|
|
20
|
+
try {
|
|
21
|
+
return ok(await fn());
|
|
22
|
+
} catch (error) {
|
|
23
|
+
return err(errorToDefaultError(error as Error, options));
|
|
24
|
+
}
|
|
25
|
+
};
|