@bessemer/cornerstone 0.5.62 → 0.5.64

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 (129) hide show
  1. package/dist/array.d.ts +23 -30
  2. package/dist/array.d.ts.map +1 -1
  3. package/dist/array.js +108 -58
  4. package/dist/array.js.map +1 -1
  5. package/dist/assertion.d.ts +1 -7
  6. package/dist/assertion.d.ts.map +1 -1
  7. package/dist/assertion.js +9 -46
  8. package/dist/assertion.js.map +1 -1
  9. package/dist/async-value.js +2 -2
  10. package/dist/async-value.js.map +1 -1
  11. package/dist/async.d.ts.map +1 -1
  12. package/dist/async.js +2 -2
  13. package/dist/async.js.map +1 -1
  14. package/dist/cache.d.ts +5 -5
  15. package/dist/cache.d.ts.map +1 -1
  16. package/dist/cache.js +21 -17
  17. package/dist/cache.js.map +1 -1
  18. package/dist/combinable.d.ts.map +1 -1
  19. package/dist/combinable.js +5 -4
  20. package/dist/combinable.js.map +1 -1
  21. package/dist/comparator.d.ts.map +1 -1
  22. package/dist/comparator.js +9 -8
  23. package/dist/comparator.js.map +1 -1
  24. package/dist/content.d.ts +2 -2
  25. package/dist/date.d.ts +1 -1
  26. package/dist/date.d.ts.map +1 -1
  27. package/dist/date.js +5 -4
  28. package/dist/date.js.map +1 -1
  29. package/dist/either.d.ts +0 -1
  30. package/dist/either.d.ts.map +1 -1
  31. package/dist/either.js +2 -3
  32. package/dist/either.js.map +1 -1
  33. package/dist/entry.d.ts +9 -7
  34. package/dist/entry.d.ts.map +1 -1
  35. package/dist/entry.js +5 -1
  36. package/dist/entry.js.map +1 -1
  37. package/dist/equalitor.d.ts +2 -1
  38. package/dist/equalitor.d.ts.map +1 -1
  39. package/dist/equalitor.js +6 -2
  40. package/dist/equalitor.js.map +1 -1
  41. package/dist/error-event.d.ts +5 -0
  42. package/dist/error-event.d.ts.map +1 -1
  43. package/dist/error-event.js +45 -12
  44. package/dist/error-event.js.map +1 -1
  45. package/dist/error.d.ts.map +1 -1
  46. package/dist/error.js +2 -2
  47. package/dist/error.js.map +1 -1
  48. package/dist/expression/array-expression.js +1 -1
  49. package/dist/expression/array-expression.js.map +1 -1
  50. package/dist/index.d.ts +2 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +2 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/json.d.ts.map +1 -1
  55. package/dist/json.js +3 -3
  56. package/dist/json.js.map +1 -1
  57. package/dist/logger.d.ts.map +1 -1
  58. package/dist/logger.js +10 -9
  59. package/dist/logger.js.map +1 -1
  60. package/dist/map.d.ts +18 -0
  61. package/dist/map.d.ts.map +1 -0
  62. package/dist/map.js +110 -0
  63. package/dist/map.js.map +1 -0
  64. package/dist/math.d.ts +1 -1
  65. package/dist/math.d.ts.map +1 -1
  66. package/dist/math.js +4 -7
  67. package/dist/math.js.map +1 -1
  68. package/dist/misc.d.ts.map +1 -1
  69. package/dist/misc.js +4 -3
  70. package/dist/misc.js.map +1 -1
  71. package/dist/monetary-amount.d.ts +8 -2
  72. package/dist/monetary-amount.d.ts.map +1 -1
  73. package/dist/monetary-amount.js +23 -6
  74. package/dist/monetary-amount.js.map +1 -1
  75. package/dist/object.d.ts +5 -16
  76. package/dist/object.d.ts.map +1 -1
  77. package/dist/object.js +64 -19
  78. package/dist/object.js.map +1 -1
  79. package/dist/patch.d.ts.map +1 -1
  80. package/dist/patch.js +6 -5
  81. package/dist/patch.js.map +1 -1
  82. package/dist/property.d.ts.map +1 -1
  83. package/dist/property.js +5 -4
  84. package/dist/property.js.map +1 -1
  85. package/dist/range.d.ts +3 -1
  86. package/dist/range.d.ts.map +1 -1
  87. package/dist/range.js +2 -2
  88. package/dist/range.js.map +1 -1
  89. package/dist/reference.d.ts +1 -2
  90. package/dist/reference.d.ts.map +1 -1
  91. package/dist/reference.js +13 -10
  92. package/dist/reference.js.map +1 -1
  93. package/dist/resource.d.ts.map +1 -1
  94. package/dist/resource.js +2 -2
  95. package/dist/resource.js.map +1 -1
  96. package/dist/result.d.ts.map +1 -1
  97. package/dist/result.js +6 -5
  98. package/dist/result.js.map +1 -1
  99. package/dist/retry.d.ts.map +1 -1
  100. package/dist/retry.js +14 -9
  101. package/dist/retry.js.map +1 -1
  102. package/dist/rich-text.js +2 -2
  103. package/dist/rich-text.js.map +1 -1
  104. package/dist/signature.d.ts +3 -2
  105. package/dist/signature.d.ts.map +1 -1
  106. package/dist/signature.js +6 -4
  107. package/dist/signature.js.map +1 -1
  108. package/dist/sql/sql-expression-parser.d.ts.map +1 -1
  109. package/dist/sql/sql-expression-parser.js +24 -8
  110. package/dist/sql/sql-expression-parser.js.map +1 -1
  111. package/dist/store.d.ts +13 -13
  112. package/dist/store.d.ts.map +1 -1
  113. package/dist/store.js +9 -7
  114. package/dist/store.js.map +1 -1
  115. package/dist/string.d.ts.map +1 -1
  116. package/dist/string.js +3 -4
  117. package/dist/string.js.map +1 -1
  118. package/dist/tag.d.ts.map +1 -1
  119. package/dist/tag.js +12 -12
  120. package/dist/tag.js.map +1 -1
  121. package/dist/uri.d.ts.map +1 -1
  122. package/dist/uri.js +52 -50
  123. package/dist/uri.js.map +1 -1
  124. package/dist/url.d.ts.map +1 -1
  125. package/dist/url.js.map +1 -1
  126. package/dist/uuid.d.ts.map +1 -1
  127. package/dist/uuid.js +4 -3
  128. package/dist/uuid.js.map +1 -1
  129. package/package.json +1 -1
package/dist/array.d.ts CHANGED
@@ -3,53 +3,46 @@ import { Signable } from '@bessemer/cornerstone/signature';
3
3
  import { Either } from '@bessemer/cornerstone/either';
4
4
  import { Comparator } from '@bessemer/cornerstone/comparator';
5
5
  import { Arrayable } from 'type-fest';
6
+ import { FiniteNumericBounds } from '@bessemer/cornerstone/range';
6
7
  export declare const equalWith: <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>) => boolean;
7
- export declare const equalBy: <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable) => boolean;
8
+ export declare function equalBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean;
9
+ export declare function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean;
8
10
  export declare const equal: <T extends Signable>(first: Array<T>, second: Array<T>) => boolean;
9
11
  export declare const differenceWith: <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>) => Array<T>;
10
- export declare const differenceBy: <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable) => Array<T>;
12
+ export declare function differenceBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T>;
13
+ export declare function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>;
11
14
  export declare const difference: <T extends Signable>(first: Array<T>, second: Array<T>) => Array<T>;
12
15
  export declare const removeWith: <T>(array: Array<T>, element: T, equalitor: Equalitor<T>) => Array<T>;
13
- export declare const removeBy: <T>(array: Array<T>, element: T, mapper: (element: T) => Signable) => Array<T>;
16
+ export declare function removeBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T>;
17
+ export declare function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>;
14
18
  export declare const remove: <T extends Signable>(array: Array<T>, element: T) => Array<T>;
15
19
  export declare const containsWith: <T>(array: Array<T>, element: T, equalitor: Equalitor<T>) => boolean;
16
- export declare const containsBy: <T>(array: Array<T>, element: T, mapper: (element: T) => Signable) => boolean;
20
+ export declare function containsBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean;
21
+ export declare function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean;
17
22
  export declare const contains: <T extends Signable>(array: Array<T>, element: T) => boolean;
18
23
  export declare const containsAllWith: <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>) => boolean;
19
- export declare const containsAllBy: <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable) => boolean;
24
+ export declare function containsAllBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean;
25
+ export declare function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean;
20
26
  export declare const containsAll: <T extends Signable>(first: Array<T>, second: Array<T>) => boolean;
21
27
  export declare const dedupeWith: <T>(array: Array<T>, equalitor: Equalitor<T>) => Array<T>;
22
- export declare const dedupeBy: <T>(array: Array<T>, mapper: (element: T) => Signable) => Array<T>;
28
+ export declare function dedupeBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>;
29
+ export declare function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>;
23
30
  export declare const dedupe: <T extends Signable>(array: Array<T>) => Array<T>;
24
31
  export declare const sortWith: <T>(array: Array<T>, comparator: Comparator<T>) => Array<T>;
25
- export declare const sortBy: <T>(array: Array<T>, mapper: (element: T) => Signable) => Array<T>;
32
+ export declare function sortBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>;
33
+ export declare function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator: Comparator<N>): Array<T>;
26
34
  export declare const sort: <T extends Signable>(array: Array<T>) => Array<T>;
27
- export declare const concatenate: <T>(array: Array<T> | null | undefined, ...values: Array<T | T[]>) => Array<T>;
28
- export declare const first: <T>(array: Array<T> | null | undefined) => T | undefined;
35
+ export declare const concatenate: <T>(array: Array<T>, ...values: Array<T | Array<T>>) => Array<T>;
36
+ export declare const first: <T>(array: Array<T>) => T | undefined;
29
37
  export declare const only: <T>(array: Array<T>) => T;
30
- export declare const last: <T>(array: Array<T> | null | undefined) => T | undefined;
31
- export declare const isEmpty: {
32
- <T extends {
33
- __trapAny: any;
34
- }>(value?: T): boolean;
35
- (value: string): value is "";
36
- (value: Map<any, any> | Set<any> | import("lodash").List<any> | null | undefined): boolean;
37
- (value: object): boolean;
38
- <T extends object>(value: T | null | undefined): value is import("lodash").EmptyObjectOf<T> | null | undefined;
39
- (value?: any): boolean;
40
- };
41
- export declare const range: {
42
- (start: number, end?: number, step?: number): number[];
43
- (end: number, index: string | number, guard: object): number[];
44
- };
45
- export declare const groupBy: {
46
- <T>(collection: import("lodash").List<T> | null | undefined, iteratee?: import("lodash").ValueIteratee<T>): import("lodash").Dictionary<T[]>;
47
- <T extends object>(collection: T | null | undefined, iteratee?: import("lodash").ValueIteratee<T[keyof T]>): import("lodash").Dictionary<Array<T[keyof T]>>;
48
- };
38
+ export declare const last: <T>(array: Array<T>) => T | undefined;
39
+ export declare const isEmpty: <T>(array: Array<T>) => boolean;
40
+ export declare const range: (bounds: FiniteNumericBounds) => Array<number>;
41
+ export declare function groupBy<T, N extends string | number | symbol>(array: Array<T>, iteratee: (it: T) => N): Record<N, Array<T>>;
49
42
  export declare const rest: <T>(array: Array<T>, elementsToSkip?: number) => Array<T>;
50
- export declare const filterInPlace: <T>(array: Array<T> | null | undefined, predicate: (value: T, index: number, array: Array<T>) => boolean) => void;
43
+ export declare const filterInPlace: <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => boolean) => void;
51
44
  export declare const clear: (array: Array<unknown>) => void;
52
45
  export declare const bisect: <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>) => [Array<L>, Array<R>];
53
46
  export declare const toArray: <T>(array: Arrayable<T>) => Array<T>;
54
- export declare const flatten: <T>(array: import("lodash").List<import("lodash").Many<T>> | null | undefined) => T[];
47
+ export declare const flatten: <T>(array: Array<Array<T>>) => Array<T>;
55
48
  //# sourceMappingURL=array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
package/dist/array.js CHANGED
@@ -1,82 +1,112 @@
1
1
  // src/array.ts
2
- import {
3
- differenceBy as _differenceBy,
4
- differenceWith as _differenceWith,
5
- flatten as _flatten,
6
- groupBy as _groupBy,
7
- isEmpty as _isEmpty,
8
- range as _range,
9
- uniqBy,
10
- uniqWith
11
- } from "lodash-es";
12
- import { Assertions, Comparators, Eithers, Signatures } from "@bessemer/cornerstone";
2
+ import { equalBy as equalitorEqualBy, natural as naturalEquality } from "@bessemer/cornerstone/equalitor";
3
+ import { sign } from "@bessemer/cornerstone/signature";
4
+ import { split } from "@bessemer/cornerstone/either";
5
+ import { compareBy, natural as naturalComparison } from "@bessemer/cornerstone/comparator";
6
+ import { isNil } from "@bessemer/cornerstone/object";
7
+ import { assertTrue } from "@bessemer/cornerstone/assertion";
13
8
  var equalWith = (first2, second, equalitor) => {
14
9
  if (first2.length !== second.length) {
15
10
  return false;
16
11
  }
17
12
  return first2.every((element, index) => equalitor(element, second[index]));
18
13
  };
19
- var equalBy = (first2, second, mapper) => {
20
- return equalWith(first2, second, (first3, second2) => Signatures.sign(mapper(first3)) === Signatures.sign(mapper(second2)));
21
- };
14
+ function equalBy(first2, second, mapper, equalitor) {
15
+ if (isNil(equalitor)) {
16
+ return equalWith(
17
+ first2,
18
+ second,
19
+ equalitorEqualBy((it) => sign(mapper(it)), naturalEquality())
20
+ );
21
+ } else {
22
+ return equalWith(first2, second, equalitorEqualBy(mapper, equalitor));
23
+ }
24
+ }
22
25
  var equal = (first2, second) => {
23
- return equalBy(first2, second, Signatures.sign);
26
+ return equalBy(first2, second, sign);
24
27
  };
25
28
  var differenceWith = (first2, second, equalitor) => {
26
- return _differenceWith(first2, second, equalitor);
27
- };
28
- var differenceBy = (first2, second, mapper) => {
29
- return _differenceBy(first2, second, (it) => Signatures.sign(mapper(it)));
30
- };
29
+ return first2.filter((firstItem) => !second.some((it) => equalitor(firstItem, it)));
30
+ };
31
+ function differenceBy(first2, second, mapper, equalitor) {
32
+ if (isNil(equalitor)) {
33
+ return differenceWith(
34
+ first2,
35
+ second,
36
+ equalitorEqualBy((it) => sign(mapper(it)), naturalEquality())
37
+ );
38
+ } else {
39
+ return differenceWith(first2, second, equalitorEqualBy(mapper, equalitor));
40
+ }
41
+ }
31
42
  var difference = (first2, second) => {
32
- return differenceBy(first2, second, Signatures.sign);
43
+ return differenceBy(first2, second, sign);
33
44
  };
34
45
  var removeWith = (array, element, equalitor) => {
35
46
  return differenceWith(array, [element], equalitor);
36
47
  };
37
- var removeBy = (array, element, mapper) => {
38
- return differenceBy(array, [element], mapper);
39
- };
48
+ function removeBy(array, element, mapper, equalitor) {
49
+ return differenceBy(array, [element], mapper, equalitor);
50
+ }
40
51
  var remove = (array, element) => {
41
52
  return difference(array, [element]);
42
53
  };
43
54
  var containsWith = (array, element, equalitor) => {
44
55
  return array.some((it) => equalitor(it, element));
45
56
  };
46
- var containsBy = (array, element, mapper) => {
47
- return containsWith(array, element, (first2, second) => Signatures.sign(mapper(first2)) === Signatures.sign(mapper(second)));
48
- };
49
- var contains = (array, element) => containsBy(array, element, Signatures.sign);
57
+ function containsBy(array, element, mapper, equalitor) {
58
+ if (isNil(equalitor)) {
59
+ return containsWith(
60
+ array,
61
+ element,
62
+ equalitorEqualBy((it) => sign(mapper(it)), naturalEquality())
63
+ );
64
+ } else {
65
+ return containsWith(array, element, equalitorEqualBy(mapper, equalitor));
66
+ }
67
+ }
68
+ var contains = (array, element) => containsBy(array, element, sign);
50
69
  var containsAllWith = (first2, second, equalitor) => isEmpty(differenceWith(second, first2, equalitor));
51
- var containsAllBy = (first2, second, mapper) => isEmpty(differenceBy(second, first2, mapper));
70
+ function containsAllBy(first2, second, mapper, equalitor) {
71
+ return isEmpty(differenceBy(second, first2, mapper, equalitor));
72
+ }
52
73
  var containsAll = (first2, second) => isEmpty(difference(second, first2));
53
74
  var dedupeWith = (array, equalitor) => {
54
- return uniqWith(array, equalitor);
55
- };
56
- var dedupeBy = (array, mapper) => {
57
- return uniqBy(array, (it) => Signatures.sign(mapper(it)));
75
+ const result = [];
76
+ for (const element of array) {
77
+ const isDuplicate = result.some((existing) => equalitor(existing, element));
78
+ if (!isDuplicate) {
79
+ result.push(element);
80
+ }
81
+ }
82
+ return result;
58
83
  };
84
+ function dedupeBy(array, mapper, equalitor) {
85
+ if (isNil(equalitor)) {
86
+ return dedupeWith(array, equalitorEqualBy(mapper, naturalEquality()));
87
+ } else {
88
+ return dedupeWith(array, equalitorEqualBy(mapper, equalitor));
89
+ }
90
+ }
59
91
  var dedupe = (array) => {
60
- return dedupeBy(array, Signatures.sign);
92
+ return dedupeBy(array, sign);
61
93
  };
62
94
  var sortWith = (array, comparator) => {
63
95
  return [...array].sort(comparator);
64
96
  };
65
- var sortBy = (array, mapper) => {
66
- return sortWith(
67
- array,
68
- Comparators.compareBy((it) => Signatures.sign(mapper(it)), Comparators.natural())
69
- );
70
- };
71
- var sort = (array) => sortBy(array, Signatures.sign);
72
- var concatenate = (array, ...values) => {
73
- if (array == null) {
74
- return [];
97
+ function sortBy(array, mapper, comparator) {
98
+ if (isNil(comparator)) {
99
+ return sortWith(
100
+ array,
101
+ compareBy((it) => sign(mapper(it)), naturalComparison())
102
+ );
103
+ } else {
104
+ return sortWith(array, compareBy(mapper, comparator));
75
105
  }
106
+ }
107
+ var sort = (array) => sortBy(array, sign);
108
+ var concatenate = (array, ...values) => {
76
109
  const result = [...array];
77
- if (values.length === 0) {
78
- return result;
79
- }
80
110
  for (const value of values) {
81
111
  if (Array.isArray(value)) {
82
112
  result.push(...value);
@@ -87,25 +117,43 @@ var concatenate = (array, ...values) => {
87
117
  return result;
88
118
  };
89
119
  var first = (array) => {
90
- return array != null && array.length ? array[0] : void 0;
120
+ return array.length > 0 ? array[0] : void 0;
91
121
  };
92
122
  var only = (array) => {
93
- Assertions.assertTrue(array.length === 1);
123
+ assertTrue(array.length === 1);
94
124
  return first(array);
95
125
  };
96
126
  var last = (array) => {
97
- return array != null && array.length ? array[array.length - 1] : void 0;
127
+ return array.length > 0 ? array[array.length - 1] : void 0;
128
+ };
129
+ var isEmpty = (array) => {
130
+ return array.length === 0;
131
+ };
132
+ var range = (bounds) => {
133
+ const [start, end] = bounds;
134
+ if (start > end) {
135
+ return [];
136
+ }
137
+ const result = [];
138
+ for (let i = start; i <= end; i++) {
139
+ result.push(i);
140
+ }
141
+ return result;
98
142
  };
99
- var isEmpty = _isEmpty;
100
- var range = _range;
101
- var groupBy = _groupBy;
143
+ function groupBy(array, iteratee) {
144
+ return array.reduce((result, value) => {
145
+ const key = iteratee(value);
146
+ if (!result[key]) {
147
+ result[key] = [];
148
+ }
149
+ result[key].push(value);
150
+ return result;
151
+ }, {});
152
+ }
102
153
  var rest = (array, elementsToSkip = 1) => {
103
154
  return array.slice(elementsToSkip);
104
155
  };
105
156
  var filterInPlace = (array, predicate) => {
106
- if (array == null || !array.length) {
107
- return;
108
- }
109
157
  for (let i = array.length - 1; i >= 0; i--) {
110
158
  const value = array[i];
111
159
  if (value !== void 0 && !predicate(value, i, array)) {
@@ -117,7 +165,7 @@ var clear = (array) => {
117
165
  filterInPlace(array, () => false);
118
166
  };
119
167
  var bisect = (array, bisector) => {
120
- return Eithers.split(array.map(bisector));
168
+ return split(array.map(bisector));
121
169
  };
122
170
  var toArray = (array) => {
123
171
  if (Array.isArray(array)) {
@@ -125,7 +173,9 @@ var toArray = (array) => {
125
173
  }
126
174
  return [array];
127
175
  };
128
- var flatten = _flatten;
176
+ var flatten = (array) => {
177
+ return array.flatMap((it) => it);
178
+ };
129
179
  export {
130
180
  bisect,
131
181
  clear,
package/dist/array.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/array.ts"],"sourcesContent":["import {\n differenceBy as _differenceBy,\n differenceWith as _differenceWith,\n flatten as _flatten,\n groupBy as _groupBy,\n isEmpty as _isEmpty,\n range as _range,\n uniqBy,\n uniqWith,\n} from 'lodash-es'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\nimport { Signable } from '@bessemer/cornerstone/signature'\nimport { Assertions, Comparators, Eithers, Signatures } from '@bessemer/cornerstone'\nimport { Either } from '@bessemer/cornerstone/either'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\n\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\nexport const equalBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean => {\n return equalWith(first, second, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, Signatures.sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return _differenceWith(first, second, equalitor)\n}\n\nexport const differenceBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return _differenceBy(first, second, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, Signatures.sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport const removeBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T> => {\n return differenceBy(array, [element], mapper)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport const containsBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean => {\n return containsWith(array, element, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, Signatures.sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport const containsAllBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean =>\n isEmpty(differenceBy(second, first, mapper))\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return uniqWith(array, equalitor)\n}\n\nexport const dedupeBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return uniqBy(array, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, Signatures.sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport const sortBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return sortWith(\n array,\n Comparators.compareBy((it) => Signatures.sign(mapper(it)), Comparators.natural())\n )\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, Signatures.sign)\n\nexport const concatenate = <T>(array: Array<T> | null | undefined, ...values: Array<T | T[]>): Array<T> => {\n if (array == null) {\n return []\n }\n\n const result = [...array]\n\n if (values.length === 0) {\n return result\n }\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value as T)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n Assertions.assertTrue(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = _isEmpty\n// TODO make a better range function\nexport const range = _range\n// TODO should this live in collections?\nexport const groupBy = _groupBy\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T> | null | undefined, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n if (array == null || !array.length) {\n return\n }\n\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>): [Array<L>, Array<R>] => {\n return Eithers.split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = _flatten\n"],"mappings":"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","names":["first","second"]}
1
+ {"version":3,"sources":["../src/array.ts"],"sourcesContent":["import { equalBy as equalitorEqualBy, Equalitor, natural as naturalEquality } from '@bessemer/cornerstone/equalitor'\nimport { sign, Signable, Signature } from '@bessemer/cornerstone/signature'\nimport { Either, split } from '@bessemer/cornerstone/either'\nimport { Comparator, compareBy, natural as naturalComparison } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { FiniteNumericBounds } from '@bessemer/cornerstone/range'\nimport { assertTrue } from '@bessemer/cornerstone/assertion'\n\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\nexport function equalBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return equalWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return equalWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return first.filter((firstItem) => !second.some((it) => equalitor(firstItem, it)))\n}\n\nexport function differenceBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return differenceWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return differenceWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport function removeBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n return differenceBy(array, [element], mapper, equalitor as any)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport function containsBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return containsWith(\n array,\n element,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return containsWith(array, element, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport function containsAllBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n return isEmpty(differenceBy(second, first, mapper, equalitor as any))\n}\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n const result: Array<T> = []\n\n for (const element of array) {\n const isDuplicate = result.some((existing) => equalitor(existing, element))\n if (!isDuplicate) {\n result.push(element)\n }\n }\n\n return result\n}\n\nexport function dedupeBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return dedupeWith(array, equalitorEqualBy(mapper as any, naturalEquality()))\n } else {\n return dedupeWith(array, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport function sortBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator: Comparator<N>): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator?: Comparator<N>): Array<T> {\n if (isNil(comparator)) {\n return sortWith(\n array,\n compareBy((it) => sign(mapper(it as any) as Signature), naturalComparison())\n )\n } else {\n return sortWith(array, compareBy(mapper, comparator))\n }\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, sign)\n\nexport const concatenate = <T>(array: Array<T>, ...values: Array<T | Array<T>>): Array<T> => {\n const result = [...array]\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n assertTrue(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = <T>(array: Array<T>): boolean => {\n return array.length === 0\n}\n\nexport const range = (bounds: FiniteNumericBounds): Array<number> => {\n const [start, end] = bounds\n // TODO maybe some other check?\n if (start > end) {\n return []\n }\n\n const result: number[] = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\n\n// JOHN i don't think this function should exist here... maybe examine the use cases more thoroughly\nexport function groupBy<T, N extends string | number | symbol>(array: Array<T>, iteratee: (it: T) => N): Record<N, Array<T>> {\n return array.reduce<Record<N, Array<T>>>((result, value) => {\n const key = iteratee(value)\n\n if (!result[key]) {\n result[key] = []\n }\n\n result[key].push(value)\n return result\n }, {} as any)\n}\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>): [Array<L>, Array<R>] => {\n return split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = <T>(array: Array<Array<T>>): Array<T> => {\n return array.flatMap((it) => it)\n}\n"],"mappings":"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","names":["first"]}
@@ -1,14 +1,8 @@
1
1
  import { LazyValue } from '@bessemer/cornerstone/lazy';
2
2
  import { Nil } from '@bessemer/cornerstone/types';
3
- import { ErrorEventAugment, ErrorEventBuilder } from '@bessemer/cornerstone/error-event';
4
- export declare function assertUnreachable(message?: LazyValue<string>): never;
3
+ export declare function assert(message?: LazyValue<string>): never;
5
4
  export declare function assertTrue(value: boolean, message?: LazyValue<string>): asserts value is true;
6
5
  export declare function assertFalse(value: boolean, message?: LazyValue<string>): asserts value is false;
7
6
  export declare function assertNil(value: any, message?: LazyValue<string>): asserts value is Nil;
8
7
  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<ErrorEventAugment | undefined>): asserts value is NonNullable<T>;
10
- export declare function expectAuthorized<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
11
- export declare function expectPermitted<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
12
- export declare function expectValid<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
13
- export declare function expect<T>(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true;
14
8
  //# 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;AACjD,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EAMlB,MAAM,mCAAmC,CAAA;AAE1C,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,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAI/I;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAI9I;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAI7I;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAIzI;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAItG"}
1
+ {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../src/assertion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAGjD,wBAAgB,MAAM,CAAC,OAAO,GAAE,SAAS,CAAC,MAAM,CAAoD,GAAG,KAAK,CAE3G;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"}
package/dist/assertion.js CHANGED
@@ -1,65 +1,28 @@
1
1
  // src/assertion.ts
2
- import { Lazy, Objects } from "@bessemer/cornerstone";
3
- import {
4
- badRequest,
5
- ErrorEventException,
6
- forbidden,
7
- notFound,
8
- of,
9
- unauthorized
10
- } from "@bessemer/cornerstone/error-event";
11
- function assertUnreachable(message = () => "Assertions.assertUnreachable was reached") {
12
- throw new Error(Lazy.evaluate(message));
2
+ import { evaluate } from "@bessemer/cornerstone/lazy";
3
+ import { isNil, isPresent } from "@bessemer/cornerstone/object";
4
+ function assert(message = () => "Assertions.assertUnreachable was reached") {
5
+ throw new Error(evaluate(message));
13
6
  }
14
7
  function assertTrue(value, message = () => "Assertions.assertTrue failed validation") {
15
8
  if (!value) {
16
- throw new Error(Lazy.evaluate(message));
9
+ throw new Error(evaluate(message));
17
10
  }
18
11
  }
19
12
  function assertFalse(value, message = () => "Assertions.assertFalse failed validation") {
20
13
  return assertTrue(!value, message);
21
14
  }
22
15
  function assertNil(value, message = () => "Assertions.assertNil failed validation") {
23
- return assertTrue(Objects.isNil(value), message);
16
+ return assertTrue(isNil(value), message);
24
17
  }
25
18
  function assertPresent(value, message = () => "Assertions.assertPresent failed validation") {
26
- return assertTrue(Objects.isPresent(value), message);
27
- }
28
- function expectPresent(value, builder = () => void 0) {
29
- if (Objects.isNil(value)) {
30
- throw new ErrorEventException(notFound(Lazy.evaluate(builder)));
31
- }
32
- }
33
- function expectAuthorized(value, builder = () => void 0) {
34
- if (!value) {
35
- throw new ErrorEventException(unauthorized(Lazy.evaluate(builder)));
36
- }
37
- }
38
- function expectPermitted(value, builder = () => void 0) {
39
- if (!value) {
40
- throw new ErrorEventException(forbidden(Lazy.evaluate(builder)));
41
- }
42
- }
43
- function expectValid(value, builder = () => void 0) {
44
- if (!value) {
45
- throw new ErrorEventException(badRequest(Lazy.evaluate(builder)));
46
- }
47
- }
48
- function expect(value, builder) {
49
- if (!value) {
50
- throw new ErrorEventException(of(Lazy.evaluate(builder)));
51
- }
19
+ return assertTrue(isPresent(value), message);
52
20
  }
53
21
  export {
22
+ assert,
54
23
  assertFalse,
55
24
  assertNil,
56
25
  assertPresent,
57
- assertTrue,
58
- assertUnreachable,
59
- expect,
60
- expectAuthorized,
61
- expectPermitted,
62
- expectPresent,
63
- expectValid
26
+ assertTrue
64
27
  };
65
28
  //# 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'\nimport {\n badRequest,\n ErrorEventAugment,\n ErrorEventBuilder,\n ErrorEventException,\n forbidden,\n notFound,\n of,\n unauthorized,\n} 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>(value: T, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is NonNullable<T> {\n if (Objects.isNil(value)) {\n throw new ErrorEventException(notFound(Lazy.evaluate(builder)))\n }\n}\n\nexport function expectAuthorized<T>(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(unauthorized(Lazy.evaluate(builder)))\n }\n}\n\nexport function expectPermitted<T>(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): 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<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!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 (!value) {\n throw new ErrorEventException(of(Lazy.evaluate(builder)))\n }\n}\n"],"mappings":";AAAA,SAAS,MAAM,eAAe;AAG9B;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,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,cAAiB,OAAU,UAAoD,MAAM,QAA4C;AAC/I,MAAI,QAAQ,MAAM,KAAK,GAAG;AACxB,UAAM,IAAI,oBAAoB,SAAS,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EAChE;AACF;AAEO,SAAS,iBAAoB,OAAgB,UAAoD,MAAM,QAAkC;AAC9I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,aAAa,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EACpE;AACF;AAEO,SAAS,gBAAmB,OAAgB,UAAoD,MAAM,QAAkC;AAC7I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,UAAU,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EACjE;AACF;AAEO,SAAS,YAAe,OAAgB,UAAoD,MAAM,QAAkC;AACzI,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,WAAW,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EAClE;AACF;AAEO,SAAS,OAAU,OAAgB,SAA8D;AACtG,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,GAAG,KAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EAC1D;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { Nil } from '@bessemer/cornerstone/types'\nimport { isNil, isPresent } from '@bessemer/cornerstone/object'\n\nexport function assert(message: LazyValue<string> = () => 'Assertions.assertUnreachable was reached'): never {\n throw new Error(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(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(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(isPresent(value), message)\n}\n"],"mappings":";AAAA,SAAS,gBAA2B;AAEpC,SAAS,OAAO,iBAAiB;AAE1B,SAAS,OAAO,UAA6B,MAAM,4CAAmD;AAC3G,QAAM,IAAI,MAAM,SAAS,OAAO,CAAC;AACnC;AAEO,SAAS,WAAW,OAAgB,UAA6B,MAAM,2CAAkE;AAC9I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,SAAS,OAAO,CAAC;AAAA,EACnC;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,MAAM,KAAK,GAAG,OAAO;AACzC;AAEO,SAAS,cACd,OACA,UAA6B,MAAM,8CACF;AACjC,SAAO,WAAW,UAAU,KAAK,GAAG,OAAO;AAC7C;","names":[]}
@@ -1,6 +1,6 @@
1
1
  // src/async-value.ts
2
2
  import Zod from "zod";
3
- import { Objects } from "@bessemer/cornerstone/index";
3
+ import { isNil } from "@bessemer/cornerstone/object";
4
4
  var schema = (_) => {
5
5
  return Zod.object({
6
6
  isSuccess: Zod.boolean(),
@@ -30,7 +30,7 @@ var handle = (value, handlers) => {
30
30
  if (value.isError) {
31
31
  return handlers.error(value.data);
32
32
  }
33
- if (Objects.isNil(value.data)) {
33
+ if (isNil(value.data)) {
34
34
  return handlers.absent();
35
35
  }
36
36
  return handlers.success(value.data);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/async-value.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { Objects } from '@bessemer/cornerstone/index'\n\nexport type PendingValue = {\n isSuccess: false\n isError: false\n isLoading: false\n isFetching: boolean\n data: undefined\n}\n\nexport type LoadingValue = {\n isSuccess: false\n isError: false\n isLoading: true\n isFetching: boolean\n data: undefined\n}\n\nexport type ErrorValue = {\n isSuccess: false\n isError: true\n isLoading: false\n isFetching: boolean\n data: unknown\n}\n\nexport type FetchingValueSuccess<T> = {\n isSuccess: true\n isError: false\n isLoading: false\n isFetching: true\n data: T\n}\n\nexport type FetchingValueError = {\n isSuccess: false\n isError: true\n isLoading: false\n isFetching: true\n data: unknown\n}\n\nexport type SettledValue<T> = {\n isSuccess: true\n isError: false\n isLoading: false\n isFetching: false\n data: T\n}\n\nexport type AsyncValue<T> = PendingValue | LoadingValue | ErrorValue | FetchingValueSuccess<T> | FetchingValueError | SettledValue<T>\n\nexport const schema = <T>(_: ZodType<T>): ZodType<AsyncValue<T>> => {\n return Zod.object({\n isSuccess: Zod.boolean(),\n isError: Zod.boolean(),\n isLoading: Zod.boolean(),\n isFetching: Zod.boolean(),\n data: Zod.unknown(),\n }) as any\n}\n\nexport const isSettled = <T>(value: AsyncValue<T>): value is SettledValue<T> => {\n return value.isSuccess && !value.isError && !value.isLoading && !value.isFetching\n}\n\nexport const loading = (): LoadingValue => ({ isSuccess: false, isError: false, isLoading: true, isFetching: true, data: undefined })\n\nexport const fetching = <T>(data: T): FetchingValueSuccess<T> => ({\n isSuccess: true,\n isError: false,\n isLoading: false,\n isFetching: true,\n data,\n})\n\nexport const settled = <T>(data: T): SettledValue<T> => ({ isSuccess: true, isError: false, isLoading: false, isFetching: false, data })\n\nexport const error = (error: unknown): ErrorValue => ({ isSuccess: false, isError: true, isLoading: false, isFetching: false, data: error })\n\nexport const handle = <T, N>(\n value: AsyncValue<T | null>,\n handlers: { loading: () => N; error: (error: unknown) => N; absent: () => N; success: (data: T) => N }\n): N => {\n if (value.isLoading || (value.isError && value.isFetching)) {\n return handlers.loading()\n }\n if (value.isError) {\n return handlers.error(value.data)\n }\n if (Objects.isNil(value.data)) {\n return handlers.absent()\n }\n\n return handlers.success(value.data)\n}\n\nexport const map = <T, N>(value: AsyncValue<T>, mapper: (value: T) => N): AsyncValue<N> => {\n if (!value.isSuccess) {\n return value\n }\n\n return { ...value, data: mapper(value.data) }\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAC7B,SAAS,eAAe;AAoDjB,IAAM,SAAS,CAAI,MAA0C;AAClE,SAAO,IAAI,OAAO;AAAA,IAChB,WAAW,IAAI,QAAQ;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,IACrB,WAAW,IAAI,QAAQ;AAAA,IACvB,YAAY,IAAI,QAAQ;AAAA,IACxB,MAAM,IAAI,QAAQ;AAAA,EACpB,CAAC;AACH;AAEO,IAAM,YAAY,CAAI,UAAmD;AAC9E,SAAO,MAAM,aAAa,CAAC,MAAM,WAAW,CAAC,MAAM,aAAa,CAAC,MAAM;AACzE;AAEO,IAAM,UAAU,OAAqB,EAAE,WAAW,OAAO,SAAS,OAAO,WAAW,MAAM,YAAY,MAAM,MAAM,OAAU;AAE5H,IAAM,WAAW,CAAI,UAAsC;AAAA,EAChE,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AACF;AAEO,IAAM,UAAU,CAAI,UAA8B,EAAE,WAAW,MAAM,SAAS,OAAO,WAAW,OAAO,YAAY,OAAO,KAAK;AAE/H,IAAM,QAAQ,CAACA,YAAgC,EAAE,WAAW,OAAO,SAAS,MAAM,WAAW,OAAO,YAAY,OAAO,MAAMA,OAAM;AAEnI,IAAM,SAAS,CACpB,OACA,aACM;AACN,MAAI,MAAM,aAAc,MAAM,WAAW,MAAM,YAAa;AAC1D,WAAO,SAAS,QAAQ;AAAA,EAC1B;AACA,MAAI,MAAM,SAAS;AACjB,WAAO,SAAS,MAAM,MAAM,IAAI;AAAA,EAClC;AACA,MAAI,QAAQ,MAAM,MAAM,IAAI,GAAG;AAC7B,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SAAO,SAAS,QAAQ,MAAM,IAAI;AACpC;AAEO,IAAM,MAAM,CAAO,OAAsB,WAA2C;AACzF,MAAI,CAAC,MAAM,WAAW;AACpB,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,GAAG,OAAO,MAAM,OAAO,MAAM,IAAI,EAAE;AAC9C;","names":["error"]}
1
+ {"version":3,"sources":["../src/async-value.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { isNil } from '@bessemer/cornerstone/object'\n\nexport type PendingValue = {\n isSuccess: false\n isError: false\n isLoading: false\n isFetching: boolean\n data: undefined\n}\n\nexport type LoadingValue = {\n isSuccess: false\n isError: false\n isLoading: true\n isFetching: boolean\n data: undefined\n}\n\nexport type ErrorValue = {\n isSuccess: false\n isError: true\n isLoading: false\n isFetching: boolean\n data: unknown\n}\n\nexport type FetchingValueSuccess<T> = {\n isSuccess: true\n isError: false\n isLoading: false\n isFetching: true\n data: T\n}\n\nexport type FetchingValueError = {\n isSuccess: false\n isError: true\n isLoading: false\n isFetching: true\n data: unknown\n}\n\nexport type SettledValue<T> = {\n isSuccess: true\n isError: false\n isLoading: false\n isFetching: false\n data: T\n}\n\nexport type AsyncValue<T> = PendingValue | LoadingValue | ErrorValue | FetchingValueSuccess<T> | FetchingValueError | SettledValue<T>\n\nexport const schema = <T>(_: ZodType<T>): ZodType<AsyncValue<T>> => {\n return Zod.object({\n isSuccess: Zod.boolean(),\n isError: Zod.boolean(),\n isLoading: Zod.boolean(),\n isFetching: Zod.boolean(),\n data: Zod.unknown(),\n }) as any\n}\n\nexport const isSettled = <T>(value: AsyncValue<T>): value is SettledValue<T> => {\n return value.isSuccess && !value.isError && !value.isLoading && !value.isFetching\n}\n\nexport const loading = (): LoadingValue => ({ isSuccess: false, isError: false, isLoading: true, isFetching: true, data: undefined })\n\nexport const fetching = <T>(data: T): FetchingValueSuccess<T> => ({\n isSuccess: true,\n isError: false,\n isLoading: false,\n isFetching: true,\n data,\n})\n\nexport const settled = <T>(data: T): SettledValue<T> => ({ isSuccess: true, isError: false, isLoading: false, isFetching: false, data })\n\nexport const error = (error: unknown): ErrorValue => ({ isSuccess: false, isError: true, isLoading: false, isFetching: false, data: error })\n\nexport const handle = <T, N>(\n value: AsyncValue<T | null>,\n handlers: { loading: () => N; error: (error: unknown) => N; absent: () => N; success: (data: T) => N }\n): N => {\n if (value.isLoading || (value.isError && value.isFetching)) {\n return handlers.loading()\n }\n if (value.isError) {\n return handlers.error(value.data)\n }\n if (isNil(value.data)) {\n return handlers.absent()\n }\n\n return handlers.success(value.data)\n}\n\nexport const map = <T, N>(value: AsyncValue<T>, mapper: (value: T) => N): AsyncValue<N> => {\n if (!value.isSuccess) {\n return value\n }\n\n return { ...value, data: mapper(value.data) }\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAC7B,SAAS,aAAa;AAoDf,IAAM,SAAS,CAAI,MAA0C;AAClE,SAAO,IAAI,OAAO;AAAA,IAChB,WAAW,IAAI,QAAQ;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,IACrB,WAAW,IAAI,QAAQ;AAAA,IACvB,YAAY,IAAI,QAAQ;AAAA,IACxB,MAAM,IAAI,QAAQ;AAAA,EACpB,CAAC;AACH;AAEO,IAAM,YAAY,CAAI,UAAmD;AAC9E,SAAO,MAAM,aAAa,CAAC,MAAM,WAAW,CAAC,MAAM,aAAa,CAAC,MAAM;AACzE;AAEO,IAAM,UAAU,OAAqB,EAAE,WAAW,OAAO,SAAS,OAAO,WAAW,MAAM,YAAY,MAAM,MAAM,OAAU;AAE5H,IAAM,WAAW,CAAI,UAAsC;AAAA,EAChE,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AACF;AAEO,IAAM,UAAU,CAAI,UAA8B,EAAE,WAAW,MAAM,SAAS,OAAO,WAAW,OAAO,YAAY,OAAO,KAAK;AAE/H,IAAM,QAAQ,CAACA,YAAgC,EAAE,WAAW,OAAO,SAAS,MAAM,WAAW,OAAO,YAAY,OAAO,MAAMA,OAAM;AAEnI,IAAM,SAAS,CACpB,OACA,aACM;AACN,MAAI,MAAM,aAAc,MAAM,WAAW,MAAM,YAAa;AAC1D,WAAO,SAAS,QAAQ;AAAA,EAC1B;AACA,MAAI,MAAM,SAAS;AACjB,WAAO,SAAS,MAAM,MAAM,IAAI;AAAA,EAClC;AACA,MAAI,MAAM,MAAM,IAAI,GAAG;AACrB,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SAAO,SAAS,QAAQ,MAAM,IAAI;AACpC;AAEO,IAAM,MAAM,CAAO,OAAsB,WAA2C;AACzF,MAAI,CAAC,MAAM,WAAW;AACpB,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,GAAG,OAAO,MAAM,OAAO,MAAM,IAAI,EAAE;AAC9C;","names":["error"]}
@@ -1 +1 @@
1
- {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAGzD,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAWhE,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,UAAU,QAAQ,KAAG,OAAO,CAAC,IAAI,CAItD,CAAA"}
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,gCAAgC,CAAA;AAEzE,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAWhE,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,UAAU,QAAQ,KAAG,OAAO,CAAC,IAAI,CAItD,CAAA"}
package/dist/async.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/async.ts
2
- import { Durations } from "@bessemer/cornerstone";
2
+ import { toMilliseconds } from "@bessemer/cornerstone/duration";
3
3
  var execute = (runnable) => {
4
4
  return new Promise(async (resolve, reject) => {
5
5
  setTimeout(async () => {
@@ -14,7 +14,7 @@ var execute = (runnable) => {
14
14
  };
15
15
  var sleep = (duration) => {
16
16
  return new Promise((resolve) => {
17
- setTimeout(resolve, Durations.toMilliseconds(duration));
17
+ setTimeout(resolve, toMilliseconds(duration));
18
18
  });
19
19
  };
20
20
  export {
package/dist/async.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/async.ts"],"sourcesContent":["import { Duration } from '@bessemer/cornerstone/duration'\nimport { Durations } from '@bessemer/cornerstone'\n\nexport const execute = <T>(runnable: () => Promise<T>): Promise<T> => {\n return new Promise(async (resolve, reject) => {\n setTimeout(async () => {\n try {\n const value = await runnable()\n resolve(value)\n } catch (e) {\n reject(e)\n }\n }, 0)\n })\n}\n\nexport const sleep = (duration: Duration): Promise<void> => {\n return new Promise((resolve) => {\n setTimeout(resolve, Durations.toMilliseconds(duration))\n })\n}\n"],"mappings":";AACA,SAAS,iBAAiB;AAEnB,IAAM,UAAU,CAAI,aAA2C;AACpE,SAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5C,eAAW,YAAY;AACrB,UAAI;AACF,cAAM,QAAQ,MAAM,SAAS;AAC7B,gBAAQ,KAAK;AAAA,MACf,SAAS,GAAG;AACV,eAAO,CAAC;AAAA,MACV;AAAA,IACF,GAAG,CAAC;AAAA,EACN,CAAC;AACH;AAEO,IAAM,QAAQ,CAAC,aAAsC;AAC1D,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,eAAW,SAAS,UAAU,eAAe,QAAQ,CAAC;AAAA,EACxD,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../src/async.ts"],"sourcesContent":["import { Duration, toMilliseconds } from '@bessemer/cornerstone/duration'\n\nexport const execute = <T>(runnable: () => Promise<T>): Promise<T> => {\n return new Promise(async (resolve, reject) => {\n setTimeout(async () => {\n try {\n const value = await runnable()\n resolve(value)\n } catch (e) {\n reject(e)\n }\n }, 0)\n })\n}\n\nexport const sleep = (duration: Duration): Promise<void> => {\n return new Promise((resolve) => {\n setTimeout(resolve, toMilliseconds(duration))\n })\n}\n"],"mappings":";AAAA,SAAmB,sBAAsB;AAElC,IAAM,UAAU,CAAI,aAA2C;AACpE,SAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5C,eAAW,YAAY;AACrB,UAAI;AACF,cAAM,QAAQ,MAAM,SAAS;AAC7B,gBAAQ,KAAK;AAAA,MACf,SAAS,GAAG;AACV,eAAO,CAAC;AAAA,MACV;AAAA,IACF,GAAG,CAAC;AAAA,EACN,CAAC;AACH;AAEO,IAAM,QAAQ,CAAC,aAAsC;AAC1D,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,eAAW,SAAS,eAAe,QAAQ,CAAC;AAAA,EAC9C,CAAC;AACH;","names":[]}
package/dist/cache.d.ts CHANGED
@@ -3,7 +3,7 @@ import { Duration } from '@bessemer/cornerstone/duration';
3
3
  import { ResourceKey, ResourceNamespace } from '@bessemer/cornerstone/resource';
4
4
  import { AbstractApplicationContext } from '@bessemer/cornerstone/context';
5
5
  import { NominalType } from '@bessemer/cornerstone/types';
6
- import { Entry } from '@bessemer/cornerstone/entry';
6
+ import { RecordEntry } from '@bessemer/cornerstone/entry';
7
7
  import { GlobPattern } from '@bessemer/cornerstone/glob';
8
8
  import { Arrayable } from 'type-fest';
9
9
  import { ZodType } from 'zod';
@@ -36,9 +36,9 @@ export interface AbstractCache<T> {
36
36
  }
37
37
  export interface Cache<T> extends AbstractCache<T> {
38
38
  fetchValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => Promise<T>): Promise<T>;
39
- fetchValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Promise<Array<Entry<T>>>): Promise<Array<Entry<T>>>;
39
+ fetchValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>): Promise<Array<RecordEntry<T>>>;
40
40
  writeValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): Promise<void>;
41
- writeValues(namespace: ResourceNamespace, entries: Array<Entry<T | undefined>>): Promise<void>;
41
+ writeValues(namespace: ResourceNamespace, entries: Array<RecordEntry<T | undefined>>): Promise<void>;
42
42
  evictAll(sector: CacheSector): Promise<void>;
43
43
  }
44
44
  export interface CacheProvider<T> extends RemoteKeyValueStore<CacheEntry<T>> {
@@ -51,9 +51,9 @@ export declare abstract class AbstractCacheProvider<T> extends AbstractRemoteKey
51
51
  }
52
52
  export interface LocalCache<T> extends AbstractCache<T> {
53
53
  getValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => T): T;
54
- getValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Array<Entry<T>>): Array<Entry<T>>;
54
+ getValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>): Array<RecordEntry<T>>;
55
55
  setValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): void;
56
- setValues(namespace: ResourceNamespace, entries: Array<Entry<T | undefined>>): void;
56
+ setValues(namespace: ResourceNamespace, entries: Array<RecordEntry<T | undefined>>): void;
57
57
  removeAll(sector: CacheSector): void;
58
58
  }
59
59
  export interface LocalCacheProvider<T> extends LocalKeyValueStore<CacheEntry<T>>, CacheProvider<T> {