@bessemer/cornerstone 0.5.63 → 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 (126) 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/store.d.ts +13 -13
  109. package/dist/store.d.ts.map +1 -1
  110. package/dist/store.js +9 -7
  111. package/dist/store.js.map +1 -1
  112. package/dist/string.d.ts.map +1 -1
  113. package/dist/string.js +3 -4
  114. package/dist/string.js.map +1 -1
  115. package/dist/tag.d.ts.map +1 -1
  116. package/dist/tag.js +12 -12
  117. package/dist/tag.js.map +1 -1
  118. package/dist/uri.d.ts.map +1 -1
  119. package/dist/uri.js +52 -50
  120. package/dist/uri.js.map +1 -1
  121. package/dist/url.d.ts.map +1 -1
  122. package/dist/url.js.map +1 -1
  123. package/dist/uuid.d.ts.map +1 -1
  124. package/dist/uuid.js +4 -3
  125. package/dist/uuid.js.map +1 -1
  126. package/package.json +1 -1
@@ -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":"AAAA,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAC9I,OAAO,EAAE,QAAQ,EAAmC,MAAM,gCAAgC,CAAA;AAC1F,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAQlC,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,QAAQ,CAAA;IACpB,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAE9C,yBAAiB,UAAU,CAAC;IAOnB,MAAM,eAAe,GAAI,UAAU,YAAY,KAAG,UAUxD,CAAA;CACF;AAED,yBAAiB,QAAQ,CAAC;IAIjB,MAAM,cAAc,QAAO,iBAEjC,CAAA;IAEM,MAAM,UAAU,GAAI,KAAK,iBAAiB,KAAG,OAEnD,CAAA;CACF;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;CAC1B,CAAA;AAED,yBAAiB,WAAW,CAAC;IACpB,MAAM,EAAE,GAAI,OAAO,SAAS,CAAC,WAAW,CAAC;;KAE/C,CAAA;IAEM,MAAM,SAAS,GAAI,WAAW,iBAAiB,EAAE,QAAQ,WAAW,KAAG,WAE7E,CAAA;CACF;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AACxD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,SAAS,CAAgB,CAAA;AAE/D,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAChD,UAAU,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAE/F,WAAW,CACT,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,EACxB,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAClE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEjC,UAAU,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/F,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEpG,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,EAAE,iBAAiB,CAAA;IAEvB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7C;AAED,8BAAsB,qBAAqB,CAAC,CAAC,CAAE,SAAQ,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC3H,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAEhC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IAE3E,SAAS,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpJ,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAA;IAEpF,SAAS,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAA;IAEzF,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;CACrC;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,CAAE,SAAQ,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAChG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;CACrC;AAED,8BAAsB,0BAA0B,CAAC,CAAC,CAAE,SAAQ,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,YAAW,kBAAkB,CAAC,CAAC,CAAC;IACpI,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAEhC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAEvC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnD;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,KAAK,EAAE,CAAC,CAAA;IACR,aAAa,EAAE,IAAI,GAAG,IAAI,CAAA;IAC1B,cAAc,EAAE,IAAI,GAAG,IAAI,CAAA;CAC5B,CAAA;AAED,yBAAiB,UAAU,CAAC;IACnB,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,KAAG,OAMlD,CAAA;IAEM,MAAM,MAAM,GAAI,CAAC,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,KAAG,OAU5D,CAAA;IAEM,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,KAAG,OAAyB,CAAA;IAEhF,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,KAAG,OAMjD,CAAA;IAEM,MAAM,EAAE,GAAI,CAAC,EAAE,OAAO,CAAC,kBAQ7B,CAAA;IAGM,MAAM,UAAU,GAAI,CAAC,EAAE,eAAe,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,UAAU,KAAG,UAAU,CAAC,CAAC,CAwB3F,CAAA;CACF;AAED,MAAM,MAAM,yBAAyB,GAAG,yBAAyB,GAAG;IAClE,KAAK,EAAE,yBAAyB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,eAAe,CAAA;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AACxE,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG;IACtD,IAAI,EAAE,iBAAiB,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,yBAAyB,GAAG;IAC3D,KAAK,EAAE,yBAAyB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,WAAW,SAAS,0BAA0B,IAAI;IAClF,IAAI,EAAE,iBAAiB,CAAA;IACvB,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,KAAK,aAAa,CAAC,CAAC,CAAC,CAAA;CAC5E,CAAA"}
package/dist/cache.js CHANGED
@@ -1,18 +1,22 @@
1
1
  // src/cache.ts
2
2
  import { AbstractLocalKeyValueStore, AbstractRemoteKeyValueStore } from "@bessemer/cornerstone/store";
3
- import { Arrays, Dates, Durations, Objects, Strings } from "@bessemer/cornerstone";
3
+ import { OneDay, OneHour, toMilliseconds } from "@bessemer/cornerstone/duration";
4
4
  import { ResourceKey } from "@bessemer/cornerstone/resource";
5
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";
6
10
  var CacheProps;
7
11
  ((CacheProps2) => {
8
12
  const DefaultCacheProps = {
9
13
  maxSize: 5e4,
10
- timeToLive: Durations.OneDay,
11
- timeToStale: Durations.OneHour
14
+ timeToLive: OneDay,
15
+ timeToStale: OneHour
12
16
  };
13
17
  CacheProps2.buildCacheProps = (options) => {
14
18
  options = options ?? {};
15
- const props = Objects.deepMerge(DefaultCacheProps, options);
19
+ const props = deepMerge(DefaultCacheProps, options);
16
20
  if (props.maxSize === null && props.timeToLive === null) {
17
21
  throw new Error("Invalid cache configuration, both maxSize and timeToLive are null");
18
22
  }
@@ -26,13 +30,13 @@ var CacheKey;
26
30
  return DisableCacheToken;
27
31
  };
28
32
  CacheKey2.isDisabled = (key) => {
29
- return Strings.contains(key, DisableCacheToken);
33
+ return contains(key, DisableCacheToken);
30
34
  };
31
35
  })(CacheKey || (CacheKey = {}));
32
36
  var CacheSector;
33
37
  ((CacheSector2) => {
34
38
  CacheSector2.of = (globs) => {
35
- return { globs: Arrays.toArray(globs) };
39
+ return { globs: toArray(globs) };
36
40
  };
37
41
  CacheSector2.namespace = (namespace2, sector) => {
38
42
  return { globs: ResourceKey.namespaceAll(namespace2, sector.globs) };
@@ -55,20 +59,20 @@ var CacheEntry;
55
59
  return true;
56
60
  };
57
61
  CacheEntry2.isDead = (entry) => {
58
- if (Objects.isNil(entry)) {
62
+ if (isNil(entry)) {
59
63
  return true;
60
64
  }
61
- if (Objects.isNil(entry.liveTimestamp)) {
65
+ if (isNil(entry.liveTimestamp)) {
62
66
  return false;
63
67
  }
64
- return Dates.isBefore(entry.liveTimestamp, Dates.now());
68
+ return isBefore(entry.liveTimestamp, now());
65
69
  };
66
70
  CacheEntry2.isAlive = (entry) => !(0, CacheEntry2.isDead)(entry);
67
71
  CacheEntry2.isStale = (entry) => {
68
- if (Objects.isNil(entry.staleTimestamp)) {
72
+ if (isNil(entry.staleTimestamp)) {
69
73
  return false;
70
74
  }
71
- return Dates.isBefore(entry.staleTimestamp, Dates.now());
75
+ return isBefore(entry.staleTimestamp, now());
72
76
  };
73
77
  CacheEntry2.of = (value) => {
74
78
  const entry = {
@@ -80,16 +84,16 @@ var CacheEntry;
80
84
  };
81
85
  CacheEntry2.applyProps = (originalEntry, props) => {
82
86
  let liveTimestamp = originalEntry.liveTimestamp;
83
- if (!Objects.isNil(props.timeToLive)) {
84
- const limit = Dates.addMilliseconds(Dates.now(), Durations.toMilliseconds(props.timeToLive));
85
- 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)) {
86
90
  liveTimestamp = limit;
87
91
  }
88
92
  }
89
93
  let staleTimestamp = originalEntry.staleTimestamp;
90
- if (!Objects.isNil(props.timeToStale)) {
91
- const limit = Dates.addMilliseconds(Dates.now(), Durations.toMilliseconds(props.timeToStale));
92
- 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)) {
93
97
  staleTimestamp = limit;
94
98
  }
95
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 } 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 Zod, { 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 { RecordEntry } 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<RecordEntry<T>>>\n ): Promise<Array<RecordEntry<T>>>\n\n writeValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): Promise<void>\n\n writeValues(namespace: ResourceNamespace, entries: Array<RecordEntry<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<RecordEntry<T>>): Array<RecordEntry<T>>\n\n setValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): void\n\n setValues(namespace: ResourceNamespace, entries: Array<RecordEntry<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,CAgBxF,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 // JOHN this is wrong\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;AAE5F,QAAM,WAAW,QAAQ,aAAa,CAAC,OAAO,GAAG,cAAc,SAAS,EAAE;AAE1E,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,CAsBrD,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,22 +30,20 @@ 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 {
40
43
  return 0;
41
44
  }
42
45
  }
43
- {
44
- return 0;
45
- }
46
+ throw new Error(`Illegal natural comparison on values: [${first}, ${second}]`);
46
47
  }
47
48
  ]);
48
49
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/comparator.ts"],"sourcesContent":["import { Dates, Maths, Objects, Strings } from '@bessemer/cornerstone'\nimport { BasicType } from '@bessemer/cornerstone/types'\n\nexport type Comparator<T> = (first: T, second: T) => number\n\nexport const aggregate = <T>(comparators: Array<Comparator<T>>): Comparator<T> => {\n return (first, second) => {\n if (first === second) {\n return 0\n }\n\n for (const comparator of comparators) {\n const result = comparator(first, second)\n if (result !== 0) {\n return result\n }\n }\n\n return 0\n }\n}\n\nexport const compareBy = <T, N>(mapper: (element: T) => N, comparator: Comparator<N>): Comparator<T> => {\n return (first, second) => comparator(mapper(first), mapper(second))\n}\n\nexport const reverse = <T>(comparator: Comparator<T>): Comparator<T> => {\n return (first, second) => -comparator(first, second)\n}\n\nexport const trueFirst = (): Comparator<boolean> => {\n return (first, second) => natural()(first ? 1 : 0, second ? 1 : 0)\n}\n\nexport const natural = (): Comparator<BasicType | null> => {\n // Comparing by nulls first allows us to assume the elements are non-null for future comparisons\n return aggregate([\n nullsLast(),\n (first, second) => {\n if (Strings.isString(first) && Strings.isString(second)) {\n return first.localeCompare(second)\n } else if (Maths.isNumber(first) && Maths.isNumber(second)) {\n return first! - second!\n } else if (Dates.isDate(first) && Dates.isDate(second)) {\n return first.getTime() - second.getTime()\n } else if (Objects.isBoolean(first) && Objects.isBoolean(second)) {\n if(first !== second) {\n return second ? 1 : 0\n }\n else {\n return 0\n }\n } {\n return 0\n }\n },\n ])\n}\n\nexport function matchedFirst<T>(target: T): Comparator<T | null> {\n return aggregate([\n nullsLast(),\n (first, second) => {\n if (first === target && second !== target) {\n return -1\n } else if (first !== target && second === target) {\n return 1\n } else {\n return 0\n }\n },\n ])\n}\n\nexport const nullsLast = <T>(): Comparator<T> => {\n return (first, second) => {\n if (first === null) {\n return 1\n }\n if (second === null) {\n return -1\n }\n\n return 0\n }\n}\n"],"mappings":";AAAA,SAAS,OAAO,OAAO,SAAS,eAAe;AAKxC,IAAM,YAAY,CAAI,gBAAqD;AAChF,SAAO,CAAC,OAAO,WAAW;AACxB,QAAI,UAAU,QAAQ;AACpB,aAAO;AAAA,IACT;AAEA,eAAW,cAAc,aAAa;AACpC,YAAM,SAAS,WAAW,OAAO,MAAM;AACvC,UAAI,WAAW,GAAG;AAChB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAEO,IAAM,YAAY,CAAO,QAA2B,eAA6C;AACtG,SAAO,CAAC,OAAO,WAAW,WAAW,OAAO,KAAK,GAAG,OAAO,MAAM,CAAC;AACpE;AAEO,IAAM,UAAU,CAAI,eAA6C;AACtE,SAAO,CAAC,OAAO,WAAW,CAAC,WAAW,OAAO,MAAM;AACrD;AAEO,IAAM,YAAY,MAA2B;AAClD,SAAO,CAAC,OAAO,WAAW,QAAQ,EAAE,QAAQ,IAAI,GAAG,SAAS,IAAI,CAAC;AACnE;AAEO,IAAM,UAAU,MAAoC;AAEzD,SAAO,UAAU;AAAA,IACf,UAAU;AAAA,IACV,CAAC,OAAO,WAAW;AACjB,UAAI,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,MAAM,GAAG;AACvD,eAAO,MAAM,cAAc,MAAM;AAAA,MACnC,WAAW,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,MAAM,GAAG;AAC1D,eAAO,QAAS;AAAA,MAClB,WAAW,MAAM,OAAO,KAAK,KAAK,MAAM,OAAO,MAAM,GAAG;AACtD,eAAO,MAAM,QAAQ,IAAI,OAAO,QAAQ;AAAA,MAC1C,WAAW,QAAQ,UAAU,KAAK,KAAK,QAAQ,UAAU,MAAM,GAAG;AAChE,YAAG,UAAU,QAAQ;AACnB,iBAAO,SAAS,IAAI;AAAA,QACtB,OACK;AACH,iBAAO;AAAA,QACT;AAAA,MACF;AAAE;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,aAAgB,QAAiC;AAC/D,SAAO,UAAU;AAAA,IACf,UAAU;AAAA,IACV,CAAC,OAAO,WAAW;AACjB,UAAI,UAAU,UAAU,WAAW,QAAQ;AACzC,eAAO;AAAA,MACT,WAAW,UAAU,UAAU,WAAW,QAAQ;AAChD,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,IAAM,YAAY,MAAwB;AAC/C,SAAO,CAAC,OAAO,WAAW;AACxB,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AACA,QAAI,WAAW,MAAM;AACnB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/comparator.ts"],"sourcesContent":["import { BasicType } from '@bessemer/cornerstone/types'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNumber } from '@bessemer/cornerstone/math'\nimport { isDate } from '@bessemer/cornerstone/date'\nimport { isBoolean } from '@bessemer/cornerstone/object'\n\nexport type Comparator<T> = (first: T, second: T) => number\n\nexport const aggregate = <T>(comparators: Array<Comparator<T>>): Comparator<T> => {\n return (first, second) => {\n if (first === second) {\n return 0\n }\n\n for (const comparator of comparators) {\n const result = comparator(first, second)\n if (result !== 0) {\n return result\n }\n }\n\n return 0\n }\n}\n\nexport const compareBy = <T, N>(mapper: (element: T) => N, comparator: Comparator<N>): Comparator<T> => {\n return (first, second) => comparator(mapper(first), mapper(second))\n}\n\nexport const reverse = <T>(comparator: Comparator<T>): Comparator<T> => {\n return (first, second) => -comparator(first, second)\n}\n\nexport const trueFirst = (): Comparator<boolean> => {\n return (first, second) => natural()(first ? 1 : 0, second ? 1 : 0)\n}\n\nexport const natural = (): Comparator<BasicType | null> => {\n // Comparing by nulls first allows us to assume the elements are non-null for future comparisons\n return aggregate([\n nullsLast(),\n (first, second) => {\n if (isString(first) && isString(second)) {\n return first.localeCompare(second)\n } else if (isNumber(first) && isNumber(second)) {\n return first! - second!\n } else if (isDate(first) && isDate(second)) {\n return first.getTime() - second.getTime()\n } else if (isBoolean(first) && isBoolean(second)) {\n if (first !== second) {\n return second ? 1 : 0\n } else {\n return 0\n }\n }\n\n throw new Error(`Illegal natural comparison on values: [${first}, ${second}]`)\n },\n ])\n}\n\nexport function matchedFirst<T>(target: T): Comparator<T | null> {\n return aggregate([\n nullsLast(),\n (first, second) => {\n if (first === target && second !== target) {\n return -1\n } else if (first !== target && second === target) {\n return 1\n } else {\n return 0\n }\n },\n ])\n}\n\nexport const nullsLast = <T>(): Comparator<T> => {\n return (first, second) => {\n if (first === null) {\n return 1\n }\n if (second === null) {\n return -1\n }\n\n return 0\n }\n}\n"],"mappings":";AACA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAInB,IAAM,YAAY,CAAI,gBAAqD;AAChF,SAAO,CAAC,OAAO,WAAW;AACxB,QAAI,UAAU,QAAQ;AACpB,aAAO;AAAA,IACT;AAEA,eAAW,cAAc,aAAa;AACpC,YAAM,SAAS,WAAW,OAAO,MAAM;AACvC,UAAI,WAAW,GAAG;AAChB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAEO,IAAM,YAAY,CAAO,QAA2B,eAA6C;AACtG,SAAO,CAAC,OAAO,WAAW,WAAW,OAAO,KAAK,GAAG,OAAO,MAAM,CAAC;AACpE;AAEO,IAAM,UAAU,CAAI,eAA6C;AACtE,SAAO,CAAC,OAAO,WAAW,CAAC,WAAW,OAAO,MAAM;AACrD;AAEO,IAAM,YAAY,MAA2B;AAClD,SAAO,CAAC,OAAO,WAAW,QAAQ,EAAE,QAAQ,IAAI,GAAG,SAAS,IAAI,CAAC;AACnE;AAEO,IAAM,UAAU,MAAoC;AAEzD,SAAO,UAAU;AAAA,IACf,UAAU;AAAA,IACV,CAAC,OAAO,WAAW;AACjB,UAAI,SAAS,KAAK,KAAK,SAAS,MAAM,GAAG;AACvC,eAAO,MAAM,cAAc,MAAM;AAAA,MACnC,WAAW,SAAS,KAAK,KAAK,SAAS,MAAM,GAAG;AAC9C,eAAO,QAAS;AAAA,MAClB,WAAW,OAAO,KAAK,KAAK,OAAO,MAAM,GAAG;AAC1C,eAAO,MAAM,QAAQ,IAAI,OAAO,QAAQ;AAAA,MAC1C,WAAW,UAAU,KAAK,KAAK,UAAU,MAAM,GAAG;AAChD,YAAI,UAAU,QAAQ;AACpB,iBAAO,SAAS,IAAI;AAAA,QACtB,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,YAAM,IAAI,MAAM,0CAA0C,KAAK,KAAK,MAAM,GAAG;AAAA,IAC/E;AAAA,EACF,CAAC;AACH;AAEO,SAAS,aAAgB,QAAiC;AAC/D,SAAO,UAAU;AAAA,IACf,UAAU;AAAA,IACV,CAAC,OAAO,WAAW;AACjB,UAAI,UAAU,UAAU,WAAW,QAAQ;AACzC,eAAO;AAAA,MACT,WAAW,UAAU,UAAU,WAAW,QAAQ;AAChD,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,IAAM,YAAY,MAAwB;AAC/C,SAAO,CAAC,OAAO,WAAW;AACxB,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AACA,QAAI,WAAW,MAAM;AACnB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
package/dist/content.d.ts CHANGED
@@ -18,13 +18,13 @@ export declare const ContentDataSchema: Zod.ZodObject<{
18
18
  data: Zod.ZodUnknown;
19
19
  sector: Zod.ZodNullable<Zod.ZodType<ContentSector, Zod.ZodTypeDef, ContentSector>>;
20
20
  }, "strip", Zod.ZodTypeAny, {
21
- key: string & import("@bessemer/cornerstone/types").NominalTyping<"ContentKey">;
22
21
  type: string & import("@bessemer/cornerstone/types").NominalTyping<["ContentType", unknown]>;
22
+ key: string & import("@bessemer/cornerstone/types").NominalTyping<"ContentKey">;
23
23
  sector: ContentSector | null;
24
24
  data?: unknown;
25
25
  }, {
26
- key: string & import("@bessemer/cornerstone/types").NominalTyping<"ContentKey">;
27
26
  type: string & import("@bessemer/cornerstone/types").NominalTyping<["ContentType", unknown]>;
27
+ key: string & import("@bessemer/cornerstone/types").NominalTyping<"ContentKey">;
28
28
  sector: ContentSector | null;
29
29
  data?: unknown;
30
30
  }>;
package/dist/date.d.ts CHANGED
@@ -2,7 +2,7 @@ import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as
2
2
  import { Duration } from '@bessemer/cornerstone/duration';
3
3
  import Zod from 'zod';
4
4
  export declare const Schema: Zod.ZodEffects<Zod.ZodUnion<[Zod.ZodString, Zod.ZodDate]>, Date, string | Date>;
5
- export declare const isDate: (value?: any) => value is Date;
5
+ export declare const isDate: (value: unknown) => value is Date;
6
6
  export declare const now: () => Date;
7
7
  export declare const of: (dateString: string) => Date;
8
8
  export declare const addMilliseconds: typeof _addMilliseconds;
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,eAAe,IAAI,gBAAgB,EAAE,OAAO,IAAI,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAY,MAAM,UAAU,CAAA;AAE3I,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzD,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,eAAO,MAAM,MAAM,iFAYjB,CAAA;AAEF,eAAO,MAAM,MAAM,gCAAU,CAAA;AAE7B,eAAO,MAAM,GAAG,QAAO,IAEtB,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,YAAY,MAAM,KAAG,IAEvC,CAAA;AAED,eAAO,MAAM,eAAe,yBAAmB,CAAA;AAC/C,eAAO,MAAM,QAAQ,kBAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,kBAAY,CAAA;AACjC,eAAO,MAAM,OAAO,iBAAW,CAAA;AAE/B,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,EAAE,UAAU,QAAQ,KAAG,IAAiE,CAAA"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,eAAe,IAAI,gBAAgB,EAAE,OAAO,IAAI,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAY,MAAM,UAAU,CAAA;AAC3I,OAAO,EAAE,QAAQ,EAAkB,MAAM,gCAAgC,CAAA;AACzE,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,eAAO,MAAM,MAAM,iFAYjB,CAAA;AAEF,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,IAEhD,CAAA;AAED,eAAO,MAAM,GAAG,QAAO,IAEtB,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,YAAY,MAAM,KAAG,IAEvC,CAAA;AAED,eAAO,MAAM,eAAe,yBAAmB,CAAA;AAC/C,eAAO,MAAM,QAAQ,kBAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,kBAAY,CAAA;AACjC,eAAO,MAAM,OAAO,iBAAW,CAAA;AAC/B,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,EAAE,UAAU,QAAQ,KAAG,IAAuD,CAAA"}
package/dist/date.js CHANGED
@@ -1,7 +1,6 @@
1
1
  // src/date.ts
2
2
  import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as _isAfter, isBefore as _isBefore, parseISO } from "date-fns";
3
- import { isDate as _isDate } from "lodash-es";
4
- import { Durations } from "@bessemer/cornerstone";
3
+ import { toMilliseconds } from "@bessemer/cornerstone/duration";
5
4
  import Zod from "zod";
6
5
  var Schema = Zod.union([
7
6
  Zod.string().trim().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$/, `Invalid Date. Use YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS.sssZ`),
@@ -13,7 +12,9 @@ var Schema = Zod.union([
13
12
  }
14
13
  return date;
15
14
  });
16
- var isDate = _isDate;
15
+ var isDate = (value) => {
16
+ return value instanceof Date && !isNaN(value.getTime());
17
+ };
17
18
  var now = () => {
18
19
  return /* @__PURE__ */ new Date();
19
20
  };
@@ -24,7 +25,7 @@ var addMilliseconds = _addMilliseconds;
24
25
  var addHours = _addHours;
25
26
  var isBefore = _isBefore;
26
27
  var isAfter = _isAfter;
27
- var addDuration = (date, duration) => addMilliseconds(date, Durations.toMilliseconds(duration));
28
+ var addDuration = (date, duration) => addMilliseconds(date, toMilliseconds(duration));
28
29
  export {
29
30
  Schema,
30
31
  addDuration,
package/dist/date.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/date.ts"],"sourcesContent":["import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as _isAfter, isBefore as _isBefore, parseISO } from 'date-fns'\nimport { isDate as _isDate } from 'lodash-es'\nimport { Duration } from '@bessemer/cornerstone/duration'\nimport { Durations } from '@bessemer/cornerstone'\nimport Zod from 'zod'\n\nexport const Schema = Zod.union([\n Zod.string()\n .trim()\n .regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$/, `Invalid Date. Use YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS.sssZ`),\n Zod.date(),\n]).transform((isoString) => {\n const date = new Date(isoString)\n // Additional check to ensure the parsed date is valid\n if (isNaN(date.getTime())) {\n throw new Error('Invalid date')\n }\n return date\n})\n\nexport const isDate = _isDate\n\nexport const now = (): Date => {\n return new Date()\n}\n\nexport const of = (dateString: string): Date => {\n return parseISO(dateString)\n}\n\nexport const addMilliseconds = _addMilliseconds\nexport const addHours = _addHours\nexport const isBefore = _isBefore\nexport const isAfter = _isAfter\n\nexport const addDuration = (date: Date, duration: Duration): Date => addMilliseconds(date, Durations.toMilliseconds(duration))\n"],"mappings":";AAAA,SAAS,YAAY,WAAW,mBAAmB,kBAAkB,WAAW,UAAU,YAAY,WAAW,gBAAgB;AACjI,SAAS,UAAU,eAAe;AAElC,SAAS,iBAAiB;AAC1B,OAAO,SAAS;AAET,IAAM,SAAS,IAAI,MAAM;AAAA,EAC9B,IAAI,OAAO,EACR,KAAK,EACL,MAAM,wEAAwE,0DAA0D;AAAA,EAC3I,IAAI,KAAK;AACX,CAAC,EAAE,UAAU,CAAC,cAAc;AAC1B,QAAM,OAAO,IAAI,KAAK,SAAS;AAE/B,MAAI,MAAM,KAAK,QAAQ,CAAC,GAAG;AACzB,UAAM,IAAI,MAAM,cAAc;AAAA,EAChC;AACA,SAAO;AACT,CAAC;AAEM,IAAM,SAAS;AAEf,IAAM,MAAM,MAAY;AAC7B,SAAO,oBAAI,KAAK;AAClB;AAEO,IAAM,KAAK,CAAC,eAA6B;AAC9C,SAAO,SAAS,UAAU;AAC5B;AAEO,IAAM,kBAAkB;AACxB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,UAAU;AAEhB,IAAM,cAAc,CAAC,MAAY,aAA6B,gBAAgB,MAAM,UAAU,eAAe,QAAQ,CAAC;","names":[]}
1
+ {"version":3,"sources":["../src/date.ts"],"sourcesContent":["import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as _isAfter, isBefore as _isBefore, parseISO } from 'date-fns'\nimport { Duration, toMilliseconds } from '@bessemer/cornerstone/duration'\nimport Zod from 'zod'\n\nexport const Schema = Zod.union([\n Zod.string()\n .trim()\n .regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$/, `Invalid Date. Use YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS.sssZ`),\n Zod.date(),\n]).transform((isoString) => {\n const date = new Date(isoString)\n // Additional check to ensure the parsed date is valid\n if (isNaN(date.getTime())) {\n throw new Error('Invalid date')\n }\n return date\n})\n\nexport const isDate = (value: unknown): value is Date => {\n return value instanceof Date && !isNaN(value.getTime())\n}\n\nexport const now = (): Date => {\n return new Date()\n}\n\nexport const of = (dateString: string): Date => {\n return parseISO(dateString)\n}\n\nexport const addMilliseconds = _addMilliseconds\nexport const addHours = _addHours\nexport const isBefore = _isBefore\nexport const isAfter = _isAfter\nexport const addDuration = (date: Date, duration: Duration): Date => addMilliseconds(date, toMilliseconds(duration))\n"],"mappings":";AAAA,SAAS,YAAY,WAAW,mBAAmB,kBAAkB,WAAW,UAAU,YAAY,WAAW,gBAAgB;AACjI,SAAmB,sBAAsB;AACzC,OAAO,SAAS;AAET,IAAM,SAAS,IAAI,MAAM;AAAA,EAC9B,IAAI,OAAO,EACR,KAAK,EACL,MAAM,wEAAwE,0DAA0D;AAAA,EAC3I,IAAI,KAAK;AACX,CAAC,EAAE,UAAU,CAAC,cAAc;AAC1B,QAAM,OAAO,IAAI,KAAK,SAAS;AAE/B,MAAI,MAAM,KAAK,QAAQ,CAAC,GAAG;AACzB,UAAM,IAAI,MAAM,cAAc;AAAA,EAChC;AACA,SAAO;AACT,CAAC;AAEM,IAAM,SAAS,CAAC,UAAkC;AACvD,SAAO,iBAAiB,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC;AACxD;AAEO,IAAM,MAAM,MAAY;AAC7B,SAAO,oBAAI,KAAK;AAClB;AAEO,IAAM,KAAK,CAAC,eAA6B;AAC9C,SAAO,SAAS,UAAU;AAC5B;AAEO,IAAM,kBAAkB;AACxB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,UAAU;AAChB,IAAM,cAAc,CAAC,MAAY,aAA6B,gBAAgB,MAAM,eAAe,QAAQ,CAAC;","names":[]}
package/dist/either.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Eithers } from '@bessemer/cornerstone';
2
1
  export declare enum EitherType {
3
2
  Left = "Left",
4
3
  Right = "Right"
@@ -1 +1 @@
1
- {"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IACpB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAA;IACrB,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AACD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAA;IACtB,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AAE7C,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,IAAI,CAAC,CAAC,CAAuC,CAAA;AAChF,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,KAAK,CAAC,CAAC,CAAwC,CAAA;AAEnF,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAoC,CAAA;AACxG,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,IAAI,KAAK,CAAC,CAAC,CAAqC,CAAA;AAE3G,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAI3E,CAAA"}
1
+ {"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IACpB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAA;IACrB,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AACD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAA;IACtB,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AAE7C,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,IAAI,CAAC,CAAC,CAAuC,CAAA;AAChF,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,KAAK,CAAC,CAAC,CAAwC,CAAA;AAEnF,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAoC,CAAA;AACxG,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,IAAI,KAAK,CAAC,CAAC,CAAqC,CAAA;AAE3G,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAI3E,CAAA"}
package/dist/either.js CHANGED
@@ -1,5 +1,4 @@
1
1
  // src/either.ts
2
- import { Eithers } from "@bessemer/cornerstone";
3
2
  var EitherType = /* @__PURE__ */ ((EitherType2) => {
4
3
  EitherType2["Left"] = "Left";
5
4
  EitherType2["Right"] = "Right";
@@ -10,8 +9,8 @@ var right = (value) => ({ type: "Right" /* Right */, value });
10
9
  var isLeft = (either) => either.type === "Left" /* Left */;
11
10
  var isRight = (either) => either.type === "Right" /* Right */;
12
11
  var split = (array) => {
13
- const lefts = array.filter(Eithers.isLeft).map((it) => it.value);
14
- const rights = array.filter(Eithers.isRight).map((it) => it.value);
12
+ const lefts = array.filter(isLeft).map((it) => it.value);
13
+ const rights = array.filter(isRight).map((it) => it.value);
15
14
  return [lefts, rights];
16
15
  };
17
16
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/either.ts"],"sourcesContent":["import { Eithers } from '@bessemer/cornerstone'\n\nexport enum EitherType {\n Left = 'Left',\n Right = 'Right',\n}\n\nexport type Left<T> = {\n type: EitherType.Left\n value: T\n}\nexport type Right<N> = {\n type: EitherType.Right\n value: N\n}\n\nexport type Either<T, N> = Left<T> | Right<N>\n\nexport const left = <T>(value: T): Left<T> => ({ type: EitherType.Left, value })\nexport const right = <N>(value: N): Right<N> => ({ type: EitherType.Right, value })\n\nexport const isLeft = <T, N>(either: Either<T, N>): either is Left<T> => either.type === EitherType.Left\nexport const isRight = <T, N>(either: Either<T, N>): either is Right<N> => either.type === EitherType.Right\n\nexport const split = <L, R>(array: Array<Either<L, R>>): [Array<L>, Array<R>] => {\n const lefts = array.filter(Eithers.isLeft).map((it) => it.value)\n const rights = array.filter(Eithers.isRight).map((it) => it.value)\n return [lefts, rights]\n}\n"],"mappings":";AAAA,SAAS,eAAe;AAEjB,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,WAAQ;AAFE,SAAAA;AAAA,GAAA;AAgBL,IAAM,OAAO,CAAI,WAAuB,EAAE,MAAM,mBAAiB,MAAM;AACvE,IAAM,QAAQ,CAAI,WAAwB,EAAE,MAAM,qBAAkB,MAAM;AAE1E,IAAM,SAAS,CAAO,WAA4C,OAAO,SAAS;AAClF,IAAM,UAAU,CAAO,WAA6C,OAAO,SAAS;AAEpF,IAAM,QAAQ,CAAO,UAAqD;AAC/E,QAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AAC/D,QAAM,SAAS,MAAM,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACjE,SAAO,CAAC,OAAO,MAAM;AACvB;","names":["EitherType"]}
1
+ {"version":3,"sources":["../src/either.ts"],"sourcesContent":["export enum EitherType {\n Left = 'Left',\n Right = 'Right',\n}\n\nexport type Left<T> = {\n type: EitherType.Left\n value: T\n}\nexport type Right<N> = {\n type: EitherType.Right\n value: N\n}\n\nexport type Either<T, N> = Left<T> | Right<N>\n\nexport const left = <T>(value: T): Left<T> => ({ type: EitherType.Left, value })\nexport const right = <N>(value: N): Right<N> => ({ type: EitherType.Right, value })\n\nexport const isLeft = <T, N>(either: Either<T, N>): either is Left<T> => either.type === EitherType.Left\nexport const isRight = <T, N>(either: Either<T, N>): either is Right<N> => either.type === EitherType.Right\n\nexport const split = <L, R>(array: Array<Either<L, R>>): [Array<L>, Array<R>] => {\n const lefts = array.filter(isLeft).map((it) => it.value)\n const rights = array.filter(isRight).map((it) => it.value)\n return [lefts, rights]\n}\n"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,WAAQ;AAFE,SAAAA;AAAA,GAAA;AAgBL,IAAM,OAAO,CAAI,WAAuB,EAAE,MAAM,mBAAiB,MAAM;AACvE,IAAM,QAAQ,CAAI,WAAwB,EAAE,MAAM,qBAAkB,MAAM;AAE1E,IAAM,SAAS,CAAO,WAA4C,OAAO,SAAS;AAClF,IAAM,UAAU,CAAO,WAA6C,OAAO,SAAS;AAEpF,IAAM,QAAQ,CAAO,UAAqD;AAC/E,QAAM,QAAQ,MAAM,OAAO,MAAM,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACvD,QAAM,SAAS,MAAM,OAAO,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACzD,SAAO,CAAC,OAAO,MAAM;AACvB;","names":["EitherType"]}
package/dist/entry.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import { ZodType } from 'zod';
2
- export type Entry<Value, Key = string> = [Key, Value];
3
- export declare const schema: <Value, Key = string>(value: ZodType<Value>, key?: ZodType<Key>) => ZodType<Entry<Value, Key>>;
4
- export declare const of: <Value, Key = string>(key: Key, value: Value) => Entry<Value, Key>;
5
- export declare const keys: <Key>(entries: Array<Entry<unknown, Key>>) => Array<Key>;
6
- export declare const values: <T>(entries: Array<Entry<T>>) => Array<T>;
7
- export declare const mapKeys: <Value, Key, NewKey>(entries: Array<Entry<Value, Key>>, mapper: (key: Key) => NewKey) => Array<Entry<Value, NewKey>>;
8
- export declare const mapValues: <Value, Key, NewValue>(entries: Array<Entry<Value, Key>>, mapper: (key: Value) => NewValue) => Array<Entry<NewValue, Key>>;
2
+ export type Entry<Key, Value> = [Key, Value];
3
+ export type RecordEntry<Value> = Entry<string, Value>;
4
+ export declare const schema: <Key, Value>(key: ZodType<Key>, value: ZodType<Value>) => ZodType<Entry<Key, Value>>;
5
+ export declare const recordSchema: <Value>(value: ZodType<Value>) => ZodType<RecordEntry<Value>>;
6
+ export declare const of: <Key, Value>(key: Key, value: Value) => Entry<Key, Value>;
7
+ export declare const keys: <Key>(entries: Array<Entry<Key, unknown>>) => Array<Key>;
8
+ export declare const values: <T>(entries: Array<Entry<unknown, T>>) => Array<T>;
9
+ export declare const mapKeys: <Key, Value, NewKey>(entries: Array<Entry<Key, Value>>, mapper: (key: Key) => NewKey) => Array<Entry<NewKey, Value>>;
10
+ export declare const mapValues: <Key, Value, NewValue>(entries: Array<Entry<Key, Value>>, mapper: (key: Value) => NewValue) => Array<Entry<Key, NewValue>>;
9
11
  //# sourceMappingURL=entry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAErD,eAAO,MAAM,MAAM,GAAI,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAEhH,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,GAAG,EAAE,OAAO,KAAK,KAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAEhF,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAG,KAAK,CAAC,GAAG,CAExE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAE3D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAEvI,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,KAAK,QAAQ,KAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAE/I,CAAA"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC5C,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAErD,eAAO,MAAM,MAAM,GAAI,GAAG,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,KAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAEtG,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,KAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAErF,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,OAAO,KAAK,KAAG,KAAK,CAAC,GAAG,EAAE,KAAK,CAEvE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAG,KAAK,CAAC,GAAG,CAExE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAEpE,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAEvI,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,KAAK,QAAQ,KAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAE/I,CAAA"}
package/dist/entry.js CHANGED
@@ -1,8 +1,11 @@
1
1
  // src/entry.ts
2
2
  import Zod from "zod";
3
- var schema = (value, key) => {
3
+ var schema = (key, value) => {
4
4
  return Zod.tuple([key ?? Zod.string(), value]);
5
5
  };
6
+ var recordSchema = (value) => {
7
+ return schema(Zod.string(), value);
8
+ };
6
9
  var of = (key, value) => {
7
10
  return [key, value];
8
11
  };
@@ -23,6 +26,7 @@ export {
23
26
  mapKeys,
24
27
  mapValues,
25
28
  of,
29
+ recordSchema,
26
30
  schema,
27
31
  values
28
32
  };
package/dist/entry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/entry.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\n\nexport type Entry<Value, Key = string> = [Key, Value]\n\nexport const schema = <Value, Key = string>(value: ZodType<Value>, key?: ZodType<Key>): ZodType<Entry<Value, Key>> => {\n return Zod.tuple([key ?? Zod.string(), value]) as ZodType<Entry<Value, Key>>\n}\n\nexport const of = <Value, Key = string>(key: Key, value: Value): Entry<Value, Key> => {\n return [key, value]\n}\n\nexport const keys = <Key>(entries: Array<Entry<unknown, Key>>): Array<Key> => {\n return entries.map((it) => it[0])\n}\n\nexport const values = <T>(entries: Array<Entry<T>>): Array<T> => {\n return entries.map((it) => it[1])\n}\n\nexport const mapKeys = <Value, Key, NewKey>(entries: Array<Entry<Value, Key>>, mapper: (key: Key) => NewKey): Array<Entry<Value, NewKey>> => {\n return entries.map(([key, value]) => of(mapper(key), value))\n}\n\nexport const mapValues = <Value, Key, NewValue>(entries: Array<Entry<Value, Key>>, mapper: (key: Value) => NewValue): Array<Entry<NewValue, Key>> => {\n return entries.map(([key, value]) => of(key, mapper(value)))\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAItB,IAAM,SAAS,CAAsB,OAAuB,QAAmD;AACpH,SAAO,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG,KAAK,CAAC;AAC/C;AAEO,IAAM,KAAK,CAAsB,KAAU,UAAoC;AACpF,SAAO,CAAC,KAAK,KAAK;AACpB;AAEO,IAAM,OAAO,CAAM,YAAoD;AAC5E,SAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC;AAEO,IAAM,SAAS,CAAI,YAAuC;AAC/D,SAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC;AAEO,IAAM,UAAU,CAAqB,SAAmC,WAA8D;AAC3I,SAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,GAAG,KAAK,CAAC;AAC7D;AAEO,IAAM,YAAY,CAAuB,SAAmC,WAAkE;AACnJ,SAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,KAAK,OAAO,KAAK,CAAC,CAAC;AAC7D;","names":[]}
1
+ {"version":3,"sources":["../src/entry.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\n\nexport type Entry<Key, Value> = [Key, Value]\nexport type RecordEntry<Value> = Entry<string, Value>\n\nexport const schema = <Key, Value>(key: ZodType<Key>, value: ZodType<Value>): ZodType<Entry<Key, Value>> => {\n return Zod.tuple([key ?? Zod.string(), value]) as ZodType<Entry<Key, Value>>\n}\n\nexport const recordSchema = <Value>(value: ZodType<Value>): ZodType<RecordEntry<Value>> => {\n return schema(Zod.string(), value)\n}\n\nexport const of = <Key, Value>(key: Key, value: Value): Entry<Key, Value> => {\n return [key, value]\n}\n\nexport const keys = <Key>(entries: Array<Entry<Key, unknown>>): Array<Key> => {\n return entries.map((it) => it[0])\n}\n\nexport const values = <T>(entries: Array<Entry<unknown, T>>): Array<T> => {\n return entries.map((it) => it[1])\n}\n\nexport const mapKeys = <Key, Value, NewKey>(entries: Array<Entry<Key, Value>>, mapper: (key: Key) => NewKey): Array<Entry<NewKey, Value>> => {\n return entries.map(([key, value]) => of(mapper(key), value))\n}\n\nexport const mapValues = <Key, Value, NewValue>(entries: Array<Entry<Key, Value>>, mapper: (key: Value) => NewValue): Array<Entry<Key, NewValue>> => {\n return entries.map(([key, value]) => of(key, mapper(value)))\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAKtB,IAAM,SAAS,CAAa,KAAmB,UAAsD;AAC1G,SAAO,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG,KAAK,CAAC;AAC/C;AAEO,IAAM,eAAe,CAAQ,UAAuD;AACzF,SAAO,OAAO,IAAI,OAAO,GAAG,KAAK;AACnC;AAEO,IAAM,KAAK,CAAa,KAAU,UAAoC;AAC3E,SAAO,CAAC,KAAK,KAAK;AACpB;AAEO,IAAM,OAAO,CAAM,YAAoD;AAC5E,SAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC;AAEO,IAAM,SAAS,CAAI,YAAgD;AACxE,SAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC;AAEO,IAAM,UAAU,CAAqB,SAAmC,WAA8D;AAC3I,SAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,GAAG,KAAK,CAAC;AAC7D;AAEO,IAAM,YAAY,CAAuB,SAAmC,WAAkE;AACnJ,SAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,KAAK,OAAO,KAAK,CAAC,CAAC;AAC7D;","names":[]}
@@ -1,5 +1,6 @@
1
1
  import { Comparator } from '@bessemer/cornerstone/comparator';
2
2
  export type Equalitor<T> = (first: T, second: T) => boolean;
3
3
  export declare const fromComparator: <T>(comparator: Comparator<T>) => Equalitor<T>;
4
- export declare const reference: <T>() => Equalitor<T>;
4
+ export declare const natural: <T>() => Equalitor<T>;
5
+ export declare const equalBy: <T, N>(mapper: (element: T) => N, equalitor: Equalitor<N>) => Equalitor<T>;
5
6
  //# sourceMappingURL=equalitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"equalitor.d.ts","sourceRoot":"","sources":["../src/equalitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAA;AAE3D,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAG,SAAS,CAAC,CAAC,CAExE,CAAA;AAED,eAAO,MAAM,SAAS,GACnB,CAAC,OAAK,SAAS,CAAC,CAAC,CAEA,CAAA"}
1
+ {"version":3,"file":"equalitor.d.ts","sourceRoot":"","sources":["../src/equalitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAA;AAE3D,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAG,SAAS,CAAC,CAAC,CAExE,CAAA;AAED,eAAO,MAAM,OAAO,GACjB,CAAC,OAAK,SAAS,CAAC,CAAC,CAEA,CAAA;AAEpB,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,KAAG,SAAS,CAAC,CAAC,CAE7F,CAAA"}
package/dist/equalitor.js CHANGED
@@ -2,9 +2,13 @@
2
2
  var fromComparator = (comparator) => {
3
3
  return (first, second) => comparator(first, second) === 0;
4
4
  };
5
- var reference = () => (first, second) => first === second;
5
+ var natural = () => (first, second) => first === second;
6
+ var equalBy = (mapper, equalitor) => {
7
+ return (first, second) => equalitor(mapper(first), mapper(second));
8
+ };
6
9
  export {
10
+ equalBy,
7
11
  fromComparator,
8
- reference
12
+ natural
9
13
  };
10
14
  //# sourceMappingURL=equalitor.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/equalitor.ts"],"sourcesContent":["import { Comparator } from '@bessemer/cornerstone/comparator'\n\nexport type Equalitor<T> = (first: T, second: T) => boolean\n\nexport const fromComparator = <T>(comparator: Comparator<T>): Equalitor<T> => {\n return (first, second) => comparator(first, second) === 0\n}\n\nexport const reference =\n <T>(): Equalitor<T> =>\n (first, second) =>\n first === second\n"],"mappings":";AAIO,IAAM,iBAAiB,CAAI,eAA4C;AAC5E,SAAO,CAAC,OAAO,WAAW,WAAW,OAAO,MAAM,MAAM;AAC1D;AAEO,IAAM,YACX,MACA,CAAC,OAAO,WACN,UAAU;","names":[]}
1
+ {"version":3,"sources":["../src/equalitor.ts"],"sourcesContent":["import { Comparator } from '@bessemer/cornerstone/comparator'\n\nexport type Equalitor<T> = (first: T, second: T) => boolean\n\nexport const fromComparator = <T>(comparator: Comparator<T>): Equalitor<T> => {\n return (first, second) => comparator(first, second) === 0\n}\n\nexport const natural =\n <T>(): Equalitor<T> =>\n (first, second) =>\n first === second\n\nexport const equalBy = <T, N>(mapper: (element: T) => N, equalitor: Equalitor<N>): Equalitor<T> => {\n return (first, second) => equalitor(mapper(first), mapper(second))\n}\n"],"mappings":";AAIO,IAAM,iBAAiB,CAAI,eAA4C;AAC5E,SAAO,CAAC,OAAO,WAAW,WAAW,OAAO,MAAM,MAAM;AAC1D;AAEO,IAAM,UACX,MACA,CAAC,OAAO,WACN,UAAU;AAEP,IAAM,UAAU,CAAO,QAA2B,cAA0C;AACjG,SAAO,CAAC,OAAO,WAAW,UAAU,OAAO,KAAK,GAAG,OAAO,MAAM,CAAC;AACnE;","names":[]}
@@ -55,5 +55,10 @@ export declare const notFound: (builder?: ErrorEventAugment) => ErrorEvent;
55
55
  export declare const unauthorized: (builder?: ErrorEventAugment) => ErrorEvent;
56
56
  export declare const forbidden: (builder?: ErrorEventAugment) => ErrorEvent;
57
57
  export declare const badRequest: (builder?: ErrorEventAugment) => ErrorEvent;
58
+ export declare function assertPresent<T>(value: T, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is NonNullable<T>;
59
+ export declare function assertAuthorized<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
60
+ export declare function assertPermitted<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
61
+ export declare function assertValid<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
62
+ export declare function assert<T>(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true;
58
63
  export {};
59
64
  //# sourceMappingURL=error-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../src/error-event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../src/error-event.ts"],"names":[],"mappings":"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"}