@archtx/core 1.1.18 → 2.0.1

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.
Files changed (36) hide show
  1. package/dist/src/Entity/utils.js +1 -1
  2. package/dist/src/Entity/utils.js.map +1 -1
  3. package/dist/src/errors/AuthError.d.ts +12 -2
  4. package/dist/src/errors/AuthError.js +7 -3
  5. package/dist/src/errors/AuthError.js.map +1 -1
  6. package/dist/src/errors/EntityError.d.ts +9 -1
  7. package/dist/src/errors/EntityError.js +6 -2
  8. package/dist/src/errors/EntityError.js.map +1 -1
  9. package/dist/src/errors/ExpiredError.d.ts +9 -1
  10. package/dist/src/errors/ExpiredError.js +6 -2
  11. package/dist/src/errors/ExpiredError.js.map +1 -1
  12. package/dist/src/errors/NotFoundError.d.ts +9 -1
  13. package/dist/src/errors/NotFoundError.js +6 -2
  14. package/dist/src/errors/NotFoundError.js.map +1 -1
  15. package/dist/src/errors/ParamError.d.ts +9 -1
  16. package/dist/src/errors/ParamError.js +6 -2
  17. package/dist/src/errors/ParamError.js.map +1 -1
  18. package/dist/src/errors/RepoError.d.ts +9 -1
  19. package/dist/src/errors/RepoError.js +6 -2
  20. package/dist/src/errors/RepoError.js.map +1 -1
  21. package/dist/src/errors/RootError.d.ts +24 -5
  22. package/dist/src/errors/RootError.js +13 -18
  23. package/dist/src/errors/RootError.js.map +1 -1
  24. package/dist/src/errors/ServiceError.d.ts +9 -1
  25. package/dist/src/errors/ServiceError.js +6 -2
  26. package/dist/src/errors/ServiceError.js.map +1 -1
  27. package/dist/src/errors/UseCaseError.d.ts +9 -1
  28. package/dist/src/errors/UseCaseError.js +6 -2
  29. package/dist/src/errors/UseCaseError.js.map +1 -1
  30. package/dist/src/errors/ValidationError.d.ts +11 -1
  31. package/dist/src/errors/ValidationError.js +6 -2
  32. package/dist/src/errors/ValidationError.js.map +1 -1
  33. package/dist/src/errors/errors.test.js +11 -11
  34. package/dist/src/errors/errors.test.js.map +1 -1
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +1 -1
@@ -6,7 +6,7 @@ import { Entity } from './Entity.js';
6
6
  */
7
7
  export function assertEntityExists(entity) {
8
8
  if (!(entity instanceof Entity)) {
9
- throw new NotFoundError(null, 'Entity not found');
9
+ throw new NotFoundError('Entity not found');
10
10
  }
11
11
  }
12
12
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/Entity/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAuB;IAEvB,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;IACnD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/Entity/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAuB;IAEvB,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,aAAa,CAAC,kBAAkB,CAAC,CAAA;IAC7C,CAAC;AACH,CAAC"}
@@ -1,7 +1,17 @@
1
1
  import { RootError } from './RootError.js';
2
- type ERROR_DESC = 'AUTH_CHECK_FAILED' | 'UNABLE_TO_CHECK_AUTH' | 'NOT_AUTHENTICATED' | 'INVALID_ACCESS' | 'INVALID_PERMISSIONS' | 'INVALID_ROLE';
2
+ type ERROR_DESC = 'AUTH_CHECK_FAILED' | 'UNABLE_TO_CHECK_AUTH' | 'NOT_AUTHENTICATED' | 'INVALID_ACCESS' | 'INVALID_PERMISSIONS' | 'INVALID_ROLE' | 'INVALID_CREDENTIALS';
3
3
  export declare class AuthError extends RootError {
4
+ readonly message: string;
5
+ meta: {
6
+ errorType: ERROR_DESC;
7
+ externalDesc?: string;
8
+ [key: string]: any;
9
+ };
4
10
  errorType?: ERROR_DESC;
5
- constructor(internalDesc: string | string[] | null, externalDesc: string | undefined | null, errorType: ERROR_DESC);
11
+ constructor(message: string, meta: {
12
+ errorType: ERROR_DESC;
13
+ externalDesc?: string;
14
+ [key: string]: any;
15
+ });
6
16
  }
7
17
  export {};
@@ -1,10 +1,14 @@
1
1
  // Used when user input data validation fails
2
2
  import { RootError } from './RootError.js';
3
3
  export class AuthError extends RootError {
4
+ message;
5
+ meta;
4
6
  errorType;
5
- constructor(internalDesc, externalDesc, errorType) {
6
- super(internalDesc, externalDesc);
7
- this.errorType = errorType;
7
+ constructor(message, meta) {
8
+ super(message, meta);
9
+ this.message = message;
10
+ this.meta = meta;
11
+ this.errorType = meta.errorType;
8
12
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
9
13
  Object.setPrototypeOf(this, AuthError.prototype);
10
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AuthError.js","sourceRoot":"","sources":["../../../src/errors/AuthError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAU1C,MAAM,OAAO,SAAU,SAAQ,SAAS;IAC/B,SAAS,CAAa;IAE7B,YACE,YAAsC,EACtC,YAAuC,EACvC,SAAqB;QAErB,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAE1B,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;CACF"}
1
+ {"version":3,"file":"AuthError.js","sourceRoot":"","sources":["../../../src/errors/AuthError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAW1C,MAAM,OAAO,SAAU,SAAQ,SAAS;IAI3B;IACF;IAJF,SAAS,CAAa;IAE7B,YACW,OAAe,EACjB,IAIN;QAED,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAPX,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAIV;QAID,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAE/B,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;CACF"}
@@ -1,4 +1,12 @@
1
1
  import { RootError } from './RootError.js';
2
2
  export declare class EntityError extends RootError {
3
- constructor(internalDesc: string | string[] | null, externalDesc?: string | undefined);
3
+ readonly message: string;
4
+ meta?: {
5
+ externalDesc?: string;
6
+ [key: string]: any;
7
+ } | undefined;
8
+ constructor(message: string, meta?: {
9
+ externalDesc?: string;
10
+ [key: string]: any;
11
+ } | undefined);
4
12
  }
@@ -1,8 +1,12 @@
1
1
  // Used inside Entity classes to throw an error for some logic or other Entity specific behavior
2
2
  import { RootError } from './RootError.js';
3
3
  export class EntityError extends RootError {
4
- constructor(internalDesc, externalDesc) {
5
- super(internalDesc, externalDesc);
4
+ message;
5
+ meta;
6
+ constructor(message, meta) {
7
+ super(message, meta);
8
+ this.message = message;
9
+ this.meta = meta;
6
10
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
7
11
  Object.setPrototypeOf(this, EntityError.prototype);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EntityError.js","sourceRoot":"","sources":["../../../src/errors/EntityError.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,WAAY,SAAQ,SAAS;IACtC,YACI,YAAsC,EACtC,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;CACJ"}
1
+ {"version":3,"file":"EntityError.js","sourceRoot":"","sources":["../../../src/errors/EntityError.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,WAAY,SAAQ,SAAS;IAE7B;IACF;IAFT,YACW,OAAe,EACjB,IAGN;QAED,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QANX,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAID,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IACpD,CAAC;CACF"}
@@ -1,4 +1,12 @@
1
1
  import { RootError } from './RootError.js';
2
2
  export declare class ExpiredError extends RootError {
3
- constructor(internalDesc: string | string[] | null, externalDesc?: string | undefined);
3
+ readonly message: string;
4
+ meta?: {
5
+ externalDesc?: string;
6
+ [key: string]: any;
7
+ } | undefined;
8
+ constructor(message: string, meta?: {
9
+ externalDesc?: string;
10
+ [key: string]: any;
11
+ } | undefined);
4
12
  }
@@ -1,8 +1,12 @@
1
1
  // Used when some data record(s) is not found
2
2
  import { RootError } from './RootError.js';
3
3
  export class ExpiredError extends RootError {
4
- constructor(internalDesc, externalDesc) {
5
- super(internalDesc, externalDesc);
4
+ message;
5
+ meta;
6
+ constructor(message, meta) {
7
+ super(message, meta);
8
+ this.message = message;
9
+ this.meta = meta;
6
10
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
7
11
  Object.setPrototypeOf(this, ExpiredError.prototype);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExpiredError.js","sourceRoot":"","sources":["../../../src/errors/ExpiredError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,SAAS;IACvC,YACI,YAAsC,EACtC,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACJ"}
1
+ {"version":3,"file":"ExpiredError.js","sourceRoot":"","sources":["../../../src/errors/ExpiredError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,SAAS;IAE5B;IACF;IAFT,YACW,OAAe,EACjB,IAGN;QAEC,KAAK,CACD,OAAO,EACP,IAAI,CACP,CAAC;QATK,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAOC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACJ"}
@@ -1,4 +1,12 @@
1
1
  import { RootError } from './RootError.js';
2
2
  export declare class NotFoundError extends RootError {
3
- constructor(internalDesc: string | string[] | null, externalDesc?: string | undefined);
3
+ readonly message: string;
4
+ meta?: {
5
+ externalDesc?: string;
6
+ [key: string]: any;
7
+ } | undefined;
8
+ constructor(message: string, meta?: {
9
+ externalDesc?: string;
10
+ [key: string]: any;
11
+ } | undefined);
4
12
  }
@@ -1,8 +1,12 @@
1
1
  // Used when some data record(s) is not found
2
2
  import { RootError } from './RootError.js';
3
3
  export class NotFoundError extends RootError {
4
- constructor(internalDesc, externalDesc) {
5
- super(internalDesc, externalDesc);
4
+ message;
5
+ meta;
6
+ constructor(message, meta) {
7
+ super(message, meta);
8
+ this.message = message;
9
+ this.meta = meta;
6
10
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
7
11
  Object.setPrototypeOf(this, NotFoundError.prototype);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NotFoundError.js","sourceRoot":"","sources":["../../../src/errors/NotFoundError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,aAAc,SAAQ,SAAS;IACxC,YACI,YAAsC,EACtC,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACJ"}
1
+ {"version":3,"file":"NotFoundError.js","sourceRoot":"","sources":["../../../src/errors/NotFoundError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,aAAc,SAAQ,SAAS;IAE/B;IACF;IAFT,YACW,OAAe,EACjB,IAGN;QAED,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QANX,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAID,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IACtD,CAAC;CACF"}
@@ -1,4 +1,12 @@
1
1
  import { RootError } from './RootError.js';
2
2
  export declare class ParamError extends RootError {
3
- constructor(internalDesc: string | string[] | null, externalDesc?: string | undefined);
3
+ readonly message: string;
4
+ meta?: {
5
+ externalDesc?: string;
6
+ [key: string]: any;
7
+ } | undefined;
8
+ constructor(message: string, meta?: {
9
+ externalDesc?: string;
10
+ [key: string]: any;
11
+ } | undefined);
4
12
  }
@@ -1,8 +1,12 @@
1
1
  // Used when a method/func param is bad/missing
2
2
  import { RootError } from './RootError.js';
3
3
  export class ParamError extends RootError {
4
- constructor(internalDesc, externalDesc) {
5
- super(internalDesc, externalDesc);
4
+ message;
5
+ meta;
6
+ constructor(message, meta) {
7
+ super(message, meta);
8
+ this.message = message;
9
+ this.meta = meta;
6
10
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
7
11
  Object.setPrototypeOf(this, ParamError.prototype);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ParamError.js","sourceRoot":"","sources":["../../../src/errors/ParamError.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,UAAW,SAAQ,SAAS;IACrC,YACI,YAAsC,EACtC,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACJ"}
1
+ {"version":3,"file":"ParamError.js","sourceRoot":"","sources":["../../../src/errors/ParamError.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,UAAW,SAAQ,SAAS;IAE1B;IACF;IAFT,YACW,OAAe,EACjB,IAGN;QAEC,KAAK,CACD,OAAO,EACP,IAAI,CACP,CAAC;QATK,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAOC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACJ"}
@@ -1,4 +1,12 @@
1
1
  import { RootError } from './RootError.js';
2
2
  export declare class RepoError extends RootError {
3
- constructor(internalDesc: string | string[] | null, externalDesc?: string | undefined);
3
+ readonly message: string;
4
+ meta?: {
5
+ externalDesc?: string;
6
+ [key: string]: any;
7
+ } | undefined;
8
+ constructor(message: string, meta?: {
9
+ externalDesc?: string;
10
+ [key: string]: any;
11
+ } | undefined);
4
12
  }
@@ -1,8 +1,12 @@
1
1
  // Used inside Repo classes to throw an error for some logic or other Repo specific behavior
2
2
  import { RootError } from './RootError.js';
3
3
  export class RepoError extends RootError {
4
- constructor(internalDesc, externalDesc) {
5
- super(internalDesc, externalDesc);
4
+ message;
5
+ meta;
6
+ constructor(message, meta) {
7
+ super(message, meta);
8
+ this.message = message;
9
+ this.meta = meta;
6
10
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
7
11
  Object.setPrototypeOf(this, RepoError.prototype);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RepoError.js","sourceRoot":"","sources":["../../../src/errors/RepoError.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,SAAU,SAAQ,SAAS;IACtC,YACE,YAAsC,EACtC,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;CACF"}
1
+ {"version":3,"file":"RepoError.js","sourceRoot":"","sources":["../../../src/errors/RepoError.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,SAAU,SAAQ,SAAS;IAE3B;IACF;IAFT,YACW,OAAe,EACjB,IAGN;QAED,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QANX,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAID,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;CACF"}
@@ -1,10 +1,29 @@
1
+ export interface IRootError {
2
+ readonly message: string;
3
+ meta?: {
4
+ externalDesc?: string;
5
+ [key: string]: any;
6
+ };
7
+ new (message: string, meta?: {
8
+ externalDesc?: string;
9
+ [key: string]: any;
10
+ }): RootError;
11
+ }
1
12
  export declare class RootError extends Error {
2
- externalDesc?: string | null;
13
+ readonly message: string;
14
+ meta?: {
15
+ externalDesc?: string;
16
+ [key: string]: any;
17
+ } | undefined;
3
18
  /**
4
19
  * Create a RootError
5
- * @param [internalDesc] Internal message, console, logs, etc.
6
- * @param [externalDesc] External message is safe to be sent in a response to
7
- * the client. NOTE: This does not mean it's "human readable".
20
+ * @param [message] Internal message, console, logs, etc.
21
+ * @param [meta] External message, metadata, etc.
22
+ * @param [meta.externalDesc] External message, user facing message
23
+ * @param [meta.*] Any other meta data
8
24
  */
9
- constructor(internalDesc: string | string[] | null | undefined, externalDesc?: string | null);
25
+ constructor(message: string, meta?: {
26
+ externalDesc?: string;
27
+ [key: string]: any;
28
+ } | undefined);
10
29
  }
@@ -1,28 +1,23 @@
1
1
  export class RootError extends Error {
2
- externalDesc;
2
+ message;
3
+ meta;
3
4
  /**
4
5
  * Create a RootError
5
- * @param [internalDesc] Internal message, console, logs, etc.
6
- * @param [externalDesc] External message is safe to be sent in a response to
7
- * the client. NOTE: This does not mean it's "human readable".
6
+ * @param [message] Internal message, console, logs, etc.
7
+ * @param [meta] External message, metadata, etc.
8
+ * @param [meta.externalDesc] External message, user facing message
9
+ * @param [meta.*] Any other meta data
8
10
  */
9
- constructor(internalDesc, externalDesc) {
10
- if (Array.isArray(internalDesc)) {
11
- super(internalDesc.join(', '));
11
+ constructor(message, meta) {
12
+ this.message = message;
13
+ this.meta = meta;
14
+ if (Array.isArray(message)) {
15
+ super(message.join(', '));
12
16
  }
13
17
  else {
14
- super(internalDesc || externalDesc || 'RootError no message provided');
18
+ super(message);
15
19
  }
16
- if (internalDesc) {
17
- this.message = Array.isArray(internalDesc)
18
- ? JSON.stringify(internalDesc)
19
- : internalDesc;
20
- }
21
- else {
22
- this.message = externalDesc || '';
23
- }
24
- this.externalDesc = externalDesc;
25
- // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
20
+ // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
26
21
  Object.setPrototypeOf(this, RootError.prototype);
27
22
  }
28
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RootError.js","sourceRoot":"","sources":["../../../src/errors/RootError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAU,SAAQ,KAAK;IAC3B,YAAY,CAAgB;IAEnC;;;;;OAKG;IACH,YACE,YAAkD,EAClD,YAA4B;QAE5B,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,YAAY,IAAI,YAAY,IAAI,+BAA+B,CAAC,CAAA;QACxE,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;gBAC9B,CAAC,CAAC,YAAY,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,YAAY,IAAI,EAAE,CAAA;QACnC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAEhC,mMAAmM;QACnM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;CACF"}
1
+ {"version":3,"file":"RootError.js","sourceRoot":"","sources":["../../../src/errors/RootError.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,SAAU,SAAQ,KAAK;IASvB;IACF;IATT;;;;;;OAMG;IACH,YACW,OAAe,EACjB,IAGN;QAJQ,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,OAAO,CAAC,CAAA;QAChB,CAAC;QAED,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;CACF"}
@@ -1,4 +1,12 @@
1
1
  import { RootError } from './RootError.js';
2
2
  export declare class ServiceError extends RootError {
3
- constructor(internalDesc: string | string[] | null, externalDesc?: string | undefined);
3
+ readonly message: string;
4
+ meta?: {
5
+ externalDesc?: string;
6
+ [key: string]: any;
7
+ } | undefined;
8
+ constructor(message: string, meta?: {
9
+ externalDesc?: string;
10
+ [key: string]: any;
11
+ } | undefined);
4
12
  }
@@ -1,8 +1,12 @@
1
1
  // Used inside Service classes to throw an error for some logic or other Service specific behavior
2
2
  import { RootError } from './RootError.js';
3
3
  export class ServiceError extends RootError {
4
- constructor(internalDesc, externalDesc) {
5
- super(internalDesc, externalDesc);
4
+ message;
5
+ meta;
6
+ constructor(message, meta) {
7
+ super(message, meta);
8
+ this.message = message;
9
+ this.meta = meta;
6
10
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
7
11
  Object.setPrototypeOf(this, ServiceError.prototype);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceError.js","sourceRoot":"","sources":["../../../src/errors/ServiceError.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,SAAS;IACvC,YACI,YAAsC,EACtC,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACJ"}
1
+ {"version":3,"file":"ServiceError.js","sourceRoot":"","sources":["../../../src/errors/ServiceError.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,SAAS;IAE9B;IACF;IAFT,YACW,OAAe,EACjB,IAGN;QAED,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QANX,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAID,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;IACrD,CAAC;CACF"}
@@ -5,5 +5,13 @@
5
5
  */
6
6
  import { RootError } from './RootError.js';
7
7
  export declare class UseCaseError extends RootError {
8
- constructor(internalDesc: string | string[] | null, externalDesc?: string | undefined);
8
+ readonly message: string;
9
+ meta?: {
10
+ externalDesc?: string;
11
+ [key: string]: any;
12
+ } | undefined;
13
+ constructor(message: string, meta?: {
14
+ externalDesc?: string;
15
+ [key: string]: any;
16
+ } | undefined);
9
17
  }
@@ -5,8 +5,12 @@
5
5
  */
6
6
  import { RootError } from './RootError.js';
7
7
  export class UseCaseError extends RootError {
8
- constructor(internalDesc, externalDesc) {
9
- super(internalDesc, externalDesc);
8
+ message;
9
+ meta;
10
+ constructor(message, meta) {
11
+ super(message, meta);
12
+ this.message = message;
13
+ this.meta = meta;
10
14
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
11
15
  Object.setPrototypeOf(this, UseCaseError.prototype);
12
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UseCaseError.js","sourceRoot":"","sources":["../../../src/errors/UseCaseError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,SAAS;IACvC,YACI,YAAsC,EACtC,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACJ"}
1
+ {"version":3,"file":"UseCaseError.js","sourceRoot":"","sources":["../../../src/errors/UseCaseError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,SAAS;IAE9B;IACF;IAFT,YACW,OAAe,EACjB,IAGN;QAED,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QANX,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAGV;QAID,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;IACrD,CAAC;CACF"}
@@ -1,4 +1,14 @@
1
1
  import { RootError } from './RootError.js';
2
2
  export declare class ValidationError extends RootError {
3
- constructor(internalDesc: string | string[] | null | undefined, externalDesc?: string | undefined);
3
+ readonly message: string;
4
+ meta?: {
5
+ errors?: Record<string, any>[];
6
+ externalDesc?: string;
7
+ [key: string]: any;
8
+ } | undefined;
9
+ constructor(message: string, meta?: {
10
+ errors?: Record<string, any>[];
11
+ externalDesc?: string;
12
+ [key: string]: any;
13
+ } | undefined);
4
14
  }
@@ -1,8 +1,12 @@
1
1
  // Used when user input data validation fails
2
2
  import { RootError } from './RootError.js';
3
3
  export class ValidationError extends RootError {
4
- constructor(internalDesc, externalDesc) {
5
- super(internalDesc, externalDesc);
4
+ message;
5
+ meta;
6
+ constructor(message, meta) {
7
+ super(message, meta);
8
+ this.message = message;
9
+ this.meta = meta;
6
10
  // https://www.dannyguo.com/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/
7
11
  Object.setPrototypeOf(this, ValidationError.prototype);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../src/errors/ValidationError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YACE,YAAkD,EAClD,YAAiC;QAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEjC,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../src/errors/ValidationError.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAEjC;IACF;IAFT,YACW,OAAe,EACjB,IAKN;QAED,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QARX,YAAO,GAAP,OAAO,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAKV;QAID,mGAAmG;QACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACxD,CAAC;CACF"}
@@ -1,21 +1,21 @@
1
1
  import { describe, test, expect } from 'vitest';
2
- import { RootError } from "./RootError.js";
3
- import { AuthError } from "./AuthError.js";
4
- import { EntityError } from "./EntityError.js";
5
- import { ExpiredError } from "./ExpiredError.js";
6
- import { NotFoundError } from "./NotFoundError.js";
7
- import { ParamError } from "./ParamError.js";
8
- import { UseCaseError } from "./UseCaseError.js";
9
- import { ValidationError } from "./ValidationError.js";
2
+ import { RootError } from './RootError.js';
3
+ import { AuthError } from './AuthError.js';
4
+ import { EntityError } from './EntityError.js';
5
+ import { ExpiredError } from './ExpiredError.js';
6
+ import { NotFoundError } from './NotFoundError.js';
7
+ import { ParamError } from './ParamError.js';
8
+ import { UseCaseError } from './UseCaseError.js';
9
+ import { ValidationError } from './ValidationError.js';
10
10
  describe('rootErrors', () => {
11
11
  test('instanceof DomainError', () => {
12
12
  expect(new RootError('')).toBeInstanceOf(Error);
13
13
  expect(new RootError('')).toBeInstanceOf(RootError);
14
14
  });
15
15
  test('instanceof AuthError', () => {
16
- expect(new AuthError('', '', 'NOT_AUTHENTICATED')).toBeInstanceOf(Error);
17
- expect(new AuthError('', '', 'NOT_AUTHENTICATED')).toBeInstanceOf(RootError);
18
- expect(new AuthError('', '', 'NOT_AUTHENTICATED')).toBeInstanceOf(AuthError);
16
+ expect(new AuthError('', { errorType: 'NOT_AUTHENTICATED' })).toBeInstanceOf(Error);
17
+ expect(new AuthError('', { errorType: 'NOT_AUTHENTICATED' })).toBeInstanceOf(RootError);
18
+ expect(new AuthError('', { errorType: 'NOT_AUTHENTICATED' })).toBeInstanceOf(AuthError);
19
19
  });
20
20
  test('instanceof EntityError', () => {
21
21
  expect(new EntityError('')).toBeInstanceOf(Error);
@@ -1 +1 @@
1
- {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../../src/errors/errors.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../../src/errors/errors.test.ts"],"names":[],"mappings":"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"}