@dereekb/util 7.0.0 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [7.2.0](https://github.com/dereekb/dbx-components/compare/v7.1.0-dev...v7.2.0) (2022-06-06)
6
+
7
+
8
+
9
+ # [7.1.0](https://github.com/dereekb/dbx-components/compare/v7.0.1-dev...v7.1.0) (2022-06-06)
10
+
11
+
12
+ ### Features
13
+
14
+ * added firestoreEncodedArray, firestoreUniqueArray ([4f7fc7c](https://github.com/dereekb/dbx-components/commit/4f7fc7ca274656ecdf13d69aa7d225f66a7f76da))
15
+ * added interceptAccessorFactory() ([9833539](https://github.com/dereekb/dbx-components/commit/98335398eaa6a3ee363bdf64a440d5438bbefb24))
16
+ * added ModelModifier ([118bde7](https://github.com/dereekb/dbx-components/commit/118bde78f04162f5dcad5d64feef2efb42c62d65))
17
+
18
+
19
+
20
+ ## [7.0.1](https://github.com/dereekb/dbx-components/compare/v7.0.0-dev...v7.0.1) (2022-06-05)
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * util import path fixes ([e786b20](https://github.com/dereekb/dbx-components/commit/e786b207916e7679d321a5bf03f7bc00d4539234))
26
+
27
+
28
+
5
29
  # [7.0.0](https://github.com/dereekb/dbx-components/compare/v6.0.0-dev...v7.0.0) (2022-06-05)
6
30
 
7
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/util",
3
- "version": "7.0.0",
3
+ "version": "7.2.0",
4
4
  "type": "commonjs",
5
5
  "exports": {
6
6
  ".": {
@@ -18,6 +18,7 @@
18
18
  "dependencies": {},
19
19
  "peerDependencies": {
20
20
  "make-error": "^1.3.0",
21
+ "ts-essentials": "^9.1.2",
21
22
  "extra-set": "^2.2.11",
22
23
  "tslib": "^2.0.0"
23
24
  }
@@ -70,7 +70,7 @@ exports.concatArrays = concatArrays;
70
70
  * @returns
71
71
  */
72
72
  function flattenArray(array) {
73
- return array.filter((x) => Boolean(x)).reduce((accumulator, value) => accumulator.concat(value), []);
73
+ return array.filter((x) => Boolean(x)).flat(1);
74
74
  }
75
75
  exports.flattenArray = flattenArray;
76
76
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,25 @@
1
1
  import { ReadKeyFunction } from '../key';
2
+ import { MapFunction } from '../value';
2
3
  export declare function hasDifferentStringsNoCase(a: string[], b: string[]): boolean;
4
+ export declare function arrayToUppercase(input: string[]): string[];
5
+ export declare function arrayToLowercase(input: string[]): string[];
6
+ export declare type TransformStringsConfig = {
7
+ /**
8
+ * Whether or not to store all values as lowercase. Ignored if transform is provided.
9
+ */
10
+ toLowercase?: boolean;
11
+ /**
12
+ * Whether or not to store all values as uppercase. Ignored if transform is provided.
13
+ */
14
+ toUppercase?: boolean;
15
+ /**
16
+ * Optional transform function for text.
17
+ */
18
+ transform?: TransformSingleStringFunction;
19
+ };
20
+ export declare type TransformSingleStringFunction = MapFunction<string, string>;
21
+ export declare type TransformStringsFunction = MapFunction<string[], string[]>;
22
+ export declare function transformStrings(config: TransformStringsConfig): TransformStringsFunction;
3
23
  export declare function toCaseInsensitiveStringArray(values: Iterable<string>): string[];
4
24
  export declare function uniqueCaseInsensitiveStrings(values: Iterable<string>): string[];
5
25
  export declare function uniqueCaseInsensitiveStringsSet(values: Iterable<string>): Set<string>;
@@ -8,3 +28,13 @@ export declare function findUniqueCaseInsensitiveStrings<T, K extends string = s
8
28
  export declare function containsStringAnyCase(values: Iterable<string>, valueToFind: string): boolean;
9
29
  export declare function containsAnyStringAnyCase(values: Iterable<string>, valuesToFind: Iterable<string>): boolean;
10
30
  export declare function containsAllStringsAnyCase(values: Iterable<string>, valuesToFind: Iterable<string>): boolean;
31
+ export interface FindUniqueStringsTransformConfig extends TransformStringsConfig {
32
+ /**
33
+ * Whether or not to compare values as lowercase when finding uniqueness.
34
+ *
35
+ * Ignored if toLowercase or toUppercase is used for transforming.
36
+ */
37
+ caseInsensitive?: boolean;
38
+ }
39
+ export declare type FindUniqueTransform = TransformStringsFunction;
40
+ export declare function findUniqueTransform(config: FindUniqueStringsTransformConfig): FindUniqueTransform;
@@ -1,15 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.containsAllStringsAnyCase = exports.containsAnyStringAnyCase = exports.containsStringAnyCase = exports.findUniqueCaseInsensitiveStrings = exports.flattenArrayUniqueCaseInsensitiveStrings = exports.uniqueCaseInsensitiveStringsSet = exports.uniqueCaseInsensitiveStrings = exports.toCaseInsensitiveStringArray = exports.hasDifferentStringsNoCase = void 0;
3
+ exports.findUniqueTransform = exports.containsAllStringsAnyCase = exports.containsAnyStringAnyCase = exports.containsStringAnyCase = exports.findUniqueCaseInsensitiveStrings = exports.flattenArrayUniqueCaseInsensitiveStrings = exports.uniqueCaseInsensitiveStringsSet = exports.uniqueCaseInsensitiveStrings = exports.toCaseInsensitiveStringArray = exports.transformStrings = exports.arrayToLowercase = exports.arrayToUppercase = exports.hasDifferentStringsNoCase = void 0;
4
4
  const array_1 = require("./array");
5
5
  const array_unique_1 = require("./array.unique");
6
6
  const string_1 = require("../string");
7
7
  const set_1 = require("../set/set");
8
8
  const iterable_map_1 = require("../iterable/iterable.map");
9
+ const value_1 = require("../value");
9
10
  function hasDifferentStringsNoCase(a, b) {
10
11
  return (0, set_1.hasDifferentValues)(a.map(string_1.caseInsensitiveString), b.map(string_1.caseInsensitiveString));
11
12
  }
12
13
  exports.hasDifferentStringsNoCase = hasDifferentStringsNoCase;
14
+ function arrayToUppercase(input) {
15
+ return input.map((x) => x.toUpperCase());
16
+ }
17
+ exports.arrayToUppercase = arrayToUppercase;
18
+ function arrayToLowercase(input) {
19
+ return input.map((x) => x.toLowerCase());
20
+ }
21
+ exports.arrayToLowercase = arrayToLowercase;
22
+ function transformStrings(config) {
23
+ let transform = config.transform ? (0, value_1.mapArrayFunction)(config.transform) : config.toLowercase ? arrayToLowercase : config.toUppercase ? arrayToUppercase : (0, value_1.mapIdentityFunction)();
24
+ return transform;
25
+ }
26
+ exports.transformStrings = transformStrings;
13
27
  function toCaseInsensitiveStringArray(values) {
14
28
  return (0, iterable_map_1.mapIterable)(values, string_1.caseInsensitiveString);
15
29
  }
@@ -43,4 +57,17 @@ function containsAllStringsAnyCase(values, valuesToFind) {
43
57
  return valuesToFindArray.length ? (0, set_1.containsAllValues)(toCaseInsensitiveStringArray(values), valuesToFindArray) : true;
44
58
  }
45
59
  exports.containsAllStringsAnyCase = containsAllStringsAnyCase;
60
+ function findUniqueTransform(config) {
61
+ const transform = transformStrings(config);
62
+ const caseInsensitiveCompare = config.caseInsensitive && !config.toLowercase && !config.toUppercase;
63
+ if (caseInsensitiveCompare) {
64
+ // transform after finding unique values
65
+ return (input) => transform(findUniqueCaseInsensitiveStrings(input, (x) => x));
66
+ }
67
+ else {
68
+ // transform before, and then use a set to find unique values
69
+ return (input) => Array.from(new Set(transform(input)));
70
+ }
71
+ }
72
+ exports.findUniqueTransform = findUniqueTransform;
46
73
  //# sourceMappingURL=array.string.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.string.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.string.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AACvC,iDAAoD;AAEpD,sCAAkD;AAClD,oCAAqF;AACrF,2DAAuD;AAEvD,SAAgB,yBAAyB,CAAC,CAAW,EAAE,CAAW;IAChE,OAAO,IAAA,wBAAkB,EAAC,CAAC,CAAC,GAAG,CAAC,8BAAqB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,8BAAqB,CAAC,CAAC,CAAC;AACxF,CAAC;AAFD,8DAEC;AAED,SAAgB,4BAA4B,CAAC,MAAwB;IACnE,OAAO,IAAA,0BAAW,EAAiB,MAAM,EAAE,8BAAqB,CAAC,CAAC;AACpE,CAAC;AAFD,oEAEC;AAED,SAAgB,4BAA4B,CAAC,MAAwB;IACnE,OAAO,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC;AAFD,oEAEC;AAED,SAAgB,+BAA+B,CAAC,MAAwB;IACtE,OAAO,IAAI,GAAG,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC;AAFD,0EAEC;AAED,SAAgB,wCAAwC,CAAC,KAAiB;IACxE,OAAO,IAAA,qBAAM,EAAC,IAAA,oBAAY,EAAS,KAAK,CAAC,CAAC,GAAG,CAAS,8BAAqB,CAAC,CAAC,CAAC;AAChF,CAAC;AAFD,4FAEC;AAED,SAAgB,gCAAgC,CAA+B,MAAW,EAAE,OAA8B,EAAE,iBAAsB,EAAE;IAClJ,OAAO,IAAA,yBAAU,EAAC,MAAM,EAAE,CAAC,CAAI,EAAE,EAAE,CAAC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,cAAc,CAAC,CAAC,CAAC;AACvH,CAAC;AAFD,4EAEC;AAED,SAAgB,qBAAqB,CAAC,MAAwB,EAAE,WAAmB;IACjF,OAAO,wBAAwB,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACzD,CAAC;AAFD,sDAEC;AAED,SAAgB,wBAAwB,CAAC,MAAwB,EAAE,YAA8B;IAC/F,OAAO,IAAA,sBAAgB,EAAC,4BAA4B,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5G,CAAC;AAFD,4DAEC;AAED,SAAgB,yBAAyB,CAAC,MAAwB,EAAE,YAA8B;IAChG,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,YAAY,CAAC,CAAC;IACrE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,uBAAiB,EAAC,4BAA4B,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtH,CAAC;AAHD,8DAGC"}
1
+ {"version":3,"file":"array.string.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.string.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,15 @@ export declare function concatArraysUnique<T extends PrimativeKey = PrimativeKey
4
4
  export declare function flattenArrayUnique<T extends PrimativeKey = PrimativeKey>(array: T[][]): T[];
5
5
  export declare function unique<T extends PrimativeKey = PrimativeKey>(values: T[]): T[];
6
6
  export declare function findUnique<T, K extends PrimativeKey = PrimativeKey>(models: T[], readKey: ReadKeyFunction<T, K>, additionalKeys?: K[]): T[];
7
+ /**
8
+ * Finds unique values in the input.
9
+ */
10
+ export declare type FindUniqueFunction<T> = (input: T[]) => T[];
11
+ /**
12
+ * Creates a FindUniqueFunction.
13
+ *
14
+ * @param readKey
15
+ * @param additionalKeys
16
+ * @returns
17
+ */
18
+ export declare function makeFindUniqueFunction<T, K extends PrimativeKey = PrimativeKey>(readKey: ReadKeyFunction<T, K>, additionalKeys?: K[]): FindUniqueFunction<T>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findUnique = exports.unique = exports.flattenArrayUnique = exports.concatArraysUnique = void 0;
3
+ exports.makeFindUniqueFunction = exports.findUnique = exports.unique = exports.flattenArrayUnique = exports.concatArraysUnique = void 0;
4
4
  const array_1 = require("./array");
5
5
  function concatArraysUnique(...arrays) {
6
6
  return unique((0, array_1.concatArrays)(...arrays));
@@ -26,4 +26,15 @@ function findUnique(models, readKey, additionalKeys = []) {
26
26
  });
27
27
  }
28
28
  exports.findUnique = findUnique;
29
+ /**
30
+ * Creates a FindUniqueFunction.
31
+ *
32
+ * @param readKey
33
+ * @param additionalKeys
34
+ * @returns
35
+ */
36
+ function makeFindUniqueFunction(readKey, additionalKeys = []) {
37
+ return (input) => findUnique(input, readKey, additionalKeys);
38
+ }
39
+ exports.makeFindUniqueFunction = makeFindUniqueFunction;
29
40
  //# sourceMappingURL=array.unique.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.unique.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.unique.ts"],"names":[],"mappings":";;;AAAA,mCAAqD;AAIrD,SAAgB,kBAAkB,CAAwC,GAAG,MAAoB;IAC/F,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAwC,KAAY;IACpF,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,gDAEC;AAED,SAAgB,MAAM,CAAwC,MAAW;IACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,wBAEC;AAED,SAAgB,UAAU,CAA2C,MAAW,EAAE,OAA8B,EAAE,iBAAsB,EAAE;IACxI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAW,cAAc,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,gCAaC"}
1
+ {"version":3,"file":"array.unique.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.unique.ts"],"names":[],"mappings":";;;AAAA,mCAAqD;AAIrD,SAAgB,kBAAkB,CAAwC,GAAG,MAAoB;IAC/F,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAwC,KAAY;IACpF,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,gDAEC;AAED,SAAgB,MAAM,CAAwC,MAAW;IACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,wBAEC;AAED,SAAgB,UAAU,CAA2C,MAAW,EAAE,OAA8B,EAAE,iBAAsB,EAAE;IACxI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAW,cAAc,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,gCAaC;AAOD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAA2C,OAA8B,EAAE,iBAAsB,EAAE;IACvI,OAAO,CAAC,KAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC"}
@@ -1,4 +1,4 @@
1
- import { Maybe, MaybeNot } from '@dereekb/util';
1
+ import { Maybe, MaybeNot } from '../value/maybe';
2
2
  export declare function filterMaybeValues<T>(values: Maybe<Maybe<T>[]>): T[];
3
3
  export declare function filterMaybeValuesFn<T>(value: Maybe<T>): value is T;
4
4
  /**
@@ -2,3 +2,4 @@ export * from './model';
2
2
  export * from './model.copy';
3
3
  export * from './model.conversion';
4
4
  export * from './model.conversion.field';
5
+ export * from './model.modify';
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./model"), exports);
5
5
  tslib_1.__exportStar(require("./model.copy"), exports);
6
6
  tslib_1.__exportStar(require("./model.conversion"), exports);
7
7
  tslib_1.__exportStar(require("./model.conversion.field"), exports);
8
+ tslib_1.__exportStar(require("./model.modify"), exports);
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,uDAA6B;AAC7B,6DAAmC;AACnC,mEAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,uDAA6B;AAC7B,6DAAmC;AACnC,mEAAyC;AACzC,yDAA+B"}
@@ -44,12 +44,16 @@ export declare type ModelFieldConversionsConfig<V extends object, D extends obje
44
44
  }>;
45
45
  export declare function modelFieldConversions<V extends object, D extends object>(config: ModelFieldConversionsConfig<V, D>): ModelFieldConversions<V, D>;
46
46
  export declare type ModelFieldMapFunctions<I = unknown, O = unknown> = {
47
- from: ModelFieldMapFromFunction<I, O>;
48
- to: ModelFieldMapToFunction<I, O>;
47
+ readonly from: ModelFieldMapFromFunction<I, O>;
48
+ readonly to: ModelFieldMapToFunction<I, O>;
49
49
  };
50
50
  export declare type ModelFieldMapFunctionsConfig<I = unknown, O = unknown> = {
51
- from: ModelFieldMapFromConfig<I, O>;
52
- to: ModelFieldMapToConfig<I, O>;
51
+ readonly from: ModelFieldMapFromConfig<I, O>;
52
+ readonly to: ModelFieldMapToConfig<I, O>;
53
+ };
54
+ export declare type ModelFieldMapFunctionsWithDefaultsConfig<I = unknown, O = unknown> = {
55
+ readonly from: ModelFieldMapFromWithDefaultConfig<I, O>;
56
+ readonly to: ModelFieldMapToWithDefaultConfig<I, O>;
53
57
  };
54
58
  export declare function modelFieldMapFunctions<I = unknown, O = unknown>(config: ModelFieldMapFunctionsConfig<I, O>): ModelFieldMapFunctions<I, O>;
55
59
  /**
@@ -78,6 +82,8 @@ export declare type ModelFieldMapMaybeWithDefaultConfig<I, O> = ModelFieldMapMay
78
82
  export declare type ModelFieldMapConfig<I, O> = XOR<ModelFieldMapMaybeTooConfig<I, O>, ModelFieldMapMaybeWithDefaultConfig<I, O>>;
79
83
  export declare type ModelFieldMapFromConfig<I = unknown, O = unknown> = ModelFieldMapConfig<O, I>;
80
84
  export declare type ModelFieldMapToConfig<I = unknown, O = unknown> = ModelFieldMapConfig<I, O>;
85
+ export declare type ModelFieldMapFromWithDefaultConfig<I = unknown, O = unknown> = ModelFieldMapMaybeWithDefaultConfig<O, I>;
86
+ export declare type ModelFieldMapToWithDefaultConfig<I = unknown, O = unknown> = ModelFieldMapMaybeWithDefaultConfig<I, O>;
81
87
  export declare type ModelFieldMapFunction<I = unknown, O = unknown> = MapFunction<Maybe<I>, O>;
82
88
  export declare type ModelFieldMapFromFunction<I, O> = ModelFieldMapFunction<O, I>;
83
89
  export declare type ModelFieldMapToFunction<I, O> = ModelFieldMapFunction<I, O>;
@@ -1 +1 @@
1
- {"version":3,"file":"model.conversion.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/model.conversion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.conversion.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/model.conversion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { MaybeMap } from '@dereekb/util';
2
+ import { ArrayOrValue } from '../array/array';
3
+ import { Maybe } from '../value/maybe';
4
+ import { ModifierFunction } from '../value/modifier';
5
+ import { ModelMapFunction, ModelMapFunctions } from './model.conversion';
6
+ export declare type ModelInputDataModifier<D extends object> = {
7
+ modifyData: ModifierFunction<D>;
8
+ };
9
+ export declare type ModelInputModelModifier<V extends object> = {
10
+ modifyModel: ModifierFunction<V>;
11
+ };
12
+ export declare type ModelModifier<V extends object, D extends object> = ModelInputModelModifier<V> & ModelInputDataModifier<D>;
13
+ export declare type PartialModelModifier<V extends object, D extends object> = Partial<MaybeMap<ModelModifier<V, D>>>;
14
+ export declare function maybeMergeModelModifiers<V extends object, D extends object>(input: ArrayOrValue<PartialModelModifier<V, D>>): PartialModelModifier<V, D>;
15
+ export interface ModifyModelMapFunctionsConfig<V extends object, D extends object> {
16
+ readonly mapFunctions: ModelMapFunctions<V, D>;
17
+ /**
18
+ * Partial model modifiers to use.
19
+ */
20
+ readonly modifiers: ArrayOrValue<PartialModelModifier<V, D>>;
21
+ /**
22
+ * Provides a default value for both copyModel and copyData.
23
+ */
24
+ readonly copy?: boolean;
25
+ /**
26
+ * Whether or not to copy the input model before applying modifiers.
27
+ *
28
+ * Defaults to true.
29
+ */
30
+ readonly copyModel?: boolean;
31
+ /**
32
+ * Whether or not to copy the input data before applying modifiers.
33
+ *
34
+ * Defaults to true.
35
+ */
36
+ readonly copyData?: boolean;
37
+ }
38
+ export declare function modifyModelMapFunctions<V extends object, D extends object>(config: ModifyModelMapFunctionsConfig<V, D>): ModelMapFunctions<V, D>;
39
+ /**
40
+ * Merges a ModifierFunction with a ModelMapFunction
41
+ *
42
+ * @param mapFn
43
+ * @param modifyModel
44
+ * @param copy
45
+ * @returns
46
+ */
47
+ export declare function modifyModelMapFunction<I extends object, O extends object>(mapFn: ModelMapFunction<I, O>, modifyModel: Maybe<ModifierFunction<I>>, copy?: boolean): ModelMapFunction<I, O>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.modifyModelMapFunction = exports.modifyModelMapFunctions = exports.maybeMergeModelModifiers = void 0;
4
+ const array_1 = require("../array/array");
5
+ const array_value_1 = require("../array/array.value");
6
+ const modifier_1 = require("../value/modifier");
7
+ function maybeMergeModelModifiers(input) {
8
+ const modifiers = (0, array_1.asArray)(input);
9
+ const allModifyData = (0, array_value_1.filterMaybeValues)(modifiers.map((x) => x.modifyData));
10
+ const allModifyModel = (0, array_value_1.filterMaybeValues)(modifiers.map((x) => x.modifyModel));
11
+ const modifyData = (0, modifier_1.maybeMergeModifiers)(allModifyData);
12
+ const modifyModel = (0, modifier_1.maybeMergeModifiers)(allModifyModel);
13
+ return {
14
+ modifyData,
15
+ modifyModel
16
+ };
17
+ }
18
+ exports.maybeMergeModelModifiers = maybeMergeModelModifiers;
19
+ function modifyModelMapFunctions(config) {
20
+ const { copy, copyModel = copy, copyData = copy, mapFunctions, modifiers } = config;
21
+ const { from, to } = mapFunctions;
22
+ const { modifyData, modifyModel } = maybeMergeModelModifiers(modifiers);
23
+ const modifyFrom = modifyModelMapFunction(from, modifyData, copyData);
24
+ const modifyTo = modifyModelMapFunction(to, modifyModel, copyModel);
25
+ return {
26
+ from: modifyFrom,
27
+ to: modifyTo
28
+ };
29
+ }
30
+ exports.modifyModelMapFunctions = modifyModelMapFunctions;
31
+ /**
32
+ * Merges a ModifierFunction with a ModelMapFunction
33
+ *
34
+ * @param mapFn
35
+ * @param modifyModel
36
+ * @param copy
37
+ * @returns
38
+ */
39
+ function modifyModelMapFunction(mapFn, modifyModel, copy = true) {
40
+ return modifyModel
41
+ ? (input, target, options) => {
42
+ const inputToMap = copy && input != null ? Object.assign({}, input) : input;
43
+ if (inputToMap != null) {
44
+ modifyModel(inputToMap);
45
+ }
46
+ return mapFn(inputToMap, target, options);
47
+ }
48
+ : mapFn;
49
+ }
50
+ exports.modifyModelMapFunction = modifyModelMapFunction;
51
+ //# sourceMappingURL=model.modify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.modify.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/model.modify.ts"],"names":[],"mappings":";;;AACA,0CAAuD;AACvD,sDAAyD;AAEzD,gDAA0E;AAc1E,SAAgB,wBAAwB,CAAqC,KAA+C;IAC1H,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,IAAA,+BAAiB,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,IAAA,+BAAiB,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAA,8BAAmB,EAAC,aAAa,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAA,8BAAmB,EAAC,cAAc,CAAC,CAAC;IAExD,OAAO;QACL,UAAU;QACV,WAAW;KACZ,CAAC;AACJ,CAAC;AAXD,4DAWC;AA0BD,SAAgB,uBAAuB,CAAqC,MAA2C;IACrH,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACpF,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC;IAClC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAExE,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAEpE,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,QAAQ;KACb,CAAC;AACJ,CAAC;AAZD,0DAYC;AAED;;;;;;;GAOG;AACH,SAAgB,sBAAsB,CAAqC,KAA6B,EAAE,WAAuC,EAAE,IAAI,GAAG,IAAI;IAC5J,OAAO,WAAW;QAChB,CAAC,CAAC,CAAC,KAAe,EAAE,MAA0B,EAAE,OAA0C,EAAE,EAAE;YAC1F,MAAM,UAAU,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC,KAAK,CAAC;YAEhE,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,WAAW,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,OAAO,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACH,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAZD,wDAYC"}
@@ -1,4 +1,4 @@
1
- import { UnixDateTimeNumber } from '@dereekb/util';
1
+ import { UnixDateTimeNumber } from '../date/date';
2
2
  export declare type StoredDataString = string;
3
3
  export declare type StoredDataStorageKey = string;
4
4
  export interface StoredData {
@@ -3,6 +3,7 @@ import { Maybe } from './maybe';
3
3
  * Converts one value to another.
4
4
  */
5
5
  export declare type MapFunction<I, O> = (input: I) => O;
6
+ export declare type MapArrayFunction<F extends MapFunction<any, any>> = F extends MapFunction<infer I, infer O> ? MapFunction<I[], O[]> : never;
6
7
  /**
7
8
  * Converts values from the input, and applies them to the target if a target is supplied.
8
9
  */
@@ -11,6 +12,9 @@ export declare type ApplyMapFunction<I, O> = (input: I, target?: Maybe<Partial<O
11
12
  * Converts values from the input, and applies them to the target if a target is supplied.
12
13
  */
13
14
  export declare type ApplyMapFunctionWithOptions<I, O, C> = (input: I, target?: Maybe<Partial<O>>, options?: Maybe<C>) => O;
15
+ export declare function mapArrayFunction<I, O>(mapFunction: MapFunction<I, O>): MapArrayFunction<MapFunction<I, O>>;
16
+ export declare const MAP_IDENTITY: (input: unknown) => unknown;
17
+ export declare function mapIdentityFunction<T>(): MapFunction<T, T>;
14
18
  export declare type MapFunctionOutputPair<O, I = unknown> = {
15
19
  input: I;
16
20
  output: O;
@@ -1,7 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapFunctionOutput = exports.wrapMapFunctionOutput = exports.mapFunctionOutputPair = void 0;
3
+ exports.mapFunctionOutput = exports.wrapMapFunctionOutput = exports.mapFunctionOutputPair = exports.mapIdentityFunction = exports.MAP_IDENTITY = exports.mapArrayFunction = void 0;
4
4
  const build_1 = require("./build");
5
+ function mapArrayFunction(mapFunction) {
6
+ return (input) => input.map(mapFunction);
7
+ }
8
+ exports.mapArrayFunction = mapArrayFunction;
9
+ const MAP_IDENTITY = (input) => input;
10
+ exports.MAP_IDENTITY = MAP_IDENTITY;
11
+ function mapIdentityFunction() {
12
+ return exports.MAP_IDENTITY;
13
+ }
14
+ exports.mapIdentityFunction = mapIdentityFunction;
5
15
  /**
6
16
  * Wraps a MapFunction to instead provide the input and output values.
7
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/map.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAwBhC;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAiB,EAAqB;IACzE,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzB,OAAO;YACL,KAAK;YACL,MAAM;SACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AATD,sDASC;AAQD;;;;GAIG;AACH,SAAgB,qBAAqB,CAAgC,EAAqB;IACxF,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC;AALD,sDAKC;AAED,SAAgB,iBAAiB,CAAgC,MAAS,EAAE,KAAQ;IAClF,OAAO,IAAA,aAAK,EAA0B;QACpC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACX,CAAC,CAAC,MAAM,GAAG,KAA0C,CAAC;QACxD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAPD,8CAOC"}
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/map.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAoBhC,SAAgB,gBAAgB,CAAO,WAA8B;IACnE,OAAO,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAChD,CAAC;AAFD,4CAEC;AAEM,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,CAAC;AAAzC,QAAA,YAAY,gBAA6B;AAEtD,SAAgB,mBAAmB;IACjC,OAAO,oBAAiC,CAAC;AAC3C,CAAC;AAFD,kDAEC;AAQD;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAiB,EAAqB;IACzE,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzB,OAAO;YACL,KAAK;YACL,MAAM;SACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AATD,sDASC;AAQD;;;;GAIG;AACH,SAAgB,qBAAqB,CAAgC,EAAqB;IACxF,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC;AALD,sDAKC;AAED,SAAgB,iBAAiB,CAAgC,MAAS,EAAE,KAAQ;IAClF,OAAO,IAAA,aAAK,EAA0B;QACpC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACX,CAAC,CAAC,MAAM,GAAG,KAA0C,CAAC;QACxD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAPD,8CAOC"}
@@ -8,18 +8,20 @@ export declare type ModifierKey = string;
8
8
  * Modifies the input value.
9
9
  */
10
10
  export declare type ModifierFunction<T> = (input: T) => void;
11
+ /**
12
+ * Retains a reference to a ModifierFunction
13
+ */
14
+ export interface ModifierFunctionRef<T> {
15
+ readonly modify: ModifierFunction<T>;
16
+ }
11
17
  /**
12
18
  * A modifier that has a key and modify function.
13
19
  */
14
- export interface Modifier<T> {
20
+ export interface Modifier<T> extends ModifierFunctionRef<T> {
15
21
  /**
16
22
  * Modifier key.
17
23
  */
18
24
  readonly key: ModifierKey;
19
- /**
20
- *
21
- */
22
- readonly modify: ModifierFunction<T>;
23
25
  }
24
26
  /**
25
27
  * Creates a new modifier
@@ -29,6 +31,7 @@ export interface Modifier<T> {
29
31
  * @returns
30
32
  */
31
33
  export declare function modifier<T>(key: string, modify: ModifierFunction<T>): Modifier<T>;
34
+ export declare const NOOP_MODIFIER: ModifierFunction<any>;
32
35
  /**
33
36
  * Map of Modifiers keyed by the modifier key.
34
37
  */
@@ -56,3 +59,17 @@ export declare function modifierMapToFunction<T>(map: Maybe<ModifierMap<T>>): Mo
56
59
  * @returns
57
60
  */
58
61
  export declare function maybeModifierMapToFunction<T>(map: Maybe<ModifierMap<T>>): Maybe<ModifierFunction<T>>;
62
+ /**
63
+ * Merges all modifiers into a single function.
64
+ *
65
+ * @param map
66
+ * @returns
67
+ */
68
+ export declare function mergeModifiers<T>(modifiers: ModifierFunction<T>[]): ModifierFunction<T>;
69
+ /**
70
+ * Merges all modifiers into a single function. If not modifier functions are input, returns
71
+ *
72
+ * @param map
73
+ * @returns
74
+ */
75
+ export declare function maybeMergeModifiers<T>(modifiers: Maybe<ModifierFunction<T>[]>): Maybe<ModifierFunction<T>>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.maybeModifierMapToFunction = exports.modifierMapToFunction = exports.removeModifiers = exports.addModifiers = exports.modifier = void 0;
3
+ exports.maybeMergeModifiers = exports.mergeModifiers = exports.maybeModifierMapToFunction = exports.modifierMapToFunction = exports.removeModifiers = exports.addModifiers = exports.NOOP_MODIFIER = exports.modifier = void 0;
4
4
  const array_1 = require("../array");
5
5
  /**
6
6
  * Creates a new modifier
@@ -16,6 +16,8 @@ function modifier(key, modify) {
16
16
  };
17
17
  }
18
18
  exports.modifier = modifier;
19
+ const NOOP_MODIFIER = () => undefined;
20
+ exports.NOOP_MODIFIER = NOOP_MODIFIER;
19
21
  /**
20
22
  * Adds a modifier to the modifier map and returns the map.
21
23
  *
@@ -49,7 +51,7 @@ function removeModifiers(modifiers, map) {
49
51
  exports.removeModifiers = removeModifiers;
50
52
  function modifierMapToFunction(map) {
51
53
  var _a;
52
- return (_a = maybeModifierMapToFunction(map)) !== null && _a !== void 0 ? _a : (() => undefined);
54
+ return (_a = maybeModifierMapToFunction(map)) !== null && _a !== void 0 ? _a : exports.NOOP_MODIFIER;
53
55
  }
54
56
  exports.modifierMapToFunction = modifierMapToFunction;
55
57
  /**
@@ -59,11 +61,45 @@ exports.modifierMapToFunction = modifierMapToFunction;
59
61
  * @returns
60
62
  */
61
63
  function maybeModifierMapToFunction(map) {
62
- const fns = [];
63
- map === null || map === void 0 ? void 0 : map.forEach((x) => fns.push(x.modify));
64
- return (input) => {
65
- fns.forEach((fn) => fn(input));
66
- };
64
+ let fn;
65
+ if (map != null) {
66
+ const fns = [];
67
+ map.forEach((x) => fns.push(x.modify));
68
+ fn = (input) => fns.forEach((fn) => fn(input));
69
+ }
70
+ return fn;
67
71
  }
68
72
  exports.maybeModifierMapToFunction = maybeModifierMapToFunction;
73
+ /**
74
+ * Merges all modifiers into a single function.
75
+ *
76
+ * @param map
77
+ * @returns
78
+ */
79
+ function mergeModifiers(modifiers) {
80
+ var _a;
81
+ return (_a = maybeMergeModifiers(modifiers)) !== null && _a !== void 0 ? _a : exports.NOOP_MODIFIER;
82
+ }
83
+ exports.mergeModifiers = mergeModifiers;
84
+ /**
85
+ * Merges all modifiers into a single function. If not modifier functions are input, returns
86
+ *
87
+ * @param map
88
+ * @returns
89
+ */
90
+ function maybeMergeModifiers(modifiers) {
91
+ let result = undefined;
92
+ if (modifiers != null) {
93
+ switch (modifiers.length) {
94
+ case 1:
95
+ result = modifiers[0];
96
+ break;
97
+ default:
98
+ result = (input) => modifiers.forEach((fn) => fn(input));
99
+ break;
100
+ }
101
+ }
102
+ return result;
103
+ }
104
+ exports.maybeMergeModifiers = maybeMergeModifiers;
69
105
  //# sourceMappingURL=modifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modifier.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/modifier.ts"],"names":[],"mappings":";;;AAAA,oCAA0D;AA4B1D;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAI,GAAW,EAAE,MAA2B;IAClE,OAAO;QACL,GAAG;QACH,MAAM;KACP,CAAC;AACJ,CAAC;AALD,4BAKC;AAOD;;;;;;GAMG;AACH,SAAgB,YAAY,CAAI,SAAoC,EAAE,GAA2B;IAC/F,IAAI,CAAC,GAAG,EAAE;QACR,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;KACjB;IAED,IAAA,wBAAgB,EAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAE,GAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/F,OAAO,GAAG,CAAC;AACb,CAAC;AARD,oCAQC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAI,SAAoC,EAAE,GAA0B;IACjG,IAAI,GAAG,EAAE;QACP,IAAA,wBAAgB,EAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAE,GAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;KACzF;SAAM;QACL,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;KACjB;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AARD,0CAQC;AAED,SAAgB,qBAAqB,CAAI,GAA0B;;IACjE,OAAO,MAAA,0BAA0B,CAAC,GAAG,CAAC,mCAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC9D,CAAC;AAFD,sDAEC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAI,GAA0B;IACtE,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC;AAND,gEAMC"}
1
+ {"version":3,"file":"modifier.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/modifier.ts"],"names":[],"mappings":";;;AAAA,oCAA0D;AA8B1D;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAI,GAAW,EAAE,MAA2B;IAClE,OAAO;QACL,GAAG;QACH,MAAM;KACP,CAAC;AACJ,CAAC;AALD,4BAKC;AAEM,MAAM,aAAa,GAA0B,GAAG,EAAE,CAAC,SAAS,CAAC;AAAvD,QAAA,aAAa,iBAA0C;AAOpE;;;;;;GAMG;AACH,SAAgB,YAAY,CAAI,SAAoC,EAAE,GAA2B;IAC/F,IAAI,CAAC,GAAG,EAAE;QACR,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;KACjB;IAED,IAAA,wBAAgB,EAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAE,GAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/F,OAAO,GAAG,CAAC;AACb,CAAC;AARD,oCAQC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAI,SAAoC,EAAE,GAA0B;IACjG,IAAI,GAAG,EAAE;QACP,IAAA,wBAAgB,EAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAE,GAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;KACzF;SAAM;QACL,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;KACjB;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AARD,0CAQC;AAED,SAAgB,qBAAqB,CAAI,GAA0B;;IACjE,OAAO,MAAA,0BAA0B,CAAC,GAAG,CAAC,mCAAI,qBAAa,CAAC;AAC1D,CAAC;AAFD,sDAEC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAI,GAA0B;IACtE,IAAI,EAA8B,CAAC;IAEnC,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,MAAM,GAAG,GAA0B,EAAE,CAAC;QACtC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;KAChD;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAVD,gEAUC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAI,SAAgC;;IAChE,OAAO,MAAA,mBAAmB,CAAC,SAAS,CAAC,mCAAI,qBAAa,CAAC;AACzD,CAAC;AAFD,wCAEC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAI,SAAuC;IAC5E,IAAI,MAAM,GAA+B,SAAS,CAAC;IAEnD,IAAI,SAAS,IAAI,IAAI,EAAE;QACrB,QAAQ,SAAS,CAAC,MAAM,EAAE;YACxB,KAAK,CAAC;gBACJ,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM;YACR;gBACE,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,CAAE,SAAmC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpF,MAAM;SACT;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAfD,kDAeC"}
package/test/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [7.2.0](https://github.com/dereekb/dbx-components/compare/v7.1.0-dev...v7.2.0) (2022-06-06)
6
+
7
+
8
+
9
+ # [7.1.0](https://github.com/dereekb/dbx-components/compare/v7.0.1-dev...v7.1.0) (2022-06-06)
10
+
11
+
12
+
13
+ ## [7.0.1](https://github.com/dereekb/dbx-components/compare/v7.0.0-dev...v7.0.1) (2022-06-05)
14
+
15
+
16
+
5
17
  # [7.0.0](https://github.com/dereekb/dbx-components/compare/v6.0.0-dev...v7.0.0) (2022-06-05)
6
18
 
7
19
 
package/test/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@dereekb/util/test",
3
- "version": "7.0.0",
3
+ "version": "7.2.0",
4
4
  "main": "./src/index.js",
5
5
  "typings": "./src/index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@dereekb/util": "7.0.0",
8
+ "@dereekb/util": "7.2.0",
9
9
  "make-error": "^1.3.0",
10
+ "ts-essentials": "^9.1.2",
10
11
  "extra-set": "^2.2.11",
11
12
  "tslib": "^2.0.0"
12
13
  }