@bessemer/cornerstone 0.5.49 → 0.5.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/array.js +2 -2
  2. package/dist/array.js.map +1 -1
  3. package/dist/assertion.d.ts +8 -0
  4. package/dist/assertion.d.ts.map +1 -0
  5. package/dist/assertion.js +27 -0
  6. package/dist/assertion.js.map +1 -0
  7. package/dist/expression/core-expression.d.ts.map +1 -1
  8. package/dist/expression/core-expression.js +2 -2
  9. package/dist/expression/core-expression.js.map +1 -1
  10. package/dist/expression/expression-evaluator.js +3 -3
  11. package/dist/expression/expression-evaluator.js.map +1 -1
  12. package/dist/expression/expression-mapper.d.ts.map +1 -1
  13. package/dist/expression/expression-mapper.js +5 -5
  14. package/dist/expression/expression-mapper.js.map +1 -1
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/lazy.d.ts +1 -1
  20. package/dist/lazy.d.ts.map +1 -1
  21. package/dist/lazy.js +1 -6
  22. package/dist/lazy.js.map +1 -1
  23. package/dist/mime-type.d.ts +40 -34
  24. package/dist/mime-type.d.ts.map +1 -1
  25. package/dist/mime-type.js +12 -0
  26. package/dist/mime-type.js.map +1 -1
  27. package/dist/misc.js +2 -2
  28. package/dist/misc.js.map +1 -1
  29. package/dist/patch.js +2 -2
  30. package/dist/patch.js.map +1 -1
  31. package/dist/retry.js +2 -2
  32. package/dist/retry.js.map +1 -1
  33. package/dist/sql/sql-expression-parser.js +2 -2
  34. package/dist/sql/sql-expression-parser.js.map +1 -1
  35. package/dist/ulid.js +2 -2
  36. package/dist/ulid.js.map +1 -1
  37. package/dist/uuid.js +2 -2
  38. package/dist/uuid.js.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/precondition.d.ts +0 -8
  41. package/dist/precondition.d.ts.map +0 -1
  42. package/dist/precondition.js +0 -27
  43. package/dist/precondition.js.map +0 -1
package/dist/array.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  uniqBy,
10
10
  uniqWith
11
11
  } from "lodash-es";
12
- import { Comparators, Eithers, Preconditions, Signatures } from "@bessemer/cornerstone";
12
+ import { Assertions, Comparators, Eithers, Signatures } from "@bessemer/cornerstone";
13
13
  var equalWith = (first2, second, equalitor) => {
14
14
  if (first2.length !== second.length) {
15
15
  return false;
@@ -90,7 +90,7 @@ var first = (array) => {
90
90
  return array != null && array.length ? array[0] : void 0;
91
91
  };
92
92
  var only = (array) => {
93
- Preconditions.isTrue(array.length === 1);
93
+ Assertions.assertTrue(array.length === 1);
94
94
  return first(array);
95
95
  };
96
96
  var last = (array) => {
package/dist/array.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/array.ts"],"sourcesContent":["import {\n differenceBy as _differenceBy,\n differenceWith as _differenceWith,\n flatten as _flatten,\n groupBy as _groupBy,\n isEmpty as _isEmpty,\n range as _range,\n uniqBy,\n uniqWith,\n} from 'lodash-es'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\nimport { Signable } from '@bessemer/cornerstone/signature'\nimport { Comparators, Eithers, Preconditions, Signatures } from '@bessemer/cornerstone'\nimport { Either } from '@bessemer/cornerstone/either'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\n\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\nexport const equalBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean => {\n return equalWith(first, second, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, Signatures.sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return _differenceWith(first, second, equalitor)\n}\n\nexport const differenceBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return _differenceBy(first, second, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, Signatures.sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport const removeBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T> => {\n return differenceBy(array, [element], mapper)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport const containsBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean => {\n return containsWith(array, element, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, Signatures.sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport const containsAllBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean =>\n isEmpty(differenceBy(second, first, mapper))\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return uniqWith(array, equalitor)\n}\n\nexport const dedupeBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return uniqBy(array, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, Signatures.sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport const sortBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return sortWith(\n array,\n Comparators.compareBy((it) => Signatures.sign(mapper(it)), Comparators.natural())\n )\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, Signatures.sign)\n\nexport const concatenate = <T>(array: Array<T> | null | undefined, ...values: Array<T | T[]>): Array<T> => {\n if (array == null) {\n return []\n }\n\n const result = [...array]\n\n if (values.length === 0) {\n return result\n }\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value as T)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n Preconditions.isTrue(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = _isEmpty\n// TODO make a better range function\nexport const range = _range\n// TODO should this live in collections?\nexport const groupBy = _groupBy\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T> | null | undefined, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n if (array == null || !array.length) {\n return\n }\n\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>): [Array<L>, Array<R>] => {\n return Eithers.split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = _flatten\n"],"mappings":"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","names":["first","second"]}
1
+ {"version":3,"sources":["../src/array.ts"],"sourcesContent":["import {\n differenceBy as _differenceBy,\n differenceWith as _differenceWith,\n flatten as _flatten,\n groupBy as _groupBy,\n isEmpty as _isEmpty,\n range as _range,\n uniqBy,\n uniqWith,\n} from 'lodash-es'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\nimport { Signable } from '@bessemer/cornerstone/signature'\nimport { Assertions, Comparators, Eithers, Signatures } from '@bessemer/cornerstone'\nimport { Either } from '@bessemer/cornerstone/either'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\n\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\nexport const equalBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean => {\n return equalWith(first, second, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, Signatures.sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return _differenceWith(first, second, equalitor)\n}\n\nexport const differenceBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return _differenceBy(first, second, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, Signatures.sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport const removeBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T> => {\n return differenceBy(array, [element], mapper)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport const containsBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean => {\n return containsWith(array, element, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, Signatures.sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport const containsAllBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean =>\n isEmpty(differenceBy(second, first, mapper))\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return uniqWith(array, equalitor)\n}\n\nexport const dedupeBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return uniqBy(array, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, Signatures.sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport const sortBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return sortWith(\n array,\n Comparators.compareBy((it) => Signatures.sign(mapper(it)), Comparators.natural())\n )\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, Signatures.sign)\n\nexport const concatenate = <T>(array: Array<T> | null | undefined, ...values: Array<T | T[]>): Array<T> => {\n if (array == null) {\n return []\n }\n\n const result = [...array]\n\n if (values.length === 0) {\n return result\n }\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value as T)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n Assertions.assertTrue(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = _isEmpty\n// TODO make a better range function\nexport const range = _range\n// TODO should this live in collections?\nexport const groupBy = _groupBy\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T> | null | undefined, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n if (array == null || !array.length) {\n return\n }\n\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>): [Array<L>, Array<R>] => {\n return Eithers.split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = _flatten\n"],"mappings":"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","names":["first","second"]}
@@ -0,0 +1,8 @@
1
+ import { LazyValue } from '@bessemer/cornerstone/lazy';
2
+ import { Nil } from '@bessemer/cornerstone/types';
3
+ export declare function assertUnreachable(message?: LazyValue<string>): never;
4
+ export declare function assertTrue(value: boolean, message?: LazyValue<string>): asserts value is true;
5
+ export declare function assertFalse(value: boolean, message?: LazyValue<string>): asserts value is false;
6
+ export declare function assertNil(value: any, message?: LazyValue<string>): asserts value is Nil;
7
+ export declare function assertPresent<T>(value: T, message?: LazyValue<string>): asserts value is NonNullable<T>;
8
+ //# sourceMappingURL=assertion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../src/assertion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAEjD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,SAAS,CAAC,MAAM,CAAmD,GAAG,KAAK,CAErH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAkD,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAI7I;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAmD,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAEhJ;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAiD,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAEtI;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,SAAS,CAAC,MAAM,CAAqD,GAC7E,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEjC"}
@@ -0,0 +1,27 @@
1
+ // src/assertion.ts
2
+ import { Lazy, Objects } from "@bessemer/cornerstone";
3
+ function assertUnreachable(message = () => "Preconditions.isUnreachable was reached") {
4
+ throw new Error(Lazy.evaluate(message));
5
+ }
6
+ function assertTrue(value, message = () => "Preconditions.isTrue failed validation") {
7
+ if (!value) {
8
+ throw new Error(Lazy.evaluate(message));
9
+ }
10
+ }
11
+ function assertFalse(value, message = () => "Preconditions.isFalse failed validation") {
12
+ return assertTrue(!value, message);
13
+ }
14
+ function assertNil(value, message = () => "Preconditions.isNil failed validation") {
15
+ return assertTrue(Objects.isNil(value), message);
16
+ }
17
+ function assertPresent(value, message = () => "Preconditions.isPresent failed validation") {
18
+ return assertTrue(Objects.isPresent(value), message);
19
+ }
20
+ export {
21
+ assertFalse,
22
+ assertNil,
23
+ assertPresent,
24
+ assertTrue,
25
+ assertUnreachable
26
+ };
27
+ //# sourceMappingURL=assertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import { Lazy, Objects } from '@bessemer/cornerstone'\nimport { LazyValue } from '@bessemer/cornerstone/lazy'\nimport { Nil } from '@bessemer/cornerstone/types'\n\nexport function assertUnreachable(message: LazyValue<string> = () => 'Preconditions.isUnreachable was reached'): never {\n throw new Error(Lazy.evaluate(message))\n}\n\nexport function assertTrue(value: boolean, message: LazyValue<string> = () => 'Preconditions.isTrue failed validation'): asserts value is true {\n if (!value) {\n throw new Error(Lazy.evaluate(message))\n }\n}\n\nexport function assertFalse(value: boolean, message: LazyValue<string> = () => 'Preconditions.isFalse failed validation'): asserts value is false {\n return assertTrue(!value, message)\n}\n\nexport function assertNil(value: any, message: LazyValue<string> = () => 'Preconditions.isNil failed validation'): asserts value is Nil {\n return assertTrue(Objects.isNil(value), message)\n}\n\nexport function assertPresent<T>(\n value: T,\n message: LazyValue<string> = () => 'Preconditions.isPresent failed validation'\n): asserts value is NonNullable<T> {\n return assertTrue(Objects.isPresent(value), message)\n}\n"],"mappings":";AAAA,SAAS,MAAM,eAAe;AAIvB,SAAS,kBAAkB,UAA6B,MAAM,2CAAkD;AACrH,QAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AACxC;AAEO,SAAS,WAAW,OAAgB,UAA6B,MAAM,0CAAiE;AAC7I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AAAA,EACxC;AACF;AAEO,SAAS,YAAY,OAAgB,UAA6B,MAAM,2CAAmE;AAChJ,SAAO,WAAW,CAAC,OAAO,OAAO;AACnC;AAEO,SAAS,UAAU,OAAY,UAA6B,MAAM,yCAA+D;AACtI,SAAO,WAAW,QAAQ,MAAM,KAAK,GAAG,OAAO;AACjD;AAEO,SAAS,cACd,OACA,UAA6B,MAAM,6CACF;AACjC,SAAO,WAAW,QAAQ,UAAU,KAAK,GAAG,OAAO;AACrD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"core-expression.d.ts","sourceRoot":"","sources":["../../src/expression/core-expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAkC,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGlF,eAAO,MAAM,eAAe;;EAQ1B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;EAU7B,CAAA;AAEF,eAAO,MAAM,aAAa;;EAQxB,CAAA;AAEF,eAAO,MAAM,aAAa;;EAUxB,CAAA;AAEF,eAAO,MAAM,YAAY;;EAUvB,CAAA;AAEF,eAAO,MAAM,gBAAgB;;EAe3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;EAU7B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;EAQ7B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;EAQpC,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;EAQhC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;EAQvC,CAAA"}
1
+ {"version":3,"file":"core-expression.d.ts","sourceRoot":"","sources":["../../src/expression/core-expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAA+B,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAG/E,eAAO,MAAM,eAAe;;EAQ1B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;EAU7B,CAAA;AAEF,eAAO,MAAM,aAAa;;EAQxB,CAAA;AAEF,eAAO,MAAM,aAAa;;EAUxB,CAAA;AAEF,eAAO,MAAM,YAAY;;EAUvB,CAAA;AAEF,eAAO,MAAM,gBAAgB;;EAe3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;EAU7B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;EAQ7B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;EAQpC,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;EAQhC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;EAQvC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  // src/expression/core-expression.ts
2
2
  import { defineExpression } from "@bessemer/cornerstone/expression/internal";
3
- import { Arrays, Objects, Preconditions, Signatures } from "@bessemer/cornerstone";
3
+ import { Arrays, Assertions, Objects, Signatures } from "@bessemer/cornerstone";
4
4
  var ValueExpression = defineExpression({
5
5
  expressionKey: "Value",
6
6
  builder: (value) => {
@@ -17,7 +17,7 @@ var VariableExpression = defineExpression({
17
17
  },
18
18
  resolver: ({ name }, evaluate, context) => {
19
19
  const value = context.variables[name];
20
- Preconditions.isPresent(value);
20
+ Assertions.assertPresent(value);
21
21
  return value;
22
22
  }
23
23
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/core-expression.ts"],"sourcesContent":["import { defineExpression } from '@bessemer/cornerstone/expression/internal'\nimport { Expression } from '@bessemer/cornerstone/expression'\nimport { BasicType } from '@bessemer/cornerstone/types'\nimport { Arrays, Objects, Preconditions, Signatures } from '@bessemer/cornerstone'\nimport { Signable } from '@bessemer/cornerstone/signature'\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 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 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 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 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 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 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 LessThanExpression = defineExpression({\n expressionKey: 'Basic.LessThan',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) < evaluate(right)\n },\n})\n\nexport const LessThanOrEqualExpression = defineExpression({\n expressionKey: 'Basic.LessThanOrEqual',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) <= evaluate(right)\n },\n})\n\nexport const GreaterThanExpression = defineExpression({\n expressionKey: 'Basic.GreaterThan',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) > evaluate(right)\n },\n})\n\nexport const GreaterThanOrEqualExpression = defineExpression({\n expressionKey: 'Basic.GreaterThanOrEqual',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) >= evaluate(right)\n },\n})\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/expression/core-expression.ts"],"sourcesContent":["import { defineExpression } from '@bessemer/cornerstone/expression/internal'\nimport { Expression } from '@bessemer/cornerstone/expression'\nimport { BasicType } from '@bessemer/cornerstone/types'\nimport { Arrays, Assertions, Objects, Signatures } from '@bessemer/cornerstone'\nimport { Signable } from '@bessemer/cornerstone/signature'\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 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 Assertions.assertPresent(value)\n return value\n },\n})\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 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 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 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 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 LessThanExpression = defineExpression({\n expressionKey: 'Basic.LessThan',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) < evaluate(right)\n },\n})\n\nexport const LessThanOrEqualExpression = defineExpression({\n expressionKey: 'Basic.LessThanOrEqual',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) <= evaluate(right)\n },\n})\n\nexport const GreaterThanExpression = defineExpression({\n expressionKey: 'Basic.GreaterThan',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) > evaluate(right)\n },\n})\n\nexport const GreaterThanOrEqualExpression = defineExpression({\n expressionKey: 'Basic.GreaterThanOrEqual',\n builder: (left: Expression<BasicType>, right: Expression<BasicType>) => {\n return { left, right }\n },\n resolver: ({ left, right }, evaluate) => {\n return evaluate(left) >= evaluate(right)\n },\n})\n"],"mappings":"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","names":[]}
@@ -1,5 +1,5 @@
1
1
  // src/expression/expression-evaluator.ts
2
- import { Preconditions } from "@bessemer/cornerstone";
2
+ import { Assertions } from "@bessemer/cornerstone";
3
3
  import { isValue } from "@bessemer/cornerstone/expression/internal";
4
4
  var ExpressionEvaluator = class {
5
5
  constructor(expressionDefinitions) {
@@ -10,12 +10,12 @@ var ExpressionEvaluator = class {
10
10
  return expression;
11
11
  }
12
12
  const matchingExpressionDefinition = this.expressionDefinitions.find((it) => it.expressionKey === expression.expressionKey);
13
- Preconditions.isPresent(matchingExpressionDefinition);
13
+ Assertions.assertPresent(matchingExpressionDefinition);
14
14
  return matchingExpressionDefinition.resolver(expression, (expression2) => this.evaluate(expression2, context), context);
15
15
  }
16
16
  dereference(reference, ...args) {
17
17
  const matchingExpressionDefinition = this.expressionDefinitions.find((it) => it.expressionKey === reference.expressionKey);
18
- Preconditions.isPresent(matchingExpressionDefinition, () => `Unable to find Expression Definition for type: ${reference.expressionKey}`);
18
+ Assertions.assertPresent(matchingExpressionDefinition, () => `Unable to find Expression Definition for type: ${reference.expressionKey}`);
19
19
  return matchingExpressionDefinition.builder(...args);
20
20
  }
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/expression-evaluator.ts"],"sourcesContent":["import { Expression, ExpressionContext, ExpressionDefinition, ExpressionReference } from '@bessemer/cornerstone/expression'\nimport { Preconditions } from '@bessemer/cornerstone'\nimport { isValue } from '@bessemer/cornerstone/expression/internal'\n\n// JOHN need to add tests...\nexport class ExpressionEvaluator {\n constructor(private readonly expressionDefinitions: Array<ExpressionDefinition<unknown, Array<any>, Expression<any>>>) {}\n\n evaluate<T>(expression: Expression<T>, context: ExpressionContext): T {\n if (isValue(expression)) {\n return expression\n }\n\n const matchingExpressionDefinition = this.expressionDefinitions.find((it) => it.expressionKey === expression.expressionKey)\n Preconditions.isPresent(matchingExpressionDefinition)\n return matchingExpressionDefinition.resolver(expression, (expression) => this.evaluate(expression, context), context) as T\n }\n\n dereference<ReturnType, ArgumentType extends Array<unknown>>(\n reference: ExpressionReference<ReturnType, ArgumentType>,\n ...args: ArgumentType\n ): Expression<ReturnType> {\n const matchingExpressionDefinition = this.expressionDefinitions.find((it) => it.expressionKey === reference.expressionKey)\n Preconditions.isPresent(matchingExpressionDefinition, () => `Unable to find Expression Definition for type: ${reference.expressionKey}`)\n return matchingExpressionDefinition.builder(...args)\n }\n}\n"],"mappings":";AACA,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AAGjB,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAA6B,uBAA0F;AAA1F;AAAA,EAA2F;AAAA,EAExH,SAAY,YAA2B,SAA+B;AACpE,QAAI,QAAQ,UAAU,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,UAAM,+BAA+B,KAAK,sBAAsB,KAAK,CAAC,OAAO,GAAG,kBAAkB,WAAW,aAAa;AAC1H,kBAAc,UAAU,4BAA4B;AACpD,WAAO,6BAA6B,SAAS,YAAY,CAACA,gBAAe,KAAK,SAASA,aAAY,OAAO,GAAG,OAAO;AAAA,EACtH;AAAA,EAEA,YACE,cACG,MACqB;AACxB,UAAM,+BAA+B,KAAK,sBAAsB,KAAK,CAAC,OAAO,GAAG,kBAAkB,UAAU,aAAa;AACzH,kBAAc,UAAU,8BAA8B,MAAM,kDAAkD,UAAU,aAAa,EAAE;AACvI,WAAO,6BAA6B,QAAQ,GAAG,IAAI;AAAA,EACrD;AACF;","names":["expression"]}
1
+ {"version":3,"sources":["../../src/expression/expression-evaluator.ts"],"sourcesContent":["import { Expression, ExpressionContext, ExpressionDefinition, ExpressionReference } from '@bessemer/cornerstone/expression'\nimport { Assertions } from '@bessemer/cornerstone'\nimport { isValue } from '@bessemer/cornerstone/expression/internal'\n\n// JOHN need to add tests...\nexport class ExpressionEvaluator {\n constructor(private readonly expressionDefinitions: Array<ExpressionDefinition<unknown, Array<any>, Expression<any>>>) {}\n\n evaluate<T>(expression: Expression<T>, context: ExpressionContext): T {\n if (isValue(expression)) {\n return expression\n }\n\n const matchingExpressionDefinition = this.expressionDefinitions.find((it) => it.expressionKey === expression.expressionKey)\n Assertions.assertPresent(matchingExpressionDefinition)\n return matchingExpressionDefinition.resolver(expression, (expression) => this.evaluate(expression, context), context) as T\n }\n\n dereference<ReturnType, ArgumentType extends Array<unknown>>(\n reference: ExpressionReference<ReturnType, ArgumentType>,\n ...args: ArgumentType\n ): Expression<ReturnType> {\n const matchingExpressionDefinition = this.expressionDefinitions.find((it) => it.expressionKey === reference.expressionKey)\n Assertions.assertPresent(matchingExpressionDefinition, () => `Unable to find Expression Definition for type: ${reference.expressionKey}`)\n return matchingExpressionDefinition.builder(...args)\n }\n}\n"],"mappings":";AACA,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AAGjB,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAA6B,uBAA0F;AAA1F;AAAA,EAA2F;AAAA,EAExH,SAAY,YAA2B,SAA+B;AACpE,QAAI,QAAQ,UAAU,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,UAAM,+BAA+B,KAAK,sBAAsB,KAAK,CAAC,OAAO,GAAG,kBAAkB,WAAW,aAAa;AAC1H,eAAW,cAAc,4BAA4B;AACrD,WAAO,6BAA6B,SAAS,YAAY,CAACA,gBAAe,KAAK,SAASA,aAAY,OAAO,GAAG,OAAO;AAAA,EACtH;AAAA,EAEA,YACE,cACG,MACqB;AACxB,UAAM,+BAA+B,KAAK,sBAAsB,KAAK,CAAC,OAAO,GAAG,kBAAkB,UAAU,aAAa;AACzH,eAAW,cAAc,8BAA8B,MAAM,kDAAkD,UAAU,aAAa,EAAE;AACxI,WAAO,6BAA6B,QAAQ,GAAG,IAAI;AAAA,EACrD;AACF;","names":["expression"]}
@@ -1 +1 @@
1
- {"version":3,"file":"expression-mapper.d.ts","sourceRoot":"","sources":["../../src/expression/expression-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAOnF,KAAK,kBAAkB,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,IAAI,CAClE,UAAU,EAAE,cAAc,EAC1B,GAAG,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,WAAW,EACrD,OAAO,EAAE,WAAW,KACjB,WAAW,CAAA;AAEhB,qBAAa,gBAAgB,CAAC,WAAW,EAAE,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoE;IAEhG,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW;IAqBvE,QAAQ,CAAC,cAAc,EACrB,UAAU,EAAE,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,EAC1D,QAAQ,EAAE,kBAAkB,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,GACrE,IAAI;CAGR"}
1
+ {"version":3,"file":"expression-mapper.d.ts","sourceRoot":"","sources":["../../src/expression/expression-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAOnF,KAAK,kBAAkB,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,IAAI,CAClE,UAAU,EAAE,cAAc,EAC1B,GAAG,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,WAAW,EACrD,OAAO,EAAE,WAAW,KACjB,WAAW,CAAA;AAEhB,qBAAa,gBAAgB,CAAC,WAAW,EAAE,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoE;IAEhG,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW;IAuBvE,QAAQ,CAAC,cAAc,EACrB,UAAU,EAAE,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,EAC1D,QAAQ,EAAE,kBAAkB,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,GACrE,IAAI;CAGR"}
@@ -1,6 +1,6 @@
1
1
  // src/expression/expression-mapper.ts
2
2
  import { isExpression } from "@bessemer/cornerstone/expression/internal";
3
- import { Preconditions } from "@bessemer/cornerstone";
3
+ import { Assertions } from "@bessemer/cornerstone";
4
4
  import { value } from "@bessemer/cornerstone/expression/expression";
5
5
  import { ValueExpression } from "@bessemer/cornerstone/expression/core-expression";
6
6
  var ExpressionMapper = class {
@@ -8,16 +8,16 @@ var ExpressionMapper = class {
8
8
  map(expression, context) {
9
9
  if (isExpression(expression)) {
10
10
  const resolver = this.resolverMap[expression.expressionKey];
11
- Preconditions.isPresent(
11
+ Assertions.assertPresent(
12
12
  resolver,
13
- `Illegal Argument - Attempted to map unknown expression: ${expression.expressionKey}. You must register(...) a handler for this expression type.`
13
+ () => `Illegal Argument - Attempted to map unknown expression: ${expression.expressionKey}. You must register(...) a handler for this expression type.`
14
14
  );
15
15
  return resolver(expression, (expression2) => this.map(expression2, context), context);
16
16
  } else {
17
17
  const resolver = this.resolverMap[ValueExpression.expressionKey];
18
- Preconditions.isPresent(
18
+ Assertions.assertPresent(
19
19
  resolver,
20
- `Illegal Argument - Attempted to map unknown expression: ${ValueExpression.expressionKey}. You must register(...) a handler for this expression type.`
20
+ () => `Illegal Argument - Attempted to map unknown expression: ${ValueExpression.expressionKey}. You must register(...) a handler for this expression type.`
21
21
  );
22
22
  const valueExpression = value(expression);
23
23
  return resolver(valueExpression, (expression2) => this.map(expression2, context), context);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/expression-mapper.ts"],"sourcesContent":["import { Expression, ExpressionDefinition } from '@bessemer/cornerstone/expression'\nimport { Dictionary } from '@bessemer/cornerstone/types'\nimport { isExpression } from '@bessemer/cornerstone/expression/internal'\nimport { Preconditions } from '@bessemer/cornerstone'\nimport { value } from '@bessemer/cornerstone/expression/expression'\nimport { ValueExpression } from '@bessemer/cornerstone/expression/core-expression'\n\ntype ExpressionResolver<ExpressionType, MappingType, ContextType> = (\n expression: ExpressionType,\n map: (expression: Expression<unknown>) => MappingType,\n context: ContextType\n) => MappingType\n\nexport class ExpressionMapper<MappingType, ContextType> {\n private readonly resolverMap: Dictionary<ExpressionResolver<any, MappingType, ContextType>> = {}\n\n map(expression: Expression<unknown>, context: ContextType): MappingType {\n if (isExpression(expression)) {\n const resolver = this.resolverMap[expression.expressionKey]\n Preconditions.isPresent(\n resolver,\n `Illegal Argument - Attempted to map unknown expression: ${expression.expressionKey}. You must register(...) a handler for this expression type.`\n )\n\n return resolver(expression, (expression) => this.map(expression, context), context)\n } else {\n const resolver = this.resolverMap[ValueExpression.expressionKey]\n Preconditions.isPresent(\n resolver,\n `Illegal Argument - Attempted to map unknown expression: ${ValueExpression.expressionKey}. You must register(...) a handler for this expression type.`\n )\n\n const valueExpression = value(expression)\n return resolver(valueExpression, (expression) => this.map(expression, context), context)\n }\n }\n\n register<ExpressionType>(\n definition: ExpressionDefinition<any, any, ExpressionType>,\n resolver: ExpressionResolver<ExpressionType, MappingType, ContextType>\n ): void {\n this.resolverMap[definition.expressionKey] = resolver\n }\n}\n"],"mappings":";AAEA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,aAAa;AACtB,SAAS,uBAAuB;AAQzB,IAAM,mBAAN,MAAiD;AAAA,EACrC,cAA6E,CAAC;AAAA,EAE/F,IAAI,YAAiC,SAAmC;AACtE,QAAI,aAAa,UAAU,GAAG;AAC5B,YAAM,WAAW,KAAK,YAAY,WAAW,aAAa;AAC1D,oBAAc;AAAA,QACZ;AAAA,QACA,2DAA2D,WAAW,aAAa;AAAA,MACrF;AAEA,aAAO,SAAS,YAAY,CAACA,gBAAe,KAAK,IAAIA,aAAY,OAAO,GAAG,OAAO;AAAA,IACpF,OAAO;AACL,YAAM,WAAW,KAAK,YAAY,gBAAgB,aAAa;AAC/D,oBAAc;AAAA,QACZ;AAAA,QACA,2DAA2D,gBAAgB,aAAa;AAAA,MAC1F;AAEA,YAAM,kBAAkB,MAAM,UAAU;AACxC,aAAO,SAAS,iBAAiB,CAACA,gBAAe,KAAK,IAAIA,aAAY,OAAO,GAAG,OAAO;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,SACE,YACA,UACM;AACN,SAAK,YAAY,WAAW,aAAa,IAAI;AAAA,EAC/C;AACF;","names":["expression"]}
1
+ {"version":3,"sources":["../../src/expression/expression-mapper.ts"],"sourcesContent":["import { Expression, ExpressionDefinition } from '@bessemer/cornerstone/expression'\nimport { Dictionary } from '@bessemer/cornerstone/types'\nimport { isExpression } from '@bessemer/cornerstone/expression/internal'\nimport { Assertions } from '@bessemer/cornerstone'\nimport { value } from '@bessemer/cornerstone/expression/expression'\nimport { ValueExpression } from '@bessemer/cornerstone/expression/core-expression'\n\ntype ExpressionResolver<ExpressionType, MappingType, ContextType> = (\n expression: ExpressionType,\n map: (expression: Expression<unknown>) => MappingType,\n context: ContextType\n) => MappingType\n\nexport class ExpressionMapper<MappingType, ContextType> {\n private readonly resolverMap: Dictionary<ExpressionResolver<any, MappingType, ContextType>> = {}\n\n map(expression: Expression<unknown>, context: ContextType): MappingType {\n if (isExpression(expression)) {\n const resolver = this.resolverMap[expression.expressionKey]\n Assertions.assertPresent(\n resolver,\n () =>\n `Illegal Argument - Attempted to map unknown expression: ${expression.expressionKey}. You must register(...) a handler for this expression type.`\n )\n\n return resolver(expression, (expression) => this.map(expression, context), context)\n } else {\n const resolver = this.resolverMap[ValueExpression.expressionKey]\n Assertions.assertPresent(\n resolver,\n () =>\n `Illegal Argument - Attempted to map unknown expression: ${ValueExpression.expressionKey}. You must register(...) a handler for this expression type.`\n )\n\n const valueExpression = value(expression)\n return resolver(valueExpression, (expression) => this.map(expression, context), context)\n }\n }\n\n register<ExpressionType>(\n definition: ExpressionDefinition<any, any, ExpressionType>,\n resolver: ExpressionResolver<ExpressionType, MappingType, ContextType>\n ): void {\n this.resolverMap[definition.expressionKey] = resolver\n }\n}\n"],"mappings":";AAEA,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,SAAS,uBAAuB;AAQzB,IAAM,mBAAN,MAAiD;AAAA,EACrC,cAA6E,CAAC;AAAA,EAE/F,IAAI,YAAiC,SAAmC;AACtE,QAAI,aAAa,UAAU,GAAG;AAC5B,YAAM,WAAW,KAAK,YAAY,WAAW,aAAa;AAC1D,iBAAW;AAAA,QACT;AAAA,QACA,MACE,2DAA2D,WAAW,aAAa;AAAA,MACvF;AAEA,aAAO,SAAS,YAAY,CAACA,gBAAe,KAAK,IAAIA,aAAY,OAAO,GAAG,OAAO;AAAA,IACpF,OAAO;AACL,YAAM,WAAW,KAAK,YAAY,gBAAgB,aAAa;AAC/D,iBAAW;AAAA,QACT;AAAA,QACA,MACE,2DAA2D,gBAAgB,aAAa;AAAA,MAC5F;AAEA,YAAM,kBAAkB,MAAM,UAAU;AACxC,aAAO,SAAS,iBAAiB,CAACA,gBAAe,KAAK,IAAIA,aAAY,OAAO,GAAG,OAAO;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,SACE,YACA,UACM;AACN,SAAK,YAAY,WAAW,aAAa,IAAI;AAAA,EAC/C;AACF;","names":["expression"]}
package/dist/index.d.ts CHANGED
@@ -14,7 +14,7 @@ import * as Urls from '@bessemer/cornerstone/url';
14
14
  import * as Loggers from '@bessemer/cornerstone/logger';
15
15
  import * as Errors from '@bessemer/cornerstone/error';
16
16
  import * as ErrorEvents from '@bessemer/cornerstone/error-event';
17
- import * as Preconditions from '@bessemer/cornerstone/precondition';
17
+ import * as Assertions from '@bessemer/cornerstone/assertion';
18
18
  import * as Uuids from '@bessemer/cornerstone/uuid';
19
19
  import * as Ulids from '@bessemer/cornerstone/ulid';
20
20
  import * as Entries from '@bessemer/cornerstone/entry';
@@ -42,5 +42,5 @@ import * as Json from '@bessemer/cornerstone/json';
42
42
  import * as AspectRatios from '@bessemer/cornerstone/aspect-ratio';
43
43
  import * as DataSizes from '@bessemer/cornerstone/data-size';
44
44
  import * as MimeTypes from '@bessemer/cornerstone/mime-type';
45
- export { Objects, Functions, Arrays, Strings, Async, Maths, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorEvents, Preconditions, Uuids, Ulids, Entries, Hashes, Crypto, Globs, Ranges, Zod, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, };
45
+ export { Objects, Functions, Arrays, Strings, Async, Maths, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorEvents, Assertions, Uuids, Ulids, Entries, Hashes, Crypto, Globs, Ranges, Zod, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, };
46
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAA;AAC/D,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,aAAa,MAAM,oCAAoC,CAAA;AACnE,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,8BAA8B,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AAErD,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,IAAI,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,+BAA+B,CAAA;AACxD,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAA;AAC/D,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAA;AAC5D,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,IAAI,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAClE,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAA;AAE5D,OAAO,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,OAAO,EACP,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,WAAW,EACX,aAAa,EACb,KAAK,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,SAAS,GACV,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAA;AAC/D,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,8BAA8B,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AAErD,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,IAAI,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,+BAA+B,CAAA;AACxD,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAA;AAC/D,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAA;AAC5D,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,IAAI,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAClE,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAA;AAE5D,OAAO,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,OAAO,EACP,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,WAAW,EACX,UAAU,EACV,KAAK,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,SAAS,GACV,CAAA"}
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import * as Urls from "@bessemer/cornerstone/url";
15
15
  import * as Loggers from "@bessemer/cornerstone/logger";
16
16
  import * as Errors from "@bessemer/cornerstone/error";
17
17
  import * as ErrorEvents from "@bessemer/cornerstone/error-event";
18
- import * as Preconditions from "@bessemer/cornerstone/precondition";
18
+ import * as Assertions from "@bessemer/cornerstone/assertion";
19
19
  import * as Uuids from "@bessemer/cornerstone/uuid";
20
20
  import * as Ulids from "@bessemer/cornerstone/ulid";
21
21
  import * as Entries from "@bessemer/cornerstone/entry";
@@ -46,6 +46,7 @@ import * as MimeTypes from "@bessemer/cornerstone/mime-type";
46
46
  export {
47
47
  Arrays,
48
48
  AspectRatios,
49
+ Assertions,
49
50
  Async,
50
51
  Combinables,
51
52
  Comparators,
@@ -70,7 +71,6 @@ export {
70
71
  Misc,
71
72
  Objects,
72
73
  Patches,
73
- Preconditions,
74
74
  Promises,
75
75
  Properties,
76
76
  Ranges,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Objects from '@bessemer/cornerstone/object'\nimport * as Functions from '@bessemer/cornerstone/function'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as Sets from '@bessemer/cornerstone/set'\nimport * as Dates from '@bessemer/cornerstone/date'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Durations from '@bessemer/cornerstone/duration'\nimport * as Uris from '@bessemer/cornerstone/uri'\nimport * as Urls from '@bessemer/cornerstone/url'\nimport * as Loggers from '@bessemer/cornerstone/logger'\nimport * as Errors from '@bessemer/cornerstone/error'\nimport * as ErrorEvents from '@bessemer/cornerstone/error-event'\nimport * as Preconditions from '@bessemer/cornerstone/precondition'\nimport * as Uuids from '@bessemer/cornerstone/uuid'\nimport * as Ulids from '@bessemer/cornerstone/ulid'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport * as Hashes from '@bessemer/cornerstone/hash'\nimport * as Crypto from '@bessemer/cornerstone/crypto'\nimport * as Globs from '@bessemer/cornerstone/glob'\nimport * as Ranges from '@bessemer/cornerstone/range'\n\nimport * as Zod from '@bessemer/cornerstone/zod'\nimport * as Tags from '@bessemer/cornerstone/tag'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport * as References from '@bessemer/cornerstone/reference'\nimport * as Signatures from '@bessemer/cornerstone/signature'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport * as Results from '@bessemer/cornerstone/result'\nimport * as Lazy from '@bessemer/cornerstone/lazy'\nimport * as Patches from '@bessemer/cornerstone/patch'\nimport * as Content from '@bessemer/cornerstone/content'\nimport * as Combinables from '@bessemer/cornerstone/combinable'\nimport * as Properties from '@bessemer/cornerstone/property'\nimport * as RichTexts from '@bessemer/cornerstone/rich-text'\nimport * as Retry from '@bessemer/cornerstone/retry'\nimport * as Stores from '@bessemer/cornerstone/store'\nimport * as Misc from '@bessemer/cornerstone/misc'\nimport * as Json from '@bessemer/cornerstone/json'\nimport * as AspectRatios from '@bessemer/cornerstone/aspect-ratio'\nimport * as DataSizes from '@bessemer/cornerstone/data-size'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\n\nexport {\n Objects,\n Functions,\n Arrays,\n Strings,\n Async,\n Maths,\n Sets,\n Dates,\n Comparators,\n Equalitors,\n Durations,\n Uris,\n Urls,\n Loggers,\n Errors,\n ErrorEvents,\n Preconditions,\n Uuids,\n Ulids,\n Entries,\n Hashes,\n Crypto,\n Globs,\n Ranges,\n Zod,\n Tags,\n Promises,\n References,\n Signatures,\n Eithers,\n Results,\n Lazy,\n Patches,\n Content,\n Combinables,\n Properties,\n RichTexts,\n Retry,\n Stores,\n Misc,\n Json,\n AspectRatios,\n DataSizes,\n MimeTypes,\n}\n"],"mappings":";AAAA,YAAY,aAAa;AACzB,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,mBAAmB;AAC/B,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,YAAY;AAExB,YAAY,SAAS;AACrB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,eAAe;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Objects from '@bessemer/cornerstone/object'\nimport * as Functions from '@bessemer/cornerstone/function'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as Sets from '@bessemer/cornerstone/set'\nimport * as Dates from '@bessemer/cornerstone/date'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Durations from '@bessemer/cornerstone/duration'\nimport * as Uris from '@bessemer/cornerstone/uri'\nimport * as Urls from '@bessemer/cornerstone/url'\nimport * as Loggers from '@bessemer/cornerstone/logger'\nimport * as Errors from '@bessemer/cornerstone/error'\nimport * as ErrorEvents from '@bessemer/cornerstone/error-event'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport * as Uuids from '@bessemer/cornerstone/uuid'\nimport * as Ulids from '@bessemer/cornerstone/ulid'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport * as Hashes from '@bessemer/cornerstone/hash'\nimport * as Crypto from '@bessemer/cornerstone/crypto'\nimport * as Globs from '@bessemer/cornerstone/glob'\nimport * as Ranges from '@bessemer/cornerstone/range'\n\nimport * as Zod from '@bessemer/cornerstone/zod'\nimport * as Tags from '@bessemer/cornerstone/tag'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport * as References from '@bessemer/cornerstone/reference'\nimport * as Signatures from '@bessemer/cornerstone/signature'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport * as Results from '@bessemer/cornerstone/result'\nimport * as Lazy from '@bessemer/cornerstone/lazy'\nimport * as Patches from '@bessemer/cornerstone/patch'\nimport * as Content from '@bessemer/cornerstone/content'\nimport * as Combinables from '@bessemer/cornerstone/combinable'\nimport * as Properties from '@bessemer/cornerstone/property'\nimport * as RichTexts from '@bessemer/cornerstone/rich-text'\nimport * as Retry from '@bessemer/cornerstone/retry'\nimport * as Stores from '@bessemer/cornerstone/store'\nimport * as Misc from '@bessemer/cornerstone/misc'\nimport * as Json from '@bessemer/cornerstone/json'\nimport * as AspectRatios from '@bessemer/cornerstone/aspect-ratio'\nimport * as DataSizes from '@bessemer/cornerstone/data-size'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\n\nexport {\n Objects,\n Functions,\n Arrays,\n Strings,\n Async,\n Maths,\n Sets,\n Dates,\n Comparators,\n Equalitors,\n Durations,\n Uris,\n Urls,\n Loggers,\n Errors,\n ErrorEvents,\n Assertions,\n Uuids,\n Ulids,\n Entries,\n Hashes,\n Crypto,\n Globs,\n Ranges,\n Zod,\n Tags,\n Promises,\n References,\n Signatures,\n Eithers,\n Results,\n Lazy,\n Patches,\n Content,\n Combinables,\n Properties,\n RichTexts,\n Retry,\n Stores,\n Misc,\n Json,\n AspectRatios,\n DataSizes,\n MimeTypes,\n}\n"],"mappings":";AAAA,YAAY,aAAa;AACzB,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,YAAY;AAExB,YAAY,SAAS;AACrB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,eAAe;","names":[]}
package/dist/lazy.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type LazyValue<T> = T | (() => T);
1
+ export type LazyValue<T> = () => T;
2
2
  export declare const evaluate: <T>(value: LazyValue<T>) => T;
3
3
  //# sourceMappingURL=lazy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAExC,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,KAAG,CAMjD,CAAA"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAA;AAElC,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,KAAG,CAEjD,CAAA"}
package/dist/lazy.js CHANGED
@@ -1,11 +1,6 @@
1
1
  // src/lazy.ts
2
- import { Functions } from "@bessemer/cornerstone";
3
2
  var evaluate = (value) => {
4
- if (Functions.isFunction(value)) {
5
- return value();
6
- } else {
7
- return value;
8
- }
3
+ return value();
9
4
  };
10
5
  export {
11
6
  evaluate
package/dist/lazy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lazy.ts"],"sourcesContent":["import { Functions } from '@bessemer/cornerstone'\n\nexport type LazyValue<T> = T | (() => T)\n\nexport const evaluate = <T>(value: LazyValue<T>): T => {\n if (Functions.isFunction(value)) {\n return value()\n } else {\n return value\n }\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAInB,IAAM,WAAW,CAAI,UAA2B;AACrD,MAAI,UAAU,WAAW,KAAK,GAAG;AAC/B,WAAO,MAAM;AAAA,EACf,OAAO;AACL,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/lazy.ts"],"sourcesContent":["export type LazyValue<T> = () => T\n\nexport const evaluate = <T>(value: LazyValue<T>): T => {\n return value()\n}\n"],"mappings":";AAEO,IAAM,WAAW,CAAI,UAA2B;AACrD,SAAO,MAAM;AACf;","names":[]}
@@ -1,37 +1,43 @@
1
1
  import { TaggedType } from '@bessemer/cornerstone/types';
2
2
  import { ZodType } from 'zod';
3
- export type MimeType = TaggedType<string, 'MimeType'>;
4
- export declare const MimeTypeSchema: ZodType<MimeType>;
5
- export declare const of: (mimeType: string) => MimeType;
6
- export declare const fromString: (mimeType: string) => MimeType;
7
- export declare const Jpeg: MimeType;
8
- export declare const Png: MimeType;
9
- export declare const Gif: MimeType;
10
- export declare const Webp: MimeType;
11
- export declare const Svg: MimeType;
12
- export declare const Ico: MimeType;
13
- export declare const Avif: MimeType;
14
- export declare const Mp4: MimeType;
15
- export declare const Webm: MimeType;
16
- export declare const OggVideo: MimeType;
17
- export declare const Mp3: MimeType;
18
- export declare const OggAudio: MimeType;
19
- export declare const Wav: MimeType;
20
- export declare const Pdf: MimeType;
21
- export declare const Json: MimeType;
22
- export declare const Csv: MimeType;
23
- export declare const PlainText: MimeType;
24
- export declare const Html: MimeType;
25
- export declare const Xml: MimeType;
26
- export declare const Woff: MimeType;
27
- export declare const Woff2: MimeType;
28
- export declare const Ttf: MimeType;
29
- export declare const Otf: MimeType;
30
- export declare const Zip: MimeType;
31
- export declare const Gzip: MimeType;
32
- export declare const Tar: MimeType;
33
- export declare const Brotli: MimeType;
34
- export declare const FormData: MimeType;
35
- export declare const Javascript: MimeType;
36
- export declare const OctetStream: MimeType;
3
+ export type MimeLiteral = TaggedType<string, 'MimeType'>;
4
+ export declare const MimeTypeSchema: ZodType<MimeLiteral>;
5
+ export declare const of: (mimeType: string) => MimeLiteral;
6
+ export declare const fromString: (mimeType: string) => MimeLiteral;
7
+ export declare const Jpeg: MimeLiteral;
8
+ export declare const Png: MimeLiteral;
9
+ export declare const Gif: MimeLiteral;
10
+ export declare const Webp: MimeLiteral;
11
+ export declare const Svg: MimeLiteral;
12
+ export declare const Ico: MimeLiteral;
13
+ export declare const Avif: MimeLiteral;
14
+ export declare const ImageTypes: MimeLiteral[];
15
+ export declare const Mp4: MimeLiteral;
16
+ export declare const Webm: MimeLiteral;
17
+ export declare const OggVideo: MimeLiteral;
18
+ export declare const VideoTypes: MimeLiteral[];
19
+ export declare const Mp3: MimeLiteral;
20
+ export declare const OggAudio: MimeLiteral;
21
+ export declare const Wav: MimeLiteral;
22
+ export declare const AudioTypes: MimeLiteral[];
23
+ export declare const Pdf: MimeLiteral;
24
+ export declare const Json: MimeLiteral;
25
+ export declare const Csv: MimeLiteral;
26
+ export declare const PlainText: MimeLiteral;
27
+ export declare const Html: MimeLiteral;
28
+ export declare const Xml: MimeLiteral;
29
+ export declare const DocumentTypes: MimeLiteral[];
30
+ export declare const Woff: MimeLiteral;
31
+ export declare const Woff2: MimeLiteral;
32
+ export declare const Ttf: MimeLiteral;
33
+ export declare const Otf: MimeLiteral;
34
+ export declare const FontTypes: MimeLiteral[];
35
+ export declare const Zip: MimeLiteral;
36
+ export declare const Gzip: MimeLiteral;
37
+ export declare const Tar: MimeLiteral;
38
+ export declare const Brotli: MimeLiteral;
39
+ export declare const CompressionTypes: MimeLiteral[];
40
+ export declare const FormData: MimeLiteral;
41
+ export declare const Javascript: MimeLiteral;
42
+ export declare const OctetStream: MimeLiteral;
37
43
  //# sourceMappingURL=mime-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mime-type.d.ts","sourceRoot":"","sources":["../src/mime-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACrD,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,QAAQ,CAA+E,CAAA;AAE5H,eAAO,MAAM,EAAE,GAAI,UAAU,MAAM,KAAG,QAErC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,KAAG,QAE7C,CAAA;AAGD,eAAO,MAAM,IAAI,UAAmB,CAAA;AACpC,eAAO,MAAM,GAAG,UAAkB,CAAA;AAClC,eAAO,MAAM,GAAG,UAAkB,CAAA;AAClC,eAAO,MAAM,IAAI,UAAmB,CAAA;AACpC,eAAO,MAAM,GAAG,UAAsB,CAAA;AACtC,eAAO,MAAM,GAAG,UAAqB,CAAA;AACrC,eAAO,MAAM,IAAI,UAAmB,CAAA;AAGpC,eAAO,MAAM,GAAG,UAAkB,CAAA;AAClC,eAAO,MAAM,IAAI,UAAmB,CAAA;AACpC,eAAO,MAAM,QAAQ,UAAkB,CAAA;AAGvC,eAAO,MAAM,GAAG,UAAmB,CAAA;AACnC,eAAO,MAAM,QAAQ,UAAkB,CAAA;AACvC,eAAO,MAAM,GAAG,UAAkB,CAAA;AAGlC,eAAO,MAAM,GAAG,UAAwB,CAAA;AACxC,eAAO,MAAM,IAAI,UAAyB,CAAA;AAC1C,eAAO,MAAM,GAAG,UAAiB,CAAA;AACjC,eAAO,MAAM,SAAS,UAAmB,CAAA;AACzC,eAAO,MAAM,IAAI,UAAkB,CAAA;AACnC,eAAO,MAAM,GAAG,UAAwB,CAAA;AAGxC,eAAO,MAAM,IAAI,UAAkB,CAAA;AACnC,eAAO,MAAM,KAAK,UAAmB,CAAA;AACrC,eAAO,MAAM,GAAG,UAAiB,CAAA;AACjC,eAAO,MAAM,GAAG,UAAiB,CAAA;AAGjC,eAAO,MAAM,GAAG,UAAwB,CAAA;AACxC,eAAO,MAAM,IAAI,UAAyB,CAAA;AAC1C,eAAO,MAAM,GAAG,UAA0B,CAAA;AAC1C,eAAO,MAAM,MAAM,UAA6B,CAAA;AAGhD,eAAO,MAAM,QAAQ,UAA4B,CAAA;AACjD,eAAO,MAAM,UAAU,UAA+B,CAAA;AACtD,eAAO,MAAM,WAAW,UAAiC,CAAA"}
1
+ {"version":3,"file":"mime-type.d.ts","sourceRoot":"","sources":["../src/mime-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACxD,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,WAAW,CAA+E,CAAA;AAE/H,eAAO,MAAM,EAAE,GAAI,UAAU,MAAM,KAAG,WAErC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,KAAG,WAE7C,CAAA;AAGD,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,GAAG,aAAsB,CAAA;AACtC,eAAO,MAAM,GAAG,aAAqB,CAAA;AACrC,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,UAAU,eAAyC,CAAA;AAGhE,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,QAAQ,aAAkB,CAAA;AACvC,eAAO,MAAM,UAAU,eAAwB,CAAA;AAG/C,eAAO,MAAM,GAAG,aAAmB,CAAA;AACnC,eAAO,MAAM,QAAQ,aAAkB,CAAA;AACvC,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,UAAU,eAAuB,CAAA;AAG9C,eAAO,MAAM,GAAG,aAAwB,CAAA;AACxC,eAAO,MAAM,IAAI,aAAyB,CAAA;AAC1C,eAAO,MAAM,GAAG,aAAiB,CAAA;AACjC,eAAO,MAAM,SAAS,aAAmB,CAAA;AACzC,eAAO,MAAM,IAAI,aAAkB,CAAA;AACnC,eAAO,MAAM,GAAG,aAAwB,CAAA;AACxC,eAAO,MAAM,aAAa,eAAyC,CAAA;AAGnE,eAAO,MAAM,IAAI,aAAkB,CAAA;AACnC,eAAO,MAAM,KAAK,aAAmB,CAAA;AACrC,eAAO,MAAM,GAAG,aAAiB,CAAA;AACjC,eAAO,MAAM,GAAG,aAAiB,CAAA;AACjC,eAAO,MAAM,SAAS,eAA0B,CAAA;AAGhD,eAAO,MAAM,GAAG,aAAwB,CAAA;AACxC,eAAO,MAAM,IAAI,aAAyB,CAAA;AAC1C,eAAO,MAAM,GAAG,aAA0B,CAAA;AAC1C,eAAO,MAAM,MAAM,aAA6B,CAAA;AAChD,eAAO,MAAM,gBAAgB,eAA2B,CAAA;AAGxD,eAAO,MAAM,QAAQ,aAA4B,CAAA;AACjD,eAAO,MAAM,UAAU,aAA+B,CAAA;AACtD,eAAO,MAAM,WAAW,aAAiC,CAAA"}
package/dist/mime-type.js CHANGED
@@ -14,38 +14,49 @@ var Webp = of("image/webp");
14
14
  var Svg = of("image/svg+xml");
15
15
  var Ico = of("image/x-icon");
16
16
  var Avif = of("image/avif");
17
+ var ImageTypes = [Jpeg, Png, Gif, Webp, Svg, Ico, Avif];
17
18
  var Mp4 = of("video/mp4");
18
19
  var Webm = of("video/webm");
19
20
  var OggVideo = of("video/ogg");
21
+ var VideoTypes = [Mp4, Webm, OggVideo];
20
22
  var Mp3 = of("audio/mpeg");
21
23
  var OggAudio = of("audio/ogg");
22
24
  var Wav = of("audio/wav");
25
+ var AudioTypes = [Mp3, OggAudio, Wav];
23
26
  var Pdf = of("application/pdf");
24
27
  var Json = of("application/json");
25
28
  var Csv = of("text/csv");
26
29
  var PlainText = of("text/plain");
27
30
  var Html = of("text/html");
28
31
  var Xml = of("application/xml");
32
+ var DocumentTypes = [Pdf, Json, Csv, PlainText, Html, Xml];
29
33
  var Woff = of("font/woff");
30
34
  var Woff2 = of("font/woff2");
31
35
  var Ttf = of("font/ttf");
32
36
  var Otf = of("font/otf");
37
+ var FontTypes = [Woff, Woff2, Ttf, Otf];
33
38
  var Zip = of("application/zip");
34
39
  var Gzip = of("application/gzip");
35
40
  var Tar = of("application/x-tar");
36
41
  var Brotli = of("application/x-brotli");
42
+ var CompressionTypes = [Zip, Gzip, Tar, Brotli];
37
43
  var FormData = of("multipart/form-data");
38
44
  var Javascript = of("application/javascript");
39
45
  var OctetStream = of("application/octet-stream");
40
46
  export {
47
+ AudioTypes,
41
48
  Avif,
42
49
  Brotli,
50
+ CompressionTypes,
43
51
  Csv,
52
+ DocumentTypes,
53
+ FontTypes,
44
54
  FormData,
45
55
  Gif,
46
56
  Gzip,
47
57
  Html,
48
58
  Ico,
59
+ ImageTypes,
49
60
  Javascript,
50
61
  Jpeg,
51
62
  Json,
@@ -62,6 +73,7 @@ export {
62
73
  Svg,
63
74
  Tar,
64
75
  Ttf,
76
+ VideoTypes,
65
77
  Wav,
66
78
  Webm,
67
79
  Webp,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mime-type.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type MimeType = TaggedType<string, 'MimeType'>\nexport const MimeTypeSchema: ZodType<MimeType> = Zod.string().regex(/^[\\w-]+\\/[\\w.+-]+$/, 'Invalid MIME type format') as any\n\nexport const of = (mimeType: string): MimeType => {\n return mimeType as MimeType\n}\n\nexport const fromString = (mimeType: string): MimeType => {\n return MimeTypeSchema.parse(mimeType)\n}\n\n// Images\nexport const Jpeg = of('image/jpeg')\nexport const Png = of('image/png')\nexport const Gif = of('image/gif')\nexport const Webp = of('image/webp')\nexport const Svg = of('image/svg+xml')\nexport const Ico = of('image/x-icon')\nexport const Avif = of('image/avif')\n\n// Video\nexport const Mp4 = of('video/mp4')\nexport const Webm = of('video/webm')\nexport const OggVideo = of('video/ogg')\n\n// Audio\nexport const Mp3 = of('audio/mpeg')\nexport const OggAudio = of('audio/ogg')\nexport const Wav = of('audio/wav')\n\n// Documents\nexport const Pdf = of('application/pdf')\nexport const Json = of('application/json')\nexport const Csv = of('text/csv')\nexport const PlainText = of('text/plain')\nexport const Html = of('text/html')\nexport const Xml = of('application/xml')\n\n// Fonts\nexport const Woff = of('font/woff')\nexport const Woff2 = of('font/woff2')\nexport const Ttf = of('font/ttf')\nexport const Otf = of('font/otf')\n\n// Zip\nexport const Zip = of('application/zip')\nexport const Gzip = of('application/gzip')\nexport const Tar = of('application/x-tar')\nexport const Brotli = of('application/x-brotli')\n\n// Misc\nexport const FormData = of('multipart/form-data')\nexport const Javascript = of('application/javascript')\nexport const OctetStream = of('application/octet-stream')\n"],"mappings":";AACA,OAAO,SAAsB;AAGtB,IAAM,iBAAoC,IAAI,OAAO,EAAE,MAAM,sBAAsB,0BAA0B;AAE7G,IAAM,KAAK,CAAC,aAA+B;AAChD,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,aAA+B;AACxD,SAAO,eAAe,MAAM,QAAQ;AACtC;AAGO,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,MAAM,GAAG,eAAe;AAC9B,IAAM,MAAM,GAAG,cAAc;AAC7B,IAAM,OAAO,GAAG,YAAY;AAG5B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,WAAW,GAAG,WAAW;AAG/B,IAAM,MAAM,GAAG,YAAY;AAC3B,IAAM,WAAW,GAAG,WAAW;AAC/B,IAAM,MAAM,GAAG,WAAW;AAG1B,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,OAAO,GAAG,kBAAkB;AAClC,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,YAAY,GAAG,YAAY;AACjC,IAAM,OAAO,GAAG,WAAW;AAC3B,IAAM,MAAM,GAAG,iBAAiB;AAGhC,IAAM,OAAO,GAAG,WAAW;AAC3B,IAAM,QAAQ,GAAG,YAAY;AAC7B,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,MAAM,GAAG,UAAU;AAGzB,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,OAAO,GAAG,kBAAkB;AAClC,IAAM,MAAM,GAAG,mBAAmB;AAClC,IAAM,SAAS,GAAG,sBAAsB;AAGxC,IAAM,WAAW,GAAG,qBAAqB;AACzC,IAAM,aAAa,GAAG,wBAAwB;AAC9C,IAAM,cAAc,GAAG,0BAA0B;","names":[]}
1
+ {"version":3,"sources":["../src/mime-type.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type MimeLiteral = TaggedType<string, 'MimeType'>\nexport const MimeTypeSchema: ZodType<MimeLiteral> = Zod.string().regex(/^[\\w-]+\\/[\\w.+-]+$/, 'Invalid MIME type format') as any\n\nexport const of = (mimeType: string): MimeLiteral => {\n return mimeType as MimeLiteral\n}\n\nexport const fromString = (mimeType: string): MimeLiteral => {\n return MimeTypeSchema.parse(mimeType)\n}\n\n// Images\nexport const Jpeg = of('image/jpeg')\nexport const Png = of('image/png')\nexport const Gif = of('image/gif')\nexport const Webp = of('image/webp')\nexport const Svg = of('image/svg+xml')\nexport const Ico = of('image/x-icon')\nexport const Avif = of('image/avif')\nexport const ImageTypes = [Jpeg, Png, Gif, Webp, Svg, Ico, Avif]\n\n// Video\nexport const Mp4 = of('video/mp4')\nexport const Webm = of('video/webm')\nexport const OggVideo = of('video/ogg')\nexport const VideoTypes = [Mp4, Webm, OggVideo]\n\n// Audio\nexport const Mp3 = of('audio/mpeg')\nexport const OggAudio = of('audio/ogg')\nexport const Wav = of('audio/wav')\nexport const AudioTypes = [Mp3, OggAudio, Wav]\n\n// Documents\nexport const Pdf = of('application/pdf')\nexport const Json = of('application/json')\nexport const Csv = of('text/csv')\nexport const PlainText = of('text/plain')\nexport const Html = of('text/html')\nexport const Xml = of('application/xml')\nexport const DocumentTypes = [Pdf, Json, Csv, PlainText, Html, Xml]\n\n// Fonts\nexport const Woff = of('font/woff')\nexport const Woff2 = of('font/woff2')\nexport const Ttf = of('font/ttf')\nexport const Otf = of('font/otf')\nexport const FontTypes = [Woff, Woff2, Ttf, Otf]\n\n// Compression\nexport const Zip = of('application/zip')\nexport const Gzip = of('application/gzip')\nexport const Tar = of('application/x-tar')\nexport const Brotli = of('application/x-brotli')\nexport const CompressionTypes = [Zip, Gzip, Tar, Brotli]\n\n// Misc\nexport const FormData = of('multipart/form-data')\nexport const Javascript = of('application/javascript')\nexport const OctetStream = of('application/octet-stream')\n"],"mappings":";AACA,OAAO,SAAsB;AAGtB,IAAM,iBAAuC,IAAI,OAAO,EAAE,MAAM,sBAAsB,0BAA0B;AAEhH,IAAM,KAAK,CAAC,aAAkC;AACnD,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,aAAkC;AAC3D,SAAO,eAAe,MAAM,QAAQ;AACtC;AAGO,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,MAAM,GAAG,eAAe;AAC9B,IAAM,MAAM,GAAG,cAAc;AAC7B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,aAAa,CAAC,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI;AAGxD,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,WAAW,GAAG,WAAW;AAC/B,IAAM,aAAa,CAAC,KAAK,MAAM,QAAQ;AAGvC,IAAM,MAAM,GAAG,YAAY;AAC3B,IAAM,WAAW,GAAG,WAAW;AAC/B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,aAAa,CAAC,KAAK,UAAU,GAAG;AAGtC,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,OAAO,GAAG,kBAAkB;AAClC,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,YAAY,GAAG,YAAY;AACjC,IAAM,OAAO,GAAG,WAAW;AAC3B,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,gBAAgB,CAAC,KAAK,MAAM,KAAK,WAAW,MAAM,GAAG;AAG3D,IAAM,OAAO,GAAG,WAAW;AAC3B,IAAM,QAAQ,GAAG,YAAY;AAC7B,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,YAAY,CAAC,MAAM,OAAO,KAAK,GAAG;AAGxC,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,OAAO,GAAG,kBAAkB;AAClC,IAAM,MAAM,GAAG,mBAAmB;AAClC,IAAM,SAAS,GAAG,sBAAsB;AACxC,IAAM,mBAAmB,CAAC,KAAK,MAAM,KAAK,MAAM;AAGhD,IAAM,WAAW,GAAG,qBAAqB;AACzC,IAAM,aAAa,GAAG,wBAAwB;AAC9C,IAAM,cAAc,GAAG,0BAA0B;","names":[]}
package/dist/misc.js CHANGED
@@ -1,11 +1,11 @@
1
1
  // src/misc.ts
2
- import { Objects, Preconditions } from "@bessemer/cornerstone";
2
+ import { Assertions, Objects } from "@bessemer/cornerstone";
3
3
  var doUntilConsistent = (supplier, equals) => {
4
4
  let done = false;
5
5
  let previousValue = null;
6
6
  let attempts = 0;
7
7
  do {
8
- Preconditions.isTrue(attempts < 10);
8
+ Assertions.assertTrue(attempts < 10);
9
9
  const currentValue = supplier(previousValue);
10
10
  if (Objects.isPresent(previousValue) && equals(previousValue, currentValue)) {
11
11
  done = true;
package/dist/misc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/misc.ts"],"sourcesContent":["import { Objects, Preconditions } from '@bessemer/cornerstone'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\n\nexport const doUntilConsistent = <T>(supplier: (previous: T | null) => T, equals: Equalitor<T>): T => {\n let done = false\n let previousValue: T | null = null\n let attempts = 0\n do {\n Preconditions.isTrue(attempts < 10)\n\n const currentValue = supplier(previousValue)\n\n if (Objects.isPresent(previousValue) && equals(previousValue, currentValue)) {\n done = true\n }\n\n previousValue = currentValue\n attempts++\n } while (!done)\n\n return previousValue\n}\n"],"mappings":";AAAA,SAAS,SAAS,qBAAqB;AAGhC,IAAM,oBAAoB,CAAI,UAAqC,WAA4B;AACpG,MAAI,OAAO;AACX,MAAI,gBAA0B;AAC9B,MAAI,WAAW;AACf,KAAG;AACD,kBAAc,OAAO,WAAW,EAAE;AAElC,UAAM,eAAe,SAAS,aAAa;AAE3C,QAAI,QAAQ,UAAU,aAAa,KAAK,OAAO,eAAe,YAAY,GAAG;AAC3E,aAAO;AAAA,IACT;AAEA,oBAAgB;AAChB;AAAA,EACF,SAAS,CAAC;AAEV,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/misc.ts"],"sourcesContent":["import { Assertions, Objects } from '@bessemer/cornerstone'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\n\nexport const doUntilConsistent = <T>(supplier: (previous: T | null) => T, equals: Equalitor<T>): T => {\n let done = false\n let previousValue: T | null = null\n let attempts = 0\n do {\n Assertions.assertTrue(attempts < 10)\n\n const currentValue = supplier(previousValue)\n\n if (Objects.isPresent(previousValue) && equals(previousValue, currentValue)) {\n done = true\n }\n\n previousValue = currentValue\n attempts++\n } while (!done)\n\n return previousValue\n}\n"],"mappings":";AAAA,SAAS,YAAY,eAAe;AAG7B,IAAM,oBAAoB,CAAI,UAAqC,WAA4B;AACpG,MAAI,OAAO;AACX,MAAI,gBAA0B;AAC9B,MAAI,WAAW;AACf,KAAG;AACD,eAAW,WAAW,WAAW,EAAE;AAEnC,UAAM,eAAe,SAAS,aAAa;AAE3C,QAAI,QAAQ,UAAU,aAAa,KAAK,OAAO,eAAe,YAAY,GAAG;AAC3E,aAAO;AAAA,IACT;AAEA,oBAAgB;AAChB;AAAA,EACF,SAAS,CAAC;AAEV,SAAO;AACT;","names":[]}
package/dist/patch.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  Expressions,
5
5
  NumericExpressions
6
6
  } from "@bessemer/cornerstone/expression";
7
- import { Objects, Preconditions } from "@bessemer/cornerstone";
7
+ import { Assertions, Objects } from "@bessemer/cornerstone";
8
8
  var PatchType = /* @__PURE__ */ ((PatchType2) => {
9
9
  PatchType2["Set"] = "Set";
10
10
  PatchType2["Apply"] = "Apply";
@@ -53,7 +53,7 @@ var resolveWithDetails = (value, patches, evaluate) => {
53
53
  currentValue = applyPatch(currentValue, patch2.patch, evaluate);
54
54
  break;
55
55
  default:
56
- Preconditions.isUnreachable(() => `Unrecognized PatchType for value: ${JSON.stringify(it)}`);
56
+ Assertions.assertUnreachable(() => `Unrecognized PatchType for value: ${JSON.stringify(it)}`);
57
57
  }
58
58
  return { value: currentValue, patch: patch2 };
59
59
  });
package/dist/patch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/patch.ts"],"sourcesContent":["import {\n ArrayExpressions,\n EvaluateExpression,\n Expression,\n Expressions,\n NumericExpressions,\n ReducingExpression,\n} from '@bessemer/cornerstone/expression'\nimport { Objects, Preconditions } from '@bessemer/cornerstone'\nimport { UnknownRecord } from 'type-fest'\n\nexport enum PatchType {\n Set = 'Set',\n Apply = 'Apply',\n Patch = 'Patch',\n}\n\nexport type SetPatch<T> = {\n _PatchType: PatchType.Set\n value: Expression<T>\n}\n\nexport type ApplyPatch<T> = {\n _PatchType: PatchType.Apply\n value: Expression<T>\n reducer: ReducingExpression<T, T>\n}\n\nexport type PatchPatch<T> = {\n _PatchType: PatchType.Patch\n patch: Patchable<T>\n}\n\nexport type Patch<T> = SetPatch<T> | ApplyPatch<T> | PatchPatch<T>\n\nexport type PatchValue<T> = {\n value: T\n patch: Patch<T>\n}\n\nexport type Patchable<T> = {\n [P in keyof T]?: T[P] extends Array<infer U>\n ? Patch<U[]> | Patchable<U[]>\n : T[P] extends object | undefined\n ? Patch<T[P]> | Patchable<T[P]>\n : Patch<T[P]> | T[P]\n}\n\nexport const set = <T>(value: Expression<T>): Patch<T> => {\n return {\n _PatchType: PatchType.Set,\n value: value as any,\n }\n}\n\nexport const apply = <T>(value: Expression<T>, reducer: ReducingExpression<T, T>): Patch<T> => {\n return {\n _PatchType: PatchType.Apply,\n value,\n reducer,\n }\n}\n\nexport const patch = <T extends UnknownRecord, N extends Patchable<T> = Patchable<T>>(patch: N): Patch<T> => {\n return {\n _PatchType: PatchType.Patch,\n patch,\n }\n}\n\nexport const sum = (value: Expression<number>): Patch<number> => {\n return apply(value, Expressions.reference(NumericExpressions.SumExpression))\n}\n\nexport const multiply = (value: Expression<number>): Patch<number> => {\n return apply(value, Expressions.reference(NumericExpressions.MultiplyExpression))\n}\n\nexport const concatenate = <T extends Array<Expression<unknown>>>(value: Expression<T>): Patch<T> => {\n return apply(value, Expressions.reference(ArrayExpressions.ConcatenateExpression)) as Patch<T>\n}\n\nexport type ResolvePatchesResult<T> = {\n value: T\n patchValues: Array<PatchValue<T>>\n}\n\nexport const resolveWithDetails = <T>(value: T, patches: Array<Patch<T>>, evaluate: EvaluateExpression): ResolvePatchesResult<T> => {\n let currentValue: T = value\n\n const patchValues = patches.map((patch) => {\n switch (patch._PatchType) {\n case PatchType.Set:\n currentValue = evaluate(patch.value)\n break\n case PatchType.Apply:\n currentValue = evaluate(Expressions.dereference(patch.reducer, [currentValue, patch.value]))\n break\n case PatchType.Patch:\n currentValue = applyPatch(currentValue, patch.patch, evaluate)\n break\n default:\n Preconditions.isUnreachable(() => `Unrecognized PatchType for value: ${JSON.stringify(it)}`)\n }\n\n return { value: currentValue, patch }\n })\n\n return { value: currentValue, patchValues }\n}\n\nexport const resolve = <T>(value: T, patches: Array<Patch<T>>, evaluate: EvaluateExpression): T => {\n return resolveWithDetails(value, patches, evaluate).value\n}\n\nconst applyPatch = <T>(value: T, patch: Patchable<T>, evaluate: EvaluateExpression): T => {\n return Objects.deepMergeWith(value, patch, (value, patch) => {\n if (Objects.isNil(patch)) {\n return value\n }\n\n if (!Objects.isObject(patch) || !('_PatchType' in patch)) {\n return undefined\n }\n\n return evaluate(resolve(value, [patch as Patch<T>], evaluate))\n })\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,SAAS,qBAAqB;AAGhC,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AAqCL,IAAM,MAAM,CAAI,UAAmC;AACxD,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAI,OAAsB,YAAgD;AAC7F,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAiEC,WAAuB;AAC3G,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAAA;AAAA,EACF;AACF;AAEO,IAAM,MAAM,CAAC,UAA6C;AAC/D,SAAO,MAAM,OAAO,YAAY,UAAU,mBAAmB,aAAa,CAAC;AAC7E;AAEO,IAAM,WAAW,CAAC,UAA6C;AACpE,SAAO,MAAM,OAAO,YAAY,UAAU,mBAAmB,kBAAkB,CAAC;AAClF;AAEO,IAAM,cAAc,CAAuC,UAAmC;AACnG,SAAO,MAAM,OAAO,YAAY,UAAU,iBAAiB,qBAAqB,CAAC;AACnF;AAOO,IAAM,qBAAqB,CAAI,OAAU,SAA0B,aAA0D;AAClI,MAAI,eAAkB;AAEtB,QAAM,cAAc,QAAQ,IAAI,CAACA,WAAU;AACzC,YAAQA,OAAM,YAAY;AAAA,MACxB,KAAK;AACH,uBAAe,SAASA,OAAM,KAAK;AACnC;AAAA,MACF,KAAK;AACH,uBAAe,SAAS,YAAY,YAAYA,OAAM,SAAS,CAAC,cAAcA,OAAM,KAAK,CAAC,CAAC;AAC3F;AAAA,MACF,KAAK;AACH,uBAAe,WAAW,cAAcA,OAAM,OAAO,QAAQ;AAC7D;AAAA,MACF;AACE,sBAAc,cAAc,MAAM,qCAAqC,KAAK,UAAU,EAAE,CAAC,EAAE;AAAA,IAC/F;AAEA,WAAO,EAAE,OAAO,cAAc,OAAAA,OAAM;AAAA,EACtC,CAAC;AAED,SAAO,EAAE,OAAO,cAAc,YAAY;AAC5C;AAEO,IAAM,UAAU,CAAI,OAAU,SAA0B,aAAoC;AACjG,SAAO,mBAAmB,OAAO,SAAS,QAAQ,EAAE;AACtD;AAEA,IAAM,aAAa,CAAI,OAAUA,QAAqB,aAAoC;AACxF,SAAO,QAAQ,cAAc,OAAOA,QAAO,CAACC,QAAOD,WAAU;AAC3D,QAAI,QAAQ,MAAMA,MAAK,GAAG;AACxB,aAAOC;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,SAASD,MAAK,KAAK,EAAE,gBAAgBA,SAAQ;AACxD,aAAO;AAAA,IACT;AAEA,WAAO,SAAS,QAAQC,QAAO,CAACD,MAAiB,GAAG,QAAQ,CAAC;AAAA,EAC/D,CAAC;AACH;","names":["PatchType","patch","value"]}
1
+ {"version":3,"sources":["../src/patch.ts"],"sourcesContent":["import {\n ArrayExpressions,\n EvaluateExpression,\n Expression,\n Expressions,\n NumericExpressions,\n ReducingExpression,\n} from '@bessemer/cornerstone/expression'\nimport { Assertions, Objects } from '@bessemer/cornerstone'\nimport { UnknownRecord } from 'type-fest'\n\nexport enum PatchType {\n Set = 'Set',\n Apply = 'Apply',\n Patch = 'Patch',\n}\n\nexport type SetPatch<T> = {\n _PatchType: PatchType.Set\n value: Expression<T>\n}\n\nexport type ApplyPatch<T> = {\n _PatchType: PatchType.Apply\n value: Expression<T>\n reducer: ReducingExpression<T, T>\n}\n\nexport type PatchPatch<T> = {\n _PatchType: PatchType.Patch\n patch: Patchable<T>\n}\n\nexport type Patch<T> = SetPatch<T> | ApplyPatch<T> | PatchPatch<T>\n\nexport type PatchValue<T> = {\n value: T\n patch: Patch<T>\n}\n\nexport type Patchable<T> = {\n [P in keyof T]?: T[P] extends Array<infer U>\n ? Patch<U[]> | Patchable<U[]>\n : T[P] extends object | undefined\n ? Patch<T[P]> | Patchable<T[P]>\n : Patch<T[P]> | T[P]\n}\n\nexport const set = <T>(value: Expression<T>): Patch<T> => {\n return {\n _PatchType: PatchType.Set,\n value: value as any,\n }\n}\n\nexport const apply = <T>(value: Expression<T>, reducer: ReducingExpression<T, T>): Patch<T> => {\n return {\n _PatchType: PatchType.Apply,\n value,\n reducer,\n }\n}\n\nexport const patch = <T extends UnknownRecord, N extends Patchable<T> = Patchable<T>>(patch: N): Patch<T> => {\n return {\n _PatchType: PatchType.Patch,\n patch,\n }\n}\n\nexport const sum = (value: Expression<number>): Patch<number> => {\n return apply(value, Expressions.reference(NumericExpressions.SumExpression))\n}\n\nexport const multiply = (value: Expression<number>): Patch<number> => {\n return apply(value, Expressions.reference(NumericExpressions.MultiplyExpression))\n}\n\nexport const concatenate = <T extends Array<Expression<unknown>>>(value: Expression<T>): Patch<T> => {\n return apply(value, Expressions.reference(ArrayExpressions.ConcatenateExpression)) as Patch<T>\n}\n\nexport type ResolvePatchesResult<T> = {\n value: T\n patchValues: Array<PatchValue<T>>\n}\n\nexport const resolveWithDetails = <T>(value: T, patches: Array<Patch<T>>, evaluate: EvaluateExpression): ResolvePatchesResult<T> => {\n let currentValue: T = value\n\n const patchValues = patches.map((patch) => {\n switch (patch._PatchType) {\n case PatchType.Set:\n currentValue = evaluate(patch.value)\n break\n case PatchType.Apply:\n currentValue = evaluate(Expressions.dereference(patch.reducer, [currentValue, patch.value]))\n break\n case PatchType.Patch:\n currentValue = applyPatch(currentValue, patch.patch, evaluate)\n break\n default:\n Assertions.assertUnreachable(() => `Unrecognized PatchType for value: ${JSON.stringify(it)}`)\n }\n\n return { value: currentValue, patch }\n })\n\n return { value: currentValue, patchValues }\n}\n\nexport const resolve = <T>(value: T, patches: Array<Patch<T>>, evaluate: EvaluateExpression): T => {\n return resolveWithDetails(value, patches, evaluate).value\n}\n\nconst applyPatch = <T>(value: T, patch: Patchable<T>, evaluate: EvaluateExpression): T => {\n return Objects.deepMergeWith(value, patch, (value, patch) => {\n if (Objects.isNil(patch)) {\n return value\n }\n\n if (!Objects.isObject(patch) || !('_PatchType' in patch)) {\n return undefined\n }\n\n return evaluate(resolve(value, [patch as Patch<T>], evaluate))\n })\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,YAAY,eAAe;AAG7B,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AAqCL,IAAM,MAAM,CAAI,UAAmC;AACxD,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAI,OAAsB,YAAgD;AAC7F,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAiEC,WAAuB;AAC3G,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAAA;AAAA,EACF;AACF;AAEO,IAAM,MAAM,CAAC,UAA6C;AAC/D,SAAO,MAAM,OAAO,YAAY,UAAU,mBAAmB,aAAa,CAAC;AAC7E;AAEO,IAAM,WAAW,CAAC,UAA6C;AACpE,SAAO,MAAM,OAAO,YAAY,UAAU,mBAAmB,kBAAkB,CAAC;AAClF;AAEO,IAAM,cAAc,CAAuC,UAAmC;AACnG,SAAO,MAAM,OAAO,YAAY,UAAU,iBAAiB,qBAAqB,CAAC;AACnF;AAOO,IAAM,qBAAqB,CAAI,OAAU,SAA0B,aAA0D;AAClI,MAAI,eAAkB;AAEtB,QAAM,cAAc,QAAQ,IAAI,CAACA,WAAU;AACzC,YAAQA,OAAM,YAAY;AAAA,MACxB,KAAK;AACH,uBAAe,SAASA,OAAM,KAAK;AACnC;AAAA,MACF,KAAK;AACH,uBAAe,SAAS,YAAY,YAAYA,OAAM,SAAS,CAAC,cAAcA,OAAM,KAAK,CAAC,CAAC;AAC3F;AAAA,MACF,KAAK;AACH,uBAAe,WAAW,cAAcA,OAAM,OAAO,QAAQ;AAC7D;AAAA,MACF;AACE,mBAAW,kBAAkB,MAAM,qCAAqC,KAAK,UAAU,EAAE,CAAC,EAAE;AAAA,IAChG;AAEA,WAAO,EAAE,OAAO,cAAc,OAAAA,OAAM;AAAA,EACtC,CAAC;AAED,SAAO,EAAE,OAAO,cAAc,YAAY;AAC5C;AAEO,IAAM,UAAU,CAAI,OAAU,SAA0B,aAAoC;AACjG,SAAO,mBAAmB,OAAO,SAAS,QAAQ,EAAE;AACtD;AAEA,IAAM,aAAa,CAAI,OAAUA,QAAqB,aAAoC;AACxF,SAAO,QAAQ,cAAc,OAAOA,QAAO,CAACC,QAAOD,WAAU;AAC3D,QAAI,QAAQ,MAAMA,MAAK,GAAG;AACxB,aAAOC;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,SAASD,MAAK,KAAK,EAAE,gBAAgBA,SAAQ;AACxD,aAAO;AAAA,IACT;AAEA,WAAO,SAAS,QAAQC,QAAO,CAACD,MAAiB,GAAG,QAAQ,CAAC;AAAA,EAC/D,CAAC;AACH;","names":["PatchType","patch","value"]}
package/dist/retry.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/retry.ts
2
- import { Async, Durations, Maths, Objects, Preconditions, Results } from "@bessemer/cornerstone";
2
+ import { Assertions, Async, Durations, Maths, Objects, Results } from "@bessemer/cornerstone";
3
3
  var None = {
4
4
  attempts: 0,
5
5
  delay: Durations.Zero
@@ -10,7 +10,7 @@ var DefaultRetryProps = {
10
10
  };
11
11
  var initialize = (initialOptions) => {
12
12
  const props = Objects.deepMerge(DefaultRetryProps, initialOptions);
13
- Preconditions.isTrue(props.attempts >= 0, () => "usingRetry attempts must be >= 0");
13
+ Assertions.assertTrue(props.attempts >= 0, () => "usingRetry attempts must be >= 0");
14
14
  return {
15
15
  attempt: 0,
16
16
  props
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import { Duration } from '@bessemer/cornerstone/duration'\nimport { Async, Durations, Maths, Objects, Preconditions, Results } from '@bessemer/cornerstone'\nimport { AsyncResult, Result } from '@bessemer/cornerstone/result'\nimport { PartialDeep } from 'type-fest'\n\nexport type RetryProps = {\n attempts: number\n delay: Duration\n}\n\nexport type RetryOptions = PartialDeep<RetryProps>\n\nexport const None: RetryProps = {\n attempts: 0,\n delay: Durations.Zero,\n}\n\nexport const DefaultRetryProps: RetryProps = {\n attempts: 3,\n delay: Durations.fromMilliseconds(500),\n}\n\nexport type RetryState = {\n attempt: number\n props: RetryProps\n}\n\nexport const initialize = (initialOptions?: RetryOptions): RetryState => {\n const props = Objects.deepMerge(DefaultRetryProps, initialOptions)\n Preconditions.isTrue(props.attempts >= 0, () => 'usingRetry attempts must be >= 0')\n\n return {\n attempt: 0,\n props,\n }\n}\n\nexport const retry = async (state: RetryState): Promise<RetryState | undefined> => {\n if (state.attempt >= state.props.attempts - 1) {\n return undefined\n }\n\n const delayMs = Durations.toMilliseconds(state.props.delay)\n const maxJitterMs = delayMs * 0.3 // We calculate max jitter as 30% of the delay\n await Async.sleep(Durations.fromMilliseconds(delayMs + Maths.random(0, maxJitterMs)))\n\n return {\n props: state.props,\n attempt: state.attempt + 1,\n }\n}\n\nexport const usingRetry = async <T>(runnable: () => Promise<Result<T>>, initialOptions?: RetryOptions): AsyncResult<T> => {\n let retryState: RetryState | undefined = initialize(initialOptions)\n let previousResult: Result<T> = Results.failure()\n\n do {\n // JOHN Should this be a try/catch? it was causing debugging problems\n const result = await runnable()\n previousResult = result\n\n if (result.isSuccess) {\n return result\n }\n\n retryState = await retry(retryState)\n } while (!Objects.isUndefined(retryState))\n\n return previousResult\n}\n"],"mappings":";AACA,SAAS,OAAO,WAAW,OAAO,SAAS,eAAe,eAAe;AAWlE,IAAM,OAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,OAAO,UAAU;AACnB;AAEO,IAAM,oBAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAO,UAAU,iBAAiB,GAAG;AACvC;AAOO,IAAM,aAAa,CAAC,mBAA8C;AACvE,QAAM,QAAQ,QAAQ,UAAU,mBAAmB,cAAc;AACjE,gBAAc,OAAO,MAAM,YAAY,GAAG,MAAM,kCAAkC;AAElF,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,OAAO,UAAuD;AACjF,MAAI,MAAM,WAAW,MAAM,MAAM,WAAW,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,UAAU,eAAe,MAAM,MAAM,KAAK;AAC1D,QAAM,cAAc,UAAU;AAC9B,QAAM,MAAM,MAAM,UAAU,iBAAiB,UAAU,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC;AAEpF,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,SAAS,MAAM,UAAU;AAAA,EAC3B;AACF;AAEO,IAAM,aAAa,OAAU,UAAoC,mBAAkD;AACxH,MAAI,aAAqC,WAAW,cAAc;AAClE,MAAI,iBAA4B,QAAQ,QAAQ;AAEhD,KAAG;AAED,UAAM,SAAS,MAAM,SAAS;AAC9B,qBAAiB;AAEjB,QAAI,OAAO,WAAW;AACpB,aAAO;AAAA,IACT;AAEA,iBAAa,MAAM,MAAM,UAAU;AAAA,EACrC,SAAS,CAAC,QAAQ,YAAY,UAAU;AAExC,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import { Duration } from '@bessemer/cornerstone/duration'\nimport { Assertions, Async, Durations, Maths, Objects, Results } from '@bessemer/cornerstone'\nimport { AsyncResult, Result } from '@bessemer/cornerstone/result'\nimport { PartialDeep } from 'type-fest'\n\nexport type RetryProps = {\n attempts: number\n delay: Duration\n}\n\nexport type RetryOptions = PartialDeep<RetryProps>\n\nexport const None: RetryProps = {\n attempts: 0,\n delay: Durations.Zero,\n}\n\nexport const DefaultRetryProps: RetryProps = {\n attempts: 3,\n delay: Durations.fromMilliseconds(500),\n}\n\nexport type RetryState = {\n attempt: number\n props: RetryProps\n}\n\nexport const initialize = (initialOptions?: RetryOptions): RetryState => {\n const props = Objects.deepMerge(DefaultRetryProps, initialOptions)\n Assertions.assertTrue(props.attempts >= 0, () => 'usingRetry attempts must be >= 0')\n\n return {\n attempt: 0,\n props,\n }\n}\n\nexport const retry = async (state: RetryState): Promise<RetryState | undefined> => {\n if (state.attempt >= state.props.attempts - 1) {\n return undefined\n }\n\n const delayMs = Durations.toMilliseconds(state.props.delay)\n const maxJitterMs = delayMs * 0.3 // We calculate max jitter as 30% of the delay\n await Async.sleep(Durations.fromMilliseconds(delayMs + Maths.random(0, maxJitterMs)))\n\n return {\n props: state.props,\n attempt: state.attempt + 1,\n }\n}\n\nexport const usingRetry = async <T>(runnable: () => Promise<Result<T>>, initialOptions?: RetryOptions): AsyncResult<T> => {\n let retryState: RetryState | undefined = initialize(initialOptions)\n let previousResult: Result<T> = Results.failure()\n\n do {\n // JOHN Should this be a try/catch? it was causing debugging problems\n const result = await runnable()\n previousResult = result\n\n if (result.isSuccess) {\n return result\n }\n\n retryState = await retry(retryState)\n } while (!Objects.isUndefined(retryState))\n\n return previousResult\n}\n"],"mappings":";AACA,SAAS,YAAY,OAAO,WAAW,OAAO,SAAS,eAAe;AAW/D,IAAM,OAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,OAAO,UAAU;AACnB;AAEO,IAAM,oBAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAO,UAAU,iBAAiB,GAAG;AACvC;AAOO,IAAM,aAAa,CAAC,mBAA8C;AACvE,QAAM,QAAQ,QAAQ,UAAU,mBAAmB,cAAc;AACjE,aAAW,WAAW,MAAM,YAAY,GAAG,MAAM,kCAAkC;AAEnF,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,OAAO,UAAuD;AACjF,MAAI,MAAM,WAAW,MAAM,MAAM,WAAW,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,UAAU,eAAe,MAAM,MAAM,KAAK;AAC1D,QAAM,cAAc,UAAU;AAC9B,QAAM,MAAM,MAAM,UAAU,iBAAiB,UAAU,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC;AAEpF,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,SAAS,MAAM,UAAU;AAAA,EAC3B;AACF;AAEO,IAAM,aAAa,OAAU,UAAoC,mBAAkD;AACxH,MAAI,aAAqC,WAAW,cAAc;AAClE,MAAI,iBAA4B,QAAQ,QAAQ;AAEhD,KAAG;AAED,UAAM,SAAS,MAAM,SAAS;AAC9B,qBAAiB;AAEjB,QAAI,OAAO,WAAW;AACpB,aAAO;AAAA,IACT;AAEA,iBAAa,MAAM,MAAM,UAAU;AAAA,EACrC,SAAS,CAAC,QAAQ,YAAY,UAAU;AAExC,SAAO;AACT;","names":[]}
@@ -1,6 +1,6 @@
1
1
  // src/sql/sql-expression-parser.ts
2
2
  import { ExpressionMapper } from "@bessemer/cornerstone/expression/expression-mapper";
3
- import { Arrays, Entries, Objects, Preconditions, Ulids } from "@bessemer/cornerstone";
3
+ import { Arrays, Assertions, Entries, Objects, Ulids } from "@bessemer/cornerstone";
4
4
  import {
5
5
  AndExpression,
6
6
  ContainsExpression,
@@ -29,7 +29,7 @@ DefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) =>
29
29
  });
30
30
  DefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {
31
31
  const variableName = context.variables[expression.name];
32
- Preconditions.isPresent(variableName, `SqlExpressionParser - Unable to resolve VariableExpression with name: ${expression.name}`);
32
+ Assertions.assertPresent(variableName, () => `SqlExpressionParser - Unable to resolve VariableExpression with name: ${expression.name}`);
33
33
  return variableName;
34
34
  });
35
35
  DefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Entries, Objects, Preconditions, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport { isType, isValue } from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n Preconditions.isPresent(variableName, `SqlExpressionParser - Unable to resolve VariableExpression with name: ${expression.name}`)\n return variableName\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (isType(expression.value, ContainsExpression)) {\n // JOHN tons of gross duplicated code that is duped across the contains resolver\n const collection = expression.value.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.value.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} NOT IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest.map((it) => `(${mappedFirst} = ${map(it)})`).join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, (expression, map, context) => {\n const collection = expression.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n})\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":"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","names":["value"]}
1
+ {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Assertions, Entries, Objects, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport { isType, isValue } from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n Assertions.assertPresent(variableName, () => `SqlExpressionParser - Unable to resolve VariableExpression with name: ${expression.name}`)\n return variableName\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (isType(expression.value, ContainsExpression)) {\n // JOHN tons of gross duplicated code that is duped across the contains resolver\n const collection = expression.value.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.value.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} NOT IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest.map((it) => `(${mappedFirst} = ${map(it)})`).join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, (expression, map, context) => {\n const collection = expression.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n})\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":"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","names":["value"]}
package/dist/ulid.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/ulid.ts
2
2
  import { ulid } from "ulid";
3
- import { Preconditions, Strings } from "@bessemer/cornerstone";
3
+ import { Assertions, Strings } from "@bessemer/cornerstone";
4
4
  var generate = () => {
5
5
  return ulid();
6
6
  };
@@ -11,7 +11,7 @@ var generateString = () => {
11
11
  return asString(generate());
12
12
  };
13
13
  var of = (value) => {
14
- Preconditions.isTrue(isValid(value), () => `Attempted to coerce invalid value to Ulid: ${value}`);
14
+ Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Ulid: ${value}`);
15
15
  return value;
16
16
  };
17
17
  var pattern = /^[0-9A-HJKMNP-TV-Z]{26}$/;
package/dist/ulid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ulid.ts"],"sourcesContent":["import { ulid } from 'ulid'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport { Preconditions, Strings } from '@bessemer/cornerstone'\n\nexport type Ulid = TaggedType<string, 'Ulid'>\n\nexport const generate = (): Ulid => {\n return ulid() as Ulid\n}\n\nexport const asString = (value: Ulid): string => {\n return value\n}\n\nexport const generateString = (): string => {\n return asString(generate())\n}\n\nexport const of = (value: string): Ulid => {\n Preconditions.isTrue(isValid(value), () => `Attempted to coerce invalid value to Ulid: ${value}`)\n return value as Ulid\n}\n\nconst pattern = /^[0-9A-HJKMNP-TV-Z]{26}$/\n\nexport const isValid = (value: unknown): value is Ulid => {\n return Strings.isString(value) && pattern.test(value)\n}\n"],"mappings":";AAAA,SAAS,YAAY;AAErB,SAAS,eAAe,eAAe;AAIhC,IAAM,WAAW,MAAY;AAClC,SAAO,KAAK;AACd;AAEO,IAAM,WAAW,CAAC,UAAwB;AAC/C,SAAO;AACT;AAEO,IAAM,iBAAiB,MAAc;AAC1C,SAAO,SAAS,SAAS,CAAC;AAC5B;AAEO,IAAM,KAAK,CAAC,UAAwB;AACzC,gBAAc,OAAO,QAAQ,KAAK,GAAG,MAAM,8CAA8C,KAAK,EAAE;AAChG,SAAO;AACT;AAEA,IAAM,UAAU;AAET,IAAM,UAAU,CAAC,UAAkC;AACxD,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK;AACtD;","names":[]}
1
+ {"version":3,"sources":["../src/ulid.ts"],"sourcesContent":["import { ulid } from 'ulid'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport { Assertions, Strings } from '@bessemer/cornerstone'\n\nexport type Ulid = TaggedType<string, 'Ulid'>\n\nexport const generate = (): Ulid => {\n return ulid() as Ulid\n}\n\nexport const asString = (value: Ulid): string => {\n return value\n}\n\nexport const generateString = (): string => {\n return asString(generate())\n}\n\nexport const of = (value: string): Ulid => {\n Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Ulid: ${value}`)\n return value as Ulid\n}\n\nconst pattern = /^[0-9A-HJKMNP-TV-Z]{26}$/\n\nexport const isValid = (value: unknown): value is Ulid => {\n return Strings.isString(value) && pattern.test(value)\n}\n"],"mappings":";AAAA,SAAS,YAAY;AAErB,SAAS,YAAY,eAAe;AAI7B,IAAM,WAAW,MAAY;AAClC,SAAO,KAAK;AACd;AAEO,IAAM,WAAW,CAAC,UAAwB;AAC/C,SAAO;AACT;AAEO,IAAM,iBAAiB,MAAc;AAC1C,SAAO,SAAS,SAAS,CAAC;AAC5B;AAEO,IAAM,KAAK,CAAC,UAAwB;AACzC,aAAW,WAAW,QAAQ,KAAK,GAAG,MAAM,8CAA8C,KAAK,EAAE;AACjG,SAAO;AACT;AAEA,IAAM,UAAU;AAET,IAAM,UAAU,CAAC,UAAkC;AACxD,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK;AACtD;","names":[]}
package/dist/uuid.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/uuid.ts
2
- import { Objects, Preconditions, Strings } from "@bessemer/cornerstone";
2
+ import { Assertions, Objects, Strings } from "@bessemer/cornerstone";
3
3
  var generate = () => {
4
4
  if (Objects.isNil(crypto.randomUUID)) {
5
5
  return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}`;
@@ -18,7 +18,7 @@ var randomHex = (characters) => {
18
18
  return Strings.padStart(randomNum.toString(16), characters, "0");
19
19
  };
20
20
  var of = (value) => {
21
- Preconditions.isTrue(isValid(value), () => `Attempted to coerce invalid value to Uuid: ${value}`);
21
+ Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Uuid: ${value}`);
22
22
  return value;
23
23
  };
24
24
  var pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
package/dist/uuid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/uuid.ts"],"sourcesContent":["import { Objects, Preconditions, Strings } from '@bessemer/cornerstone'\nimport { TaggedType } from '@bessemer/cornerstone/types'\n\nexport type Uuid = TaggedType<string, 'Uuid'>\n\nexport const generate = (): Uuid => {\n if (Objects.isNil(crypto.randomUUID)) {\n return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}` as Uuid\n } else {\n return crypto.randomUUID() as Uuid\n }\n}\n\nexport const asString = (value: Uuid): string => {\n return value\n}\n\nexport const generateString = (): string => {\n return asString(generate())\n}\n\nconst randomHex = (characters: number) => {\n // Generates a random number between 0x0..0 and 0xF..F for the target number of characters\n const randomNum = Math.floor(Math.random() * (16 ** characters - 1))\n return Strings.padStart(randomNum.toString(16), characters, '0')\n}\n\nexport const of = (value: string): Uuid => {\n Preconditions.isTrue(isValid(value), () => `Attempted to coerce invalid value to Uuid: ${value}`)\n return value as Uuid\n}\n\nconst pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i\n\nexport const isValid = (value: unknown): value is Uuid => {\n return Strings.isString(value) && pattern.test(value)\n}\n"],"mappings":";AAAA,SAAS,SAAS,eAAe,eAAe;AAKzC,IAAM,WAAW,MAAY;AAClC,MAAI,QAAQ,MAAM,OAAO,UAAU,GAAG;AACpC,WAAO,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;AAAA,EACzF,OAAO;AACL,WAAO,OAAO,WAAW;AAAA,EAC3B;AACF;AAEO,IAAM,WAAW,CAAC,UAAwB;AAC/C,SAAO;AACT;AAEO,IAAM,iBAAiB,MAAc;AAC1C,SAAO,SAAS,SAAS,CAAC;AAC5B;AAEA,IAAM,YAAY,CAAC,eAAuB;AAExC,QAAM,YAAY,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,aAAa,EAAE;AACnE,SAAO,QAAQ,SAAS,UAAU,SAAS,EAAE,GAAG,YAAY,GAAG;AACjE;AAEO,IAAM,KAAK,CAAC,UAAwB;AACzC,gBAAc,OAAO,QAAQ,KAAK,GAAG,MAAM,8CAA8C,KAAK,EAAE;AAChG,SAAO;AACT;AAEA,IAAM,UAAU;AAET,IAAM,UAAU,CAAC,UAAkC;AACxD,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK;AACtD;","names":[]}
1
+ {"version":3,"sources":["../src/uuid.ts"],"sourcesContent":["import { Assertions, Objects, Strings } from '@bessemer/cornerstone'\nimport { TaggedType } from '@bessemer/cornerstone/types'\n\nexport type Uuid = TaggedType<string, 'Uuid'>\n\nexport const generate = (): Uuid => {\n if (Objects.isNil(crypto.randomUUID)) {\n return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}` as Uuid\n } else {\n return crypto.randomUUID() as Uuid\n }\n}\n\nexport const asString = (value: Uuid): string => {\n return value\n}\n\nexport const generateString = (): string => {\n return asString(generate())\n}\n\nconst randomHex = (characters: number) => {\n // Generates a random number between 0x0..0 and 0xF..F for the target number of characters\n const randomNum = Math.floor(Math.random() * (16 ** characters - 1))\n return Strings.padStart(randomNum.toString(16), characters, '0')\n}\n\nexport const of = (value: string): Uuid => {\n Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Uuid: ${value}`)\n return value as Uuid\n}\n\nconst pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i\n\nexport const isValid = (value: unknown): value is Uuid => {\n return Strings.isString(value) && pattern.test(value)\n}\n"],"mappings":";AAAA,SAAS,YAAY,SAAS,eAAe;AAKtC,IAAM,WAAW,MAAY;AAClC,MAAI,QAAQ,MAAM,OAAO,UAAU,GAAG;AACpC,WAAO,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;AAAA,EACzF,OAAO;AACL,WAAO,OAAO,WAAW;AAAA,EAC3B;AACF;AAEO,IAAM,WAAW,CAAC,UAAwB;AAC/C,SAAO;AACT;AAEO,IAAM,iBAAiB,MAAc;AAC1C,SAAO,SAAS,SAAS,CAAC;AAC5B;AAEA,IAAM,YAAY,CAAC,eAAuB;AAExC,QAAM,YAAY,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,aAAa,EAAE;AACnE,SAAO,QAAQ,SAAS,UAAU,SAAS,EAAE,GAAG,YAAY,GAAG;AACjE;AAEO,IAAM,KAAK,CAAC,UAAwB;AACzC,aAAW,WAAW,QAAQ,KAAK,GAAG,MAAM,8CAA8C,KAAK,EAAE;AACjG,SAAO;AACT;AAEA,IAAM,UAAU;AAET,IAAM,UAAU,CAAC,UAAkC;AACxD,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK;AACtD;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bessemer/cornerstone",
3
3
  "type": "module",
4
- "version": "0.5.49",
4
+ "version": "0.5.51",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "sideEffects": false,
@@ -1,8 +0,0 @@
1
- import { LazyValue } from '@bessemer/cornerstone/lazy';
2
- import { Nil } from '@bessemer/cornerstone/types';
3
- export declare function isUnreachable(message?: LazyValue<string>): never;
4
- export declare function isTrue(value: boolean, message?: LazyValue<string>): asserts value is true;
5
- export declare function isFalse(value: boolean, message?: LazyValue<string>): asserts value is false;
6
- export declare function isNil(value: any, message?: LazyValue<string>): asserts value is Nil;
7
- export declare function isPresent<T>(value: T, message?: LazyValue<string>): asserts value is NonNullable<T>;
8
- //# sourceMappingURL=precondition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"precondition.d.ts","sourceRoot":"","sources":["../src/precondition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAEjD,wBAAgB,aAAa,CAAC,OAAO,GAAE,SAAS,CAAC,MAAM,CAA6C,GAAG,KAAK,CAE3G;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAA4C,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAInI;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAA6C,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAEtI;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAA2C,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAE5H;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAA+C,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEhJ"}
@@ -1,27 +0,0 @@
1
- // src/precondition.ts
2
- import { Lazy, Objects } from "@bessemer/cornerstone";
3
- function isUnreachable(message = "Preconditions.isUnreachable was reached") {
4
- throw new Error(Lazy.evaluate(message));
5
- }
6
- function isTrue(value, message = "Preconditions.isTrue failed validation") {
7
- if (!value) {
8
- throw new Error(Lazy.evaluate(message));
9
- }
10
- }
11
- function isFalse(value, message = "Preconditions.isFalse failed validation") {
12
- return isTrue(!value, message);
13
- }
14
- function isNil(value, message = "Preconditions.isNil failed validation") {
15
- return isTrue(Objects.isNil(value), message);
16
- }
17
- function isPresent(value, message = "Preconditions.isPresent failed validation") {
18
- return isTrue(Objects.isPresent(value), message);
19
- }
20
- export {
21
- isFalse,
22
- isNil,
23
- isPresent,
24
- isTrue,
25
- isUnreachable
26
- };
27
- //# sourceMappingURL=precondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/precondition.ts"],"sourcesContent":["import { Lazy, Objects } from '@bessemer/cornerstone'\nimport { LazyValue } from '@bessemer/cornerstone/lazy'\nimport { Nil } from '@bessemer/cornerstone/types'\n\nexport function isUnreachable(message: LazyValue<string> = 'Preconditions.isUnreachable was reached'): never {\n throw new Error(Lazy.evaluate(message))\n}\n\nexport function isTrue(value: boolean, message: LazyValue<string> = 'Preconditions.isTrue failed validation'): asserts value is true {\n if (!value) {\n throw new Error(Lazy.evaluate(message))\n }\n}\n\nexport function isFalse(value: boolean, message: LazyValue<string> = 'Preconditions.isFalse failed validation'): asserts value is false {\n return isTrue(!value, message)\n}\n\nexport function isNil(value: any, message: LazyValue<string> = 'Preconditions.isNil failed validation'): asserts value is Nil {\n return isTrue(Objects.isNil(value), message)\n}\n\nexport function isPresent<T>(value: T, message: LazyValue<string> = 'Preconditions.isPresent failed validation'): asserts value is NonNullable<T> {\n return isTrue(Objects.isPresent(value), message)\n}\n"],"mappings":";AAAA,SAAS,MAAM,eAAe;AAIvB,SAAS,cAAc,UAA6B,2CAAkD;AAC3G,QAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AACxC;AAEO,SAAS,OAAO,OAAgB,UAA6B,0CAAiE;AACnI,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC;AAAA,EACxC;AACF;AAEO,SAAS,QAAQ,OAAgB,UAA6B,2CAAmE;AACtI,SAAO,OAAO,CAAC,OAAO,OAAO;AAC/B;AAEO,SAAS,MAAM,OAAY,UAA6B,yCAA+D;AAC5H,SAAO,OAAO,QAAQ,MAAM,KAAK,GAAG,OAAO;AAC7C;AAEO,SAAS,UAAa,OAAU,UAA6B,6CAA8E;AAChJ,SAAO,OAAO,QAAQ,UAAU,KAAK,GAAG,OAAO;AACjD;","names":[]}