@bessemer/cornerstone 0.5.51 → 0.5.52

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,8 +1,14 @@
1
1
  import { LazyValue } from '@bessemer/cornerstone/lazy';
2
2
  import { Nil } from '@bessemer/cornerstone/types';
3
+ import { ErrorEventBuilder } from '@bessemer/cornerstone/error-event';
3
4
  export declare function assertUnreachable(message?: LazyValue<string>): never;
4
5
  export declare function assertTrue(value: boolean, message?: LazyValue<string>): asserts value is true;
5
6
  export declare function assertFalse(value: boolean, message?: LazyValue<string>): asserts value is false;
6
7
  export declare function assertNil(value: any, message?: LazyValue<string>): asserts value is Nil;
7
8
  export declare function assertPresent<T>(value: T, message?: LazyValue<string>): asserts value is NonNullable<T>;
9
+ export declare function expectPresent<T>(value: T, builder?: LazyValue<Partial<ErrorEventBuilder> | undefined>): asserts value is NonNullable<T>;
10
+ export declare function expectAuthorized<T>(value: boolean, builder?: LazyValue<Partial<ErrorEventBuilder> | undefined>): asserts value is true;
11
+ export declare function expectPermitted<T>(value: boolean, builder?: LazyValue<Partial<ErrorEventBuilder> | undefined>): asserts value is true;
12
+ export declare function expectValid<T>(value: boolean, builder?: LazyValue<Partial<ErrorEventBuilder> | undefined>): asserts value is true;
13
+ export declare function expect<T>(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true;
8
14
  //# sourceMappingURL=assertion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../src/assertion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAEjD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,SAAS,CAAC,MAAM,CAAmD,GAAG,KAAK,CAErH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAkD,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAI7I;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAmD,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAEhJ;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAiD,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAEtI;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,SAAS,CAAC,MAAM,CAAqD,GAC7E,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEjC"}
1
+ {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../src/assertion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAc,iBAAiB,EAA8D,MAAM,mCAAmC,CAAA;AAE7I,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,SAAS,CAAC,MAAM,CAAoD,GAAG,KAAK,CAEtH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAmD,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAI9I;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAoD,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAEjJ;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAkD,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAEvI;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,SAAS,CAAC,MAAM,CAAsD,GAC9E,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEjC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAmB,GAC3E,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAIjC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAmB,GAC3E,OAAO,CAAC,KAAK,IAAI,IAAI,CAIvB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAmB,GAC3E,OAAO,CAAC,KAAK,IAAI,IAAI,CAIvB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAIlJ;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAItG"}
package/dist/assertion.js CHANGED
@@ -1,27 +1,58 @@
1
1
  // src/assertion.ts
2
2
  import { Lazy, Objects } from "@bessemer/cornerstone";
3
- function assertUnreachable(message = () => "Preconditions.isUnreachable was reached") {
3
+ import { badRequest, ErrorEventException, forbidden, notFound, of, unauthorized } from "@bessemer/cornerstone/error-event";
4
+ function assertUnreachable(message = () => "Assertions.assertUnreachable was reached") {
4
5
  throw new Error(Lazy.evaluate(message));
5
6
  }
6
- function assertTrue(value, message = () => "Preconditions.isTrue failed validation") {
7
+ function assertTrue(value, message = () => "Assertions.assertTrue failed validation") {
7
8
  if (!value) {
8
9
  throw new Error(Lazy.evaluate(message));
9
10
  }
10
11
  }
11
- function assertFalse(value, message = () => "Preconditions.isFalse failed validation") {
12
+ function assertFalse(value, message = () => "Assertions.assertFalse failed validation") {
12
13
  return assertTrue(!value, message);
13
14
  }
14
- function assertNil(value, message = () => "Preconditions.isNil failed validation") {
15
+ function assertNil(value, message = () => "Assertions.assertNil failed validation") {
15
16
  return assertTrue(Objects.isNil(value), message);
16
17
  }
17
- function assertPresent(value, message = () => "Preconditions.isPresent failed validation") {
18
+ function assertPresent(value, message = () => "Assertions.assertPresent failed validation") {
18
19
  return assertTrue(Objects.isPresent(value), message);
19
20
  }
21
+ function expectPresent(value, builder = () => void 0) {
22
+ if (!Objects.isPresent(value)) {
23
+ throw new ErrorEventException(notFound(Lazy.evaluate(builder)));
24
+ }
25
+ }
26
+ function expectAuthorized(value, builder = () => void 0) {
27
+ if (!value) {
28
+ throw new ErrorEventException(unauthorized(Lazy.evaluate(builder)));
29
+ }
30
+ }
31
+ function expectPermitted(value, builder = () => void 0) {
32
+ if (!value) {
33
+ throw new ErrorEventException(forbidden(Lazy.evaluate(builder)));
34
+ }
35
+ }
36
+ function expectValid(value, builder = () => void 0) {
37
+ if (!Objects.isPresent(value)) {
38
+ throw new ErrorEventException(badRequest(Lazy.evaluate(builder)));
39
+ }
40
+ }
41
+ function expect(value, builder) {
42
+ if (!Objects.isPresent(value)) {
43
+ throw new ErrorEventException(of(Lazy.evaluate(builder)));
44
+ }
45
+ }
20
46
  export {
21
47
  assertFalse,
22
48
  assertNil,
23
49
  assertPresent,
24
50
  assertTrue,
25
- assertUnreachable
51
+ assertUnreachable,
52
+ expect,
53
+ expectAuthorized,
54
+ expectPermitted,
55
+ expectPresent,
56
+ expectValid
26
57
  };
27
58
  //# sourceMappingURL=assertion.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import { Lazy, Objects } from '@bessemer/cornerstone'\nimport { LazyValue } from '@bessemer/cornerstone/lazy'\nimport { Nil } from '@bessemer/cornerstone/types'\n\nexport function assertUnreachable(message: LazyValue<string> = () => 'Preconditions.isUnreachable was reached'): never {\n throw new Error(Lazy.evaluate(message))\n}\n\nexport function assertTrue(value: boolean, message: LazyValue<string> = () => 'Preconditions.isTrue failed validation'): asserts value is true {\n if (!value) {\n throw new Error(Lazy.evaluate(message))\n }\n}\n\nexport function assertFalse(value: boolean, message: LazyValue<string> = () => 'Preconditions.isFalse failed validation'): asserts value is false {\n return assertTrue(!value, message)\n}\n\nexport function assertNil(value: any, message: LazyValue<string> = () => 'Preconditions.isNil failed validation'): asserts value is Nil {\n return assertTrue(Objects.isNil(value), message)\n}\n\nexport function assertPresent<T>(\n value: T,\n message: LazyValue<string> = () => 'Preconditions.isPresent failed validation'\n): asserts value is NonNullable<T> {\n return assertTrue(Objects.isPresent(value), message)\n}\n"],"mappings":";AAAA,SAAS,MAAM,eAAe;AAIvB,SAAS,kBAAkB,UAA6B,MAAM,2CAAkD;AACrH,QAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AACxC;AAEO,SAAS,WAAW,OAAgB,UAA6B,MAAM,0CAAiE;AAC7I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AAAA,EACxC;AACF;AAEO,SAAS,YAAY,OAAgB,UAA6B,MAAM,2CAAmE;AAChJ,SAAO,WAAW,CAAC,OAAO,OAAO;AACnC;AAEO,SAAS,UAAU,OAAY,UAA6B,MAAM,yCAA+D;AACtI,SAAO,WAAW,QAAQ,MAAM,KAAK,GAAG,OAAO;AACjD;AAEO,SAAS,cACd,OACA,UAA6B,MAAM,6CACF;AACjC,SAAO,WAAW,QAAQ,UAAU,KAAK,GAAG,OAAO;AACrD;","names":[]}
1
+ {"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import { Lazy, Objects } from '@bessemer/cornerstone'\nimport { LazyValue } from '@bessemer/cornerstone/lazy'\nimport { Nil } from '@bessemer/cornerstone/types'\nimport { badRequest, ErrorEventBuilder, ErrorEventException, forbidden, notFound, of, unauthorized } from '@bessemer/cornerstone/error-event'\n\nexport function assertUnreachable(message: LazyValue<string> = () => 'Assertions.assertUnreachable was reached'): never {\n throw new Error(Lazy.evaluate(message))\n}\n\nexport function assertTrue(value: boolean, message: LazyValue<string> = () => 'Assertions.assertTrue failed validation'): asserts value is true {\n if (!value) {\n throw new Error(Lazy.evaluate(message))\n }\n}\n\nexport function assertFalse(value: boolean, message: LazyValue<string> = () => 'Assertions.assertFalse failed validation'): asserts value is false {\n return assertTrue(!value, message)\n}\n\nexport function assertNil(value: any, message: LazyValue<string> = () => 'Assertions.assertNil failed validation'): asserts value is Nil {\n return assertTrue(Objects.isNil(value), message)\n}\n\nexport function assertPresent<T>(\n value: T,\n message: LazyValue<string> = () => 'Assertions.assertPresent failed validation'\n): asserts value is NonNullable<T> {\n return assertTrue(Objects.isPresent(value), message)\n}\n\nexport function expectPresent<T>(\n value: T,\n builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined\n): asserts value is NonNullable<T> {\n if (!Objects.isPresent(value)) {\n throw new ErrorEventException(notFound(Lazy.evaluate(builder)))\n }\n}\n\nexport function expectAuthorized<T>(\n value: boolean,\n builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined\n): asserts value is true {\n if (!value) {\n throw new ErrorEventException(unauthorized(Lazy.evaluate(builder)))\n }\n}\n\nexport function expectPermitted<T>(\n value: boolean,\n builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined\n): asserts value is true {\n if (!value) {\n throw new ErrorEventException(forbidden(Lazy.evaluate(builder)))\n }\n}\n\nexport function expectValid<T>(value: boolean, builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined): asserts value is true {\n if (!Objects.isPresent(value)) {\n throw new ErrorEventException(badRequest(Lazy.evaluate(builder)))\n }\n}\n\nexport function expect<T>(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true {\n if (!Objects.isPresent(value)) {\n throw new ErrorEventException(of(Lazy.evaluate(builder)))\n }\n}\n"],"mappings":";AAAA,SAAS,MAAM,eAAe;AAG9B,SAAS,YAA+B,qBAAqB,WAAW,UAAU,IAAI,oBAAoB;AAEnG,SAAS,kBAAkB,UAA6B,MAAM,4CAAmD;AACtH,QAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AACxC;AAEO,SAAS,WAAW,OAAgB,UAA6B,MAAM,2CAAkE;AAC9I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AAAA,EACxC;AACF;AAEO,SAAS,YAAY,OAAgB,UAA6B,MAAM,4CAAoE;AACjJ,SAAO,WAAW,CAAC,OAAO,OAAO;AACnC;AAEO,SAAS,UAAU,OAAY,UAA6B,MAAM,0CAAgE;AACvI,SAAO,WAAW,QAAQ,MAAM,KAAK,GAAG,OAAO;AACjD;AAEO,SAAS,cACd,OACA,UAA6B,MAAM,8CACF;AACjC,SAAO,WAAW,QAAQ,UAAU,KAAK,GAAG,OAAO;AACrD;AAEO,SAAS,cACd,OACA,UAA6D,MAAM,QAClC;AACjC,MAAI,CAAC,QAAQ,UAAU,KAAK,GAAG;AAC7B,UAAM,IAAI,oBAAoB,SAAS,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EAChE;AACF;AAEO,SAAS,iBACd,OACA,UAA6D,MAAM,QAC5C;AACvB,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,aAAa,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EACpE;AACF;AAEO,SAAS,gBACd,OACA,UAA6D,MAAM,QAC5C;AACvB,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,UAAU,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EACjE;AACF;AAEO,SAAS,YAAe,OAAgB,UAA6D,MAAM,QAAkC;AAClJ,MAAI,CAAC,QAAQ,UAAU,KAAK,GAAG;AAC7B,UAAM,IAAI,oBAAoB,WAAW,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EAClE;AACF;AAEO,SAAS,OAAU,OAAgB,SAA8D;AACtG,MAAI,CAAC,QAAQ,UAAU,KAAK,GAAG;AAC7B,UAAM,IAAI,oBAAoB,GAAG,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EAC1D;AACF;","names":[]}
@@ -40,6 +40,7 @@ export declare const findInCausalChain: (error: ErrorEvent, predicate: (error: E
40
40
  export declare const aggregate: (builder: ErrorEventBuilder, causes: Array<ErrorEvent>) => ErrorEvent | undefined;
41
41
  export declare const UnhandledErrorCode: ErrorCode;
42
42
  export declare const NotFoundErrorCode: ErrorCode;
43
+ export declare const ForbiddenErrorCode: ErrorCode;
43
44
  export declare const UnauthorizedErrorCode: ErrorCode;
44
45
  export declare const BadRequestErrorCode: ErrorCode;
45
46
  export declare const RequestCorrelationIdAttribute: ErrorAttribute<string>;
@@ -47,6 +48,7 @@ export declare const HttpStatusCodeAttribute: ErrorAttribute<number>;
47
48
  export declare const unhandled: (builder?: Partial<ErrorEventBuilder>) => ErrorEvent;
48
49
  export declare const notFound: (builder?: Partial<ErrorEventBuilder>) => ErrorEvent;
49
50
  export declare const unauthorized: (builder?: Partial<ErrorEventBuilder>) => ErrorEvent;
51
+ export declare const forbidden: (builder?: Partial<ErrorEventBuilder>) => ErrorEvent;
50
52
  export declare const badRequest: (builder?: Partial<ErrorEventBuilder>) => ErrorEvent;
51
53
  export {};
52
54
  //# sourceMappingURL=error-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../src/error-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAOlC,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AACxD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,SAAS,CAAgB,CAAA;AAE/D,MAAM,MAAM,cAAc,CAAC,IAAI,GAAG,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AACpF,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,cAAc,CAAgB,CAAA;AAEzE,QAAA,MAAM,oBAAoB;;;;;;;;;;;;EAIxB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAAG;IAChE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAC1B,CAAA;AAOD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAC3B,CAAA;AAGD,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;gBAEnB,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,OAAO;CAKpD;AAED,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,KAAG,SAAS,IAAI,UAMhE,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,WAAW,SAAS,KAAG,SAAS,IAAI,mBAEzE,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,SAAS,iBAAiB,KAAG,UAS/C,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,WAAW,SAAS,KAAG,UAe3C,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,OAAO,UAAU,EAAE,MAAM,MAAM,KAAG,UAAU,GAAG,SAEtF,CAAA;AAOD,eAAO,MAAM,iBAAiB,GAAI,OAAO,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,KAAG,UAAU,GAAG,SAM7G,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,iBAAiB,EAAE,QAAQ,KAAK,CAAC,UAAU,CAAC,KAAG,UAAU,GAAG,SAM9F,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAmC,CAAA;AACpE,eAAO,MAAM,iBAAiB,EAAE,SAAmC,CAAA;AACnE,eAAO,MAAM,qBAAqB,EAAE,SAAsC,CAAA;AAC1E,eAAO,MAAM,mBAAmB,EAAE,SAAqC,CAAA;AAEvE,eAAO,MAAM,6BAA6B,EAAE,cAAc,CAAC,MAAM,CAA0B,CAAA;AAC3F,eAAO,MAAM,uBAAuB,EAAE,cAAc,CAAC,MAAM,CAAoB,CAAA;AAE/E,eAAO,MAAM,SAAS,GAAI,UAAU,OAAO,CAAC,iBAAiB,CAAC,eAO3D,CAAA;AAEH,eAAO,MAAM,QAAQ,GAAI,UAAU,OAAO,CAAC,iBAAiB,CAAC,eAO1D,CAAA;AAEH,eAAO,MAAM,YAAY,GAAI,UAAU,OAAO,CAAC,iBAAiB,CAAC,eAO9D,CAAA;AAEH,eAAO,MAAM,UAAU,GAAI,UAAU,OAAO,CAAC,iBAAiB,CAAC,eAO5D,CAAA"}
1
+ {"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../src/error-event.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,7 @@ var aggregate = (builder, causes) => {
67
67
  };
68
68
  var UnhandledErrorCode = "error-event.unhandled";
69
69
  var NotFoundErrorCode = "error-event.not-found";
70
+ var ForbiddenErrorCode = "error-event.forbidden";
70
71
  var UnauthorizedErrorCode = "error-event.unauthorized";
71
72
  var BadRequestErrorCode = "error-event.bad-request";
72
73
  var RequestCorrelationIdAttribute = "requestCorrelationId";
@@ -92,6 +93,13 @@ var unauthorized = (builder) => of(
92
93
  attributes: { [HttpStatusCodeAttribute]: 401 }
93
94
  })
94
95
  );
96
+ var forbidden = (builder) => of(
97
+ Objects.deepMerge(builder, {
98
+ code: ForbiddenErrorCode,
99
+ message: "The requested Resource requires additional permissions to access.",
100
+ attributes: { [HttpStatusCodeAttribute]: 403 }
101
+ })
102
+ );
95
103
  var badRequest = (builder) => of(
96
104
  Objects.deepMerge(builder, {
97
105
  code: BadRequestErrorCode,
@@ -104,6 +112,7 @@ export {
104
112
  ErrorAttributeSchema,
105
113
  ErrorCodeSchema,
106
114
  ErrorEventException,
115
+ ForbiddenErrorCode,
107
116
  HttpStatusCodeAttribute,
108
117
  NotFoundErrorCode,
109
118
  RequestCorrelationIdAttribute,
@@ -113,6 +122,7 @@ export {
113
122
  badRequest,
114
123
  findByCodeInCausalChain,
115
124
  findInCausalChain,
125
+ forbidden,
116
126
  from,
117
127
  isErrorEvent,
118
128
  isErrorEventException,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error-event.ts"],"sourcesContent":["import { Arrays, Errors, Objects } from '@bessemer/cornerstone'\nimport { NominalType, Throwable } from '@bessemer/cornerstone/types'\nimport { RecordAttribute } from '@bessemer/cornerstone/object'\nimport Zod, { ZodType } from 'zod'\n\n/*\n Represents a structured error event. The code can be mapped to a unique type of error while the\n message and attributes can provide contextual information about the error. Finally,\n an ErrorEvent could have multiple causes which get aggregated into a single parent error.\n */\nexport type ErrorCode = NominalType<string, 'ErrorCode'>\nexport const ErrorCodeSchema: ZodType<ErrorCode> = Zod.string()\n\nexport type ErrorAttribute<Type = unknown> = RecordAttribute<Type, 'ErrorAttribute'>\nexport const ErrorAttributeSchema: ZodType<ErrorAttribute> = Zod.string()\n\nconst baseErrorEventSchema = Zod.object({\n code: ErrorCodeSchema,\n message: Zod.string(),\n attributes: Zod.record(ErrorAttributeSchema, Zod.unknown()),\n})\n\nexport type ErrorEvent = Zod.infer<typeof baseErrorEventSchema> & {\n causes: Array<ErrorEvent>\n}\n\nconst ErrorEventSchema: ZodType<ErrorEvent> = baseErrorEventSchema.extend({\n causes: Zod.lazy(() => Zod.array(ErrorEventSchema)),\n})\n\n// Builder object that allows for 'partial' representation of ErrorEvents\nexport type ErrorEventBuilder = {\n code: ErrorCode\n message?: string | null\n attributes?: Record<ErrorAttribute, unknown>\n causes?: Array<ErrorEvent>\n}\n\n// An exception type that contains an ErrorEvent\nexport class ErrorEventException extends Error {\n readonly errorEvent: ErrorEvent\n\n constructor(errorEvent: ErrorEvent, cause?: unknown) {\n super(errorEvent.message ?? '', { cause })\n this.name = this.constructor.name\n this.errorEvent = errorEvent\n }\n}\n\nexport const isErrorEvent = (throwable: Throwable): throwable is ErrorEvent => {\n if (!Objects.isObject(throwable)) {\n return false\n }\n\n return 'code' in throwable && 'message' in throwable && 'attributes' in throwable && 'causes' in throwable\n}\n\nexport const isErrorEventException = (throwable: Throwable): throwable is ErrorEventException => {\n return throwable instanceof ErrorEventException\n}\n\nexport const of = (builder: ErrorEventBuilder): ErrorEvent => {\n const code = builder.code\n\n return {\n code,\n message: builder.message ?? code,\n attributes: builder.attributes ?? {},\n causes: builder.causes ?? [],\n }\n}\n\nexport const from = (throwable: Throwable): ErrorEvent => {\n if (isErrorEvent(throwable)) {\n return throwable\n }\n\n if (!Errors.isError(throwable)) {\n return unhandled()\n }\n\n const errorEventException = Errors.findInCausalChain(throwable, isErrorEventException) as ErrorEventException | undefined\n if (Objects.isNil(errorEventException)) {\n return unhandled()\n }\n\n return errorEventException.errorEvent\n}\n\nexport const findByCodeInCausalChain = (error: ErrorEvent, code: string): ErrorEvent | undefined => {\n return findInCausalChain(error, (it) => it.code === code)\n}\n\n/*\n Traverses the causal chain of the ErrorEvent, searching for a predicate that matches (including matching on the parent error event)\n This is useful if you want to find whether or not a given error was caused by a specific failure. The search executes depth-first and\n will return te first matching instance that satisfies the predicate, or undefined otherwise\n */\nexport const findInCausalChain = (error: ErrorEvent, predicate: (error: ErrorEvent) => boolean): ErrorEvent | undefined => {\n if (predicate(error)) {\n return error\n }\n\n return Arrays.first(error.causes.map((it) => findInCausalChain(it, predicate)).filter(Objects.isPresent))\n}\n\nexport const aggregate = (builder: ErrorEventBuilder, causes: Array<ErrorEvent>): ErrorEvent | undefined => {\n if (causes.length === 0) {\n return undefined\n }\n\n return of({ ...builder, causes })\n}\n\nexport const UnhandledErrorCode: ErrorCode = 'error-event.unhandled'\nexport const NotFoundErrorCode: ErrorCode = 'error-event.not-found'\nexport const UnauthorizedErrorCode: ErrorCode = 'error-event.unauthorized'\nexport const BadRequestErrorCode: ErrorCode = 'error-event.bad-request'\n\nexport const RequestCorrelationIdAttribute: ErrorAttribute<string> = 'requestCorrelationId'\nexport const HttpStatusCodeAttribute: ErrorAttribute<number> = 'httpStatusCode'\n\nexport const unhandled = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: UnhandledErrorCode,\n message: 'An Unhandled Error has occurred.',\n attributes: { [HttpStatusCodeAttribute]: 500 },\n })\n )\n\nexport const notFound = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: NotFoundErrorCode,\n message: 'The requested Resource could not be found.',\n attributes: { [HttpStatusCodeAttribute]: 404 },\n })\n )\n\nexport const unauthorized = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: UnauthorizedErrorCode,\n message: 'The requested Resource requires authentication.',\n attributes: { [HttpStatusCodeAttribute]: 401 },\n })\n )\n\nexport const badRequest = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: BadRequestErrorCode,\n message: 'The request is invalid and cannot be processed.',\n attributes: { [HttpStatusCodeAttribute]: 400 },\n })\n )\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/error-event.ts"],"sourcesContent":["import { Arrays, Errors, Objects } from '@bessemer/cornerstone'\nimport { NominalType, Throwable } from '@bessemer/cornerstone/types'\nimport { RecordAttribute } from '@bessemer/cornerstone/object'\nimport Zod, { ZodType } from 'zod'\n\n/*\n Represents a structured error event. The code can be mapped to a unique type of error while the\n message and attributes can provide contextual information about the error. Finally,\n an ErrorEvent could have multiple causes which get aggregated into a single parent error.\n */\nexport type ErrorCode = NominalType<string, 'ErrorCode'>\nexport const ErrorCodeSchema: ZodType<ErrorCode> = Zod.string()\n\nexport type ErrorAttribute<Type = unknown> = RecordAttribute<Type, 'ErrorAttribute'>\nexport const ErrorAttributeSchema: ZodType<ErrorAttribute> = Zod.string()\n\nconst baseErrorEventSchema = Zod.object({\n code: ErrorCodeSchema,\n message: Zod.string(),\n attributes: Zod.record(ErrorAttributeSchema, Zod.unknown()),\n})\n\nexport type ErrorEvent = Zod.infer<typeof baseErrorEventSchema> & {\n causes: Array<ErrorEvent>\n}\n\nconst ErrorEventSchema: ZodType<ErrorEvent> = baseErrorEventSchema.extend({\n causes: Zod.lazy(() => Zod.array(ErrorEventSchema)),\n})\n\n// Builder object that allows for 'partial' representation of ErrorEvents\nexport type ErrorEventBuilder = {\n code: ErrorCode\n message?: string | null\n attributes?: Record<ErrorAttribute, unknown>\n causes?: Array<ErrorEvent>\n}\n\n// An exception type that contains an ErrorEvent\nexport class ErrorEventException extends Error {\n readonly errorEvent: ErrorEvent\n\n constructor(errorEvent: ErrorEvent, cause?: unknown) {\n super(errorEvent.message ?? '', { cause })\n this.name = this.constructor.name\n this.errorEvent = errorEvent\n }\n}\n\nexport const isErrorEvent = (throwable: Throwable): throwable is ErrorEvent => {\n if (!Objects.isObject(throwable)) {\n return false\n }\n\n return 'code' in throwable && 'message' in throwable && 'attributes' in throwable && 'causes' in throwable\n}\n\nexport const isErrorEventException = (throwable: Throwable): throwable is ErrorEventException => {\n return throwable instanceof ErrorEventException\n}\n\nexport const of = (builder: ErrorEventBuilder): ErrorEvent => {\n const code = builder.code\n\n return {\n code,\n message: builder.message ?? code,\n attributes: builder.attributes ?? {},\n causes: builder.causes ?? [],\n }\n}\n\nexport const from = (throwable: Throwable): ErrorEvent => {\n if (isErrorEvent(throwable)) {\n return throwable\n }\n\n if (!Errors.isError(throwable)) {\n return unhandled()\n }\n\n const errorEventException = Errors.findInCausalChain(throwable, isErrorEventException) as ErrorEventException | undefined\n if (Objects.isNil(errorEventException)) {\n return unhandled()\n }\n\n return errorEventException.errorEvent\n}\n\nexport const findByCodeInCausalChain = (error: ErrorEvent, code: string): ErrorEvent | undefined => {\n return findInCausalChain(error, (it) => it.code === code)\n}\n\n/*\n Traverses the causal chain of the ErrorEvent, searching for a predicate that matches (including matching on the parent error event)\n This is useful if you want to find whether or not a given error was caused by a specific failure. The search executes depth-first and\n will return te first matching instance that satisfies the predicate, or undefined otherwise\n */\nexport const findInCausalChain = (error: ErrorEvent, predicate: (error: ErrorEvent) => boolean): ErrorEvent | undefined => {\n if (predicate(error)) {\n return error\n }\n\n return Arrays.first(error.causes.map((it) => findInCausalChain(it, predicate)).filter(Objects.isPresent))\n}\n\nexport const aggregate = (builder: ErrorEventBuilder, causes: Array<ErrorEvent>): ErrorEvent | undefined => {\n if (causes.length === 0) {\n return undefined\n }\n\n return of({ ...builder, causes })\n}\n\nexport const UnhandledErrorCode: ErrorCode = 'error-event.unhandled'\nexport const NotFoundErrorCode: ErrorCode = 'error-event.not-found'\nexport const ForbiddenErrorCode: ErrorCode = 'error-event.forbidden'\nexport const UnauthorizedErrorCode: ErrorCode = 'error-event.unauthorized'\nexport const BadRequestErrorCode: ErrorCode = 'error-event.bad-request'\n\nexport const RequestCorrelationIdAttribute: ErrorAttribute<string> = 'requestCorrelationId'\nexport const HttpStatusCodeAttribute: ErrorAttribute<number> = 'httpStatusCode'\n\nexport const unhandled = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: UnhandledErrorCode,\n message: 'An Unhandled Error has occurred.',\n attributes: { [HttpStatusCodeAttribute]: 500 },\n })\n )\n\nexport const notFound = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: NotFoundErrorCode,\n message: 'The requested Resource could not be found.',\n attributes: { [HttpStatusCodeAttribute]: 404 },\n })\n )\n\nexport const unauthorized = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: UnauthorizedErrorCode,\n message: 'The requested Resource requires authentication.',\n attributes: { [HttpStatusCodeAttribute]: 401 },\n })\n )\n\nexport const forbidden = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: ForbiddenErrorCode,\n message: 'The requested Resource requires additional permissions to access.',\n attributes: { [HttpStatusCodeAttribute]: 403 },\n })\n )\n\nexport const badRequest = (builder?: Partial<ErrorEventBuilder>) =>\n of(\n Objects.deepMerge(builder, {\n code: BadRequestErrorCode,\n message: 'The request is invalid and cannot be processed.',\n attributes: { [HttpStatusCodeAttribute]: 400 },\n })\n )\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bessemer/cornerstone",
3
3
  "type": "module",
4
- "version": "0.5.51",
4
+ "version": "0.5.52",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "sideEffects": false,