@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.
- package/dist/array.d.ts +23 -30
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +108 -58
- package/dist/array.js.map +1 -1
- package/dist/assertion.d.ts +1 -7
- package/dist/assertion.d.ts.map +1 -1
- package/dist/assertion.js +9 -46
- package/dist/assertion.js.map +1 -1
- package/dist/async-value.js +2 -2
- package/dist/async-value.js.map +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +2 -2
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts +5 -5
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +21 -17
- package/dist/cache.js.map +1 -1
- package/dist/combinable.d.ts.map +1 -1
- package/dist/combinable.js +5 -4
- package/dist/combinable.js.map +1 -1
- package/dist/comparator.d.ts.map +1 -1
- package/dist/comparator.js +9 -8
- package/dist/comparator.js.map +1 -1
- package/dist/content.d.ts +2 -2
- package/dist/date.d.ts +1 -1
- package/dist/date.d.ts.map +1 -1
- package/dist/date.js +5 -4
- package/dist/date.js.map +1 -1
- package/dist/either.d.ts +0 -1
- package/dist/either.d.ts.map +1 -1
- package/dist/either.js +2 -3
- package/dist/either.js.map +1 -1
- package/dist/entry.d.ts +9 -7
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +5 -1
- package/dist/entry.js.map +1 -1
- package/dist/equalitor.d.ts +2 -1
- package/dist/equalitor.d.ts.map +1 -1
- package/dist/equalitor.js +6 -2
- package/dist/equalitor.js.map +1 -1
- package/dist/error-event.d.ts +5 -0
- package/dist/error-event.d.ts.map +1 -1
- package/dist/error-event.js +45 -12
- package/dist/error-event.js.map +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +2 -2
- package/dist/error.js.map +1 -1
- package/dist/expression/array-expression.js +1 -1
- package/dist/expression/array-expression.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +3 -3
- package/dist/json.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +10 -9
- package/dist/logger.js.map +1 -1
- package/dist/map.d.ts +18 -0
- package/dist/map.d.ts.map +1 -0
- package/dist/map.js +110 -0
- package/dist/map.js.map +1 -0
- package/dist/math.d.ts +1 -1
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +4 -7
- package/dist/math.js.map +1 -1
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +4 -3
- package/dist/misc.js.map +1 -1
- package/dist/monetary-amount.d.ts +8 -2
- package/dist/monetary-amount.d.ts.map +1 -1
- package/dist/monetary-amount.js +23 -6
- package/dist/monetary-amount.js.map +1 -1
- package/dist/object.d.ts +5 -16
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +64 -19
- package/dist/object.js.map +1 -1
- package/dist/patch.d.ts.map +1 -1
- package/dist/patch.js +6 -5
- package/dist/patch.js.map +1 -1
- package/dist/property.d.ts.map +1 -1
- package/dist/property.js +5 -4
- package/dist/property.js.map +1 -1
- package/dist/range.d.ts +3 -1
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +2 -2
- package/dist/range.js.map +1 -1
- package/dist/reference.d.ts +1 -2
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +13 -10
- package/dist/reference.js.map +1 -1
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +2 -2
- package/dist/resource.js.map +1 -1
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +6 -5
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +14 -9
- package/dist/retry.js.map +1 -1
- package/dist/rich-text.js +2 -2
- package/dist/rich-text.js.map +1 -1
- package/dist/signature.d.ts +3 -2
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +6 -4
- package/dist/signature.js.map +1 -1
- package/dist/store.d.ts +13 -13
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +9 -7
- package/dist/store.js.map +1 -1
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +3 -4
- package/dist/string.js.map +1 -1
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js +12 -12
- package/dist/tag.js.map +1 -1
- package/dist/uri.d.ts.map +1 -1
- package/dist/uri.js +52 -50
- package/dist/uri.js.map +1 -1
- package/dist/url.d.ts.map +1 -1
- package/dist/url.js.map +1 -1
- package/dist/uuid.d.ts.map +1 -1
- package/dist/uuid.js +4 -3
- package/dist/uuid.js.map +1 -1
- package/package.json +1 -1
package/dist/cache.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
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;
|
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 {
|
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:
|
11
|
-
timeToStale:
|
14
|
+
timeToLive: OneDay,
|
15
|
+
timeToStale: OneHour
|
12
16
|
};
|
13
17
|
CacheProps2.buildCacheProps = (options) => {
|
14
18
|
options = options ?? {};
|
15
|
-
const props =
|
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
|
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:
|
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 (
|
62
|
+
if (isNil(entry)) {
|
59
63
|
return true;
|
60
64
|
}
|
61
|
-
if (
|
65
|
+
if (isNil(entry.liveTimestamp)) {
|
62
66
|
return false;
|
63
67
|
}
|
64
|
-
return
|
68
|
+
return isBefore(entry.liveTimestamp, now());
|
65
69
|
};
|
66
70
|
CacheEntry2.isAlive = (entry) => !(0, CacheEntry2.isDead)(entry);
|
67
71
|
CacheEntry2.isStale = (entry) => {
|
68
|
-
if (
|
72
|
+
if (isNil(entry.staleTimestamp)) {
|
69
73
|
return false;
|
70
74
|
}
|
71
|
-
return
|
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 (!
|
84
|
-
const limit =
|
85
|
-
if (
|
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 (!
|
91
|
-
const limit =
|
92
|
-
if (
|
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 {
|
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"]}
|
package/dist/combinable.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"combinable.d.ts","sourceRoot":"","sources":["../src/combinable.ts"],"names":[],"mappings":"
|
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"}
|
package/dist/combinable.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
// src/combinable.ts
|
2
|
-
import {
|
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 =
|
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 (!
|
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
|
25
|
+
return cartesianProduct(...classCombinations).flatMap((it) => it);
|
25
26
|
};
|
26
27
|
export {
|
27
28
|
CombinabilityType,
|
package/dist/combinable.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/combinable.ts"],"sourcesContent":["import {
|
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"]}
|
package/dist/comparator.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"comparator.d.ts","sourceRoot":"","sources":["../src/comparator.ts"],"names":[],"mappings":"
|
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"}
|
package/dist/comparator.js
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
// src/comparator.ts
|
2
|
-
import {
|
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 (
|
33
|
+
if (isString(first) && isString(second)) {
|
31
34
|
return first.localeCompare(second);
|
32
|
-
} else if (
|
35
|
+
} else if (isNumber(first) && isNumber(second)) {
|
33
36
|
return first - second;
|
34
|
-
} else if (
|
37
|
+
} else if (isDate(first) && isDate(second)) {
|
35
38
|
return first.getTime() - second.getTime();
|
36
|
-
} else if (
|
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
|
};
|
package/dist/comparator.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/comparator.ts"],"sourcesContent":["import {
|
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
|
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;
|
package/dist/date.d.ts.map
CHANGED
@@ -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;
|
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 {
|
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 =
|
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,
|
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 {
|
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
package/dist/either.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"AAAA,
|
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(
|
14
|
-
const rights = array.filter(
|
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 {
|
package/dist/either.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/either.ts"],"sourcesContent":["
|
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<
|
3
|
-
export
|
4
|
-
export declare const
|
5
|
-
export declare const
|
6
|
-
export declare const
|
7
|
-
export declare const
|
8
|
-
export declare const
|
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
|
package/dist/entry.d.ts.map
CHANGED
@@ -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,
|
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 = (
|
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<
|
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":[]}
|
package/dist/equalitor.d.ts
CHANGED
@@ -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
|
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
|
package/dist/equalitor.d.ts.map
CHANGED
@@ -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,
|
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
|
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
|
-
|
12
|
+
natural
|
9
13
|
};
|
10
14
|
//# sourceMappingURL=equalitor.js.map
|
package/dist/equalitor.js.map
CHANGED
@@ -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
|
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":[]}
|
package/dist/error-event.d.ts
CHANGED
@@ -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":"
|
1
|
+
{"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../src/error-event.ts"],"names":[],"mappings":"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"}
|