@contractspec/lib.error 1.57.0 → 1.59.0

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.
@@ -1,16 +1,12 @@
1
- import { ErrorCode } from "./codes.js";
2
-
3
- //#region src/appError.d.ts
1
+ import { ErrorCode } from './codes';
4
2
  /**
5
3
  * Generic application error with code and optional details.
6
4
  */
7
- declare class AppError extends Error {
8
- code: ErrorCode;
9
- details?: Record<string, unknown> | undefined;
10
- constructor(code: ErrorCode, message: string, details?: Record<string, unknown> | undefined);
5
+ export declare class AppError extends Error {
6
+ code: ErrorCode;
7
+ details?: Record<string, unknown> | undefined;
8
+ constructor(code: ErrorCode, message: string, details?: Record<string, unknown> | undefined);
11
9
  }
12
10
  /** Type guard to detect AppError */
13
- declare function isAppError(err: unknown): err is AppError;
14
- //#endregion
15
- export { AppError, isAppError };
11
+ export declare function isAppError(err: unknown): err is AppError;
16
12
  //# sourceMappingURL=appError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appError.d.ts","names":[],"sources":["../src/appError.ts"],"mappings":";;;;;AAKA;cAAa,QAAA,SAAiB,KAAA;EAEnB,IAAA,EAAM,SAAA;EAEN,OAAA,GAAU,MAAA;cAFV,IAAA,EAAM,SAAA,EACb,OAAA,UACO,OAAA,GAAU,MAAA;AAAA;;iBASL,UAAA,CAAW,GAAA,YAAe,GAAA,IAAO,QAAA"}
1
+ {"version":3,"file":"appError.d.ts","sourceRoot":"","sources":["../src/appError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAExB,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAM3C;AAED,oCAAoC;AACpC,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAExD"}
package/dist/appError.js CHANGED
@@ -1,21 +1,20 @@
1
- //#region src/appError.ts
2
- /**
3
- * Generic application error with code and optional details.
4
- */
5
- var AppError = class extends Error {
6
- constructor(code, message, details) {
7
- super(message);
8
- this.code = code;
9
- this.details = details;
10
- Object.setPrototypeOf(this, new.target.prototype);
11
- this.name = "AppError";
12
- }
13
- };
14
- /** Type guard to detect AppError */
1
+ // @bun
2
+ // src/appError.ts
3
+ class AppError extends Error {
4
+ code;
5
+ details;
6
+ constructor(code, message, details) {
7
+ super(message);
8
+ this.code = code;
9
+ this.details = details;
10
+ Object.setPrototypeOf(this, new.target.prototype);
11
+ this.name = "AppError";
12
+ }
13
+ }
15
14
  function isAppError(err) {
16
- return err instanceof AppError;
15
+ return err instanceof AppError;
17
16
  }
18
-
19
- //#endregion
20
- export { AppError, isAppError };
21
- //# sourceMappingURL=appError.js.map
17
+ export {
18
+ isAppError,
19
+ AppError
20
+ };
@@ -0,0 +1,19 @@
1
+ // src/appError.ts
2
+ class AppError extends Error {
3
+ code;
4
+ details;
5
+ constructor(code, message, details) {
6
+ super(message);
7
+ this.code = code;
8
+ this.details = details;
9
+ Object.setPrototypeOf(this, new.target.prototype);
10
+ this.name = "AppError";
11
+ }
12
+ }
13
+ function isAppError(err) {
14
+ return err instanceof AppError;
15
+ }
16
+ export {
17
+ isAppError,
18
+ AppError
19
+ };
@@ -0,0 +1,19 @@
1
+ // src/codes.ts
2
+ var ErrorCode;
3
+ ((ErrorCode2) => {
4
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
5
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
6
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
7
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
8
+ ErrorCode2["CONFLICT"] = "CONFLICT";
9
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
10
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
11
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
12
+ })(ErrorCode ||= {});
13
+ function isKnownErrorCode(code) {
14
+ return Object.values(ErrorCode).includes(code);
15
+ }
16
+ export {
17
+ isKnownErrorCode,
18
+ ErrorCode
19
+ };
@@ -0,0 +1,39 @@
1
+ // src/codes.ts
2
+ var ErrorCode;
3
+ ((ErrorCode2) => {
4
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
5
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
6
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
7
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
8
+ ErrorCode2["CONFLICT"] = "CONFLICT";
9
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
10
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
11
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
12
+ })(ErrorCode ||= {});
13
+ function isKnownErrorCode(code) {
14
+ return Object.values(ErrorCode).includes(code);
15
+ }
16
+
17
+ // src/http.ts
18
+ function httpStatus(code) {
19
+ switch (code) {
20
+ case "UNAUTHENTICATED" /* UNAUTHENTICATED */:
21
+ return 401;
22
+ case "FORBIDDEN" /* FORBIDDEN */:
23
+ case "POLICY_DENIED" /* POLICY_DENIED */:
24
+ return 403;
25
+ case "NOT_FOUND" /* NOT_FOUND */:
26
+ return 404;
27
+ case "INVALID_INPUT" /* INVALID_INPUT */:
28
+ return 400;
29
+ case "CONFLICT" /* CONFLICT */:
30
+ return 409;
31
+ case "RATE_LIMITED" /* RATE_LIMITED */:
32
+ return 429;
33
+ default:
34
+ return 500;
35
+ }
36
+ }
37
+ export {
38
+ httpStatus
39
+ };
@@ -0,0 +1,59 @@
1
+ // src/appError.ts
2
+ class AppError extends Error {
3
+ code;
4
+ details;
5
+ constructor(code, message, details) {
6
+ super(message);
7
+ this.code = code;
8
+ this.details = details;
9
+ Object.setPrototypeOf(this, new.target.prototype);
10
+ this.name = "AppError";
11
+ }
12
+ }
13
+ function isAppError(err) {
14
+ return err instanceof AppError;
15
+ }
16
+
17
+ // src/codes.ts
18
+ var ErrorCode;
19
+ ((ErrorCode2) => {
20
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
21
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
22
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
23
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
24
+ ErrorCode2["CONFLICT"] = "CONFLICT";
25
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
26
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
27
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
28
+ })(ErrorCode ||= {});
29
+ function isKnownErrorCode(code) {
30
+ return Object.values(ErrorCode).includes(code);
31
+ }
32
+
33
+ // src/http.ts
34
+ function httpStatus(code) {
35
+ switch (code) {
36
+ case "UNAUTHENTICATED" /* UNAUTHENTICATED */:
37
+ return 401;
38
+ case "FORBIDDEN" /* FORBIDDEN */:
39
+ case "POLICY_DENIED" /* POLICY_DENIED */:
40
+ return 403;
41
+ case "NOT_FOUND" /* NOT_FOUND */:
42
+ return 404;
43
+ case "INVALID_INPUT" /* INVALID_INPUT */:
44
+ return 400;
45
+ case "CONFLICT" /* CONFLICT */:
46
+ return 409;
47
+ case "RATE_LIMITED" /* RATE_LIMITED */:
48
+ return 429;
49
+ default:
50
+ return 500;
51
+ }
52
+ }
53
+ export {
54
+ isKnownErrorCode,
55
+ isAppError,
56
+ httpStatus,
57
+ ErrorCode,
58
+ AppError
59
+ };
package/dist/codes.d.ts CHANGED
@@ -1,19 +1,16 @@
1
- //#region src/codes.d.ts
2
1
  /**
3
2
  * Centralised error codes used across services.
4
3
  * Extend this enum to add more domain-specific codes.
5
4
  */
6
- declare enum ErrorCode {
7
- UNAUTHENTICATED = "UNAUTHENTICATED",
8
- FORBIDDEN = "FORBIDDEN",
9
- NOT_FOUND = "NOT_FOUND",
10
- INVALID_INPUT = "INVALID_INPUT",
11
- CONFLICT = "CONFLICT",
12
- RATE_LIMITED = "RATE_LIMITED",
13
- SERVER_ERROR = "SERVER_ERROR",
14
- POLICY_DENIED = "POLICY_DENIED"
5
+ export declare enum ErrorCode {
6
+ UNAUTHENTICATED = "UNAUTHENTICATED",
7
+ FORBIDDEN = "FORBIDDEN",
8
+ NOT_FOUND = "NOT_FOUND",
9
+ INVALID_INPUT = "INVALID_INPUT",
10
+ CONFLICT = "CONFLICT",
11
+ RATE_LIMITED = "RATE_LIMITED",
12
+ SERVER_ERROR = "SERVER_ERROR",
13
+ POLICY_DENIED = "POLICY_DENIED"
15
14
  }
16
- declare function isKnownErrorCode(code: string): code is ErrorCode;
17
- //#endregion
18
- export { ErrorCode, isKnownErrorCode };
15
+ export declare function isKnownErrorCode(code: string): code is ErrorCode;
19
16
  //# sourceMappingURL=codes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codes.d.ts","names":[],"sources":["../src/codes.ts"],"mappings":";;AAIA;;;aAAY,SAAA;EACV,eAAA;EACA,SAAA;EACA,SAAA;EACA,aAAA;EACA,QAAA;EACA,YAAA;EACA,YAAA;EACA,aAAA;AAAA;AAAA,iBAIc,gBAAA,CAAiB,IAAA,WAAe,IAAA,IAAQ,SAAA"}
1
+ {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../src/codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,SAAS;IACnB,eAAe,oBAAoB;IACnC,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;CAEhC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAEhE"}
package/dist/codes.js CHANGED
@@ -1,23 +1,20 @@
1
- //#region src/codes.ts
2
- /**
3
- * Centralised error codes used across services.
4
- * Extend this enum to add more domain-specific codes.
5
- */
6
- let ErrorCode = /* @__PURE__ */ function(ErrorCode) {
7
- ErrorCode["UNAUTHENTICATED"] = "UNAUTHENTICATED";
8
- ErrorCode["FORBIDDEN"] = "FORBIDDEN";
9
- ErrorCode["NOT_FOUND"] = "NOT_FOUND";
10
- ErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
11
- ErrorCode["CONFLICT"] = "CONFLICT";
12
- ErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
13
- ErrorCode["SERVER_ERROR"] = "SERVER_ERROR";
14
- ErrorCode["POLICY_DENIED"] = "POLICY_DENIED";
15
- return ErrorCode;
16
- }({});
1
+ // @bun
2
+ // src/codes.ts
3
+ var ErrorCode;
4
+ ((ErrorCode2) => {
5
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
6
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
7
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
8
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
9
+ ErrorCode2["CONFLICT"] = "CONFLICT";
10
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
11
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
12
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
13
+ })(ErrorCode ||= {});
17
14
  function isKnownErrorCode(code) {
18
- return Object.values(ErrorCode).includes(code);
15
+ return Object.values(ErrorCode).includes(code);
19
16
  }
20
-
21
- //#endregion
22
- export { ErrorCode, isKnownErrorCode };
23
- //# sourceMappingURL=codes.js.map
17
+ export {
18
+ isKnownErrorCode,
19
+ ErrorCode
20
+ };
package/dist/http.d.ts CHANGED
@@ -1,10 +1,9 @@
1
- import { ErrorCode } from "./codes.js";
2
-
3
- //#region src/http.d.ts
1
+ import { ErrorCode } from './codes';
4
2
  /**
5
3
  * Map known error codes to HTTP status codes.
6
4
  */
7
- declare function httpStatus(code: ErrorCode): number;
8
- //#endregion
9
- export { httpStatus };
5
+ export declare function httpStatus(code: ErrorCode): number;
6
+ /**
7
+ * Convert AppError or unknown error into a Problem JSON response body and status code.
8
+ */
10
9
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","names":[],"sources":["../src/http.ts"],"mappings":";;;;;AAKA;iBAAgB,UAAA,CAAW,IAAA,EAAM,SAAA"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAkBlD;AAED;;GAEG"}
package/dist/http.js CHANGED
@@ -1,25 +1,40 @@
1
- import { ErrorCode } from "./codes.js";
1
+ // @bun
2
+ // src/codes.ts
3
+ var ErrorCode;
4
+ ((ErrorCode2) => {
5
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
6
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
7
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
8
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
9
+ ErrorCode2["CONFLICT"] = "CONFLICT";
10
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
11
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
12
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
13
+ })(ErrorCode ||= {});
14
+ function isKnownErrorCode(code) {
15
+ return Object.values(ErrorCode).includes(code);
16
+ }
2
17
 
3
- //#region src/http.ts
4
- /**
5
- * Map known error codes to HTTP status codes.
6
- */
18
+ // src/http.ts
7
19
  function httpStatus(code) {
8
- switch (code) {
9
- case ErrorCode.UNAUTHENTICATED: return 401;
10
- case ErrorCode.FORBIDDEN:
11
- case ErrorCode.POLICY_DENIED: return 403;
12
- case ErrorCode.NOT_FOUND: return 404;
13
- case ErrorCode.INVALID_INPUT: return 400;
14
- case ErrorCode.CONFLICT: return 409;
15
- case ErrorCode.RATE_LIMITED: return 429;
16
- default: return 500;
17
- }
20
+ switch (code) {
21
+ case "UNAUTHENTICATED" /* UNAUTHENTICATED */:
22
+ return 401;
23
+ case "FORBIDDEN" /* FORBIDDEN */:
24
+ case "POLICY_DENIED" /* POLICY_DENIED */:
25
+ return 403;
26
+ case "NOT_FOUND" /* NOT_FOUND */:
27
+ return 404;
28
+ case "INVALID_INPUT" /* INVALID_INPUT */:
29
+ return 400;
30
+ case "CONFLICT" /* CONFLICT */:
31
+ return 409;
32
+ case "RATE_LIMITED" /* RATE_LIMITED */:
33
+ return 429;
34
+ default:
35
+ return 500;
36
+ }
18
37
  }
19
- /**
20
- * Convert AppError or unknown error into a Problem JSON response body and status code.
21
- */
22
-
23
- //#endregion
24
- export { httpStatus };
25
- //# sourceMappingURL=http.js.map
38
+ export {
39
+ httpStatus
40
+ };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ErrorCode, isKnownErrorCode } from "./codes.js";
2
- import { AppError, isAppError } from "./appError.js";
3
- import { httpStatus } from "./http.js";
4
- export { AppError, ErrorCode, httpStatus, isAppError, isKnownErrorCode };
1
+ export * from './appError';
2
+ export * from './codes';
3
+ export * from './http';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,60 @@
1
- import { ErrorCode, isKnownErrorCode } from "./codes.js";
2
- import { AppError, isAppError } from "./appError.js";
3
- import { httpStatus } from "./http.js";
1
+ // @bun
2
+ // src/appError.ts
3
+ class AppError extends Error {
4
+ code;
5
+ details;
6
+ constructor(code, message, details) {
7
+ super(message);
8
+ this.code = code;
9
+ this.details = details;
10
+ Object.setPrototypeOf(this, new.target.prototype);
11
+ this.name = "AppError";
12
+ }
13
+ }
14
+ function isAppError(err) {
15
+ return err instanceof AppError;
16
+ }
4
17
 
5
- export { AppError, ErrorCode, httpStatus, isAppError, isKnownErrorCode };
18
+ // src/codes.ts
19
+ var ErrorCode;
20
+ ((ErrorCode2) => {
21
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
22
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
23
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
24
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
25
+ ErrorCode2["CONFLICT"] = "CONFLICT";
26
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
27
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
28
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
29
+ })(ErrorCode ||= {});
30
+ function isKnownErrorCode(code) {
31
+ return Object.values(ErrorCode).includes(code);
32
+ }
33
+
34
+ // src/http.ts
35
+ function httpStatus(code) {
36
+ switch (code) {
37
+ case "UNAUTHENTICATED" /* UNAUTHENTICATED */:
38
+ return 401;
39
+ case "FORBIDDEN" /* FORBIDDEN */:
40
+ case "POLICY_DENIED" /* POLICY_DENIED */:
41
+ return 403;
42
+ case "NOT_FOUND" /* NOT_FOUND */:
43
+ return 404;
44
+ case "INVALID_INPUT" /* INVALID_INPUT */:
45
+ return 400;
46
+ case "CONFLICT" /* CONFLICT */:
47
+ return 409;
48
+ case "RATE_LIMITED" /* RATE_LIMITED */:
49
+ return 429;
50
+ default:
51
+ return 500;
52
+ }
53
+ }
54
+ export {
55
+ isKnownErrorCode,
56
+ isAppError,
57
+ httpStatus,
58
+ ErrorCode,
59
+ AppError
60
+ };
@@ -0,0 +1,19 @@
1
+ // src/appError.ts
2
+ class AppError extends Error {
3
+ code;
4
+ details;
5
+ constructor(code, message, details) {
6
+ super(message);
7
+ this.code = code;
8
+ this.details = details;
9
+ Object.setPrototypeOf(this, new.target.prototype);
10
+ this.name = "AppError";
11
+ }
12
+ }
13
+ function isAppError(err) {
14
+ return err instanceof AppError;
15
+ }
16
+ export {
17
+ isAppError,
18
+ AppError
19
+ };
@@ -0,0 +1,19 @@
1
+ // src/codes.ts
2
+ var ErrorCode;
3
+ ((ErrorCode2) => {
4
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
5
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
6
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
7
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
8
+ ErrorCode2["CONFLICT"] = "CONFLICT";
9
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
10
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
11
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
12
+ })(ErrorCode ||= {});
13
+ function isKnownErrorCode(code) {
14
+ return Object.values(ErrorCode).includes(code);
15
+ }
16
+ export {
17
+ isKnownErrorCode,
18
+ ErrorCode
19
+ };
@@ -0,0 +1,39 @@
1
+ // src/codes.ts
2
+ var ErrorCode;
3
+ ((ErrorCode2) => {
4
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
5
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
6
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
7
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
8
+ ErrorCode2["CONFLICT"] = "CONFLICT";
9
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
10
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
11
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
12
+ })(ErrorCode ||= {});
13
+ function isKnownErrorCode(code) {
14
+ return Object.values(ErrorCode).includes(code);
15
+ }
16
+
17
+ // src/http.ts
18
+ function httpStatus(code) {
19
+ switch (code) {
20
+ case "UNAUTHENTICATED" /* UNAUTHENTICATED */:
21
+ return 401;
22
+ case "FORBIDDEN" /* FORBIDDEN */:
23
+ case "POLICY_DENIED" /* POLICY_DENIED */:
24
+ return 403;
25
+ case "NOT_FOUND" /* NOT_FOUND */:
26
+ return 404;
27
+ case "INVALID_INPUT" /* INVALID_INPUT */:
28
+ return 400;
29
+ case "CONFLICT" /* CONFLICT */:
30
+ return 409;
31
+ case "RATE_LIMITED" /* RATE_LIMITED */:
32
+ return 429;
33
+ default:
34
+ return 500;
35
+ }
36
+ }
37
+ export {
38
+ httpStatus
39
+ };
@@ -0,0 +1,59 @@
1
+ // src/appError.ts
2
+ class AppError extends Error {
3
+ code;
4
+ details;
5
+ constructor(code, message, details) {
6
+ super(message);
7
+ this.code = code;
8
+ this.details = details;
9
+ Object.setPrototypeOf(this, new.target.prototype);
10
+ this.name = "AppError";
11
+ }
12
+ }
13
+ function isAppError(err) {
14
+ return err instanceof AppError;
15
+ }
16
+
17
+ // src/codes.ts
18
+ var ErrorCode;
19
+ ((ErrorCode2) => {
20
+ ErrorCode2["UNAUTHENTICATED"] = "UNAUTHENTICATED";
21
+ ErrorCode2["FORBIDDEN"] = "FORBIDDEN";
22
+ ErrorCode2["NOT_FOUND"] = "NOT_FOUND";
23
+ ErrorCode2["INVALID_INPUT"] = "INVALID_INPUT";
24
+ ErrorCode2["CONFLICT"] = "CONFLICT";
25
+ ErrorCode2["RATE_LIMITED"] = "RATE_LIMITED";
26
+ ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
27
+ ErrorCode2["POLICY_DENIED"] = "POLICY_DENIED";
28
+ })(ErrorCode ||= {});
29
+ function isKnownErrorCode(code) {
30
+ return Object.values(ErrorCode).includes(code);
31
+ }
32
+
33
+ // src/http.ts
34
+ function httpStatus(code) {
35
+ switch (code) {
36
+ case "UNAUTHENTICATED" /* UNAUTHENTICATED */:
37
+ return 401;
38
+ case "FORBIDDEN" /* FORBIDDEN */:
39
+ case "POLICY_DENIED" /* POLICY_DENIED */:
40
+ return 403;
41
+ case "NOT_FOUND" /* NOT_FOUND */:
42
+ return 404;
43
+ case "INVALID_INPUT" /* INVALID_INPUT */:
44
+ return 400;
45
+ case "CONFLICT" /* CONFLICT */:
46
+ return 409;
47
+ case "RATE_LIMITED" /* RATE_LIMITED */:
48
+ return 429;
49
+ default:
50
+ return 500;
51
+ }
52
+ }
53
+ export {
54
+ isKnownErrorCode,
55
+ isAppError,
56
+ httpStatus,
57
+ ErrorCode,
58
+ AppError
59
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contractspec/lib.error",
3
- "version": "1.57.0",
3
+ "version": "1.59.0",
4
4
  "description": "Structured error handling and HTTP error utilities",
5
5
  "keywords": [
6
6
  "contractspec",
@@ -12,20 +12,21 @@
12
12
  "scripts": {
13
13
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
14
14
  "publish:pkg:canary": "bun publish:pkg --tag canary",
15
- "build": "bun build:types && bun build:bundle",
16
- "build:bundle": "tsdown",
17
- "build:types": "tsc --noEmit",
18
- "dev": "bun build:bundle --watch",
15
+ "build": "bun run prebuild && bun run build:bundle && bun run build:types",
16
+ "build:bundle": "contractspec-bun-build transpile",
17
+ "build:types": "contractspec-bun-build types",
18
+ "dev": "contractspec-bun-build dev",
19
19
  "clean": "rimraf dist .turbo",
20
20
  "lint": "bun lint:fix",
21
21
  "lint:fix": "eslint src --fix",
22
- "lint:check": "eslint src"
22
+ "lint:check": "eslint src",
23
+ "prebuild": "contractspec-bun-build prebuild",
24
+ "typecheck": "tsc --noEmit"
23
25
  },
24
26
  "devDependencies": {
25
- "@contractspec/tool.tsdown": "1.57.0",
26
- "@contractspec/tool.typescript": "1.57.0",
27
- "tsdown": "^0.20.3",
28
- "typescript": "^5.9.3"
27
+ "@contractspec/tool.typescript": "1.59.0",
28
+ "typescript": "^5.9.3",
29
+ "@contractspec/tool.bun": "1.58.0"
29
30
  },
30
31
  "dependencies": {},
31
32
  "peerDependencies": {
@@ -40,20 +41,42 @@
40
41
  "README.md"
41
42
  ],
42
43
  "exports": {
43
- ".": "./dist/index.js",
44
- "./appError": "./dist/appError.js",
45
- "./codes": "./dist/codes.js",
46
- "./http": "./dist/http.js",
47
- "./*": "./*"
44
+ ".": "./src/index.ts",
45
+ "./appError": "./src/appError.ts",
46
+ "./codes": "./src/codes.ts",
47
+ "./http": "./src/http.ts"
48
48
  },
49
49
  "publishConfig": {
50
50
  "access": "public",
51
51
  "exports": {
52
- ".": "./dist/index.js",
53
- "./appError": "./dist/appError.js",
54
- "./codes": "./dist/codes.js",
55
- "./http": "./dist/http.js",
56
- "./*": "./*"
52
+ ".": {
53
+ "types": "./dist/index.d.ts",
54
+ "bun": "./dist/index.js",
55
+ "node": "./dist/node/index.mjs",
56
+ "browser": "./dist/browser/index.js",
57
+ "default": "./dist/index.js"
58
+ },
59
+ "./appError": {
60
+ "types": "./dist/appError.d.ts",
61
+ "bun": "./dist/appError.js",
62
+ "node": "./dist/node/appError.mjs",
63
+ "browser": "./dist/browser/appError.js",
64
+ "default": "./dist/appError.js"
65
+ },
66
+ "./codes": {
67
+ "types": "./dist/codes.d.ts",
68
+ "bun": "./dist/codes.js",
69
+ "node": "./dist/node/codes.mjs",
70
+ "browser": "./dist/browser/codes.js",
71
+ "default": "./dist/codes.js"
72
+ },
73
+ "./http": {
74
+ "types": "./dist/http.d.ts",
75
+ "bun": "./dist/http.js",
76
+ "node": "./dist/node/http.mjs",
77
+ "browser": "./dist/browser/http.js",
78
+ "default": "./dist/http.js"
79
+ }
57
80
  },
58
81
  "registry": "https://registry.npmjs.org/"
59
82
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"appError.js","names":[],"sources":["../src/appError.ts"],"sourcesContent":["import { ErrorCode } from './codes';\n\n/**\n * Generic application error with code and optional details.\n */\nexport class AppError extends Error {\n constructor(\n public code: ErrorCode,\n message: string,\n public details?: Record<string, unknown>\n ) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = 'AppError';\n }\n}\n\n/** Type guard to detect AppError */\nexport function isAppError(err: unknown): err is AppError {\n return err instanceof AppError;\n}\n"],"mappings":";;;;AAKA,IAAa,WAAb,cAA8B,MAAM;CAClC,YACE,AAAO,MACP,SACA,AAAO,SACP;AACA,QAAM,QAAQ;EAJP;EAEA;AAGP,SAAO,eAAe,MAAM,IAAI,OAAO,UAAU;AACjD,OAAK,OAAO;;;;AAKhB,SAAgB,WAAW,KAA+B;AACxD,QAAO,eAAe"}
package/dist/codes.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"codes.js","names":[],"sources":["../src/codes.ts"],"sourcesContent":["/**\n * Centralised error codes used across services.\n * Extend this enum to add more domain-specific codes.\n */\nexport enum ErrorCode {\n UNAUTHENTICATED = 'UNAUTHENTICATED',\n FORBIDDEN = 'FORBIDDEN',\n NOT_FOUND = 'NOT_FOUND',\n INVALID_INPUT = 'INVALID_INPUT',\n CONFLICT = 'CONFLICT',\n RATE_LIMITED = 'RATE_LIMITED',\n SERVER_ERROR = 'SERVER_ERROR',\n POLICY_DENIED = 'POLICY_DENIED',\n // add more codes here\n}\n\nexport function isKnownErrorCode(code: string): code is ErrorCode {\n return Object.values(ErrorCode).includes(code as ErrorCode);\n}\n"],"mappings":";;;;;AAIA,IAAY,gDAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAIF,SAAgB,iBAAiB,MAAiC;AAChE,QAAO,OAAO,OAAO,UAAU,CAAC,SAAS,KAAkB"}
package/dist/http.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","names":[],"sources":["../src/http.ts"],"sourcesContent":["import { ErrorCode } from './codes';\n\n/**\n * Map known error codes to HTTP status codes.\n */\nexport function httpStatus(code: ErrorCode): number {\n switch (code) {\n case ErrorCode.UNAUTHENTICATED:\n return 401;\n case ErrorCode.FORBIDDEN:\n case ErrorCode.POLICY_DENIED:\n return 403;\n case ErrorCode.NOT_FOUND:\n return 404;\n case ErrorCode.INVALID_INPUT:\n return 400;\n case ErrorCode.CONFLICT:\n return 409;\n case ErrorCode.RATE_LIMITED:\n return 429;\n default:\n return 500;\n }\n}\n\n/**\n * Convert AppError or unknown error into a Problem JSON response body and status code.\n */\n// export function toHttpResponse(err: unknown): { status: number; body: any } {\n// if (isAppError(err)) {\n// const status = httpStatus(err.code);\n// return {\n// status,\n// body: {\n// type: `https://api.chaman.dev/errors/${err.code.toLowerCase()}`,\n// title: err.message,\n// detail: err.details ?? null,\n// status,\n// },\n// };\n// }\n// // Unknown error: hide internal details\n// return {\n// status: 500,\n// body: {\n// type: 'https://api.chaman.dev/errors/server_error',\n// title: 'Unexpected Error',\n// detail: null,\n// status: 500,\n// },\n// };\n// }\n"],"mappings":";;;;;;AAKA,SAAgB,WAAW,MAAyB;AAClD,SAAQ,MAAR;EACE,KAAK,UAAU,gBACb,QAAO;EACT,KAAK,UAAU;EACf,KAAK,UAAU,cACb,QAAO;EACT,KAAK,UAAU,UACb,QAAO;EACT,KAAK,UAAU,cACb,QAAO;EACT,KAAK,UAAU,SACb,QAAO;EACT,KAAK,UAAU,aACb,QAAO;EACT,QACE,QAAO"}