@bessemer/cornerstone 0.5.52 → 0.5.53

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 (123) hide show
  1. package/dist/array.d.ts.map +1 -1
  2. package/dist/array.js +16 -13
  3. package/dist/array.js.map +1 -1
  4. package/dist/assertion.d.ts +4 -4
  5. package/dist/assertion.d.ts.map +1 -1
  6. package/dist/assertion.js +14 -13
  7. package/dist/assertion.js.map +1 -1
  8. package/dist/async.d.ts.map +1 -1
  9. package/dist/async.js +4 -3
  10. package/dist/async.js.map +1 -1
  11. package/dist/cache.d.ts.map +1 -1
  12. package/dist/cache.js +22 -17
  13. package/dist/cache.js.map +1 -1
  14. package/dist/combinable.d.ts.map +1 -1
  15. package/dist/combinable.js +5 -4
  16. package/dist/combinable.js.map +1 -1
  17. package/dist/comparator.d.ts.map +1 -1
  18. package/dist/comparator.js +8 -5
  19. package/dist/comparator.js.map +1 -1
  20. package/dist/content.d.ts +9 -9
  21. package/dist/content.d.ts.map +1 -1
  22. package/dist/content.js +18 -13
  23. package/dist/content.js.map +1 -1
  24. package/dist/date.d.ts.map +1 -1
  25. package/dist/date.js +2 -2
  26. package/dist/date.js.map +1 -1
  27. package/dist/either.d.ts +0 -1
  28. package/dist/either.d.ts.map +1 -1
  29. package/dist/either.js +2 -3
  30. package/dist/either.js.map +1 -1
  31. package/dist/error-event.d.ts +10 -6
  32. package/dist/error-event.d.ts.map +1 -1
  33. package/dist/error-event.js +34 -12
  34. package/dist/error-event.js.map +1 -1
  35. package/dist/error.js +2 -2
  36. package/dist/error.js.map +1 -1
  37. package/dist/expression/array-expression.js +3 -3
  38. package/dist/expression/array-expression.js.map +1 -1
  39. package/dist/expression/core-expression.d.ts +6 -6
  40. package/dist/expression/core-expression.d.ts.map +1 -1
  41. package/dist/expression/core-expression.js +9 -6
  42. package/dist/expression/core-expression.js.map +1 -1
  43. package/dist/expression/expression-evaluator.js +3 -3
  44. package/dist/expression/expression-evaluator.js.map +1 -1
  45. package/dist/expression/expression-mapper.js +3 -3
  46. package/dist/expression/expression-mapper.js.map +1 -1
  47. package/dist/expression/expression.d.ts +5 -6
  48. package/dist/expression/expression.d.ts.map +1 -1
  49. package/dist/expression/expression.js +2 -2
  50. package/dist/expression/expression.js.map +1 -1
  51. package/dist/expression/internal.d.ts.map +1 -1
  52. package/dist/expression/internal.js +3 -3
  53. package/dist/expression/internal.js.map +1 -1
  54. package/dist/expression/numeric-expression.d.ts +5 -5
  55. package/dist/expression/numeric-expression.d.ts.map +1 -1
  56. package/dist/expression/numeric-expression.js +11 -10
  57. package/dist/expression/numeric-expression.js.map +1 -1
  58. package/dist/hex-code.d.ts +2 -2
  59. package/dist/hex-code.d.ts.map +1 -1
  60. package/dist/hex-code.js +1 -1
  61. package/dist/hex-code.js.map +1 -1
  62. package/dist/json.d.ts.map +1 -1
  63. package/dist/json.js +3 -3
  64. package/dist/json.js.map +1 -1
  65. package/dist/logger.d.ts.map +1 -1
  66. package/dist/logger.js +10 -9
  67. package/dist/logger.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/patch.d.ts.map +1 -1
  72. package/dist/patch.js +6 -5
  73. package/dist/patch.js.map +1 -1
  74. package/dist/property.d.ts.map +1 -1
  75. package/dist/property.js +5 -4
  76. package/dist/property.js.map +1 -1
  77. package/dist/range.d.ts.map +1 -1
  78. package/dist/range.js +4 -3
  79. package/dist/range.js.map +1 -1
  80. package/dist/reference.d.ts +1 -2
  81. package/dist/reference.d.ts.map +1 -1
  82. package/dist/reference.js +13 -10
  83. package/dist/reference.js.map +1 -1
  84. package/dist/resource.d.ts.map +1 -1
  85. package/dist/resource.js +3 -2
  86. package/dist/resource.js.map +1 -1
  87. package/dist/result.d.ts.map +1 -1
  88. package/dist/result.js +6 -5
  89. package/dist/result.js.map +1 -1
  90. package/dist/retry.d.ts.map +1 -1
  91. package/dist/retry.js +14 -9
  92. package/dist/retry.js.map +1 -1
  93. package/dist/rich-text.js +2 -2
  94. package/dist/rich-text.js.map +1 -1
  95. package/dist/signature.d.ts.map +1 -1
  96. package/dist/signature.js +6 -4
  97. package/dist/signature.js.map +1 -1
  98. package/dist/sql/sql-expression-parser.d.ts.map +1 -1
  99. package/dist/sql/sql-expression-parser.js +18 -14
  100. package/dist/sql/sql-expression-parser.js.map +1 -1
  101. package/dist/store.d.ts.map +1 -1
  102. package/dist/store.js +9 -7
  103. package/dist/store.js.map +1 -1
  104. package/dist/string.d.ts.map +1 -1
  105. package/dist/string.js +2 -2
  106. package/dist/string.js.map +1 -1
  107. package/dist/tag.d.ts.map +1 -1
  108. package/dist/tag.js +12 -12
  109. package/dist/tag.js.map +1 -1
  110. package/dist/ulid.d.ts.map +1 -1
  111. package/dist/ulid.js +4 -3
  112. package/dist/ulid.js.map +1 -1
  113. package/dist/uri.d.ts.map +1 -1
  114. package/dist/uri.js +52 -50
  115. package/dist/uri.js.map +1 -1
  116. package/dist/url.d.ts +1 -2
  117. package/dist/url.d.ts.map +1 -1
  118. package/dist/url.js +28 -19
  119. package/dist/url.js.map +1 -1
  120. package/dist/uuid.d.ts.map +1 -1
  121. package/dist/uuid.js +7 -5
  122. package/dist/uuid.js.map +1 -1
  123. package/package.json +1 -1
@@ -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
@@ -9,7 +9,10 @@ import {
9
9
  uniqBy,
10
10
  uniqWith
11
11
  } from "lodash-es";
12
- import { Assertions, Comparators, Eithers, Signatures } from "@bessemer/cornerstone";
12
+ import { sign } from "@bessemer/cornerstone/signature";
13
+ import { split } from "@bessemer/cornerstone/either";
14
+ import { compareBy, natural } from "@bessemer/cornerstone/comparator";
15
+ import { assertTrue } from "@bessemer/cornerstone/assertion";
13
16
  var equalWith = (first2, second, equalitor) => {
14
17
  if (first2.length !== second.length) {
15
18
  return false;
@@ -17,19 +20,19 @@ var equalWith = (first2, second, equalitor) => {
17
20
  return first2.every((element, index) => equalitor(element, second[index]));
18
21
  };
19
22
  var equalBy = (first2, second, mapper) => {
20
- return equalWith(first2, second, (first3, second2) => Signatures.sign(mapper(first3)) === Signatures.sign(mapper(second2)));
23
+ return equalWith(first2, second, (first3, second2) => sign(mapper(first3)) === sign(mapper(second2)));
21
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
29
  return _differenceWith(first2, second, equalitor);
27
30
  };
28
31
  var differenceBy = (first2, second, mapper) => {
29
- return _differenceBy(first2, second, (it) => Signatures.sign(mapper(it)));
32
+ return _differenceBy(first2, second, (it) => sign(mapper(it)));
30
33
  };
31
34
  var difference = (first2, second) => {
32
- return differenceBy(first2, second, Signatures.sign);
35
+ return differenceBy(first2, second, sign);
33
36
  };
34
37
  var removeWith = (array, element, equalitor) => {
35
38
  return differenceWith(array, [element], equalitor);
@@ -44,9 +47,9 @@ var containsWith = (array, element, equalitor) => {
44
47
  return array.some((it) => equalitor(it, element));
45
48
  };
46
49
  var containsBy = (array, element, mapper) => {
47
- return containsWith(array, element, (first2, second) => Signatures.sign(mapper(first2)) === Signatures.sign(mapper(second)));
50
+ return containsWith(array, element, (first2, second) => sign(mapper(first2)) === sign(mapper(second)));
48
51
  };
49
- var contains = (array, element) => containsBy(array, element, Signatures.sign);
52
+ var contains = (array, element) => containsBy(array, element, sign);
50
53
  var containsAllWith = (first2, second, equalitor) => isEmpty(differenceWith(second, first2, equalitor));
51
54
  var containsAllBy = (first2, second, mapper) => isEmpty(differenceBy(second, first2, mapper));
52
55
  var containsAll = (first2, second) => isEmpty(difference(second, first2));
@@ -54,10 +57,10 @@ var dedupeWith = (array, equalitor) => {
54
57
  return uniqWith(array, equalitor);
55
58
  };
56
59
  var dedupeBy = (array, mapper) => {
57
- return uniqBy(array, (it) => Signatures.sign(mapper(it)));
60
+ return uniqBy(array, (it) => sign(mapper(it)));
58
61
  };
59
62
  var dedupe = (array) => {
60
- return dedupeBy(array, Signatures.sign);
63
+ return dedupeBy(array, sign);
61
64
  };
62
65
  var sortWith = (array, comparator) => {
63
66
  return [...array].sort(comparator);
@@ -65,10 +68,10 @@ var sortWith = (array, comparator) => {
65
68
  var sortBy = (array, mapper) => {
66
69
  return sortWith(
67
70
  array,
68
- Comparators.compareBy((it) => Signatures.sign(mapper(it)), Comparators.natural())
71
+ compareBy((it) => sign(mapper(it)), natural())
69
72
  );
70
73
  };
71
- var sort = (array) => sortBy(array, Signatures.sign);
74
+ var sort = (array) => sortBy(array, sign);
72
75
  var concatenate = (array, ...values) => {
73
76
  if (array == null) {
74
77
  return [];
@@ -90,7 +93,7 @@ var first = (array) => {
90
93
  return array != null && array.length ? array[0] : void 0;
91
94
  };
92
95
  var only = (array) => {
93
- Assertions.assertTrue(array.length === 1);
96
+ assertTrue(array.length === 1);
94
97
  return first(array);
95
98
  };
96
99
  var last = (array) => {
@@ -117,7 +120,7 @@ var clear = (array) => {
117
120
  filterInPlace(array, () => false);
118
121
  };
119
122
  var bisect = (array, bisector) => {
120
- return Eithers.split(array.map(bisector));
123
+ return split(array.map(bisector));
121
124
  };
122
125
  var toArray = (array) => {
123
126
  if (Array.isArray(array)) {
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 {\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 { sign, Signable } from '@bessemer/cornerstone/signature'\nimport { Either, split } from '@bessemer/cornerstone/either'\nimport { Comparator, compareBy, natural } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\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 const equalBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean => {\n return equalWith(first, second, (first, second) => sign(mapper(first)) === sign(mapper(second)))\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 _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) => sign(mapper(it)))\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 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) => sign(mapper(first)) === sign(mapper(second)))\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 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) => sign(mapper(it)))\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 const sortBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return sortWith(\n array,\n compareBy((it) => sign(mapper(it)), natural())\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> | 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 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 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"]}
@@ -7,8 +7,8 @@ export declare function assertFalse(value: boolean, message?: LazyValue<string>)
7
7
  export declare function assertNil(value: any, message?: LazyValue<string>): asserts value is Nil;
8
8
  export declare function assertPresent<T>(value: T, message?: LazyValue<string>): asserts value is NonNullable<T>;
9
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;
10
+ export declare function expectAuthorized(value: boolean, builder?: LazyValue<Partial<ErrorEventBuilder> | undefined>): asserts value is true;
11
+ export declare function expectPermitted(value: boolean, builder?: LazyValue<Partial<ErrorEventBuilder> | undefined>): asserts value is true;
12
+ export declare function expectValid(value: boolean, builder?: LazyValue<Partial<ErrorEventBuilder> | undefined>): asserts value is true;
13
+ export declare function expect(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true;
14
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;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"}
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;AACjD,OAAO,EAAc,iBAAiB,EAA8D,MAAM,mCAAmC,CAAA;AAG7I,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,CAC9B,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,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAInJ;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAI/I;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAInG"}
package/dist/assertion.js CHANGED
@@ -1,46 +1,47 @@
1
1
  // src/assertion.ts
2
- import { Lazy, Objects } from "@bessemer/cornerstone";
2
+ import { evaluate } from "@bessemer/cornerstone/lazy";
3
3
  import { badRequest, ErrorEventException, forbidden, notFound, of, unauthorized } from "@bessemer/cornerstone/error-event";
4
+ import { isNil, isPresent } from "@bessemer/cornerstone/object";
4
5
  function assertUnreachable(message = () => "Assertions.assertUnreachable was reached") {
5
- throw new Error(Lazy.evaluate(message));
6
+ throw new Error(evaluate(message));
6
7
  }
7
8
  function assertTrue(value, message = () => "Assertions.assertTrue failed validation") {
8
9
  if (!value) {
9
- throw new Error(Lazy.evaluate(message));
10
+ throw new Error(evaluate(message));
10
11
  }
11
12
  }
12
13
  function assertFalse(value, message = () => "Assertions.assertFalse failed validation") {
13
14
  return assertTrue(!value, message);
14
15
  }
15
16
  function assertNil(value, message = () => "Assertions.assertNil failed validation") {
16
- return assertTrue(Objects.isNil(value), message);
17
+ return assertTrue(isNil(value), message);
17
18
  }
18
19
  function assertPresent(value, message = () => "Assertions.assertPresent failed validation") {
19
- return assertTrue(Objects.isPresent(value), message);
20
+ return assertTrue(isPresent(value), message);
20
21
  }
21
22
  function expectPresent(value, builder = () => void 0) {
22
- if (!Objects.isPresent(value)) {
23
- throw new ErrorEventException(notFound(Lazy.evaluate(builder)));
23
+ if (!isPresent(value)) {
24
+ throw new ErrorEventException(notFound(evaluate(builder)));
24
25
  }
25
26
  }
26
27
  function expectAuthorized(value, builder = () => void 0) {
27
28
  if (!value) {
28
- throw new ErrorEventException(unauthorized(Lazy.evaluate(builder)));
29
+ throw new ErrorEventException(unauthorized(evaluate(builder)));
29
30
  }
30
31
  }
31
32
  function expectPermitted(value, builder = () => void 0) {
32
33
  if (!value) {
33
- throw new ErrorEventException(forbidden(Lazy.evaluate(builder)));
34
+ throw new ErrorEventException(forbidden(evaluate(builder)));
34
35
  }
35
36
  }
36
37
  function expectValid(value, builder = () => void 0) {
37
- if (!Objects.isPresent(value)) {
38
- throw new ErrorEventException(badRequest(Lazy.evaluate(builder)));
38
+ if (!isPresent(value)) {
39
+ throw new ErrorEventException(badRequest(evaluate(builder)));
39
40
  }
40
41
  }
41
42
  function expect(value, builder) {
42
- if (!Objects.isPresent(value)) {
43
- throw new ErrorEventException(of(Lazy.evaluate(builder)));
43
+ if (!isPresent(value)) {
44
+ throw new ErrorEventException(of(evaluate(builder)));
44
45
  }
45
46
  }
46
47
  export {
@@ -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 { 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":[]}
1
+ {"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { Nil } from '@bessemer/cornerstone/types'\nimport { badRequest, ErrorEventBuilder, ErrorEventException, forbidden, notFound, of, unauthorized } from '@bessemer/cornerstone/error-event'\nimport { isNil, isPresent } from '@bessemer/cornerstone/object'\n\nexport function assertUnreachable(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\nexport function expectPresent<T>(\n value: T,\n builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined\n): asserts value is NonNullable<T> {\n if (!isPresent(value)) {\n throw new ErrorEventException(notFound(evaluate(builder)))\n }\n}\n\nexport function expectAuthorized(\n value: boolean,\n builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined\n): asserts value is true {\n if (!value) {\n throw new ErrorEventException(unauthorized(evaluate(builder)))\n }\n}\n\nexport function expectPermitted(value: boolean, builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(forbidden(evaluate(builder)))\n }\n}\n\nexport function expectValid(value: boolean, builder: LazyValue<Partial<ErrorEventBuilder> | undefined> = () => undefined): asserts value is true {\n if (!isPresent(value)) {\n throw new ErrorEventException(badRequest(evaluate(builder)))\n }\n}\n\nexport function expect(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true {\n if (!isPresent(value)) {\n throw new ErrorEventException(of(evaluate(builder)))\n }\n}\n"],"mappings":";AAAA,SAAS,gBAA2B;AAEpC,SAAS,YAA+B,qBAAqB,WAAW,UAAU,IAAI,oBAAoB;AAC1G,SAAS,OAAO,iBAAiB;AAE1B,SAAS,kBAAkB,UAA6B,MAAM,4CAAmD;AACtH,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;AAEO,SAAS,cACd,OACA,UAA6D,MAAM,QAClC;AACjC,MAAI,CAAC,UAAU,KAAK,GAAG;AACrB,UAAM,IAAI,oBAAoB,SAAS,SAAS,OAAO,CAAC,CAAC;AAAA,EAC3D;AACF;AAEO,SAAS,iBACd,OACA,UAA6D,MAAM,QAC5C;AACvB,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,aAAa,SAAS,OAAO,CAAC,CAAC;AAAA,EAC/D;AACF;AAEO,SAAS,gBAAgB,OAAgB,UAA6D,MAAM,QAAkC;AACnJ,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoB,UAAU,SAAS,OAAO,CAAC,CAAC;AAAA,EAC5D;AACF;AAEO,SAAS,YAAY,OAAgB,UAA6D,MAAM,QAAkC;AAC/I,MAAI,CAAC,UAAU,KAAK,GAAG;AACrB,UAAM,IAAI,oBAAoB,WAAW,SAAS,OAAO,CAAC,CAAC;AAAA,EAC7D;AACF;AAEO,SAAS,OAAO,OAAgB,SAA8D;AACnG,MAAI,CAAC,UAAU,KAAK,GAAG;AACrB,UAAM,IAAI,oBAAoB,GAAG,SAAS,OAAO,CAAC,CAAC;AAAA,EACrD;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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"}
package/dist/async.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // src/async.ts
2
- import { Durations, Objects } from "@bessemer/cornerstone";
2
+ import { toMilliseconds } from "@bessemer/cornerstone/duration";
3
+ import { isNil } from "@bessemer/cornerstone/object";
3
4
  var isSettled = (value) => {
4
5
  return value.isSuccess && !value.isError && !value.isLoading && !value.isFetching;
5
6
  };
@@ -20,7 +21,7 @@ var handle = (value, handlers) => {
20
21
  if (value.isError) {
21
22
  return handlers.error(value.data);
22
23
  }
23
- if (Objects.isNil(value.data)) {
24
+ if (isNil(value.data)) {
24
25
  return handlers.absent();
25
26
  }
26
27
  return handlers.success(value.data);
@@ -45,7 +46,7 @@ var execute = (runnable) => {
45
46
  };
46
47
  var sleep = (duration) => {
47
48
  return new Promise((resolve) => {
48
- setTimeout(resolve, Durations.toMilliseconds(duration));
49
+ setTimeout(resolve, toMilliseconds(duration));
49
50
  });
50
51
  };
51
52
  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, Objects } from '@bessemer/cornerstone'\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 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\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,WAAW,eAAe;AAoD5B,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;AAEO,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":["error"]}
1
+ {"version":3,"sources":["../src/async.ts"],"sourcesContent":["import { Duration, toMilliseconds } from '@bessemer/cornerstone/duration'\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 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\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;AACzC,SAAS,aAAa;AAoDf,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;AAEO,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":["error"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
package/dist/cache.js CHANGED
@@ -1,17 +1,22 @@
1
1
  // src/cache.ts
2
2
  import { AbstractLocalKeyValueStore, AbstractRemoteKeyValueStore } from "@bessemer/cornerstone/store";
3
- import { Arrays, Dates, Durations, Objects, Strings, Zod } from "@bessemer/cornerstone";
3
+ import { OneDay, OneHour, toMilliseconds } from "@bessemer/cornerstone/duration";
4
4
  import { ResourceKey } from "@bessemer/cornerstone/resource";
5
+ import Zod from "zod";
6
+ import { deepMerge, isNil } from "@bessemer/cornerstone/object";
7
+ import { contains } from "@bessemer/cornerstone/string";
8
+ import { toArray } from "@bessemer/cornerstone/array";
9
+ import { addMilliseconds, isBefore, now } from "@bessemer/cornerstone/date";
5
10
  var CacheProps;
6
11
  ((CacheProps2) => {
7
12
  const DefaultCacheProps = {
8
13
  maxSize: 5e4,
9
- timeToLive: Durations.OneDay,
10
- timeToStale: Durations.OneHour
14
+ timeToLive: OneDay,
15
+ timeToStale: OneHour
11
16
  };
12
17
  CacheProps2.buildCacheProps = (options) => {
13
18
  options = options ?? {};
14
- const props = Objects.deepMerge(DefaultCacheProps, options);
19
+ const props = deepMerge(DefaultCacheProps, options);
15
20
  if (props.maxSize === null && props.timeToLive === null) {
16
21
  throw new Error("Invalid cache configuration, both maxSize and timeToLive are null");
17
22
  }
@@ -25,13 +30,13 @@ var CacheKey;
25
30
  return DisableCacheToken;
26
31
  };
27
32
  CacheKey2.isDisabled = (key) => {
28
- return Strings.contains(key, DisableCacheToken);
33
+ return contains(key, DisableCacheToken);
29
34
  };
30
35
  })(CacheKey || (CacheKey = {}));
31
36
  var CacheSector;
32
37
  ((CacheSector2) => {
33
38
  CacheSector2.of = (globs) => {
34
- return { globs: Arrays.toArray(globs) };
39
+ return { globs: toArray(globs) };
35
40
  };
36
41
  CacheSector2.namespace = (namespace2, sector) => {
37
42
  return { globs: ResourceKey.namespaceAll(namespace2, sector.globs) };
@@ -54,20 +59,20 @@ var CacheEntry;
54
59
  return true;
55
60
  };
56
61
  CacheEntry2.isDead = (entry) => {
57
- if (Objects.isNil(entry)) {
62
+ if (isNil(entry)) {
58
63
  return true;
59
64
  }
60
- if (Objects.isNil(entry.liveTimestamp)) {
65
+ if (isNil(entry.liveTimestamp)) {
61
66
  return false;
62
67
  }
63
- return Dates.isBefore(entry.liveTimestamp, Dates.now());
68
+ return isBefore(entry.liveTimestamp, now());
64
69
  };
65
70
  CacheEntry2.isAlive = (entry) => !(0, CacheEntry2.isDead)(entry);
66
71
  CacheEntry2.isStale = (entry) => {
67
- if (Objects.isNil(entry.staleTimestamp)) {
72
+ if (isNil(entry.staleTimestamp)) {
68
73
  return false;
69
74
  }
70
- return Dates.isBefore(entry.staleTimestamp, Dates.now());
75
+ return isBefore(entry.staleTimestamp, now());
71
76
  };
72
77
  CacheEntry2.of = (value) => {
73
78
  const entry = {
@@ -79,16 +84,16 @@ var CacheEntry;
79
84
  };
80
85
  CacheEntry2.applyProps = (originalEntry, props) => {
81
86
  let liveTimestamp = originalEntry.liveTimestamp;
82
- if (!Objects.isNil(props.timeToLive)) {
83
- const limit = Dates.addMilliseconds(Dates.now(), Durations.toMilliseconds(props.timeToLive));
84
- if (Dates.isBefore(limit, liveTimestamp ?? limit)) {
87
+ if (!isNil(props.timeToLive)) {
88
+ const limit = addMilliseconds(now(), toMilliseconds(props.timeToLive));
89
+ if (isBefore(limit, liveTimestamp ?? limit)) {
85
90
  liveTimestamp = limit;
86
91
  }
87
92
  }
88
93
  let staleTimestamp = originalEntry.staleTimestamp;
89
- if (!Objects.isNil(props.timeToStale)) {
90
- const limit = Dates.addMilliseconds(Dates.now(), Durations.toMilliseconds(props.timeToStale));
91
- if (Dates.isBefore(limit, staleTimestamp ?? limit)) {
94
+ if (!isNil(props.timeToStale)) {
95
+ const limit = addMilliseconds(now(), toMilliseconds(props.timeToStale));
96
+ if (isBefore(limit, staleTimestamp ?? limit)) {
92
97
  staleTimestamp = limit;
93
98
  }
94
99
  }
package/dist/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cache.ts"],"sourcesContent":["import { AbstractLocalKeyValueStore, AbstractRemoteKeyValueStore, LocalKeyValueStore, RemoteKeyValueStore } from '@bessemer/cornerstone/store'\nimport { Arrays, Dates, Durations, Objects, Strings, Zod } from '@bessemer/cornerstone'\nimport { Duration } from '@bessemer/cornerstone/duration'\nimport { ResourceKey, ResourceNamespace } from '@bessemer/cornerstone/resource'\nimport { AbstractApplicationContext } from '@bessemer/cornerstone/context'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Entry } from '@bessemer/cornerstone/entry'\nimport { GlobPattern } from '@bessemer/cornerstone/glob'\nimport { Arrayable } from 'type-fest'\nimport { ZodType } from 'zod'\n\n// JOHN should this even be in cornerstone? especially consider the config types down at the bottom\n\nexport type CacheProps = {\n maxSize: number | null\n timeToLive: Duration\n timeToStale: Duration | null\n}\n\nexport type CacheOptions = Partial<CacheProps>\n\nexport namespace CacheProps {\n const DefaultCacheProps = {\n maxSize: 50000,\n timeToLive: Durations.OneDay,\n timeToStale: Durations.OneHour,\n }\n\n export const buildCacheProps = (options?: CacheOptions): CacheProps => {\n options = options ?? {}\n\n const props = Objects.deepMerge(DefaultCacheProps, options)\n\n if (props.maxSize === null && props.timeToLive === null) {\n throw new Error('Invalid cache configuration, both maxSize and timeToLive are null')\n }\n\n return props\n }\n}\n\nexport namespace CacheKey {\n // We use a hardcoded UUID to represent a unique token value that serves as a flag to disable caching\n const DisableCacheToken = 'f6822c1a-d527-4c65-b9dd-ddc24620b684'\n\n export const disableCaching = (): ResourceNamespace => {\n return DisableCacheToken\n }\n\n export const isDisabled = (key: ResourceNamespace): boolean => {\n return Strings.contains(key, DisableCacheToken)\n }\n}\n\nexport type CacheSector = {\n globs: Array<GlobPattern>\n}\n\nexport namespace CacheSector {\n export const of = (globs: Arrayable<GlobPattern>) => {\n return { globs: Arrays.toArray(globs) }\n }\n\n export const namespace = (namespace: ResourceNamespace, sector: CacheSector): CacheSector => {\n return { globs: ResourceKey.namespaceAll(namespace, sector.globs) }\n }\n}\n\nexport type CacheName = NominalType<string, 'CacheName'>\nexport const CacheNameSchema: ZodType<CacheName> = Zod.string()\n\nexport interface AbstractCache<T> {\n name: CacheName\n}\n\nexport interface Cache<T> extends AbstractCache<T> {\n fetchValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => Promise<T>): Promise<T>\n\n fetchValues(\n namespace: ResourceNamespace,\n keys: Array<ResourceKey>,\n fetch: (keys: Array<ResourceKey>) => Promise<Array<Entry<T>>>\n ): Promise<Array<Entry<T>>>\n\n writeValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): Promise<void>\n\n writeValues(namespace: ResourceNamespace, entries: Array<Entry<T | undefined>>): Promise<void>\n\n evictAll(sector: CacheSector): Promise<void>\n}\n\nexport interface CacheProvider<T> extends RemoteKeyValueStore<CacheEntry<T>> {\n type: CacheProviderType\n\n evictAll(sector: CacheSector): Promise<void>\n}\n\nexport abstract class AbstractCacheProvider<T> extends AbstractRemoteKeyValueStore<CacheEntry<T>> implements CacheProvider<T> {\n abstract type: CacheProviderType\n\n abstract evictAll(sector: CacheSector): Promise<void>\n}\n\nexport interface LocalCache<T> extends AbstractCache<T> {\n getValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => T): T\n\n getValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Array<Entry<T>>): Array<Entry<T>>\n\n setValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): void\n\n setValues(namespace: ResourceNamespace, entries: Array<Entry<T | undefined>>): void\n\n removeAll(sector: CacheSector): void\n}\n\nexport interface LocalCacheProvider<T> extends LocalKeyValueStore<CacheEntry<T>>, CacheProvider<T> {\n removeAll(sector: CacheSector): void\n}\n\nexport abstract class AbstractLocalCacheProvider<T> extends AbstractLocalKeyValueStore<CacheEntry<T>> implements LocalCacheProvider<T> {\n abstract type: CacheProviderType\n\n abstract removeAll(sector: CacheSector): void\n\n async evictAll(sector: CacheSector): Promise<void> {\n this.removeAll(sector)\n }\n}\n\nexport type CacheEntry<T> = {\n value: T\n liveTimestamp: Date | null\n staleTimestamp: Date | null\n}\n\nexport namespace CacheEntry {\n export const isActive = <T>(entry: CacheEntry<T>): boolean => {\n if (isDead(entry) || isStale(entry)) {\n return false\n }\n\n return true\n }\n\n export const isDead = <T>(entry: CacheEntry<T> | undefined): boolean => {\n if (Objects.isNil(entry)) {\n return true\n }\n\n if (Objects.isNil(entry.liveTimestamp)) {\n return false\n }\n\n return Dates.isBefore(entry.liveTimestamp, Dates.now())\n }\n\n export const isAlive = <T>(entry: CacheEntry<T> | undefined): boolean => !isDead(entry)\n\n export const isStale = <T>(entry: CacheEntry<T>): boolean => {\n if (Objects.isNil(entry.staleTimestamp)) {\n return false\n }\n\n return Dates.isBefore(entry.staleTimestamp, Dates.now())\n }\n\n export const of = <T>(value: T) => {\n const entry: CacheEntry<T> = {\n value,\n liveTimestamp: null,\n staleTimestamp: null,\n }\n\n return entry\n }\n\n // JOHN do we want to enforce some kind of minimum liveness threshold?\n export const applyProps = <T>(originalEntry: CacheEntry<T>, props: CacheProps): CacheEntry<T> => {\n let liveTimestamp: Date | null = originalEntry.liveTimestamp\n if (!Objects.isNil(props.timeToLive)) {\n const limit = Dates.addMilliseconds(Dates.now(), Durations.toMilliseconds(props.timeToLive))\n if (Dates.isBefore(limit, liveTimestamp ?? limit)) {\n liveTimestamp = limit\n }\n }\n\n let staleTimestamp: Date | null = originalEntry.staleTimestamp\n if (!Objects.isNil(props.timeToStale)) {\n const limit = Dates.addMilliseconds(Dates.now(), Durations.toMilliseconds(props.timeToStale))\n if (Dates.isBefore(limit, staleTimestamp ?? limit)) {\n staleTimestamp = limit\n }\n }\n\n const limitedEntry: CacheEntry<T> = {\n value: originalEntry.value,\n liveTimestamp,\n staleTimestamp,\n }\n\n return limitedEntry\n }\n}\n\nexport type CacheConfigurationOptions = CacheConfigurationSection & {\n local: CacheConfigurationSection\n}\n\nexport type CacheConfigurationSection = {\n defaults: CacheDefinition\n\n /**\n * These options map from cache name key to configuration. They are a way for the tenant to override the configurations\n * for specific caches from the cache configuration here.\n */\n caches?: Record<string, Partial<CacheDefinition>>\n}\n\nexport type CacheDefinition = {\n options?: CacheOptions\n providers: Array<CacheProviderConfiguration>\n}\n\nexport type CacheProviderType = NominalType<string, 'CacheProviderType'>\nexport type CacheProviderConfiguration = CacheOptions & {\n type: CacheProviderType\n}\n\nexport type CacheConfiguration = CacheConfigurationSection & {\n local: CacheConfigurationSection\n}\n\nexport type CacheProviderRegistry<ContextType extends AbstractApplicationContext> = {\n type: CacheProviderType\n construct: <T>(props: CacheProps, context: ContextType) => CacheProvider<T>\n}\n"],"mappings":"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","names":["CacheProps","CacheKey","CacheSector","namespace","CacheEntry"]}
1
+ {"version":3,"sources":["../src/cache.ts"],"sourcesContent":["import { AbstractLocalKeyValueStore, AbstractRemoteKeyValueStore, LocalKeyValueStore, RemoteKeyValueStore } from '@bessemer/cornerstone/store'\nimport { Duration, OneDay, OneHour, toMilliseconds } from '@bessemer/cornerstone/duration'\nimport { ResourceKey, ResourceNamespace } from '@bessemer/cornerstone/resource'\nimport { AbstractApplicationContext } from '@bessemer/cornerstone/context'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Entry } from '@bessemer/cornerstone/entry'\nimport { GlobPattern } from '@bessemer/cornerstone/glob'\nimport { Arrayable } from 'type-fest'\nimport Zod, { ZodType } from 'zod'\nimport { deepMerge, isNil } from '@bessemer/cornerstone/object'\nimport { contains } from '@bessemer/cornerstone/string'\nimport { toArray } from '@bessemer/cornerstone/array'\nimport { addMilliseconds, isBefore, now } from '@bessemer/cornerstone/date'\n\n// JOHN should this even be in cornerstone? especially consider the config types down at the bottom\n\nexport type CacheProps = {\n maxSize: number | null\n timeToLive: Duration\n timeToStale: Duration | null\n}\n\nexport type CacheOptions = Partial<CacheProps>\n\nexport namespace CacheProps {\n const DefaultCacheProps = {\n maxSize: 50000,\n timeToLive: OneDay,\n timeToStale: OneHour,\n }\n\n export const buildCacheProps = (options?: CacheOptions): CacheProps => {\n options = options ?? {}\n\n const props = deepMerge(DefaultCacheProps, options)\n\n if (props.maxSize === null && props.timeToLive === null) {\n throw new Error('Invalid cache configuration, both maxSize and timeToLive are null')\n }\n\n return props\n }\n}\n\nexport namespace CacheKey {\n // We use a hardcoded UUID to represent a unique token value that serves as a flag to disable caching\n const DisableCacheToken = 'f6822c1a-d527-4c65-b9dd-ddc24620b684'\n\n export const disableCaching = (): ResourceNamespace => {\n return DisableCacheToken\n }\n\n export const isDisabled = (key: ResourceNamespace): boolean => {\n return contains(key, DisableCacheToken)\n }\n}\n\nexport type CacheSector = {\n globs: Array<GlobPattern>\n}\n\nexport namespace CacheSector {\n export const of = (globs: Arrayable<GlobPattern>) => {\n return { globs: toArray(globs) }\n }\n\n export const namespace = (namespace: ResourceNamespace, sector: CacheSector): CacheSector => {\n return { globs: ResourceKey.namespaceAll(namespace, sector.globs) }\n }\n}\n\nexport type CacheName = NominalType<string, 'CacheName'>\nexport const CacheNameSchema: ZodType<CacheName> = Zod.string()\n\nexport interface AbstractCache<T> {\n name: CacheName\n}\n\nexport interface Cache<T> extends AbstractCache<T> {\n fetchValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => Promise<T>): Promise<T>\n\n fetchValues(\n namespace: ResourceNamespace,\n keys: Array<ResourceKey>,\n fetch: (keys: Array<ResourceKey>) => Promise<Array<Entry<T>>>\n ): Promise<Array<Entry<T>>>\n\n writeValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): Promise<void>\n\n writeValues(namespace: ResourceNamespace, entries: Array<Entry<T | undefined>>): Promise<void>\n\n evictAll(sector: CacheSector): Promise<void>\n}\n\nexport interface CacheProvider<T> extends RemoteKeyValueStore<CacheEntry<T>> {\n type: CacheProviderType\n\n evictAll(sector: CacheSector): Promise<void>\n}\n\nexport abstract class AbstractCacheProvider<T> extends AbstractRemoteKeyValueStore<CacheEntry<T>> implements CacheProvider<T> {\n abstract type: CacheProviderType\n\n abstract evictAll(sector: CacheSector): Promise<void>\n}\n\nexport interface LocalCache<T> extends AbstractCache<T> {\n getValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => T): T\n\n getValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Array<Entry<T>>): Array<Entry<T>>\n\n setValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): void\n\n setValues(namespace: ResourceNamespace, entries: Array<Entry<T | undefined>>): void\n\n removeAll(sector: CacheSector): void\n}\n\nexport interface LocalCacheProvider<T> extends LocalKeyValueStore<CacheEntry<T>>, CacheProvider<T> {\n removeAll(sector: CacheSector): void\n}\n\nexport abstract class AbstractLocalCacheProvider<T> extends AbstractLocalKeyValueStore<CacheEntry<T>> implements LocalCacheProvider<T> {\n abstract type: CacheProviderType\n\n abstract removeAll(sector: CacheSector): void\n\n async evictAll(sector: CacheSector): Promise<void> {\n this.removeAll(sector)\n }\n}\n\nexport type CacheEntry<T> = {\n value: T\n liveTimestamp: Date | null\n staleTimestamp: Date | null\n}\n\nexport namespace CacheEntry {\n export const isActive = <T>(entry: CacheEntry<T>): boolean => {\n if (isDead(entry) || isStale(entry)) {\n return false\n }\n\n return true\n }\n\n export const isDead = <T>(entry: CacheEntry<T> | undefined): boolean => {\n if (isNil(entry)) {\n return true\n }\n\n if (isNil(entry.liveTimestamp)) {\n return false\n }\n\n return isBefore(entry.liveTimestamp, now())\n }\n\n export const isAlive = <T>(entry: CacheEntry<T> | undefined): boolean => !isDead(entry)\n\n export const isStale = <T>(entry: CacheEntry<T>): boolean => {\n if (isNil(entry.staleTimestamp)) {\n return false\n }\n\n return isBefore(entry.staleTimestamp, now())\n }\n\n export const of = <T>(value: T) => {\n const entry: CacheEntry<T> = {\n value,\n liveTimestamp: null,\n staleTimestamp: null,\n }\n\n return entry\n }\n\n // JOHN do we want to enforce some kind of minimum liveness threshold?\n export const applyProps = <T>(originalEntry: CacheEntry<T>, props: CacheProps): CacheEntry<T> => {\n let liveTimestamp: Date | null = originalEntry.liveTimestamp\n if (!isNil(props.timeToLive)) {\n const limit = addMilliseconds(now(), toMilliseconds(props.timeToLive))\n if (isBefore(limit, liveTimestamp ?? limit)) {\n liveTimestamp = limit\n }\n }\n\n let staleTimestamp: Date | null = originalEntry.staleTimestamp\n if (!isNil(props.timeToStale)) {\n const limit = addMilliseconds(now(), toMilliseconds(props.timeToStale))\n if (isBefore(limit, staleTimestamp ?? limit)) {\n staleTimestamp = limit\n }\n }\n\n const limitedEntry: CacheEntry<T> = {\n value: originalEntry.value,\n liveTimestamp,\n staleTimestamp,\n }\n\n return limitedEntry\n }\n}\n\nexport type CacheConfigurationOptions = CacheConfigurationSection & {\n local: CacheConfigurationSection\n}\n\nexport type CacheConfigurationSection = {\n defaults: CacheDefinition\n\n /**\n * These options map from cache name key to configuration. They are a way for the tenant to override the configurations\n * for specific caches from the cache configuration here.\n */\n caches?: Record<string, Partial<CacheDefinition>>\n}\n\nexport type CacheDefinition = {\n options?: CacheOptions\n providers: Array<CacheProviderConfiguration>\n}\n\nexport type CacheProviderType = NominalType<string, 'CacheProviderType'>\nexport type CacheProviderConfiguration = CacheOptions & {\n type: CacheProviderType\n}\n\nexport type CacheConfiguration = CacheConfigurationSection & {\n local: CacheConfigurationSection\n}\n\nexport type CacheProviderRegistry<ContextType extends AbstractApplicationContext> = {\n type: CacheProviderType\n construct: <T>(props: CacheProps, context: ContextType) => CacheProvider<T>\n}\n"],"mappings":"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","names":["CacheProps","CacheKey","CacheSector","namespace","CacheEntry"]}
@@ -1 +1 @@
1
- {"version":3,"file":"combinable.d.ts","sourceRoot":"","sources":["../src/combinable.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,kBAAkB,CAAA;CAC1B,CAAA;AAED,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,YAAY,iBAAiB;CAC9B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,UAAU,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAexF,CAAA"}
1
+ {"version":3,"file":"combinable.d.ts","sourceRoot":"","sources":["../src/combinable.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,kBAAkB,CAAA;CAC1B,CAAA;AAED,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,YAAY,iBAAiB;CAC9B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,UAAU,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAexF,CAAA"}
@@ -1,5 +1,6 @@
1
1
  // src/combinable.ts
2
- import { Arrays, Sets } from "@bessemer/cornerstone";
2
+ import { groupBy, isEmpty } from "@bessemer/cornerstone/array";
3
+ import { cartesianProduct } from "@bessemer/cornerstone/set";
3
4
  var CombinabilityType = /* @__PURE__ */ ((CombinabilityType2) => {
4
5
  CombinabilityType2["Stackable"] = "Stackable";
5
6
  CombinabilityType2["Singleton"] = "Singleton";
@@ -11,17 +12,17 @@ var DefaultCombinability = {
11
12
  class: null
12
13
  };
13
14
  var combinations = (combinables) => {
14
- const classMap = Arrays.groupBy(combinables, (it) => it.combinability.class);
15
+ const classMap = groupBy(combinables, (it) => it.combinability.class);
15
16
  const classCombinations = Object.entries(classMap).map(([_, values]) => {
16
17
  const totalitarianCombinations = values.filter((it) => it.combinability.type === "Totalitarian" /* Totalitarian */).map((it) => [it]);
17
- if (!Arrays.isEmpty(totalitarianCombinations)) {
18
+ if (!isEmpty(totalitarianCombinations)) {
18
19
  return totalitarianCombinations;
19
20
  }
20
21
  const singletonCombinations = values.filter((it) => it.combinability.type === "Singleton" /* Singleton */).map((it) => [it]);
21
22
  const stackableCombination = values.filter((it) => it.combinability.type === "Stackable" /* Stackable */);
22
23
  return [stackableCombination, ...singletonCombinations];
23
24
  });
24
- return Sets.cartesianProduct(...classCombinations).flatMap((it) => it);
25
+ return cartesianProduct(...classCombinations).flatMap((it) => it);
25
26
  };
26
27
  export {
27
28
  CombinabilityType,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/combinable.ts"],"sourcesContent":["import { Arrays, Sets } from '@bessemer/cornerstone'\n\nexport interface Combinable {\n combinability: Combinability\n}\n\nexport type Combinability = {\n type: CombinabilityType\n class: CombinabilityClass\n}\n\nexport enum CombinabilityType {\n Stackable = 'Stackable',\n Singleton = 'Singleton',\n Totalitarian = 'Totalitarian',\n}\n\nexport type CombinabilityClass = string | null\n\nexport const DefaultCombinability: Combinability = {\n type: CombinabilityType.Stackable,\n class: null,\n}\n\nexport const combinations = <T extends Combinable>(combinables: Array<T>): Array<Array<T>> => {\n const classMap = Arrays.groupBy(combinables, (it) => it.combinability.class)\n\n const classCombinations: Array<Array<Array<T>>> = Object.entries(classMap).map(([_, values]) => {\n const totalitarianCombinations = values.filter((it) => it.combinability.type === CombinabilityType.Totalitarian).map((it) => [it])\n if (!Arrays.isEmpty(totalitarianCombinations)) {\n return totalitarianCombinations\n }\n\n const singletonCombinations = values.filter((it) => it.combinability.type === CombinabilityType.Singleton).map((it) => [it])\n const stackableCombination = values.filter((it) => it.combinability.type === CombinabilityType.Stackable)\n return [stackableCombination, ...singletonCombinations]\n })\n\n return Sets.cartesianProduct(...classCombinations).flatMap((it) => it)\n}\n"],"mappings":";AAAA,SAAS,QAAQ,YAAY;AAWtB,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,kBAAe;AAHL,SAAAA;AAAA,GAAA;AAQL,IAAM,uBAAsC;AAAA,EACjD,MAAM;AAAA,EACN,OAAO;AACT;AAEO,IAAM,eAAe,CAAuB,gBAA2C;AAC5F,QAAM,WAAW,OAAO,QAAQ,aAAa,CAAC,OAAO,GAAG,cAAc,KAAK;AAE3E,QAAM,oBAA4C,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,MAAM;AAC9F,UAAM,2BAA2B,OAAO,OAAO,CAAC,OAAO,GAAG,cAAc,SAAS,iCAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACjI,QAAI,CAAC,OAAO,QAAQ,wBAAwB,GAAG;AAC7C,aAAO;AAAA,IACT;AAEA,UAAM,wBAAwB,OAAO,OAAO,CAAC,OAAO,GAAG,cAAc,SAAS,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3H,UAAM,uBAAuB,OAAO,OAAO,CAAC,OAAO,GAAG,cAAc,SAAS,2BAA2B;AACxG,WAAO,CAAC,sBAAsB,GAAG,qBAAqB;AAAA,EACxD,CAAC;AAED,SAAO,KAAK,iBAAiB,GAAG,iBAAiB,EAAE,QAAQ,CAAC,OAAO,EAAE;AACvE;","names":["CombinabilityType"]}
1
+ {"version":3,"sources":["../src/combinable.ts"],"sourcesContent":["import { groupBy, isEmpty } from '@bessemer/cornerstone/array'\nimport { cartesianProduct } from '@bessemer/cornerstone/set'\n\nexport interface Combinable {\n combinability: Combinability\n}\n\nexport type Combinability = {\n type: CombinabilityType\n class: CombinabilityClass\n}\n\nexport enum CombinabilityType {\n Stackable = 'Stackable',\n Singleton = 'Singleton',\n Totalitarian = 'Totalitarian',\n}\n\nexport type CombinabilityClass = string | null\n\nexport const DefaultCombinability: Combinability = {\n type: CombinabilityType.Stackable,\n class: null,\n}\n\nexport const combinations = <T extends Combinable>(combinables: Array<T>): Array<Array<T>> => {\n const classMap = groupBy(combinables, (it) => it.combinability.class)\n\n const classCombinations: Array<Array<Array<T>>> = Object.entries(classMap).map(([_, values]) => {\n const totalitarianCombinations = values.filter((it) => it.combinability.type === CombinabilityType.Totalitarian).map((it) => [it])\n if (!isEmpty(totalitarianCombinations)) {\n return totalitarianCombinations\n }\n\n const singletonCombinations = values.filter((it) => it.combinability.type === CombinabilityType.Singleton).map((it) => [it])\n const stackableCombination = values.filter((it) => it.combinability.type === CombinabilityType.Stackable)\n return [stackableCombination, ...singletonCombinations]\n })\n\n return cartesianProduct(...classCombinations).flatMap((it) => it)\n}\n"],"mappings":";AAAA,SAAS,SAAS,eAAe;AACjC,SAAS,wBAAwB;AAW1B,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,kBAAe;AAHL,SAAAA;AAAA,GAAA;AAQL,IAAM,uBAAsC;AAAA,EACjD,MAAM;AAAA,EACN,OAAO;AACT;AAEO,IAAM,eAAe,CAAuB,gBAA2C;AAC5F,QAAM,WAAW,QAAQ,aAAa,CAAC,OAAO,GAAG,cAAc,KAAK;AAEpE,QAAM,oBAA4C,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,MAAM;AAC9F,UAAM,2BAA2B,OAAO,OAAO,CAAC,OAAO,GAAG,cAAc,SAAS,iCAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACjI,QAAI,CAAC,QAAQ,wBAAwB,GAAG;AACtC,aAAO;AAAA,IACT;AAEA,UAAM,wBAAwB,OAAO,OAAO,CAAC,OAAO,GAAG,cAAc,SAAS,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3H,UAAM,uBAAuB,OAAO,OAAO,CAAC,OAAO,GAAG,cAAc,SAAS,2BAA2B;AACxG,WAAO,CAAC,sBAAsB,GAAG,qBAAqB;AAAA,EACxD,CAAC;AAED,SAAO,iBAAiB,GAAG,iBAAiB,EAAE,QAAQ,CAAC,OAAO,EAAE;AAClE;","names":["CombinabilityType"]}
@@ -1 +1 @@
1
- {"version":3,"file":"comparator.d.ts","sourceRoot":"","sources":["../src/comparator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAEvD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,MAAM,CAAA;AAE3D,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,aAAa,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAe5E,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAElG,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAElE,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,UAAU,CAAC,OAAO,CAE9C,CAAA;AAED,eAAO,MAAM,OAAO,QAAO,UAAU,CAAC,SAAS,GAAG,IAAI,CAuBrD,CAAA;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAa/D;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,OAAK,UAAU,CAAC,CAAC,CAW3C,CAAA"}
1
+ {"version":3,"file":"comparator.d.ts","sourceRoot":"","sources":["../src/comparator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAMvD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,MAAM,CAAA;AAE3D,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,aAAa,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAe5E,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAElG,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAElE,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,UAAU,CAAC,OAAO,CAE9C,CAAA;AAED,eAAO,MAAM,OAAO,QAAO,UAAU,CAAC,SAAS,GAAG,IAAI,CAuBrD,CAAA;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAa/D;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,OAAK,UAAU,CAAC,CAAC,CAW3C,CAAA"}
@@ -1,5 +1,8 @@
1
1
  // src/comparator.ts
2
- import { Dates, Maths, Objects, Strings } from "@bessemer/cornerstone";
2
+ import { isString } from "@bessemer/cornerstone/string";
3
+ import { isNumber } from "@bessemer/cornerstone/math";
4
+ import { isDate } from "@bessemer/cornerstone/date";
5
+ import { isBoolean } from "@bessemer/cornerstone/object";
3
6
  var aggregate = (comparators) => {
4
7
  return (first, second) => {
5
8
  if (first === second) {
@@ -27,13 +30,13 @@ var natural = () => {
27
30
  return aggregate([
28
31
  nullsLast(),
29
32
  (first, second) => {
30
- if (Strings.isString(first) && Strings.isString(second)) {
33
+ if (isString(first) && isString(second)) {
31
34
  return first.localeCompare(second);
32
- } else if (Maths.isNumber(first) && Maths.isNumber(second)) {
35
+ } else if (isNumber(first) && isNumber(second)) {
33
36
  return first - second;
34
- } else if (Dates.isDate(first) && Dates.isDate(second)) {
37
+ } else if (isDate(first) && isDate(second)) {
35
38
  return first.getTime() - second.getTime();
36
- } else if (Objects.isBoolean(first) && Objects.isBoolean(second)) {
39
+ } else if (isBoolean(first) && isBoolean(second)) {
37
40
  if (first !== second) {
38
41
  return second ? 1 : 0;
39
42
  } else {