@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.
@@ -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<string | number | null>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"comparator.d.ts","sourceRoot":"","sources":["../src/comparator.ts"],"names":[],"mappings":"AAEA,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,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB3D,CAAA;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAa/D;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,OAAK,UAAU,CAAC,CAAC,CAW3C,CAAA"}
1
+ {"version":3,"file":"comparator.d.ts","sourceRoot":"","sources":["../src/comparator.ts"],"names":[],"mappings":"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"}
@@ -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 (Maths.isNumber(first)) {
35
- return -1;
36
- } else {
37
- return 1;
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
  ]);
@@ -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<string | number | 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 (Maths.isNumber(first)) {\n return -1\n } else {\n return 1\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,eAAe;AAIxB,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,MAA0C;AAE/D,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,SAAS,KAAK,GAAG;AAChC,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,aAAgB,QAAiC;AAC/D,SAAO,UAAU;AAAA,IACf,UAAU;AAAA,IACV,CAAC,OAAO,WAAW;AACjB,UAAI,UAAU,UAAU,WAAW,QAAQ;AACzC,eAAO;AAAA,MACT,WAAW,UAAU,UAAU,WAAW,QAAQ;AAChD,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,IAAM,YAAY,MAAwB;AAC/C,SAAO,CAAC,OAAO,WAAW;AACxB,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AACA,QAAI,WAAW,MAAM;AACnB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/comparator.ts"],"sourcesContent":["import { 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;
@@ -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;AAC3I,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAGzD,eAAO,MAAM,GAAG,QAAO,IAEtB,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,YAAY,MAAM,KAAG,IAEvC,CAAA;AAED,eAAO,MAAM,eAAe,yBAAmB,CAAA;AAC/C,eAAO,MAAM,QAAQ,kBAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,kBAAY,CAAA;AACjC,eAAO,MAAM,OAAO,iBAAW,CAAA;AAE/B,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,EAAE,UAAU,QAAQ,KAAG,IAAiE,CAAA"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,eAAe,IAAI,gBAAgB,EAAE,OAAO,IAAI,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAY,MAAM,UAAU,CAAA;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;AAEjI,SAAS,iBAAiB;AAEnB,IAAM,MAAM,MAAY;AAC7B,SAAO,oBAAI,KAAK;AAClB;AAEO,IAAM,KAAK,CAAC,eAA6B;AAC9C,SAAO,SAAS,UAAU;AAC5B;AAEO,IAAM,kBAAkB;AACxB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,UAAU;AAEhB,IAAM,cAAc,CAAC,MAAY,aAA6B,gBAAgB,MAAM,UAAU,eAAe,QAAQ,CAAC;","names":[]}
1
+ {"version":3,"sources":["../src/date.ts"],"sourcesContent":["import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as _isAfter, isBefore as _isBefore, parseISO } from 'date-fns'\nimport { 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;AAEzC,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"}
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,\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'\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 NumericExpressions.SumExpression,\n NumericExpressions.MultiplyExpression,\n NumericExpressions.GreaterThanExpression,\n NumericExpressions.LessThanExpression,\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"]}
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;AAElD,eAAO,MAAM,kBAAkB;;;EAQ7B,CAAA;AAEF,eAAO,MAAM,QAAQ;;;CAA6B,CAAA;AAElD,eAAO,MAAM,qBAAqB;;;EAQhC,CAAA;AAEF,eAAO,MAAM,WAAW;;;CAAgC,CAAA;AAExD,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"}
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\nexport const LessThanExpression = defineExpression({\n expressionKey: 'Numeric.LessThan',\n builder: (left: Expression<number>, right: Expression<number>) => {\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 GreaterThanExpression = defineExpression({\n expressionKey: 'Numeric.GreaterThan',\n builder: (left: Expression<number>, right: Expression<number>) => {\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 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":[]}
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":[]}
@@ -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> {
@@ -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;AAE/E,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"}
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"}
@@ -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
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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"}
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,
@@ -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":"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","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"]}
@@ -1,5 +1,6 @@
1
1
  import { Reference } from '@bessemer/cornerstone/reference';
2
- export type Signable = number | string | {
2
+ import { Basic } from '@bessemer/cornerstone/types';
3
+ export type Signable = Basic | {
3
4
  id: string;
4
5
  } | {
5
6
  reference: Reference<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAE1F,eAAO,MAAM,IAAI,GAAI,OAAO,QAAQ,KAAG,MAAM,GAAG,MAU/C,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAEtE,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 (References.isReferencable(value)) {
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) => {
@@ -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 = number | string | { id: string } | { reference: Reference<string> }\n\nexport const sign = (value: Signable): string | number => {\n if (Objects.isObject(value)) {\n if (References.isReferencable(value)) {\n return value.reference.id\n } else {\n return value.id\n }\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,SAAS,kBAAkB;AAK7B,IAAM,OAAO,CAAC,UAAqC;AACxD,MAAI,QAAQ,SAAS,KAAK,GAAG;AAC3B,QAAI,WAAW,eAAe,KAAK,GAAG;AACpC,aAAO,MAAM,UAAU;AAAA,IACzB,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,UAAU,CAAC,WAAoD;AAC1E,SAAO,OAAO,IAAI,IAAI;AACxB;","names":[]}
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
@@ -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.13",
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": [