@eleva-io/erp-sdk 0.1.147 → 0.1.149

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 (75) hide show
  1. package/dist/cjs/errors/catalog.d.ts +28 -3
  2. package/dist/cjs/errors/catalog.d.ts.map +1 -1
  3. package/dist/cjs/errors/catalog.js +2 -0
  4. package/dist/cjs/errors/catalog.js.map +1 -1
  5. package/dist/cjs/errors/catalog_api.d.ts +15 -2
  6. package/dist/cjs/errors/catalog_api.d.ts.map +1 -1
  7. package/dist/cjs/errors/catalog_api.js +10 -1
  8. package/dist/cjs/errors/catalog_api.js.map +1 -1
  9. package/dist/cjs/errors/catalog_base.d.ts +42 -2
  10. package/dist/cjs/errors/catalog_base.d.ts.map +1 -1
  11. package/dist/cjs/errors/catalog_base.js +37 -0
  12. package/dist/cjs/errors/catalog_base.js.map +1 -1
  13. package/dist/cjs/errors/catalog_types.d.ts +24 -0
  14. package/dist/cjs/errors/catalog_types.d.ts.map +1 -1
  15. package/dist/cjs/errors/catalog_types.js +6 -0
  16. package/dist/cjs/errors/catalog_types.js.map +1 -1
  17. package/dist/cjs/errors/errors.d.ts +140 -34
  18. package/dist/cjs/errors/errors.d.ts.map +1 -1
  19. package/dist/cjs/errors/errors.js +121 -74
  20. package/dist/cjs/errors/errors.js.map +1 -1
  21. package/dist/cjs/errors/errors.spec.js +12 -0
  22. package/dist/cjs/errors/errors.spec.js.map +1 -1
  23. package/dist/cjs/errors/errors_remote.d.ts +58 -20
  24. package/dist/cjs/errors/errors_remote.d.ts.map +1 -1
  25. package/dist/cjs/errors/errors_remote.js +22 -0
  26. package/dist/cjs/errors/errors_remote.js.map +1 -1
  27. package/dist/cjs/errors/errors_remote.spec.js +57 -9
  28. package/dist/cjs/errors/errors_remote.spec.js.map +1 -1
  29. package/dist/cjs/errors/index.d.ts +19 -0
  30. package/dist/cjs/errors/index.d.ts.map +1 -1
  31. package/dist/cjs/errors/index.js +19 -0
  32. package/dist/cjs/errors/index.js.map +1 -1
  33. package/dist/cjs/utils/errors.d.ts.map +1 -1
  34. package/dist/cjs/utils/errors.js +3 -1
  35. package/dist/cjs/utils/errors.js.map +1 -1
  36. package/dist/cjs/utils/http.js +10 -10
  37. package/dist/cjs/utils/http.js.map +1 -1
  38. package/dist/esm/errors/catalog.d.ts +28 -3
  39. package/dist/esm/errors/catalog.d.ts.map +1 -1
  40. package/dist/esm/errors/catalog.js +2 -0
  41. package/dist/esm/errors/catalog.js.map +1 -1
  42. package/dist/esm/errors/catalog_api.d.ts +15 -2
  43. package/dist/esm/errors/catalog_api.d.ts.map +1 -1
  44. package/dist/esm/errors/catalog_api.js +10 -1
  45. package/dist/esm/errors/catalog_api.js.map +1 -1
  46. package/dist/esm/errors/catalog_base.d.ts +42 -2
  47. package/dist/esm/errors/catalog_base.d.ts.map +1 -1
  48. package/dist/esm/errors/catalog_base.js +37 -0
  49. package/dist/esm/errors/catalog_base.js.map +1 -1
  50. package/dist/esm/errors/catalog_types.d.ts +24 -0
  51. package/dist/esm/errors/catalog_types.d.ts.map +1 -1
  52. package/dist/esm/errors/catalog_types.js +6 -0
  53. package/dist/esm/errors/catalog_types.js.map +1 -1
  54. package/dist/esm/errors/errors.d.ts +140 -34
  55. package/dist/esm/errors/errors.d.ts.map +1 -1
  56. package/dist/esm/errors/errors.js +121 -74
  57. package/dist/esm/errors/errors.js.map +1 -1
  58. package/dist/esm/errors/errors.spec.js +12 -0
  59. package/dist/esm/errors/errors.spec.js.map +1 -1
  60. package/dist/esm/errors/errors_remote.d.ts +58 -20
  61. package/dist/esm/errors/errors_remote.d.ts.map +1 -1
  62. package/dist/esm/errors/errors_remote.js +22 -0
  63. package/dist/esm/errors/errors_remote.js.map +1 -1
  64. package/dist/esm/errors/errors_remote.spec.js +57 -9
  65. package/dist/esm/errors/errors_remote.spec.js.map +1 -1
  66. package/dist/esm/errors/index.d.ts +19 -0
  67. package/dist/esm/errors/index.d.ts.map +1 -1
  68. package/dist/esm/errors/index.js +19 -0
  69. package/dist/esm/errors/index.js.map +1 -1
  70. package/dist/esm/utils/errors.d.ts.map +1 -1
  71. package/dist/esm/utils/errors.js +3 -1
  72. package/dist/esm/utils/errors.js.map +1 -1
  73. package/dist/esm/utils/http.js +10 -10
  74. package/dist/esm/utils/http.js.map +1 -1
  75. package/package.json +1 -1
@@ -1,5 +1,7 @@
1
- import { API_ERROR_CODES, APIErrorDetails } from './catalog_api';
2
- import { BASE_ERROR_CODES, BaseErrorDetails } from './catalog_base';
1
+ import { API_ERROR_CODES } from './catalog_api';
2
+ import { BASE_ERROR_CODES } from './catalog_base';
3
+ import { CatalogDetails } from './catalog_types';
4
+ /** All valid error code constants (base + API). Use with `error.is()` and factory methods. */
3
5
  export declare const ERROR_CODES: {
4
6
  FORBIDDEN_CONTACT: API_ERROR_CODES.FORBIDDEN_CONTACT;
5
7
  VALIDATION: BASE_ERROR_CODES.VALIDATION;
@@ -13,10 +15,21 @@ export declare const ERROR_CODES: {
13
15
  UNPROCESSABLE_ENTITY: BASE_ERROR_CODES.UNPROCESSABLE_ENTITY;
14
16
  MANDATORY_FIELD: BASE_ERROR_CODES.MANDATORY_FIELD;
15
17
  INTERNAL_SERVER_ERROR: BASE_ERROR_CODES.INTERNAL_SERVER_ERROR;
18
+ BAD_GATEWAY: BASE_ERROR_CODES.BAD_GATEWAY;
16
19
  SERVICE_UNAVAILABLE: BASE_ERROR_CODES.SERVICE_UNAVAILABLE;
17
20
  };
21
+ /** Union of all valid error code strings. Derived from `ERROR_CODES` to stay in sync. */
18
22
  export type ErrorCode = keyof typeof ERROR_CODES;
19
- export type ErrorDetails<C extends ErrorCode> = BaseErrorDetails<C extends BASE_ERROR_CODES ? C : never> | APIErrorDetails<C extends API_ERROR_CODES ? C : never>;
23
+ /**
24
+ * Strongly-typed `details` payload for a given error code `C`, resolved directly
25
+ * from `ERRORS_CATALOG`. Adding a new catalog only requires updating `ERRORS_CATALOG`.
26
+ *
27
+ * @example
28
+ * type ValidationDetails = ErrorDetails<'VALIDATION'>
29
+ * // → { errors: Array<{ validation: string; code: string; message: string; path: string[] }> }
30
+ */
31
+ export type ErrorDetails<C extends ErrorCode> = CatalogDetails<C, typeof ERRORS_CATALOG>;
32
+ /** Merged catalog of all error codes. Single runtime lookup table for `ElevaError` construction. */
20
33
  export declare const ERRORS_CATALOG: {
21
34
  FORBIDDEN_CONTACT: {
22
35
  kind: import("./catalog_types").ErrorKind.DOMAIN;
@@ -202,6 +215,18 @@ export declare const ERRORS_CATALOG: {
202
215
  }>;
203
216
  message: string;
204
217
  };
218
+ BAD_GATEWAY: {
219
+ kind: import("./catalog_types").ErrorKind.SYSTEM;
220
+ status: number;
221
+ details: import("zod").ZodObject<{
222
+ upstream: import("zod").ZodOptional<import("zod").ZodString>;
223
+ }, "strip", import("zod").ZodTypeAny, {
224
+ upstream?: string | undefined;
225
+ }, {
226
+ upstream?: string | undefined;
227
+ }>;
228
+ message: string;
229
+ };
205
230
  SERVICE_UNAVAILABLE: {
206
231
  kind: import("./catalog_types").ErrorKind.SYSTEM;
207
232
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,eAAe,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAuB,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGxF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAGvB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAA;AAEhD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IACxC,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,GAAG,CAAC,GAAG,KAAK,CAAC,GACxD,eAAe,CAAC,CAAC,SAAS,eAAe,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;AAE1D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGqB,CAAA"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAA;AAEnE,8FAA8F;AAC9F,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;CAGvB,CAAA;AAED,yFAAyF;AACzF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,cAAc,CAAC,CAAC,EAAE,OAAO,cAAc,CAAC,CAAA;AAExF,oGAAoG;AACpG,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGqB,CAAA"}
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ERRORS_CATALOG = exports.ERROR_CODES = void 0;
4
4
  const catalog_api_1 = require("./catalog_api");
5
5
  const catalog_base_1 = require("./catalog_base");
6
+ /** All valid error code constants (base + API). Use with `error.is()` and factory methods. */
6
7
  exports.ERROR_CODES = {
7
8
  ...catalog_base_1.BASE_ERROR_CODES,
8
9
  ...catalog_api_1.API_ERROR_CODES,
9
10
  };
11
+ /** Merged catalog of all error codes. Single runtime lookup table for `ElevaError` construction. */
10
12
  exports.ERRORS_CATALOG = {
11
13
  ...catalog_base_1.BASE_ERRORS_CATALOG,
12
14
  ...catalog_api_1.API_ERRORS_CATALOG,
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/errors/catalog.ts"],"names":[],"mappings":";;;AAAA,+CAAoF;AACpF,iDAAwF;AAG3E,QAAA,WAAW,GAAG;IACzB,GAAG,+BAAgB;IACnB,GAAG,6BAAe;CACnB,CAAA;AAQY,QAAA,cAAc,GAAG;IAC5B,GAAG,kCAAmB;IACtB,GAAG,gCAAkB;CACyB,CAAA"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/errors/catalog.ts"],"names":[],"mappings":";;;AAAA,+CAAmE;AACnE,iDAAsE;AAGtE,8FAA8F;AACjF,QAAA,WAAW,GAAG;IACzB,GAAG,+BAAgB;IACnB,GAAG,6BAAe;CACnB,CAAA;AAeD,oGAAoG;AACvF,QAAA,cAAc,GAAG;IAC5B,GAAG,kCAAmB;IACtB,GAAG,gCAAkB;CACyB,CAAA"}
@@ -1,13 +1,20 @@
1
1
  import { z } from 'zod';
2
- import { ErrorKind } from './catalog_types';
2
+ import { CatalogDetails, ErrorKind } from './catalog_types';
3
+ /**
4
+ * ERP domain-specific error codes. Add here any code that does not fit
5
+ * the generic HTTP categories in `BASE_ERROR_CODES`.
6
+ */
3
7
  export declare enum API_ERROR_CODES {
8
+ /** Access denied to a specific contact person (provides `contactId` in details). */
4
9
  FORBIDDEN_CONTACT = "FORBIDDEN_CONTACT"
5
10
  }
11
+ /** Maps every `API_ERROR_CODES` member to its catalog entry. */
6
12
  export declare const API_ERRORS_CATALOG: {
7
13
  FORBIDDEN_CONTACT: {
8
14
  kind: ErrorKind.DOMAIN;
9
15
  status: number;
10
16
  details: z.ZodObject<{
17
+ /** UUID of the contact person the caller was denied access to. */
11
18
  contactId: z.ZodString;
12
19
  }, "strip", z.ZodTypeAny, {
13
20
  contactId: string;
@@ -17,5 +24,11 @@ export declare const API_ERRORS_CATALOG: {
17
24
  message: string;
18
25
  };
19
26
  };
20
- export type APIErrorDetails<C extends API_ERROR_CODES> = z.infer<(typeof API_ERRORS_CATALOG)[C]['details']>;
27
+ /**
28
+ * Strongly-typed `details` shape for a given `API_ERROR_CODES` member.
29
+ * @example
30
+ * type ForbiddenContactDetails = APIErrorDetails<API_ERROR_CODES.FORBIDDEN_CONTACT>
31
+ * // → { contactId: string }
32
+ */
33
+ export type APIErrorDetails<C extends API_ERROR_CODES> = CatalogDetails<C, typeof API_ERRORS_CATALOG>;
21
34
  //# sourceMappingURL=catalog_api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog_api.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqB,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE9D,oBAAY,eAAe;IACzB,iBAAiB,sBAAsB;CACxC;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;CAOuB,CAAA;AAEtD,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"catalog_api.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,cAAc,EAAqB,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE9E;;;GAGG;AACH,oBAAY,eAAe;IACzB,oFAAoF;IACpF,iBAAiB,sBAAsB;CACxC;AAED,gEAAgE;AAChE,eAAO,MAAM,kBAAkB;;;;;YAKzB,kEAAkE;;;;;;;;;CAKlB,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,eAAe,IAAI,cAAc,CAAC,CAAC,EAAE,OAAO,kBAAkB,CAAC,CAAA"}
@@ -3,15 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.API_ERRORS_CATALOG = exports.API_ERROR_CODES = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const catalog_types_1 = require("./catalog_types");
6
+ /**
7
+ * ERP domain-specific error codes. Add here any code that does not fit
8
+ * the generic HTTP categories in `BASE_ERROR_CODES`.
9
+ */
6
10
  var API_ERROR_CODES;
7
11
  (function (API_ERROR_CODES) {
12
+ /** Access denied to a specific contact person (provides `contactId` in details). */
8
13
  API_ERROR_CODES["FORBIDDEN_CONTACT"] = "FORBIDDEN_CONTACT";
9
14
  })(API_ERROR_CODES || (exports.API_ERROR_CODES = API_ERROR_CODES = {}));
15
+ /** Maps every `API_ERROR_CODES` member to its catalog entry. */
10
16
  exports.API_ERRORS_CATALOG = {
11
17
  [API_ERROR_CODES.FORBIDDEN_CONTACT]: {
12
18
  kind: catalog_types_1.ErrorKind.DOMAIN,
13
19
  status: 403,
14
- details: zod_1.z.object({ contactId: zod_1.z.string() }),
20
+ details: zod_1.z.object({
21
+ /** UUID of the contact person the caller was denied access to. */
22
+ contactId: zod_1.z.string(),
23
+ }),
15
24
  message: 'You are not authorized to access this contact person',
16
25
  },
17
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"catalog_api.js","sourceRoot":"","sources":["../../../src/errors/catalog_api.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AACvB,mDAA8D;AAE9D,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,0DAAuC,CAAA;AACzC,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B;AAEY,QAAA,kBAAkB,GAAG;IAChC,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE;QACnC,IAAI,EAAE,yBAAS,CAAC,MAAM;QACtB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,OAAO,EAAE,sDAAsD;KAChE;CACmD,CAAA"}
1
+ {"version":3,"file":"catalog_api.js","sourceRoot":"","sources":["../../../src/errors/catalog_api.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AACvB,mDAA8E;AAE9E;;;GAGG;AACH,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oFAAoF;IACpF,0DAAuC,CAAA;AACzC,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAED,gEAAgE;AACnD,QAAA,kBAAkB,GAAG;IAChC,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE;QACnC,IAAI,EAAE,yBAAS,CAAC,MAAM;QACtB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;YAChB,kEAAkE;YAClE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;SACtB,CAAC;QACF,OAAO,EAAE,sDAAsD;KAChE;CACmD,CAAA"}
@@ -1,26 +1,47 @@
1
1
  import { z } from 'zod';
2
- import { ErrorKind } from './catalog_types';
2
+ import { CatalogDetails, ErrorKind } from './catalog_types';
3
+ /**
4
+ * Generic HTTP-level error codes shared across all API domains.
5
+ * Domain-specific codes live in `catalog_api.ts`.
6
+ */
3
7
  export declare enum BASE_ERROR_CODES {
8
+ /** Input data failed schema or business-rule validation. */
4
9
  VALIDATION = "VALIDATION",
10
+ /** The request is malformed or contains invalid parameters. */
5
11
  BAD_REQUEST = "BAD_REQUEST",
12
+ /** Credentials are missing, expired, or invalid. */
6
13
  AUTHENTICATION = "AUTHENTICATION",
14
+ /** Authenticated but lacks the required permissions. */
7
15
  UNAUTHORIZED = "UNAUTHORIZED",
16
+ /** The requested resource does not exist. */
8
17
  NOT_FOUND = "NOT_FOUND",
18
+ /** Server cannot produce a response matching the `Accept` header. */
9
19
  NOT_ACCEPTABLE = "NOT_ACCEPTABLE",
20
+ /** Operation would violate a uniqueness or integrity constraint. */
10
21
  CONFLICT = "CONFLICT",
22
+ /** Resource existed but has been permanently removed (unlike 404, retrying is futile). */
11
23
  GONE = "GONE",
24
+ /** Request is syntactically valid but semantically unprocessable (e.g. invalid state transition). */
12
25
  UNPROCESSABLE_ENTITY = "UNPROCESSABLE_ENTITY",
26
+ /** A required field was omitted from the request. */
13
27
  MANDATORY_FIELD = "MANDATORY_FIELD",
28
+ /** Unexpected server-side error (`SYSTEM` — message sanitised before being sent to clients). */
14
29
  INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR",
30
+ /** Upstream gateway received an invalid response from the origin server (`SYSTEM`). */
31
+ BAD_GATEWAY = "BAD_GATEWAY",
32
+ /** Service is temporarily unavailable (`SYSTEM`). */
15
33
  SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE"
16
34
  }
35
+ /** Maps every `BASE_ERROR_CODES` member to its HTTP status, kind, default message, and details schema. */
17
36
  export declare const BASE_ERRORS_CATALOG: {
18
37
  VALIDATION: {
19
38
  kind: ErrorKind.DOMAIN;
20
39
  status: number;
21
40
  details: z.ZodObject<{
22
41
  errors: z.ZodArray<z.ZodObject<{
42
+ /** Dot-separated field path (e.g. `"address.zipCode"`) or `"root"` for top-level issues. */
23
43
  validation: z.ZodString;
44
+ /** Zod issue code (e.g. `"invalid_type"`, `"too_small"`). */
24
45
  code: z.ZodString;
25
46
  message: z.ZodString;
26
47
  path: z.ZodArray<z.ZodString, "many">;
@@ -118,6 +139,7 @@ export declare const BASE_ERRORS_CATALOG: {
118
139
  }>;
119
140
  message: string;
120
141
  };
142
+ /** Each item in the array identifies one conflicting field. */
121
143
  CONFLICT: {
122
144
  kind: ErrorKind.DOMAIN;
123
145
  status: number;
@@ -187,6 +209,18 @@ export declare const BASE_ERRORS_CATALOG: {
187
209
  }>;
188
210
  message: string;
189
211
  };
212
+ BAD_GATEWAY: {
213
+ kind: ErrorKind.SYSTEM;
214
+ status: number;
215
+ details: z.ZodObject<{
216
+ upstream: z.ZodOptional<z.ZodString>;
217
+ }, "strip", z.ZodTypeAny, {
218
+ upstream?: string | undefined;
219
+ }, {
220
+ upstream?: string | undefined;
221
+ }>;
222
+ message: string;
223
+ };
190
224
  SERVICE_UNAVAILABLE: {
191
225
  kind: ErrorKind.SYSTEM;
192
226
  status: number;
@@ -200,5 +234,11 @@ export declare const BASE_ERRORS_CATALOG: {
200
234
  message: string;
201
235
  };
202
236
  };
203
- export type BaseErrorDetails<C extends BASE_ERROR_CODES> = z.infer<(typeof BASE_ERRORS_CATALOG)[C]['details']>;
237
+ /**
238
+ * Strongly-typed `details` shape for a given `BASE_ERROR_CODES` member.
239
+ * @example
240
+ * type ConflictDetails = BaseErrorDetails<BASE_ERROR_CODES.CONFLICT>
241
+ * // → Array<{ key: string; value: string; cause: string }>
242
+ */
243
+ export type BaseErrorDetails<C extends BASE_ERROR_CODES> = CatalogDetails<C, typeof BASE_ERRORS_CATALOG>;
204
244
  //# sourceMappingURL=catalog_base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog_base.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqB,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE9D,oBAAY,gBAAgB;IAE1B,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,oBAAoB,yBAAyB;IAC7C,eAAe,oBAAoB;IAGnC,qBAAqB,0BAA0B;IAC/C,mBAAmB,wBAAwB;CAC5C;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkIuB,CAAA;AAEvD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"catalog_base.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,cAAc,EAAqB,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE9E;;;GAGG;AACH,oBAAY,gBAAgB;IAE1B,4DAA4D;IAC5D,UAAU,eAAe;IACzB,+DAA+D;IAC/D,WAAW,gBAAgB;IAC3B,oDAAoD;IACpD,cAAc,mBAAmB;IACjC,wDAAwD;IACxD,YAAY,iBAAiB;IAC7B,6CAA6C;IAC7C,SAAS,cAAc;IACvB,qEAAqE;IACrE,cAAc,mBAAmB;IACjC,oEAAoE;IACpE,QAAQ,aAAa;IACrB,0FAA0F;IAC1F,IAAI,SAAS;IACb,qGAAqG;IACrG,oBAAoB,yBAAyB;IAC7C,qDAAqD;IACrD,eAAe,oBAAoB;IAGnC,gGAAgG;IAChG,qBAAqB,0BAA0B;IAC/C,uFAAuF;IACvF,WAAW,gBAAgB;IAC3B,qDAAqD;IACrD,mBAAmB,wBAAwB;CAC5C;AAED,0GAA0G;AAC1G,eAAO,MAAM,mBAAmB;;;;;;gBAStB,4FAA4F;;gBAE5F,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqErE,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFV,CAAA;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,IAAI,cAAc,CAAC,CAAC,EAAE,OAAO,mBAAmB,CAAC,CAAA"}
@@ -3,23 +3,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BASE_ERRORS_CATALOG = exports.BASE_ERROR_CODES = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const catalog_types_1 = require("./catalog_types");
6
+ /**
7
+ * Generic HTTP-level error codes shared across all API domains.
8
+ * Domain-specific codes live in `catalog_api.ts`.
9
+ */
6
10
  var BASE_ERROR_CODES;
7
11
  (function (BASE_ERROR_CODES) {
8
12
  // >= 400
13
+ /** Input data failed schema or business-rule validation. */
9
14
  BASE_ERROR_CODES["VALIDATION"] = "VALIDATION";
15
+ /** The request is malformed or contains invalid parameters. */
10
16
  BASE_ERROR_CODES["BAD_REQUEST"] = "BAD_REQUEST";
17
+ /** Credentials are missing, expired, or invalid. */
11
18
  BASE_ERROR_CODES["AUTHENTICATION"] = "AUTHENTICATION";
19
+ /** Authenticated but lacks the required permissions. */
12
20
  BASE_ERROR_CODES["UNAUTHORIZED"] = "UNAUTHORIZED";
21
+ /** The requested resource does not exist. */
13
22
  BASE_ERROR_CODES["NOT_FOUND"] = "NOT_FOUND";
23
+ /** Server cannot produce a response matching the `Accept` header. */
14
24
  BASE_ERROR_CODES["NOT_ACCEPTABLE"] = "NOT_ACCEPTABLE";
25
+ /** Operation would violate a uniqueness or integrity constraint. */
15
26
  BASE_ERROR_CODES["CONFLICT"] = "CONFLICT";
27
+ /** Resource existed but has been permanently removed (unlike 404, retrying is futile). */
16
28
  BASE_ERROR_CODES["GONE"] = "GONE";
29
+ /** Request is syntactically valid but semantically unprocessable (e.g. invalid state transition). */
17
30
  BASE_ERROR_CODES["UNPROCESSABLE_ENTITY"] = "UNPROCESSABLE_ENTITY";
31
+ /** A required field was omitted from the request. */
18
32
  BASE_ERROR_CODES["MANDATORY_FIELD"] = "MANDATORY_FIELD";
19
33
  // >= 500
34
+ /** Unexpected server-side error (`SYSTEM` — message sanitised before being sent to clients). */
20
35
  BASE_ERROR_CODES["INTERNAL_SERVER_ERROR"] = "INTERNAL_SERVER_ERROR";
36
+ /** Upstream gateway received an invalid response from the origin server (`SYSTEM`). */
37
+ BASE_ERROR_CODES["BAD_GATEWAY"] = "BAD_GATEWAY";
38
+ /** Service is temporarily unavailable (`SYSTEM`). */
21
39
  BASE_ERROR_CODES["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
22
40
  })(BASE_ERROR_CODES || (exports.BASE_ERROR_CODES = BASE_ERROR_CODES = {}));
41
+ /** Maps every `BASE_ERROR_CODES` member to its HTTP status, kind, default message, and details schema. */
23
42
  exports.BASE_ERRORS_CATALOG = {
24
43
  // >= 400
25
44
  [BASE_ERROR_CODES.VALIDATION]: {
@@ -28,7 +47,9 @@ exports.BASE_ERRORS_CATALOG = {
28
47
  details: zod_1.z.object({
29
48
  errors: zod_1.z
30
49
  .object({
50
+ /** Dot-separated field path (e.g. `"address.zipCode"`) or `"root"` for top-level issues. */
31
51
  validation: zod_1.z.string(),
52
+ /** Zod issue code (e.g. `"invalid_type"`, `"too_small"`). */
32
53
  code: zod_1.z.string(),
33
54
  message: zod_1.z.string(),
34
55
  path: zod_1.z.array(zod_1.z.string()),
@@ -53,6 +74,7 @@ exports.BASE_ERRORS_CATALOG = {
53
74
  status: 401,
54
75
  details: zod_1.z
55
76
  .object({
77
+ /** Why authentication failed (e.g. `"token_expired"`). */
56
78
  reason: zod_1.z.string(),
57
79
  })
58
80
  .partial(),
@@ -74,6 +96,7 @@ exports.BASE_ERRORS_CATALOG = {
74
96
  status: 404,
75
97
  details: zod_1.z
76
98
  .object({
99
+ /** Entity type that was not found (e.g. `"Invoice"`). */
77
100
  entity: zod_1.z.string(),
78
101
  })
79
102
  .partial(),
@@ -89,6 +112,7 @@ exports.BASE_ERRORS_CATALOG = {
89
112
  .partial(),
90
113
  message: 'Not acceptable',
91
114
  },
115
+ /** Each item in the array identifies one conflicting field. */
92
116
  [BASE_ERROR_CODES.CONFLICT]: {
93
117
  kind: catalog_types_1.ErrorKind.DOMAIN,
94
118
  status: 409,
@@ -106,6 +130,7 @@ exports.BASE_ERRORS_CATALOG = {
106
130
  status: 410,
107
131
  details: zod_1.z
108
132
  .object({
133
+ /** ISO 8601 timestamp of when the resource was removed. */
109
134
  since: zod_1.z.string(),
110
135
  })
111
136
  .partial(),
@@ -139,11 +164,23 @@ exports.BASE_ERRORS_CATALOG = {
139
164
  .partial(),
140
165
  message: 'Internal server error',
141
166
  },
167
+ [BASE_ERROR_CODES.BAD_GATEWAY]: {
168
+ kind: catalog_types_1.ErrorKind.SYSTEM,
169
+ status: 502,
170
+ details: zod_1.z
171
+ .object({
172
+ /** Name of the upstream service that returned the invalid response. */
173
+ upstream: zod_1.z.string(),
174
+ })
175
+ .partial(),
176
+ message: 'Bad gateway',
177
+ },
142
178
  [BASE_ERROR_CODES.SERVICE_UNAVAILABLE]: {
143
179
  kind: catalog_types_1.ErrorKind.SYSTEM,
144
180
  status: 503,
145
181
  details: zod_1.z
146
182
  .object({
183
+ /** Seconds the client should wait before retrying. */
147
184
  retryAfter: zod_1.z.number(),
148
185
  })
149
186
  .partial(),
@@ -1 +1 @@
1
- {"version":3,"file":"catalog_base.js","sourceRoot":"","sources":["../../../src/errors/catalog_base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog_base.js","sourceRoot":"","sources":["../../../src/errors/catalog_base.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,36 @@
1
1
  import { z } from 'zod';
2
+ /**
3
+ * Classifies an error by origin and visibility.
4
+ *
5
+ * - `DOMAIN` – predictable business-logic error; details are safe to expose to the client.
6
+ * - `SYSTEM` – unexpected infrastructure error; message is sanitised before being sent.
7
+ */
2
8
  export declare enum ErrorKind {
3
9
  SYSTEM = "system",
4
10
  DOMAIN = "domain"
5
11
  }
12
+ /**
13
+ * Source-of-truth definition for a single error code.
14
+ *
15
+ * - `kind` – domain (safe to expose) or system (sanitised).
16
+ * - `status` – HTTP status code.
17
+ * - `details` – Zod schema for both runtime validation and TypeScript type inference.
18
+ * - `message` – Default human-readable description.
19
+ */
6
20
  export type ErrorCatalogEntry = {
7
21
  kind: ErrorKind;
8
22
  status: number;
9
23
  details: z.ZodTypeAny;
10
24
  message: string;
11
25
  };
26
+ /**
27
+ * Infers the `details` payload type for code `C` by indexing the catalog object `Cat`.
28
+ * Keeps per-catalog `*ErrorDetails` aliases to a single line.
29
+ *
30
+ * @example
31
+ * export type MyDetails<C extends MY_CODES> = CatalogDetails<C, typeof MY_CATALOG>
32
+ */
33
+ export type CatalogDetails<C extends string, Cat extends Record<string, {
34
+ details: z.ZodTypeAny;
35
+ }>> = C extends keyof Cat ? z.infer<Cat[C]['details']> : never;
12
36
  //# sourceMappingURL=catalog_types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog_types.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,CAAC,CAAC,UAAU,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA"}
1
+ {"version":3,"file":"catalog_types.d.ts","sourceRoot":"","sources":["../../../src/errors/catalog_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;GAKG;AACH,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,CAAC,CAAC,UAAU,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,CACxB,CAAC,SAAS,MAAM,EAChB,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,CAAC,CAAC,UAAU,CAAA;CAAE,CAAC,IACnD,CAAC,SAAS,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAA"}
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ErrorKind = void 0;
4
+ /**
5
+ * Classifies an error by origin and visibility.
6
+ *
7
+ * - `DOMAIN` – predictable business-logic error; details are safe to expose to the client.
8
+ * - `SYSTEM` – unexpected infrastructure error; message is sanitised before being sent.
9
+ */
4
10
  var ErrorKind;
5
11
  (function (ErrorKind) {
6
12
  ErrorKind["SYSTEM"] = "system";
@@ -1 +1 @@
1
- {"version":3,"file":"catalog_types.js","sourceRoot":"","sources":["../../../src/errors/catalog_types.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;AACnB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB"}
1
+ {"version":3,"file":"catalog_types.js","sourceRoot":"","sources":["../../../src/errors/catalog_types.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;AACnB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB"}