@bessemer/cornerstone 0.5.13 → 0.5.15
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/comparator.d.ts +2 -1
- package/dist/comparator.d.ts.map +1 -1
- package/dist/comparator.js +12 -5
- package/dist/comparator.js.map +1 -1
- package/dist/date.d.ts +1 -0
- package/dist/date.d.ts.map +1 -1
- package/dist/date.js +3 -0
- package/dist/date.js.map +1 -1
- package/dist/expression/basic-expression.d.ts +35 -0
- package/dist/expression/basic-expression.d.ts.map +1 -0
- package/dist/expression/basic-expression.js +53 -0
- package/dist/expression/basic-expression.js.map +1 -0
- package/dist/expression/expression.d.ts.map +1 -1
- package/dist/expression/expression.js +5 -2
- package/dist/expression/expression.js.map +1 -1
- package/dist/expression/numeric-expression.d.ts +0 -16
- package/dist/expression/numeric-expression.d.ts.map +1 -1
- package/dist/expression/numeric-expression.js +0 -24
- package/dist/expression/numeric-expression.js.map +1 -1
- package/dist/expression.d.ts +2 -1
- package/dist/expression.d.ts.map +1 -1
- package/dist/expression.js +2 -0
- package/dist/expression.js.map +1 -1
- package/dist/object.d.ts +5 -2
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +9 -0
- package/dist/object.js.map +1 -1
- package/dist/signature.d.ts +2 -1
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +10 -2
- package/dist/signature.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/comparator.d.ts
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
import { Basic } from '@bessemer/cornerstone/types';
|
1
2
|
export type Comparator<T> = (first: T, second: T) => number;
|
2
3
|
export declare const aggregate: <T>(comparators: Array<Comparator<T>>) => Comparator<T>;
|
3
4
|
export declare const compareBy: <T, N>(mapper: (element: T) => N, comparator: Comparator<N>) => Comparator<T>;
|
4
5
|
export declare const reverse: <T>(comparator: Comparator<T>) => Comparator<T>;
|
5
6
|
export declare const trueFirst: () => Comparator<boolean>;
|
6
|
-
export declare const natural: () => Comparator<
|
7
|
+
export declare const natural: () => Comparator<Basic | null>;
|
7
8
|
export declare function matchedFirst<T>(target: T): Comparator<T | null>;
|
8
9
|
export declare const nullsLast: <T>() => Comparator<T>;
|
9
10
|
//# sourceMappingURL=comparator.d.ts.map
|
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":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AAEnD,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,KAAK,GAAG,IAAI,CAuBjD,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,5 @@
|
|
1
1
|
// src/comparator.ts
|
2
|
-
import { Maths, Strings } from "@bessemer/cornerstone";
|
2
|
+
import { Dates, Maths, Objects, Strings } from "@bessemer/cornerstone";
|
3
3
|
var aggregate = (comparators) => {
|
4
4
|
return (first, second) => {
|
5
5
|
if (first === second) {
|
@@ -31,10 +31,17 @@ var natural = () => {
|
|
31
31
|
return first.localeCompare(second);
|
32
32
|
} else if (Maths.isNumber(first) && Maths.isNumber(second)) {
|
33
33
|
return first - second;
|
34
|
-
} else if (
|
35
|
-
return -
|
36
|
-
} else {
|
37
|
-
|
34
|
+
} else if (Dates.isDate(first) && Dates.isDate(second)) {
|
35
|
+
return first.getTime() - second.getTime();
|
36
|
+
} else if (Objects.isBoolean(first) && Objects.isBoolean(second)) {
|
37
|
+
if (first !== second) {
|
38
|
+
return second ? 1 : 0;
|
39
|
+
} else {
|
40
|
+
return 0;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
{
|
44
|
+
return 0;
|
38
45
|
}
|
39
46
|
}
|
40
47
|
]);
|
package/dist/comparator.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/comparator.ts"],"sourcesContent":["import { Maths, Strings } from '@bessemer/cornerstone'\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<
|
1
|
+
{"version":3,"sources":["../src/comparator.ts"],"sourcesContent":["import { Dates, Maths, Objects, Strings } from '@bessemer/cornerstone'\nimport { Basic } 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<Basic | 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,MAAgC;AAErD,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":[]}
|
package/dist/date.d.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as _isAfter, isBefore as _isBefore } from 'date-fns';
|
2
2
|
import { Duration } from '@bessemer/cornerstone/duration';
|
3
|
+
export declare const isDate: (value?: any) => value is Date;
|
3
4
|
export declare const now: () => Date;
|
4
5
|
export declare const of: (dateString: string) => Date;
|
5
6
|
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;AAE3I,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAGzD,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"}
|
package/dist/date.js
CHANGED
@@ -1,6 +1,8 @@
|
|
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";
|
3
4
|
import { Durations } from "@bessemer/cornerstone/index";
|
5
|
+
var isDate = _isDate;
|
4
6
|
var now = () => {
|
5
7
|
return /* @__PURE__ */ new Date();
|
6
8
|
};
|
@@ -18,6 +20,7 @@ export {
|
|
18
20
|
addMilliseconds,
|
19
21
|
isAfter,
|
20
22
|
isBefore,
|
23
|
+
isDate,
|
21
24
|
now,
|
22
25
|
of
|
23
26
|
};
|
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 { Duration } from '@bessemer/cornerstone/duration'\nimport { Durations } from '@bessemer/cornerstone/index'\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.inMilliseconds(duration))\n"],"mappings":";AAAA,SAAS,YAAY,WAAW,mBAAmB,kBAAkB,WAAW,UAAU,YAAY,WAAW,gBAAgB;
|
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/index'\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.inMilliseconds(duration))\n"],"mappings":";AAAA,SAAS,YAAY,WAAW,mBAAmB,kBAAkB,WAAW,UAAU,YAAY,WAAW,gBAAgB;AACjI,SAAS,UAAU,eAAe;AAElC,SAAS,iBAAiB;AAEnB,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":[]}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { Expression } from '@bessemer/cornerstone/expression';
|
2
|
+
import { Basic } from '@bessemer/cornerstone/types';
|
3
|
+
export declare const LessThanExpression: import("@bessemer/cornerstone/expression").ExpressionDefinition<boolean, [left: Expression<Basic>, right: Expression<Basic>], Expression<boolean> & {
|
4
|
+
left: Expression<Basic>;
|
5
|
+
right: Expression<Basic>;
|
6
|
+
}>;
|
7
|
+
export declare const lessThan: (left: Expression<Basic>, right: Expression<Basic>) => Expression<boolean> & {
|
8
|
+
left: Expression<Basic>;
|
9
|
+
right: Expression<Basic>;
|
10
|
+
};
|
11
|
+
export declare const LessThanOrEqualExpression: import("@bessemer/cornerstone/expression").ExpressionDefinition<boolean, [left: Expression<Basic>, right: Expression<Basic>], Expression<boolean> & {
|
12
|
+
left: Expression<Basic>;
|
13
|
+
right: Expression<Basic>;
|
14
|
+
}>;
|
15
|
+
export declare const lessThanOrEqual: (left: Expression<Basic>, right: Expression<Basic>) => Expression<boolean> & {
|
16
|
+
left: Expression<Basic>;
|
17
|
+
right: Expression<Basic>;
|
18
|
+
};
|
19
|
+
export declare const GreaterThanExpression: import("@bessemer/cornerstone/expression").ExpressionDefinition<boolean, [left: Expression<Basic>, right: Expression<Basic>], Expression<boolean> & {
|
20
|
+
left: Expression<Basic>;
|
21
|
+
right: Expression<Basic>;
|
22
|
+
}>;
|
23
|
+
export declare const greaterThan: (left: Expression<Basic>, right: Expression<Basic>) => Expression<boolean> & {
|
24
|
+
left: Expression<Basic>;
|
25
|
+
right: Expression<Basic>;
|
26
|
+
};
|
27
|
+
export declare const GreaterThanOrEqualExpression: import("@bessemer/cornerstone/expression").ExpressionDefinition<boolean, [left: Expression<Basic>, right: Expression<Basic>], Expression<boolean> & {
|
28
|
+
left: Expression<Basic>;
|
29
|
+
right: Expression<Basic>;
|
30
|
+
}>;
|
31
|
+
export declare const greaterThanOrEqual: (left: Expression<Basic>, right: Expression<Basic>) => Expression<boolean> & {
|
32
|
+
left: Expression<Basic>;
|
33
|
+
right: Expression<Basic>;
|
34
|
+
};
|
35
|
+
//# sourceMappingURL=basic-expression.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"basic-expression.d.ts","sourceRoot":"","sources":["../../src/expression/basic-expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AAEnD,eAAO,MAAM,kBAAkB;;;EAQ7B,CAAA;AAEF,eAAO,MAAM,QAAQ;;;CAA6B,CAAA;AAElD,eAAO,MAAM,yBAAyB;;;EAQpC,CAAA;AAEF,eAAO,MAAM,eAAe;;;CAAoC,CAAA;AAEhE,eAAO,MAAM,qBAAqB;;;EAQhC,CAAA;AAEF,eAAO,MAAM,WAAW;;;CAAgC,CAAA;AAExD,eAAO,MAAM,4BAA4B;;;EAQvC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;CAAuC,CAAA"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
// src/expression/basic-expression.ts
|
2
|
+
import { defineExpression } from "@bessemer/cornerstone/expression/internal";
|
3
|
+
var LessThanExpression = defineExpression({
|
4
|
+
expressionKey: "Basic.LessThan",
|
5
|
+
builder: (left, right) => {
|
6
|
+
return { left, right };
|
7
|
+
},
|
8
|
+
resolver: ({ left, right }, evaluate) => {
|
9
|
+
return evaluate(left) < evaluate(right);
|
10
|
+
}
|
11
|
+
});
|
12
|
+
var lessThan = LessThanExpression.builder;
|
13
|
+
var LessThanOrEqualExpression = defineExpression({
|
14
|
+
expressionKey: "Basic.LessThanOrEqual",
|
15
|
+
builder: (left, right) => {
|
16
|
+
return { left, right };
|
17
|
+
},
|
18
|
+
resolver: ({ left, right }, evaluate) => {
|
19
|
+
return evaluate(left) <= evaluate(right);
|
20
|
+
}
|
21
|
+
});
|
22
|
+
var lessThanOrEqual = LessThanOrEqualExpression.builder;
|
23
|
+
var GreaterThanExpression = defineExpression({
|
24
|
+
expressionKey: "Basic.GreaterThan",
|
25
|
+
builder: (left, right) => {
|
26
|
+
return { left, right };
|
27
|
+
},
|
28
|
+
resolver: ({ left, right }, evaluate) => {
|
29
|
+
return evaluate(left) > evaluate(right);
|
30
|
+
}
|
31
|
+
});
|
32
|
+
var greaterThan = GreaterThanExpression.builder;
|
33
|
+
var GreaterThanOrEqualExpression = defineExpression({
|
34
|
+
expressionKey: "Basic.GreaterThanOrEqual",
|
35
|
+
builder: (left, right) => {
|
36
|
+
return { left, right };
|
37
|
+
},
|
38
|
+
resolver: ({ left, right }, evaluate) => {
|
39
|
+
return evaluate(left) >= evaluate(right);
|
40
|
+
}
|
41
|
+
});
|
42
|
+
var greaterThanOrEqual = GreaterThanOrEqualExpression.builder;
|
43
|
+
export {
|
44
|
+
GreaterThanExpression,
|
45
|
+
GreaterThanOrEqualExpression,
|
46
|
+
LessThanExpression,
|
47
|
+
LessThanOrEqualExpression,
|
48
|
+
greaterThan,
|
49
|
+
greaterThanOrEqual,
|
50
|
+
lessThan,
|
51
|
+
lessThanOrEqual
|
52
|
+
};
|
53
|
+
//# sourceMappingURL=basic-expression.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/expression/basic-expression.ts"],"sourcesContent":["import { defineExpression } from '@bessemer/cornerstone/expression/internal'\nimport { Expression } from '@bessemer/cornerstone/expression'\nimport { Basic } from '@bessemer/cornerstone/types'\n\nexport const LessThanExpression = defineExpression({\n expressionKey: 'Basic.LessThan',\n builder: (left: Expression<Basic>, right: Expression<Basic>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) < evaluate(right)\n },\n})\n\nexport const lessThan = LessThanExpression.builder\n\nexport const LessThanOrEqualExpression = defineExpression({\n expressionKey: 'Basic.LessThanOrEqual',\n builder: (left: Expression<Basic>, right: Expression<Basic>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) <= evaluate(right)\n },\n})\n\nexport const lessThanOrEqual = LessThanOrEqualExpression.builder\n\nexport const GreaterThanExpression = defineExpression({\n expressionKey: 'Basic.GreaterThan',\n builder: (left: Expression<Basic>, right: Expression<Basic>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) > evaluate(right)\n },\n})\n\nexport const greaterThan = GreaterThanExpression.builder\n\nexport const GreaterThanOrEqualExpression = defineExpression({\n expressionKey: 'Basic.GreaterThanOrEqual',\n builder: (left: Expression<Basic>, right: Expression<Basic>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) >= evaluate(right)\n },\n})\n\nexport const greaterThanOrEqual = GreaterThanOrEqualExpression.builder\n"],"mappings":";AAAA,SAAS,wBAAwB;AAI1B,IAAM,qBAAqB,iBAAiB;AAAA,EACjD,eAAe;AAAA,EACf,SAAS,CAAC,MAAyB,UAA6B;AAC9D,WAAO,EAAE,MAAM,MAAM;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,aAAa;AACvC,WAAO,SAAS,IAAI,IAAI,SAAS,KAAK;AAAA,EACxC;AACF,CAAC;AAEM,IAAM,WAAW,mBAAmB;AAEpC,IAAM,4BAA4B,iBAAiB;AAAA,EACxD,eAAe;AAAA,EACf,SAAS,CAAC,MAAyB,UAA6B;AAC9D,WAAO,EAAE,MAAM,MAAM;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,aAAa;AACvC,WAAO,SAAS,IAAI,KAAK,SAAS,KAAK;AAAA,EACzC;AACF,CAAC;AAEM,IAAM,kBAAkB,0BAA0B;AAElD,IAAM,wBAAwB,iBAAiB;AAAA,EACpD,eAAe;AAAA,EACf,SAAS,CAAC,MAAyB,UAA6B;AAC9D,WAAO,EAAE,MAAM,MAAM;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,aAAa;AACvC,WAAO,SAAS,IAAI,IAAI,SAAS,KAAK;AAAA,EACxC;AACF,CAAC;AAEM,IAAM,cAAc,sBAAsB;AAE1C,IAAM,+BAA+B,iBAAiB;AAAA,EAC3D,eAAe;AAAA,EACf,SAAS,CAAC,MAAyB,UAA6B;AAC9D,WAAO,EAAE,MAAM,MAAM;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,aAAa;AACvC,WAAO,SAAS,IAAI,KAAK,SAAS,KAAK;AAAA,EACzC;AACF,CAAC;AAEM,IAAM,qBAAqB,6BAA6B;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/expression/expression.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAElB,qBAAqB,EAEtB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAkC,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/expression/expression.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAElB,qBAAqB,EAEtB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAkC,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAGzC,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,iBAAiB,KAAG,CAEnF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAG,CAE9D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,iBAAiB,KAAG,kBAEtD,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAO,kBAEnC,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,iBAEjC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,UAAU,EAAE,YAAY,SAAS,KAAK,CAAC,OAAO,CAAC,EACzE,WAAW,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,EACxD,GAAG,MAAM,YAAY,KACpB,UAAU,CAAC,UAAU,CAEvB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,EAAE,aAAa,SAAS,KAAK,CAAC,QAAQ,CAAC,EACpF,MAAM,MAAM,KACX,qBAAqB,CAAC,SAAS,EAAE,aAAa,CAOhD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,UAAU,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAG,aAE5E,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,UAAU,EAAE,YAAY,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc,SAAS,UAAU,CAAC,UAAU,CAAC,EACtH,sBAAsB,oBAAoB,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,CAAC,KACnF,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAE9C,CAAA;AAED,eAAO,MAAM,eAAe;;EAQ1B,CAAA;AAEF,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,UAAU,CAAC,CAAC,CAAoD,CAAA;AAEpG,eAAO,MAAM,kBAAkB;;EAU7B,CAAA;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,MAAM,MAAM,KAAG,kBAAkB,CAAC,CAAC,CAA8D,CAAA;AAE7H,eAAO,MAAM,aAAa;;EAQxB,CAAA;AAEF,eAAO,MAAM,GAAG;;CAAwB,CAAA;AAExC,eAAO,MAAM,aAAa;;EAUxB,CAAA;AAEF,eAAO,MAAM,GAAG;;CAAwB,CAAA;AAExC,eAAO,MAAM,YAAY;;EAUvB,CAAA;AAEF,eAAO,MAAM,EAAE;;CAAuB,CAAA;AAEtC,eAAO,MAAM,gBAAgB;;EAe3B,CAAA;AAEF,eAAO,MAAM,MAAM;;CAA2B,CAAA;AAE9C,eAAO,MAAM,kBAAkB;;;EAU7B,CAAA;AAEF,eAAO,MAAM,QAAQ;;;CAA6B,CAAA"}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
import { ExpressionEvaluator } from "@bessemer/cornerstone/expression/expression-evaluator";
|
3
3
|
import {
|
4
4
|
ArrayExpressions,
|
5
|
+
BasicExpressions,
|
5
6
|
NumericExpressions,
|
6
7
|
StringExpressions
|
7
8
|
} from "@bessemer/cornerstone/expression";
|
@@ -129,10 +130,12 @@ var DEFAULT_EXPRESSION_DEFINITIONS = [
|
|
129
130
|
OrExpression,
|
130
131
|
ContainsExpression,
|
131
132
|
EqualsExpression,
|
133
|
+
BasicExpressions.LessThanExpression,
|
134
|
+
BasicExpressions.LessThanOrEqualExpression,
|
135
|
+
BasicExpressions.GreaterThanExpression,
|
136
|
+
BasicExpressions.GreaterThanOrEqualExpression,
|
132
137
|
NumericExpressions.SumExpression,
|
133
138
|
NumericExpressions.MultiplyExpression,
|
134
|
-
NumericExpressions.GreaterThanExpression,
|
135
|
-
NumericExpressions.LessThanExpression,
|
136
139
|
NumericExpressions.FloorExpression,
|
137
140
|
NumericExpressions.CeilingExpression,
|
138
141
|
NumericExpressions.BoundsExpression,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/expression/expression.ts"],"sourcesContent":["import { ExpressionEvaluator } from '@bessemer/cornerstone/expression/expression-evaluator'\nimport {\n ArrayExpressions,\n EvaluateExpression,\n Expression,\n ExpressionContext,\n ExpressionDefinition,\n ExpressionReference,\n ExpressionVariable,\n NumericExpressions,\n ParameterizedVariable,\n StringExpressions
|
1
|
+
{"version":3,"sources":["../../src/expression/expression.ts"],"sourcesContent":["import { ExpressionEvaluator } from '@bessemer/cornerstone/expression/expression-evaluator'\nimport {\n ArrayExpressions, BasicExpressions,\n EvaluateExpression,\n Expression,\n ExpressionContext,\n ExpressionDefinition,\n ExpressionReference,\n ExpressionVariable,\n NumericExpressions,\n ParameterizedVariable,\n StringExpressions\n} from '@bessemer/cornerstone/expression'\nimport { Arrays, Objects, Preconditions, Signatures } from '@bessemer/cornerstone'\nimport { Signable } from '@bessemer/cornerstone/signature'\nimport { defineExpression } from '@bessemer/cornerstone/expression/internal'\nimport { UnknownRecord } from 'type-fest'\nimport { Basic } from '@bessemer/cornerstone/types'\n\nexport const evaluate = <T>(expression: Expression<T>, context: ExpressionContext): T => {\n return new ExpressionEvaluator(DEFAULT_EXPRESSION_DEFINITIONS).evaluate(expression, context)\n}\n\nexport const evaluateDefault = <T>(expression: Expression<T>): T => {\n return evaluate(expression, defaultContext())\n}\n\nexport const evaluator = (context: ExpressionContext): EvaluateExpression => {\n return (it) => evaluate(it, context)\n}\n\nexport const defaultEvaluator = (): EvaluateExpression => {\n return evaluator(defaultContext())\n}\n\nexport const defaultContext = (): ExpressionContext => {\n return { variables: {} }\n}\n\nexport const dereference = <ReturnType, ArgumentType extends Array<unknown>>(\n reference: ExpressionReference<ReturnType, ArgumentType>,\n ...args: ArgumentType\n): Expression<ReturnType> => {\n return new ExpressionEvaluator(DEFAULT_EXPRESSION_DEFINITIONS).dereference(reference, ...args)\n}\n\nexport const parameterizedVariable = <ValueType, ParameterType extends Array<Signable>>(\n name: string\n): ParameterizedVariable<ValueType, ParameterType> => {\n return {\n apply(...parameters: ParameterType): ExpressionVariable<ValueType> {\n const parameterString = parameters.map(Signatures.sign).join('.')\n return variable(`${name}.${parameterString}`)\n },\n }\n}\n\nexport const buildVariable = <T>(variable: ExpressionVariable<T>, value: T): UnknownRecord => {\n return { [variable.name]: value }\n}\n\nexport const reference = <ReturnType, ArgumentType extends Array<unknown>, ExpressionType extends Expression<ReturnType>>(\n expressionDefinition: ExpressionDefinition<ReturnType, ArgumentType, ExpressionType>\n): ExpressionReference<ReturnType, ArgumentType> => {\n return { expressionKey: expressionDefinition.expressionKey }\n}\n\nexport const ValueExpression = defineExpression({\n expressionKey: 'Value',\n builder: (value: unknown) => {\n return { value }\n },\n resolver: ({ value }, evaluate, context) => {\n return value\n },\n})\n\nexport const value = <T>(value: T): Expression<T> => ValueExpression.builder(value) as Expression<T>\n\nexport const VariableExpression = defineExpression({\n expressionKey: 'Variable',\n builder: (name: string) => {\n return { name }\n },\n resolver: ({ name }, evaluate, context) => {\n const value = context.variables[name]\n Preconditions.isPresent(value)\n return value\n },\n})\n\nexport const variable = <T>(name: string): ExpressionVariable<T> => VariableExpression.builder(name) as ExpressionVariable<T>\n\nexport const NotExpression = defineExpression({\n expressionKey: 'Not',\n builder: (value: Expression<boolean>) => {\n return { value }\n },\n resolver: (expression, evaluate) => {\n return !evaluate(expression.value)\n },\n})\n\nexport const not = NotExpression.builder\n\nexport const AndExpression = defineExpression({\n expressionKey: 'And',\n builder: (operands: Array<Expression<boolean>>) => {\n return { operands }\n },\n resolver: (expression, evaluate) => {\n const values = expression.operands.map((it) => evaluate(it))\n const falseValue = values.find((it) => !it)\n return Objects.isNil(falseValue)\n },\n})\n\nexport const and = AndExpression.builder\n\nexport const OrExpression = defineExpression({\n expressionKey: 'Or',\n builder: (operands: Array<Expression<boolean>>) => {\n return { operands }\n },\n resolver: (expression, evaluate) => {\n const values = expression.operands.map((it) => evaluate(it))\n const trueValue = values.find((it) => it)\n return Objects.isPresent(trueValue)\n },\n})\n\nexport const or = OrExpression.builder\n\nexport const EqualsExpression = defineExpression({\n expressionKey: 'Equals',\n builder: (operands: Array<Expression<Signable>>) => {\n return { operands }\n },\n resolver: (expression, evaluate) => {\n const values = expression.operands.map((it) => evaluate(it)).map(Signatures.sign)\n\n if (values.length === 0) {\n return true\n }\n\n const first = values[0]\n return values.every((val) => val === first)\n },\n})\n\nexport const equals = EqualsExpression.builder\n\nexport const ContainsExpression = defineExpression({\n expressionKey: 'Contains',\n builder: (collection: Expression<Array<Signable>>, operands: Array<Expression<Signable>>) => {\n return { collection, operands }\n },\n resolver: (expression, evaluate) => {\n const collection = evaluate(expression.collection)\n const values = expression.operands.map((it) => evaluate(it))\n return Arrays.containsAll(collection, values)\n },\n})\n\nexport const contains = ContainsExpression.builder\n\nconst DEFAULT_EXPRESSION_DEFINITIONS: Array<ExpressionDefinition<unknown, Array<any>, Expression<any>>> = [\n ValueExpression,\n VariableExpression,\n AndExpression,\n OrExpression,\n ContainsExpression,\n EqualsExpression,\n BasicExpressions.LessThanExpression,\n BasicExpressions.LessThanOrEqualExpression,\n BasicExpressions.GreaterThanExpression,\n BasicExpressions.GreaterThanOrEqualExpression,\n NumericExpressions.SumExpression,\n NumericExpressions.MultiplyExpression,\n NumericExpressions.FloorExpression,\n NumericExpressions.CeilingExpression,\n NumericExpressions.BoundsExpression,\n NumericExpressions.RoundExpression,\n NumericExpressions.MaxExpression,\n NumericExpressions.MinExpression,\n StringExpressions.ConcatenateExpression,\n StringExpressions.SubstringExpression,\n StringExpressions.UppercaseExpression,\n ArrayExpressions.ConcatenateExpression,\n ArrayExpressions.FirstExpression,\n]\n"],"mappings":"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","names":["reference","variable","value","evaluate"]}
|
@@ -12,22 +12,6 @@ export declare const MultiplyExpression: import("@bessemer/cornerstone/expressio
|
|
12
12
|
export declare const multiply: (initialOperands: Expression<number>[]) => Expression<number> & {
|
13
13
|
operands: Expression<number>[];
|
14
14
|
};
|
15
|
-
export declare const LessThanExpression: import("@bessemer/cornerstone/expression").ExpressionDefinition<boolean, [left: Expression<number>, right: Expression<number>], Expression<boolean> & {
|
16
|
-
left: Expression<number>;
|
17
|
-
right: Expression<number>;
|
18
|
-
}>;
|
19
|
-
export declare const lessThan: (left: Expression<number>, right: Expression<number>) => Expression<boolean> & {
|
20
|
-
left: Expression<number>;
|
21
|
-
right: Expression<number>;
|
22
|
-
};
|
23
|
-
export declare const GreaterThanExpression: import("@bessemer/cornerstone/expression").ExpressionDefinition<boolean, [left: Expression<number>, right: Expression<number>], Expression<boolean> & {
|
24
|
-
left: Expression<number>;
|
25
|
-
right: Expression<number>;
|
26
|
-
}>;
|
27
|
-
export declare const greaterThan: (left: Expression<number>, right: Expression<number>) => Expression<boolean> & {
|
28
|
-
left: Expression<number>;
|
29
|
-
right: Expression<number>;
|
30
|
-
};
|
31
15
|
export declare const BoundsExpression: import("@bessemer/cornerstone/expression").ExpressionDefinition<number, [value: Expression<number>, minimumThreshold: Expression<number> | null, maximumThreshold: Expression<number> | null], Expression<number> & {
|
32
16
|
value: Expression<number>;
|
33
17
|
minimumThreshold: Expression<number> | null;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"numeric-expression.d.ts","sourceRoot":"","sources":["../../src/expression/numeric-expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAW,MAAM,uBAAuB,CAAA;AAGtD,eAAO,MAAM,aAAa;;EAiBxB,CAAA;AAEF,eAAO,MAAM,GAAG;;CAAwB,CAAA;AAExC,eAAO,MAAM,kBAAkB;;EAiB7B,CAAA;AAEF,eAAO,MAAM,QAAQ;;CAA6B,CAAA;
|
1
|
+
{"version":3,"file":"numeric-expression.d.ts","sourceRoot":"","sources":["../../src/expression/numeric-expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAW,MAAM,uBAAuB,CAAA;AAGtD,eAAO,MAAM,aAAa;;EAiBxB,CAAA;AAEF,eAAO,MAAM,GAAG;;CAAwB,CAAA;AAExC,eAAO,MAAM,kBAAkB;;EAiB7B,CAAA;AAEF,eAAO,MAAM,QAAQ;;CAA6B,CAAA;AAGlD,eAAO,MAAM,gBAAgB;;;;EAkB3B,CAAA;AAEF,eAAO,MAAM,MAAM;;;;CAA2B,CAAA;AAE9C,eAAO,MAAM,eAAe;;;EAc1B,CAAA;AAEF,eAAO,MAAM,KAAK;;;CAA0B,CAAA;AAE5C,eAAO,MAAM,iBAAiB;;;EAc5B,CAAA;AAEF,eAAO,MAAM,OAAO;;;CAA4B,CAAA;AAEhD,eAAO,MAAM,eAAe;;;;EAQ1B,CAAA;AAEF,eAAO,MAAM,KAAK;;;;CAA0B,CAAA;AAE5C,eAAO,MAAM,aAAa;;EAiBxB,CAAA;AAEF,eAAO,MAAM,GAAG;;CAAwB,CAAA;AAExC,eAAO,MAAM,aAAa;;EAiBxB,CAAA;AAEF,eAAO,MAAM,GAAG;;CAAwB,CAAA"}
|
@@ -37,26 +37,6 @@ var MultiplyExpression = defineExpression({
|
|
37
37
|
}
|
38
38
|
});
|
39
39
|
var multiply = MultiplyExpression.builder;
|
40
|
-
var LessThanExpression = defineExpression({
|
41
|
-
expressionKey: "Numeric.LessThan",
|
42
|
-
builder: (left, right) => {
|
43
|
-
return { left, right };
|
44
|
-
},
|
45
|
-
resolver: ({ left, right }, evaluate) => {
|
46
|
-
return evaluate(left) < evaluate(right);
|
47
|
-
}
|
48
|
-
});
|
49
|
-
var lessThan = LessThanExpression.builder;
|
50
|
-
var GreaterThanExpression = defineExpression({
|
51
|
-
expressionKey: "Numeric.GreaterThan",
|
52
|
-
builder: (left, right) => {
|
53
|
-
return { left, right };
|
54
|
-
},
|
55
|
-
resolver: ({ left, right }, evaluate) => {
|
56
|
-
return evaluate(left) > evaluate(right);
|
57
|
-
}
|
58
|
-
});
|
59
|
-
var greaterThan = GreaterThanExpression.builder;
|
60
40
|
var BoundsExpression = defineExpression({
|
61
41
|
expressionKey: "Numeric.Bounds",
|
62
42
|
builder: (value, minimumThreshold, maximumThreshold) => {
|
@@ -156,8 +136,6 @@ export {
|
|
156
136
|
BoundsExpression,
|
157
137
|
CeilingExpression,
|
158
138
|
FloorExpression,
|
159
|
-
GreaterThanExpression,
|
160
|
-
LessThanExpression,
|
161
139
|
MaxExpression,
|
162
140
|
MinExpression,
|
163
141
|
MultiplyExpression,
|
@@ -166,8 +144,6 @@ export {
|
|
166
144
|
bounds,
|
167
145
|
ceiling,
|
168
146
|
floor,
|
169
|
-
greaterThan,
|
170
|
-
lessThan,
|
171
147
|
max,
|
172
148
|
min,
|
173
149
|
multiply,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/expression/numeric-expression.ts"],"sourcesContent":["import { defineExpression, isType } from '@bessemer/cornerstone/expression/internal'\nimport { Expression } from '@bessemer/cornerstone/expression'\nimport { Maths, Objects } from '@bessemer/cornerstone'\nimport { RoundingMode } from '@bessemer/cornerstone/math'\n\nexport const SumExpression = defineExpression({\n expressionKey: 'Numeric.Sum',\n builder: (initialOperands: Array<Expression<number>>) => {\n const operands: Array<Expression<number>> = initialOperands.flatMap((it) => {\n if (isType(it, SumExpression)) {\n return it.operands\n } else {\n return [it]\n }\n })\n\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = operands.map((it) => evaluate(it))\n return values.reduce((x, y) => x + y, 0)\n },\n})\n\nexport const sum = SumExpression.builder\n\nexport const MultiplyExpression = defineExpression({\n expressionKey: 'Numeric.Multiply',\n builder: (initialOperands: Array<Expression<number>>) => {\n const operands: Array<Expression<number>> = initialOperands.flatMap((it) => {\n if (isType(it, MultiplyExpression)) {\n return it.operands\n } else {\n return [it]\n }\n })\n\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = operands.map((it) => evaluate(it))\n return values.reduce((x, y) => x * y, 1)\n },\n})\n\nexport const multiply = MultiplyExpression.builder\n\
|
1
|
+
{"version":3,"sources":["../../src/expression/numeric-expression.ts"],"sourcesContent":["import { defineExpression, isType } from '@bessemer/cornerstone/expression/internal'\nimport { Expression } from '@bessemer/cornerstone/expression'\nimport { Maths, Objects } from '@bessemer/cornerstone'\nimport { RoundingMode } from '@bessemer/cornerstone/math'\n\nexport const SumExpression = defineExpression({\n expressionKey: 'Numeric.Sum',\n builder: (initialOperands: Array<Expression<number>>) => {\n const operands: Array<Expression<number>> = initialOperands.flatMap((it) => {\n if (isType(it, SumExpression)) {\n return it.operands\n } else {\n return [it]\n }\n })\n\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = operands.map((it) => evaluate(it))\n return values.reduce((x, y) => x + y, 0)\n },\n})\n\nexport const sum = SumExpression.builder\n\nexport const MultiplyExpression = defineExpression({\n expressionKey: 'Numeric.Multiply',\n builder: (initialOperands: Array<Expression<number>>) => {\n const operands: Array<Expression<number>> = initialOperands.flatMap((it) => {\n if (isType(it, MultiplyExpression)) {\n return it.operands\n } else {\n return [it]\n }\n })\n\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = operands.map((it) => evaluate(it))\n return values.reduce((x, y) => x * y, 1)\n },\n})\n\nexport const multiply = MultiplyExpression.builder\n\n// JOHN convert to using the Bounds type and maybe rename to indicate that this bounds the value rather than tests to see if it is in bounds?\nexport const BoundsExpression = defineExpression({\n expressionKey: 'Numeric.Bounds',\n builder: (value: Expression<number>, minimumThreshold: Expression<number> | null, maximumThreshold: Expression<number> | null) => {\n return { value, minimumThreshold, maximumThreshold }\n },\n resolver: (expression, evaluate) => {\n let value = evaluate(expression.value)\n const minimumThreshold = Objects.isPresent(expression.minimumThreshold) ? evaluate(expression.minimumThreshold) : null\n const maximumThreshold = Objects.isPresent(expression.maximumThreshold) ? evaluate(expression.maximumThreshold) : null\n if (Objects.isPresent(minimumThreshold) && value < minimumThreshold) {\n value = minimumThreshold\n }\n if (Objects.isPresent(maximumThreshold) && value > maximumThreshold) {\n value = maximumThreshold\n }\n\n return value\n },\n})\n\nexport const bounds = BoundsExpression.builder\n\nexport const FloorExpression = defineExpression({\n expressionKey: 'Numeric.Floor',\n builder: (value: Expression<number>, minimumThreshold: Expression<number> | null) => {\n return { value, minimumThreshold }\n },\n resolver: (expression, evaluate) => {\n let value = evaluate(expression.value)\n const minimumThreshold = Objects.isPresent(expression.minimumThreshold) ? evaluate(expression.minimumThreshold) : null\n if (Objects.isPresent(minimumThreshold) && value < minimumThreshold) {\n value = minimumThreshold\n }\n\n return value\n },\n})\n\nexport const floor = FloorExpression.builder\n\nexport const CeilingExpression = defineExpression({\n expressionKey: 'Numeric.Ceiling',\n builder: (value: Expression<number>, maximumThreshold: Expression<number> | null) => {\n return { value, maximumThreshold }\n },\n resolver: (expression, evaluate) => {\n let value = evaluate(expression.value)\n const maximumThreshold = Objects.isPresent(expression.maximumThreshold) ? evaluate(expression.maximumThreshold) : null\n if (Objects.isPresent(maximumThreshold) && value > maximumThreshold) {\n value = maximumThreshold\n }\n\n return value\n },\n})\n\nexport const ceiling = CeilingExpression.builder\n\nexport const RoundExpression = defineExpression({\n expressionKey: 'Numeric.Round',\n builder: (value: Expression<number>, scale: number, roundingMode: RoundingMode) => {\n return { value, scale, roundingMode }\n },\n resolver: ({ value, scale, roundingMode }, evaluate) => {\n return Maths.round(evaluate(value), scale, roundingMode)\n },\n})\n\nexport const round = RoundExpression.builder\n\nexport const MinExpression = defineExpression({\n expressionKey: 'Numeric.Min',\n builder: (initialOperands: Array<Expression<number>>) => {\n const operands: Array<Expression<number>> = initialOperands.flatMap((it) => {\n if (isType(it, MinExpression)) {\n return it.operands\n } else {\n return [it]\n }\n })\n\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = operands.map((it) => evaluate(it))\n return Math.min(...values)\n },\n})\n\nexport const min = MinExpression.builder\n\nexport const MaxExpression = defineExpression({\n expressionKey: 'Numeric.Max',\n builder: (initialOperands: Array<Expression<number>>) => {\n const operands: Array<Expression<number>> = initialOperands.flatMap((it) => {\n if (isType(it, MaxExpression)) {\n return it.operands\n } else {\n return [it]\n }\n })\n\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = operands.map((it) => evaluate(it))\n return Math.max(...values)\n },\n})\n\nexport const max = MaxExpression.builder\n"],"mappings":"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","names":[]}
|
package/dist/expression.d.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import * as BasicExpressions from '@bessemer/cornerstone/expression/basic-expression';
|
1
2
|
import * as NumericExpressions from '@bessemer/cornerstone/expression/numeric-expression';
|
2
3
|
import * as StringExpressions from '@bessemer/cornerstone/expression/string-expression';
|
3
4
|
import * as ArrayExpressions from '@bessemer/cornerstone/expression/array-expression';
|
@@ -5,7 +6,7 @@ import * as Expressions from '@bessemer/cornerstone/expression/expression';
|
|
5
6
|
import { NominalType } from '@bessemer/cornerstone/types';
|
6
7
|
import { Signable } from '@bessemer/cornerstone/signature';
|
7
8
|
import { UnknownRecord } from 'type-fest';
|
8
|
-
export { Expressions, NumericExpressions, StringExpressions, ArrayExpressions };
|
9
|
+
export { Expressions, BasicExpressions, NumericExpressions, StringExpressions, ArrayExpressions };
|
9
10
|
export type ExpressionKey<ReturnType, ArgumentType extends Array<unknown>> = NominalType<string, ['ExpressionKey', ReturnType, ArgumentType]>;
|
10
11
|
export type Expression<ReturnType> = ReturnType | IExpression<ReturnType>;
|
11
12
|
export interface IExpression<ReturnType> {
|
package/dist/expression.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,kBAAkB,MAAM,qDAAqD,CAAA;AACzF,OAAO,KAAK,iBAAiB,MAAM,oDAAoD,CAAA;AACvF,OAAO,KAAK,gBAAgB,MAAM,mDAAmD,CAAA;AACrF,OAAO,KAAK,WAAW,MAAM,6CAA6C,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,mDAAmD,CAAA;AACrF,OAAO,KAAK,kBAAkB,MAAM,qDAAqD,CAAA;AACzF,OAAO,KAAK,iBAAiB,MAAM,oDAAoD,CAAA;AACvF,OAAO,KAAK,gBAAgB,MAAM,mDAAmD,CAAA;AACrF,OAAO,KAAK,WAAW,MAAM,6CAA6C,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;AAEjG,MAAM,MAAM,aAAa,CAAC,UAAU,EAAE,YAAY,SAAS,KAAK,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAA;AAE7I,MAAM,MAAM,UAAU,CAAC,UAAU,IAAI,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;AAEzE,MAAM,WAAW,WAAW,CAAC,UAAU;IACrC,aAAa,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CACzD;AAED,MAAM,WAAW,mBAAmB,CAAC,UAAU,EAAE,YAAY,SAAS,KAAK,CAAC,OAAO,CAAC;IAClF,aAAa,EAAE,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;CACvD;AAED,MAAM,WAAW,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAE,SAAQ,mBAAmB,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAAG;AAE3I,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAEpE,MAAM,MAAM,oBAAoB,CAC9B,UAAU,EACV,YAAY,SAAS,KAAK,CAAC,OAAO,CAAC,EACnC,cAAc,SAAS,UAAU,CAAC,UAAU,CAAC,IAC3C,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG;IAClD,aAAa,EAAE,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACtD,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,YAAY,KAAK,cAAc,CAAA;IACxD,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,iBAAiB,KAAK,UAAU,CAAA;CAC/G,CAAA;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC3D,aAAa,EAAE,UAAU,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB,CAAC,SAAS,EAAE,aAAa,SAAS,KAAK,CAAC,QAAQ,CAAC;IACrF,KAAK,CAAC,GAAG,UAAU,EAAE,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;CACnE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,aAAa,CAAA;CACzB,CAAA"}
|
package/dist/expression.js
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
// src/expression.ts
|
2
|
+
import * as BasicExpressions from "@bessemer/cornerstone/expression/basic-expression";
|
2
3
|
import * as NumericExpressions from "@bessemer/cornerstone/expression/numeric-expression";
|
3
4
|
import * as StringExpressions from "@bessemer/cornerstone/expression/string-expression";
|
4
5
|
import * as ArrayExpressions from "@bessemer/cornerstone/expression/array-expression";
|
5
6
|
import * as Expressions from "@bessemer/cornerstone/expression/expression";
|
6
7
|
export {
|
7
8
|
ArrayExpressions,
|
9
|
+
BasicExpressions,
|
8
10
|
Expressions,
|
9
11
|
NumericExpressions,
|
10
12
|
StringExpressions
|
package/dist/expression.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/expression.ts"],"sourcesContent":["import * as NumericExpressions from '@bessemer/cornerstone/expression/numeric-expression'\nimport * as StringExpressions from '@bessemer/cornerstone/expression/string-expression'\nimport * as ArrayExpressions from '@bessemer/cornerstone/expression/array-expression'\nimport * as Expressions from '@bessemer/cornerstone/expression/expression'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Signable } from '@bessemer/cornerstone/signature'\nimport { UnknownRecord } from 'type-fest'\n\nexport { Expressions, NumericExpressions, StringExpressions, ArrayExpressions }\n\nexport type ExpressionKey<ReturnType, ArgumentType extends Array<unknown>> = NominalType<string, ['ExpressionKey', ReturnType, ArgumentType]>\n\nexport type Expression<ReturnType> = ReturnType | IExpression<ReturnType>\n\nexport interface IExpression<ReturnType> {\n expressionKey: ExpressionKey<ReturnType, Array<unknown>>\n}\n\nexport interface ExpressionReference<ReturnType, ArgumentType extends Array<unknown>> {\n expressionKey: ExpressionKey<ReturnType, ArgumentType>\n}\n\nexport interface ReducingExpression<ReturnType, ArgumentType> extends ExpressionReference<ReturnType, [Array<Expression<ArgumentType>>]> {}\n\nexport type EvaluateExpression = <T>(expression: Expression<T>) => T\n\nexport type ExpressionDefinition<\n ReturnType,\n ArgumentType extends Array<unknown>,\n ExpressionType extends Expression<ReturnType>\n> = ExpressionReference<ReturnType, ArgumentType> & {\n expressionKey: ExpressionKey<ReturnType, ArgumentType>\n builder: (...parameters: ArgumentType) => ExpressionType\n resolver: (expression: ExpressionType, evaluate: EvaluateExpression, context: ExpressionContext) => ReturnType\n}\n\nexport interface ExpressionVariable<T> extends IExpression<T> {\n expressionKey: 'Variable'\n name: string\n}\n\nexport interface ParameterizedVariable<ValueType, ParameterType extends Array<Signable>> {\n apply(...parameters: ParameterType): ExpressionVariable<ValueType>\n}\n\nexport type ExpressionContext = {\n variables: UnknownRecord\n}\n"],"mappings":";AAAA,YAAY,wBAAwB;AACpC,YAAY,uBAAuB;AACnC,YAAY,sBAAsB;AAClC,YAAY,iBAAiB;","names":[]}
|
1
|
+
{"version":3,"sources":["../src/expression.ts"],"sourcesContent":["import * as BasicExpressions from '@bessemer/cornerstone/expression/basic-expression'\nimport * as NumericExpressions from '@bessemer/cornerstone/expression/numeric-expression'\nimport * as StringExpressions from '@bessemer/cornerstone/expression/string-expression'\nimport * as ArrayExpressions from '@bessemer/cornerstone/expression/array-expression'\nimport * as Expressions from '@bessemer/cornerstone/expression/expression'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Signable } from '@bessemer/cornerstone/signature'\nimport { UnknownRecord } from 'type-fest'\n\nexport { Expressions, BasicExpressions, NumericExpressions, StringExpressions, ArrayExpressions }\n\nexport type ExpressionKey<ReturnType, ArgumentType extends Array<unknown>> = NominalType<string, ['ExpressionKey', ReturnType, ArgumentType]>\n\nexport type Expression<ReturnType> = ReturnType | IExpression<ReturnType>\n\nexport interface IExpression<ReturnType> {\n expressionKey: ExpressionKey<ReturnType, Array<unknown>>\n}\n\nexport interface ExpressionReference<ReturnType, ArgumentType extends Array<unknown>> {\n expressionKey: ExpressionKey<ReturnType, ArgumentType>\n}\n\nexport interface ReducingExpression<ReturnType, ArgumentType> extends ExpressionReference<ReturnType, [Array<Expression<ArgumentType>>]> {}\n\nexport type EvaluateExpression = <T>(expression: Expression<T>) => T\n\nexport type ExpressionDefinition<\n ReturnType,\n ArgumentType extends Array<unknown>,\n ExpressionType extends Expression<ReturnType>\n> = ExpressionReference<ReturnType, ArgumentType> & {\n expressionKey: ExpressionKey<ReturnType, ArgumentType>\n builder: (...parameters: ArgumentType) => ExpressionType\n resolver: (expression: ExpressionType, evaluate: EvaluateExpression, context: ExpressionContext) => ReturnType\n}\n\nexport interface ExpressionVariable<T> extends IExpression<T> {\n expressionKey: 'Variable'\n name: string\n}\n\nexport interface ParameterizedVariable<ValueType, ParameterType extends Array<Signable>> {\n apply(...parameters: ParameterType): ExpressionVariable<ValueType>\n}\n\nexport type ExpressionContext = {\n variables: UnknownRecord\n}\n"],"mappings":";AAAA,YAAY,sBAAsB;AAClC,YAAY,wBAAwB;AACpC,YAAY,uBAAuB;AACnC,YAAY,sBAAsB;AAClC,YAAY,iBAAiB;","names":[]}
|
package/dist/object.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { mergeWith as unsafeMergeWith } from 'lodash-es';
|
2
2
|
import { produce } from 'immer';
|
3
|
-
import { NominalType } from '@bessemer/cornerstone/types';
|
4
|
-
import { UnknownRecord } from 'type-fest';
|
3
|
+
import { Basic, NominalType } from '@bessemer/cornerstone/types';
|
4
|
+
import { Primitive, UnknownRecord } from 'type-fest';
|
5
5
|
export declare const update: typeof produce;
|
6
6
|
export declare const isUndefined: (value: any) => value is undefined;
|
7
7
|
export declare const isNil: (value: any) => value is null | undefined;
|
@@ -54,6 +54,9 @@ export declare const path: (path: Array<string | number>) => ObjectPath;
|
|
54
54
|
export declare const parsePath: (path: string) => ObjectPath;
|
55
55
|
export declare const getPathValue: (object: UnknownRecord, initialPath: ObjectPath | string) => unknown | undefined;
|
56
56
|
export declare const applyPathValue: (object: UnknownRecord, initialPath: ObjectPath | string, value: unknown) => UnknownRecord | undefined;
|
57
|
+
export declare const isPrimitive: (value: any) => value is Primitive;
|
58
|
+
export declare const isBasic: (value: any) => value is Basic;
|
59
|
+
export declare const isBoolean: (value?: any) => value is boolean;
|
57
60
|
export type RecordAttribute<Type = unknown, Class extends string = 'RecordAttribute'> = NominalType<string, [Type, Class]>;
|
58
61
|
type RecordAttributeType<Attribute> = Attribute extends RecordAttribute<infer Type, string> ? Type : never;
|
59
62
|
export declare const getAttribute: <T extends RecordAttribute<unknown, string>>(record: UnknownRecord, attribute: T) => RecordAttributeType<T> | undefined;
|
package/dist/object.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,SAAS,IAAI,eAAe,EAC7B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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"}
|
package/dist/object.js
CHANGED
@@ -3,6 +3,8 @@ import {
|
|
3
3
|
clone as _clone,
|
4
4
|
cloneDeep as _cloneDeep,
|
5
5
|
invert as _invert,
|
6
|
+
isBoolean as _isBoolean,
|
7
|
+
isDate,
|
6
8
|
isEqual as _isEqual,
|
7
9
|
isNil as _isNil,
|
8
10
|
isNumber,
|
@@ -135,6 +137,10 @@ var applyPathValue = (object, initialPath, value) => {
|
|
135
137
|
var isPrimitive = (value) => {
|
136
138
|
return value === null || typeof value !== "object" && typeof value !== "function";
|
137
139
|
};
|
140
|
+
var isBasic = (value) => {
|
141
|
+
return isNumber(value) || isString(value) || isDate(value) || isBoolean(value);
|
142
|
+
};
|
143
|
+
var isBoolean = _isBoolean;
|
138
144
|
var getAttribute = (record, attribute) => {
|
139
145
|
return record[attribute];
|
140
146
|
};
|
@@ -152,10 +158,13 @@ export {
|
|
152
158
|
getAttribute,
|
153
159
|
getPathValue,
|
154
160
|
invert,
|
161
|
+
isBasic,
|
162
|
+
isBoolean,
|
155
163
|
isNil,
|
156
164
|
isObject,
|
157
165
|
isPlainObject,
|
158
166
|
isPresent,
|
167
|
+
isPrimitive,
|
159
168
|
isUndefined,
|
160
169
|
isValidKey,
|
161
170
|
mapValues,
|
package/dist/object.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/object.ts"],"sourcesContent":["import {\n clone as _clone,\n cloneDeep as _cloneDeep,\n invert as _invert,\n isEqual as _isEqual,\n isNil as _isNil,\n isNumber,\n isObject as _isObject,\n isPlainObject as _isPlainObject,\n isString,\n isUndefined as _isUndefined,\n mapValues as _mapValues,\n merge as unsafeMerge,\n mergeWith as unsafeMergeWith,\n} from 'lodash-es'\nimport { produce } from 'immer'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Primitive, UnknownRecord } from 'type-fest'\n\nexport const update: typeof produce = produce\n\nexport const isUndefined = _isUndefined\nexport const isNil = _isNil\nexport const isPresent = <T>(value: T): value is NonNullable<T> => {\n return !isNil(value)\n}\nexport const isObject = _isObject\nexport const isPlainObject = _isPlainObject\nexport const deepEqual = _isEqual\nexport const invert = _invert\nexport const mapValues = _mapValues\n\nexport const clone = _clone\nexport const cloneDeep = _cloneDeep\n\nexport const mergeAll = <T>(objects: Array<T>): T => {\n return objects.reduce((x, y) => merge(x, y))\n}\n\nexport function merge<TObject, TSource>(object: TObject, source: TSource): TObject & TSource\nexport function merge<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2\nexport function merge<TObject, TSource1, TSource2, TSource3>(\n object: TObject,\n source1: TSource1,\n source2: TSource2,\n source3: TSource3\n): TObject & TSource1 & TSource2 & TSource3\nexport function merge<TObject, TSource1, TSource2, TSource3, TSource4>(\n object: TObject,\n source1: TSource1,\n source2: TSource2,\n source3: TSource3,\n source4: TSource4\n): TObject & TSource1 & TSource2 & TSource3 & TSource4\nexport function merge(object: any, ...otherArgs: any[]): any {\n return unsafeMerge({}, object, ...otherArgs)\n}\n\nexport function mergeInto<Source1, Source2>(source: Source1, values: Source2): asserts source is Source1 & Source2 {\n unsafeMerge(source, values)\n}\n\nexport const mergeWith: typeof unsafeMergeWith = (...args: Array<any>) => {\n const clone = cloneDeep(args[0])\n return unsafeMergeWith.apply(null, [clone, ...args.slice(1)])\n}\n\nexport type ObjectDiffResult = {\n elementsUpdated: Record<string, { originalValue: unknown; updatedValue: unknown }>\n elementsAdded: UnknownRecord\n elementsRemoved: UnknownRecord\n}\n\nexport function diffShallow(original: UnknownRecord, updated: UnknownRecord): ObjectDiffResult {\n const result: ObjectDiffResult = {\n elementsUpdated: {},\n elementsAdded: {},\n elementsRemoved: {},\n }\n\n for (const [key, originalValue] of Object.entries(original)) {\n const updatedValue = updated[key]\n if (updatedValue === undefined) {\n result.elementsRemoved[key] = originalValue\n } else if (!deepEqual(originalValue, updatedValue)) {\n result.elementsUpdated[key] = { originalValue: originalValue, updatedValue: updatedValue }\n }\n }\n\n for (const [key, updatedValue] of Object.entries(updated)) {\n const originalValue = original[key]\n if (originalValue === undefined) {\n result.elementsAdded[key] = updatedValue\n }\n }\n return result\n}\n\nexport const isValidKey = (field: PropertyKey, obj: object): field is keyof typeof obj => {\n return field in obj\n}\n\n/** Determines if the list of fields are present on the object (not null or undefined), with type inference */\nexport function fieldsPresent<T extends object, K extends keyof T>(\n object: T,\n fields: Array<K>\n): object is Exclude<T, K> & Required<{ [P in K]: NonNullable<T[P]> }> {\n return fields.every((field) => isPresent(object[field]))\n}\n\nexport type ObjectPath = {\n path: Array<string | number>\n}\n\nexport const path = (path: Array<string | number>): ObjectPath => {\n return { path }\n}\n\nexport const parsePath = (path: string): ObjectPath => {\n const result: Array<string | number> = []\n const regex = /([^.\\[\\]]+)|\\[(\\d+)]/g\n\n let match: RegExpExecArray | null\n while ((match = regex.exec(path)) !== null) {\n if (match[1] !== undefined) {\n result.push(match[1])\n } else if (match[2] !== undefined) {\n result.push(Number(match[2]))\n }\n }\n\n return { path: result }\n}\n\nconst pathify = (path: ObjectPath | string): ObjectPath => {\n if (isString(path)) {\n return parsePath(path)\n }\n\n return path as ObjectPath\n}\n\nexport const getPathValue = (object: UnknownRecord, initialPath: ObjectPath | string): unknown | undefined => {\n const path = pathify(initialPath)\n let current: any = object\n\n for (const key of path.path) {\n if (isPrimitive(current)) {\n return undefined\n }\n\n current = current[key]\n }\n\n return current\n}\n\nexport const applyPathValue = (object: UnknownRecord, initialPath: ObjectPath | string, value: unknown): UnknownRecord | undefined => {\n const path = pathify(initialPath)\n\n const newObject = update(object, (draft) => {\n let current: any = draft\n\n for (let i = 0; i < path.path.length; i++) {\n const key = path.path[i]!\n const isLastKey = i === path.path.length - 1\n\n if (isPrimitive(current)) {\n return\n }\n\n if (Array.isArray(current)) {\n if (!isNumber(key)) {\n return\n }\n\n if (key >= current.length) {\n return\n }\n }\n\n if (isLastKey) {\n current[key] = value\n } else {\n current = current[key]\n }\n }\n })\n\n if (newObject === object) {\n return undefined\n }\n\n return newObject\n}\n\nconst isPrimitive = (value: any): value is Primitive => {\n return value === null || (typeof value !== 'object' && typeof value !== 'function')\n}\n\ntype TransformFunction = (value: any, path: (string | number)[], key: string | number, parent: any) => any\n\nconst walk = (value: any, transform: TransformFunction, path: (string | number)[] = []): any => {\n if (isNil(value) || isPrimitive(value)) {\n return value\n }\n\n if (Array.isArray(value)) {\n return value.map((value, index) => {\n const currentPath = [...path, index]\n return walk(transform(value, currentPath, index, value), transform, currentPath)\n })\n }\n\n const result: any = {}\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n const currentPath = [...path, key]\n const transformedValue = transform(value[key], currentPath, key, value)\n result[key] = walk(transformedValue, transform, currentPath)\n }\n }\n\n return result\n}\n\nexport type RecordAttribute<Type = unknown, Class extends string = 'RecordAttribute'> = NominalType<string, [Type, Class]>\ntype RecordAttributeType<Attribute> = Attribute extends RecordAttribute<infer Type, string> ? Type : never\n\nexport const getAttribute = <T extends RecordAttribute<unknown, string>>(record: UnknownRecord, attribute: T): RecordAttributeType<T> | undefined => {\n return record[attribute] as RecordAttributeType<T> | undefined\n}\n\nexport const coerceNil = <T>(value: T | null | undefined): T | undefined => {\n return isNil(value) ? undefined : value\n}\n"],"mappings":";AAAA;AAAA,EACE,SAAS;AAAA,EACT,aAAa;AAAA,EACb,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT;AAAA,EACA,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB;AAAA,EACA,eAAe;AAAA,EACf,aAAa;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,OACR;AACP,SAAS,eAAe;AAIjB,IAAM,SAAyB;AAE/B,IAAM,cAAc;AACpB,IAAM,QAAQ;AACd,IAAM,YAAY,CAAI,UAAsC;AACjE,SAAO,CAAC,MAAM,KAAK;AACrB;AACO,IAAM,WAAW;AACjB,IAAM,gBAAgB;AACtB,IAAM,YAAY;AAClB,IAAM,SAAS;AACf,IAAM,YAAY;AAElB,IAAM,QAAQ;AACd,IAAM,YAAY;AAElB,IAAM,WAAW,CAAI,YAAyB;AACnD,SAAO,QAAQ,OAAO,CAAC,GAAG,MAAM,MAAM,GAAG,CAAC,CAAC;AAC7C;AAiBO,SAAS,MAAM,WAAgB,WAAuB;AAC3D,SAAO,YAAY,CAAC,GAAG,QAAQ,GAAG,SAAS;AAC7C;AAEO,SAAS,UAA4B,QAAiB,QAAsD;AACjH,cAAY,QAAQ,MAAM;AAC5B;AAEO,IAAM,YAAoC,IAAI,SAAqB;AACxE,QAAMA,SAAQ,UAAU,KAAK,CAAC,CAAC;AAC/B,SAAO,gBAAgB,MAAM,MAAM,CAACA,QAAO,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC;AAC9D;AAQO,SAAS,YAAY,UAAyB,SAA0C;AAC7F,QAAM,SAA2B;AAAA,IAC/B,iBAAiB,CAAC;AAAA,IAClB,eAAe,CAAC;AAAA,IAChB,iBAAiB,CAAC;AAAA,EACpB;AAEA,aAAW,CAAC,KAAK,aAAa,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC3D,UAAM,eAAe,QAAQ,GAAG;AAChC,QAAI,iBAAiB,QAAW;AAC9B,aAAO,gBAAgB,GAAG,IAAI;AAAA,IAChC,WAAW,CAAC,UAAU,eAAe,YAAY,GAAG;AAClD,aAAO,gBAAgB,GAAG,IAAI,EAAE,eAA8B,aAA2B;AAAA,IAC3F;AAAA,EACF;AAEA,aAAW,CAAC,KAAK,YAAY,KAAK,OAAO,QAAQ,OAAO,GAAG;AACzD,UAAM,gBAAgB,SAAS,GAAG;AAClC,QAAI,kBAAkB,QAAW;AAC/B,aAAO,cAAc,GAAG,IAAI;AAAA,IAC9B;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,OAAoB,QAA2C;AACxF,SAAO,SAAS;AAClB;AAGO,SAAS,cACd,QACA,QACqE;AACrE,SAAO,OAAO,MAAM,CAAC,UAAU,UAAU,OAAO,KAAK,CAAC,CAAC;AACzD;AAMO,IAAM,OAAO,CAACC,UAA6C;AAChE,SAAO,EAAE,MAAAA,MAAK;AAChB;AAEO,IAAM,YAAY,CAACA,UAA6B;AACrD,QAAM,SAAiC,CAAC;AACxC,QAAM,QAAQ;AAEd,MAAI;AACJ,UAAQ,QAAQ,MAAM,KAAKA,KAAI,OAAO,MAAM;AAC1C,QAAI,MAAM,CAAC,MAAM,QAAW;AAC1B,aAAO,KAAK,MAAM,CAAC,CAAC;AAAA,IACtB,WAAW,MAAM,CAAC,MAAM,QAAW;AACjC,aAAO,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,OAAO;AACxB;AAEA,IAAM,UAAU,CAACA,UAA0C;AACzD,MAAI,SAASA,KAAI,GAAG;AAClB,WAAO,UAAUA,KAAI;AAAA,EACvB;AAEA,SAAOA;AACT;AAEO,IAAM,eAAe,CAAC,QAAuB,gBAA0D;AAC5G,QAAMA,QAAO,QAAQ,WAAW;AAChC,MAAI,UAAe;AAEnB,aAAW,OAAOA,MAAK,MAAM;AAC3B,QAAI,YAAY,OAAO,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,cAAU,QAAQ,GAAG;AAAA,EACvB;AAEA,SAAO;AACT;AAEO,IAAM,iBAAiB,CAAC,QAAuB,aAAkC,UAA8C;AACpI,QAAMA,QAAO,QAAQ,WAAW;AAEhC,QAAM,YAAY,OAAO,QAAQ,CAAC,UAAU;AAC1C,QAAI,UAAe;AAEnB,aAAS,IAAI,GAAG,IAAIA,MAAK,KAAK,QAAQ,KAAK;AACzC,YAAM,MAAMA,MAAK,KAAK,CAAC;AACvB,YAAM,YAAY,MAAMA,MAAK,KAAK,SAAS;AAE3C,UAAI,YAAY,OAAO,GAAG;AACxB;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,YAAI,CAAC,SAAS,GAAG,GAAG;AAClB;AAAA,QACF;AAEA,YAAI,OAAO,QAAQ,QAAQ;AACzB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,WAAW;AACb,gBAAQ,GAAG,IAAI;AAAA,MACjB,OAAO;AACL,kBAAU,QAAQ,GAAG;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAI,cAAc,QAAQ;AACxB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,cAAc,CAAC,UAAmC;AACtD,SAAO,UAAU,QAAS,OAAO,UAAU,YAAY,OAAO,UAAU;AAC1E;AA+BO,IAAM,eAAe,CAA6C,QAAuB,cAAqD;AACnJ,SAAO,OAAO,SAAS;AACzB;AAEO,IAAM,YAAY,CAAI,UAA+C;AAC1E,SAAO,MAAM,KAAK,IAAI,SAAY;AACpC;","names":["clone","path"]}
|
1
|
+
{"version":3,"sources":["../src/object.ts"],"sourcesContent":["import {\n clone as _clone,\n cloneDeep as _cloneDeep,\n invert as _invert, isBoolean as _isBoolean, isDate,\n isEqual as _isEqual,\n isNil as _isNil,\n isNumber,\n isObject as _isObject,\n isPlainObject as _isPlainObject,\n isString,\n isUndefined as _isUndefined,\n mapValues as _mapValues,\n merge as unsafeMerge,\n mergeWith as unsafeMergeWith\n} from 'lodash-es'\nimport { produce } from 'immer'\nimport { Basic, NominalType } from '@bessemer/cornerstone/types'\nimport { Primitive, UnknownRecord } from 'type-fest'\n\nexport const update: typeof produce = produce\n\nexport const isUndefined = _isUndefined\nexport const isNil = _isNil\nexport const isPresent = <T>(value: T): value is NonNullable<T> => {\n return !isNil(value)\n}\nexport const isObject = _isObject\nexport const isPlainObject = _isPlainObject\nexport const deepEqual = _isEqual\nexport const invert = _invert\nexport const mapValues = _mapValues\n\nexport const clone = _clone\nexport const cloneDeep = _cloneDeep\n\nexport const mergeAll = <T>(objects: Array<T>): T => {\n return objects.reduce((x, y) => merge(x, y))\n}\n\nexport function merge<TObject, TSource>(object: TObject, source: TSource): TObject & TSource\nexport function merge<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2\nexport function merge<TObject, TSource1, TSource2, TSource3>(\n object: TObject,\n source1: TSource1,\n source2: TSource2,\n source3: TSource3\n): TObject & TSource1 & TSource2 & TSource3\nexport function merge<TObject, TSource1, TSource2, TSource3, TSource4>(\n object: TObject,\n source1: TSource1,\n source2: TSource2,\n source3: TSource3,\n source4: TSource4\n): TObject & TSource1 & TSource2 & TSource3 & TSource4\nexport function merge(object: any, ...otherArgs: any[]): any {\n return unsafeMerge({}, object, ...otherArgs)\n}\n\nexport function mergeInto<Source1, Source2>(source: Source1, values: Source2): asserts source is Source1 & Source2 {\n unsafeMerge(source, values)\n}\n\nexport const mergeWith: typeof unsafeMergeWith = (...args: Array<any>) => {\n const clone = cloneDeep(args[0])\n return unsafeMergeWith.apply(null, [clone, ...args.slice(1)])\n}\n\nexport type ObjectDiffResult = {\n elementsUpdated: Record<string, { originalValue: unknown; updatedValue: unknown }>\n elementsAdded: UnknownRecord\n elementsRemoved: UnknownRecord\n}\n\nexport function diffShallow(original: UnknownRecord, updated: UnknownRecord): ObjectDiffResult {\n const result: ObjectDiffResult = {\n elementsUpdated: {},\n elementsAdded: {},\n elementsRemoved: {},\n }\n\n for (const [key, originalValue] of Object.entries(original)) {\n const updatedValue = updated[key]\n if (updatedValue === undefined) {\n result.elementsRemoved[key] = originalValue\n } else if (!deepEqual(originalValue, updatedValue)) {\n result.elementsUpdated[key] = { originalValue: originalValue, updatedValue: updatedValue }\n }\n }\n\n for (const [key, updatedValue] of Object.entries(updated)) {\n const originalValue = original[key]\n if (originalValue === undefined) {\n result.elementsAdded[key] = updatedValue\n }\n }\n return result\n}\n\nexport const isValidKey = (field: PropertyKey, obj: object): field is keyof typeof obj => {\n return field in obj\n}\n\n/** Determines if the list of fields are present on the object (not null or undefined), with type inference */\nexport function fieldsPresent<T extends object, K extends keyof T>(\n object: T,\n fields: Array<K>\n): object is Exclude<T, K> & Required<{ [P in K]: NonNullable<T[P]> }> {\n return fields.every((field) => isPresent(object[field]))\n}\n\nexport type ObjectPath = {\n path: Array<string | number>\n}\n\nexport const path = (path: Array<string | number>): ObjectPath => {\n return { path }\n}\n\nexport const parsePath = (path: string): ObjectPath => {\n const result: Array<string | number> = []\n const regex = /([^.\\[\\]]+)|\\[(\\d+)]/g\n\n let match: RegExpExecArray | null\n while ((match = regex.exec(path)) !== null) {\n if (match[1] !== undefined) {\n result.push(match[1])\n } else if (match[2] !== undefined) {\n result.push(Number(match[2]))\n }\n }\n\n return { path: result }\n}\n\nconst pathify = (path: ObjectPath | string): ObjectPath => {\n if (isString(path)) {\n return parsePath(path)\n }\n\n return path as ObjectPath\n}\n\nexport const getPathValue = (object: UnknownRecord, initialPath: ObjectPath | string): unknown | undefined => {\n const path = pathify(initialPath)\n let current: any = object\n\n for (const key of path.path) {\n if (isPrimitive(current)) {\n return undefined\n }\n\n current = current[key]\n }\n\n return current\n}\n\nexport const applyPathValue = (object: UnknownRecord, initialPath: ObjectPath | string, value: unknown): UnknownRecord | undefined => {\n const path = pathify(initialPath)\n\n const newObject = update(object, (draft) => {\n let current: any = draft\n\n for (let i = 0; i < path.path.length; i++) {\n const key = path.path[i]!\n const isLastKey = i === path.path.length - 1\n\n if (isPrimitive(current)) {\n return\n }\n\n if (Array.isArray(current)) {\n if (!isNumber(key)) {\n return\n }\n\n if (key >= current.length) {\n return\n }\n }\n\n if (isLastKey) {\n current[key] = value\n } else {\n current = current[key]\n }\n }\n })\n\n if (newObject === object) {\n return undefined\n }\n\n return newObject\n}\n\nexport const isPrimitive = (value: any): value is Primitive => {\n return value === null || (typeof value !== 'object' && typeof value !== 'function')\n}\n\nexport const isBasic = (value: any): value is Basic => {\n return isNumber(value) || isString(value) || isDate(value) || isBoolean(value)\n}\n\nexport const isBoolean = _isBoolean\n\ntype TransformFunction = (value: any, path: (string | number)[], key: string | number, parent: any) => any\n\nconst walk = (value: any, transform: TransformFunction, path: (string | number)[] = []): any => {\n if (isNil(value) || isPrimitive(value)) {\n return value\n }\n\n if (Array.isArray(value)) {\n return value.map((value, index) => {\n const currentPath = [...path, index]\n return walk(transform(value, currentPath, index, value), transform, currentPath)\n })\n }\n\n const result: any = {}\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n const currentPath = [...path, key]\n const transformedValue = transform(value[key], currentPath, key, value)\n result[key] = walk(transformedValue, transform, currentPath)\n }\n }\n\n return result\n}\n\nexport type RecordAttribute<Type = unknown, Class extends string = 'RecordAttribute'> = NominalType<string, [Type, Class]>\ntype RecordAttributeType<Attribute> = Attribute extends RecordAttribute<infer Type, string> ? Type : never\n\nexport const getAttribute = <T extends RecordAttribute<unknown, string>>(record: UnknownRecord, attribute: T): RecordAttributeType<T> | undefined => {\n return record[attribute] as RecordAttributeType<T> | undefined\n}\n\nexport const coerceNil = <T>(value: T | null | undefined): T | undefined => {\n return isNil(value) ? undefined : value\n}\n"],"mappings":"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","names":["clone","path"]}
|
package/dist/signature.d.ts
CHANGED
package/dist/signature.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AAKnD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAEhF,eAAO,MAAM,IAAI,GAAI,OAAO,QAAQ,KAAG,MAAM,GAAG,MAoB/C,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAEtE,CAAA"}
|
package/dist/signature.js
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
// src/signature.ts
|
2
|
-
import { Objects, References } from "@bessemer/cornerstone";
|
2
|
+
import { Dates, Objects, References } from "@bessemer/cornerstone";
|
3
3
|
var sign = (value) => {
|
4
4
|
if (Objects.isObject(value)) {
|
5
|
-
if (
|
5
|
+
if (Dates.isDate(value)) {
|
6
|
+
return value.getTime();
|
7
|
+
} else if (References.isReferencable(value)) {
|
6
8
|
return value.reference.id;
|
7
9
|
} else {
|
8
10
|
return value.id;
|
9
11
|
}
|
10
12
|
}
|
13
|
+
if (value === true) {
|
14
|
+
return 1;
|
15
|
+
}
|
16
|
+
if (value === false) {
|
17
|
+
return 0;
|
18
|
+
}
|
11
19
|
return value;
|
12
20
|
};
|
13
21
|
var signAll = (values) => {
|
package/dist/signature.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import { Objects, References } from '@bessemer/cornerstone'\nimport { Reference } from '@bessemer/cornerstone/reference'\n\nexport type Signable =
|
1
|
+
{"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import { Dates, Objects, References } from '@bessemer/cornerstone'\nimport { Reference } from '@bessemer/cornerstone/reference'\nimport { Basic } from '@bessemer/cornerstone/types'\n\n// JOHN it is probably worth revisiting this in the context of using this library code more frequently... in particular\n// all of these things have similar properties (\"primitives\", sortable, value equality, etc.) but this method of implementation\n// forces them all to be converted to strings or numbers first which is an expensive operation.\nexport type Signable = Basic | { id: string } | { reference: Reference<string> }\n\nexport const sign = (value: Signable): string | number => {\n if (Objects.isObject(value)) {\n if(Dates.isDate(value)) {\n return value.getTime()\n }\n else if (References.isReferencable(value)) {\n return value.reference.id\n } else {\n return value.id\n }\n }\n\n if(value === true) {\n return 1\n }\n if(value === false) {\n return 0\n }\n\n return value\n}\n\nexport const signAll = (values: Array<Signable>): Array<string | number> => {\n return values.map(sign)\n}\n"],"mappings":";AAAA,SAAS,OAAO,SAAS,kBAAkB;AASpC,IAAM,OAAO,CAAC,UAAqC;AACxD,MAAI,QAAQ,SAAS,KAAK,GAAG;AAC3B,QAAG,MAAM,OAAO,KAAK,GAAG;AACtB,aAAO,MAAM,QAAQ;AAAA,IACvB,WACS,WAAW,eAAe,KAAK,GAAG;AACzC,aAAO,MAAM,UAAU;AAAA,IACzB,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,MAAG,UAAU,MAAM;AACjB,WAAO;AAAA,EACT;AACA,MAAG,UAAU,OAAO;AAClB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,UAAU,CAAC,WAAoD;AAC1E,SAAO,OAAO,IAAI,IAAI;AACxB;","names":[]}
|
package/dist/types.d.ts
CHANGED
@@ -15,4 +15,5 @@ export type Nil = null | undefined;
|
|
15
15
|
export type DeepPartial<T> = {
|
16
16
|
[P in keyof T]?: T[P] extends Array<infer U> ? DeepPartial<U>[] : T[P] extends object | undefined ? DeepPartial<T[P]> : T[P];
|
17
17
|
};
|
18
|
+
export type Basic = string | number | boolean | Date;
|
18
19
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEvC,MAAM,WAAW,aAAa,CAAC,cAAc;IAC3C,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,CAAA;AAE9E,MAAM,MAAM,YAAY,CAAC,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;IACzE,CAAC,QAAQ,CAAC,EAAE;SACT,CAAC,IAAI,aAAa,GAAG,IAAI;KAC3B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3G,MAAM,MAAM,SAAS,GAAG,OAAO,CAAA;AAE/B,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;AAElC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7H,CAAA"}
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEvC,MAAM,WAAW,aAAa,CAAC,cAAc;IAC3C,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,CAAA;AAE9E,MAAM,MAAM,YAAY,CAAC,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;IACzE,CAAC,QAAQ,CAAC,EAAE;SACT,CAAC,IAAI,aAAa,GAAG,IAAI;KAC3B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3G,MAAM,MAAM,SAAS,GAAG,OAAO,CAAA;AAE/B,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;AAElC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7H,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@bessemer/cornerstone",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.5.
|
4
|
+
"version": "0.5.15",
|
5
5
|
"module": "./dist/index.js",
|
6
6
|
"types": "./dist/index.d.ts",
|
7
7
|
"sideEffects": false,
|
@@ -22,6 +22,7 @@
|
|
22
22
|
"clean": "rm -rf dist && rm -rf .turbo"
|
23
23
|
},
|
24
24
|
"dependencies": {
|
25
|
+
"@types/lodash-es": "4.17.12",
|
25
26
|
"date-fns": "4.1.0",
|
26
27
|
"immer": "10.1.1",
|
27
28
|
"lodash-es": "4.17.21",
|
@@ -32,7 +33,6 @@
|
|
32
33
|
"zod": "3.24.2"
|
33
34
|
},
|
34
35
|
"devDependencies": {
|
35
|
-
"@types/lodash-es": "4.17.12",
|
36
36
|
"pino-pretty": "13.0.0"
|
37
37
|
},
|
38
38
|
"files": [
|