@dereekb/util 9.25.13 → 9.25.14
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 +4 -0
- package/fetch/CHANGELOG.md +4 -0
- package/fetch/package.json +2 -2
- package/package.json +1 -1
- package/src/lib/array/array.d.ts +1 -0
- package/src/lib/array/array.js.map +1 -1
- package/src/lib/grouping.d.ts +2 -1
- package/src/lib/grouping.js.map +1 -1
- package/src/lib/number/bound.d.ts +9 -0
- package/src/lib/number/bound.js +14 -2
- package/src/lib/number/bound.js.map +1 -1
- package/src/lib/object/index.d.ts +1 -0
- package/src/lib/object/index.js +1 -0
- package/src/lib/object/index.js.map +1 -1
- package/src/lib/object/object.array.delta.d.ts +47 -0
- package/src/lib/object/object.array.delta.js +87 -0
- package/src/lib/object/object.array.delta.js.map +1 -0
- package/src/lib/object/object.equal.d.ts +60 -0
- package/src/lib/object/object.equal.js +36 -1
- package/src/lib/object/object.equal.js.map +1 -1
- package/src/lib/value/equal.d.ts +10 -7
- package/src/lib/value/equal.js.map +1 -1
- package/test/CHANGELOG.md +4 -0
- package/test/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [9.25.14](https://github.com/dereekb/dbx-components/compare/v9.25.13-dev...v9.25.14) (2023-11-23)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
5
9
|
## [9.25.13](https://github.com/dereekb/dbx-components/compare/v9.25.12-dev...v9.25.13) (2023-11-15)
|
|
6
10
|
|
|
7
11
|
|
package/fetch/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [9.25.14](https://github.com/dereekb/dbx-components/compare/v9.25.13-dev...v9.25.14) (2023-11-23)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
5
9
|
## [9.25.13](https://github.com/dereekb/dbx-components/compare/v9.25.12-dev...v9.25.13) (2023-11-15)
|
|
6
10
|
|
|
7
11
|
|
package/fetch/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/util/fetch",
|
|
3
|
-
"version": "9.25.
|
|
3
|
+
"version": "9.25.14",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"types": "./src/index.d.ts",
|
|
6
6
|
"dependencies": {},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@dereekb/util": "9.25.
|
|
8
|
+
"@dereekb/util": "9.25.14",
|
|
9
9
|
"lodash.isequal": "^4.5.0",
|
|
10
10
|
"make-error": "^1.3.0",
|
|
11
11
|
"class-validator": "^0.13.2",
|
package/package.json
CHANGED
package/src/lib/array/array.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.ts"],"names":[],"mappings":"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"}
|
package/src/lib/grouping.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PrimativeKey, ReadKeyFunction } from './key';
|
|
2
|
+
import { EqualityComparatorFunction } from './value/comparator';
|
|
2
3
|
import { DecisionFunction } from './value/decision';
|
|
3
4
|
import { Maybe } from './value/maybe.type';
|
|
4
5
|
export interface SeparateResult<T> {
|
|
@@ -17,7 +18,7 @@ export interface PairsGroupingResult<T> {
|
|
|
17
18
|
}
|
|
18
19
|
export interface ArrayContentsDifferentParams<T, K extends PrimativeKey = PrimativeKey> {
|
|
19
20
|
groupKeyFn: ReadKeyFunction<T, K>;
|
|
20
|
-
isEqual:
|
|
21
|
+
isEqual: EqualityComparatorFunction<T>;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Configuration for RestoreOrderParams.
|
package/src/lib/grouping.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/grouping.ts"],"names":[],"mappings":";;;AACA,qCAAuC;
|
|
1
|
+
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/grouping.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,3 +34,12 @@ export interface BoundNumberFunctionConfig<T extends number = number> extends Nu
|
|
|
34
34
|
}
|
|
35
35
|
export declare type BoundNumberFunction<T extends number = number> = MapFunction<number, T>;
|
|
36
36
|
export declare function boundNumberFunction<T extends number = number>(boundNumberFunctionConfig: BoundNumberFunctionConfig<T>): BoundNumberFunction<T>;
|
|
37
|
+
/**
|
|
38
|
+
* Returns the input number clamped between the min and max values.
|
|
39
|
+
*
|
|
40
|
+
* @param input
|
|
41
|
+
* @param min
|
|
42
|
+
* @param max
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
export declare function boundNumber<T extends number = number>(input: number, min: T, max: T): T;
|
package/src/lib/number/bound.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.boundNumberFunction = exports.wrapNumberFunction = exports.isInNumberBoundFunction = exports.isValidNumberBound = void 0;
|
|
3
|
+
exports.boundNumber = exports.boundNumberFunction = exports.wrapNumberFunction = exports.isInNumberBoundFunction = exports.isValidNumberBound = void 0;
|
|
4
4
|
function isValidNumberBound(bounds) {
|
|
5
5
|
const { min, max } = bounds;
|
|
6
6
|
return min <= max;
|
|
@@ -41,8 +41,20 @@ function boundNumberFunction(boundNumberFunctionConfig) {
|
|
|
41
41
|
return wrapNumberFunction(boundNumberFunctionConfig);
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
return (input) =>
|
|
44
|
+
return (input) => boundNumber(input, min, max);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
exports.boundNumberFunction = boundNumberFunction;
|
|
48
|
+
/**
|
|
49
|
+
* Returns the input number clamped between the min and max values.
|
|
50
|
+
*
|
|
51
|
+
* @param input
|
|
52
|
+
* @param min
|
|
53
|
+
* @param max
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
function boundNumber(input, min, max) {
|
|
57
|
+
return Math.max(Math.min(input, max), min);
|
|
58
|
+
}
|
|
59
|
+
exports.boundNumber = boundNumber;
|
|
48
60
|
//# sourceMappingURL=bound.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bound.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/number/bound.ts"],"names":[],"mappings":";;;AAeA,SAAgB,kBAAkB,CAAC,MAAmB;IACpD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC5B,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC;AAHD,gDAGC;AAID,SAAgB,uBAAuB,CAAC,MAAmB;IACzD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAE5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;KAClE;IAED,OAAO,CAAC,KAAa,EAAE,EAAE;QACvB,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAVD,0DAUC;AAgBD,SAAgB,kBAAkB,CAA4B,wBAAqD;IACjH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,wBAAwB,CAAC;IAClE,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3B,MAAM,SAAS,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;IAEpE,MAAM,EAAE,GAAoC,CAAC,CAAC,KAAQ,EAAE,EAAE;QACxD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;aAAM;YACL,gIAAgI;YAChI,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC;YAClG,OAAO,YAAY,CAAC;SACrB;IACH,CAAC,CAA0B,CAAC;IAC5B,EAAE,CAAC,KAAK,GAAG,wBAAwB,CAAC;IACpC,OAAO,EAA2B,CAAC;AACrC,CAAC;AAjBD,gDAiBC;AAaD,SAAgB,mBAAmB,CAA4B,yBAAuD;IACpH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,yBAAyB,CAAC;IAErD,IAAI,IAAI,EAAE;QACR,OAAO,kBAAkB,CAAI,yBAAyB,CAAC,CAAC;KACzD;SAAM;QACL,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"bound.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/number/bound.ts"],"names":[],"mappings":";;;AAeA,SAAgB,kBAAkB,CAAC,MAAmB;IACpD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC5B,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC;AAHD,gDAGC;AAID,SAAgB,uBAAuB,CAAC,MAAmB;IACzD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAE5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;KAClE;IAED,OAAO,CAAC,KAAa,EAAE,EAAE;QACvB,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAVD,0DAUC;AAgBD,SAAgB,kBAAkB,CAA4B,wBAAqD;IACjH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,wBAAwB,CAAC;IAClE,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3B,MAAM,SAAS,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;IAEpE,MAAM,EAAE,GAAoC,CAAC,CAAC,KAAQ,EAAE,EAAE;QACxD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;aAAM;YACL,gIAAgI;YAChI,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC;YAClG,OAAO,YAAY,CAAC;SACrB;IACH,CAAC,CAA0B,CAAC;IAC5B,EAAE,CAAC,KAAK,GAAG,wBAAwB,CAAC;IACpC,OAAO,EAA2B,CAAC;AACrC,CAAC;AAjBD,gDAiBC;AAaD,SAAgB,mBAAmB,CAA4B,yBAAuD;IACpH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,yBAAyB,CAAC;IAErD,IAAI,IAAI,EAAE;QACR,OAAO,kBAAkB,CAAI,yBAAyB,CAAC,CAAC;KACzD;SAAM;QACL,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAI,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAC3D;AACH,CAAC;AARD,kDAQC;AAED;;;;;;;GAOG;AACH,SAAgB,WAAW,CAA4B,KAAa,EAAE,GAAM,EAAE,GAAM;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAM,CAAC;AAClD,CAAC;AAFD,kCAEC"}
|
package/src/lib/object/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./object.array.delta"), exports);
|
|
4
5
|
tslib_1.__exportStar(require("./object.array"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./object.empty"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./object.equal"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,yDAA+B;AAC/B,yDAA+B;AAC/B,uDAA6B;AAC7B,mDAAyB;AACzB,gEAAsC;AACtC,+DAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,yDAA+B;AAC/B,yDAA+B;AAC/B,yDAA+B;AAC/B,uDAA6B;AAC7B,mDAAyB;AACzB,gEAAsC;AACtC,+DAAqC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { MaybeMap } from '../value/maybe.type';
|
|
2
|
+
import { ObjectFieldEqualityChecker } from './object.equal';
|
|
3
|
+
import { EmptyArray } from '../array/array';
|
|
4
|
+
/**
|
|
5
|
+
* A partial "delta" of the given entry. It only contains values that changed from the last entry.
|
|
6
|
+
*
|
|
7
|
+
* - Undefined field values mean the entry should inherit the previous entry's values.
|
|
8
|
+
* - Null field values in a field mean the value has been cleared and should be excluded from future entries.
|
|
9
|
+
*/
|
|
10
|
+
export declare type CompressedObjectDeltaArrayDeltaEntry<T extends object> = MaybeMap<T>;
|
|
11
|
+
/**
|
|
12
|
+
* A compressed object array.
|
|
13
|
+
*
|
|
14
|
+
* The first object is always fully expanded. Objects are in order of the delta changes.
|
|
15
|
+
*/
|
|
16
|
+
export declare type CompressedObjectDeltaArray<T extends object> = [T, ...CompressedObjectDeltaArrayDeltaEntry<T>[]];
|
|
17
|
+
/**
|
|
18
|
+
* Compresses the input objects array to a CompressedObjectDeltaArray.
|
|
19
|
+
*/
|
|
20
|
+
export declare type ObjectDeltaArrayCompressorCompressFunction<T extends object> = ((uncompressed: T[]) => CompressedObjectDeltaArray<T>) & ((uncompressed: EmptyArray) => EmptyArray);
|
|
21
|
+
/**
|
|
22
|
+
* Expands a CompressedObjectDeltaArray to an array of objects.
|
|
23
|
+
*/
|
|
24
|
+
export declare type ObjectDeltaArrayCompressorExpandFunction<T extends object> = ((compressed: CompressedObjectDeltaArray<T>) => T[]) & ((compressed: EmptyArray) => EmptyArray);
|
|
25
|
+
/**
|
|
26
|
+
* Configuration for an object delta array compressor.
|
|
27
|
+
*/
|
|
28
|
+
export interface ObjectDeltaArrayCompressorConfig<T extends object> {
|
|
29
|
+
/**
|
|
30
|
+
* Fields to capture as part of the compressor.
|
|
31
|
+
*/
|
|
32
|
+
readonly equalityChecker: ObjectFieldEqualityChecker<T>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* An object delta array compressor.
|
|
36
|
+
*/
|
|
37
|
+
export interface ObjectDeltaArrayCompressor<T extends object> {
|
|
38
|
+
readonly _equalityChecker: ObjectFieldEqualityChecker<T>;
|
|
39
|
+
readonly compress: ObjectDeltaArrayCompressorCompressFunction<T>;
|
|
40
|
+
readonly expand: ObjectDeltaArrayCompressorExpandFunction<T>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates an object delta array compressor.
|
|
44
|
+
*
|
|
45
|
+
* @param compressor
|
|
46
|
+
*/
|
|
47
|
+
export declare function objectDeltaArrayCompressor<T extends object>(config: ObjectDeltaArrayCompressorConfig<T>): ObjectDeltaArrayCompressor<T>;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.objectDeltaArrayCompressor = void 0;
|
|
4
|
+
const object_filter_pojo_1 = require("./object.filter.pojo");
|
|
5
|
+
const object_1 = require("./object");
|
|
6
|
+
const object_filter_tuple_1 = require("./object.filter.tuple");
|
|
7
|
+
/**
|
|
8
|
+
* Creates an object delta array compressor.
|
|
9
|
+
*
|
|
10
|
+
* @param compressor
|
|
11
|
+
*/
|
|
12
|
+
function objectDeltaArrayCompressor(config) {
|
|
13
|
+
const { equalityChecker: _equalityChecker } = config;
|
|
14
|
+
const assignKnownValuesToCopy = (0, object_filter_pojo_1.assignValuesToPOJOFunction)({ keysFilter: Array.from(_equalityChecker._fields.keys()), valueFilter: object_filter_tuple_1.KeyValueTypleValueFilter.NULL });
|
|
15
|
+
function compress(uncompressed) {
|
|
16
|
+
// return an empty array if there is nothing to compress
|
|
17
|
+
if (uncompressed.length === 0) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
let current = assignKnownValuesToCopy({}, uncompressed[0]);
|
|
21
|
+
const result = [current];
|
|
22
|
+
uncompressed.slice(1).forEach((next) => {
|
|
23
|
+
const compressed = {};
|
|
24
|
+
const fieldEqualityResult = _equalityChecker(current, next);
|
|
25
|
+
// only append unequal fields
|
|
26
|
+
fieldEqualityResult.unequalFields.forEach((field) => {
|
|
27
|
+
const nextValue = next[field];
|
|
28
|
+
let saveValue;
|
|
29
|
+
if (nextValue == null) {
|
|
30
|
+
// if null or undefined, check previous value
|
|
31
|
+
const previousValue = current[field];
|
|
32
|
+
if (previousValue == null) {
|
|
33
|
+
saveValue = undefined; // "no change"
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
saveValue = null; // "clear"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
saveValue = nextValue;
|
|
41
|
+
}
|
|
42
|
+
compressed[field] = saveValue;
|
|
43
|
+
});
|
|
44
|
+
result.push(compressed);
|
|
45
|
+
current = next;
|
|
46
|
+
});
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
const allKeys = Array.from(_equalityChecker._fields.keys());
|
|
50
|
+
function expand(compressed) {
|
|
51
|
+
if (compressed.length === 0) {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
let current = assignKnownValuesToCopy({}, compressed[0]); // first one is never compressed.
|
|
55
|
+
const result = [current];
|
|
56
|
+
compressed.slice(1).forEach((next) => {
|
|
57
|
+
const uncompressed = {};
|
|
58
|
+
allKeys.forEach((key) => {
|
|
59
|
+
let setValue;
|
|
60
|
+
if ((0, object_1.objectHasKey)(next, key)) {
|
|
61
|
+
const nextValue = next[key];
|
|
62
|
+
if (nextValue === null) {
|
|
63
|
+
// do nothing, since the value should be "undefined"
|
|
64
|
+
setValue = undefined;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
setValue = nextValue;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
setValue = current[key];
|
|
72
|
+
}
|
|
73
|
+
uncompressed[key] = setValue;
|
|
74
|
+
});
|
|
75
|
+
result.push(uncompressed);
|
|
76
|
+
current = uncompressed;
|
|
77
|
+
});
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
_equalityChecker,
|
|
82
|
+
compress: compress,
|
|
83
|
+
expand: expand
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
exports.objectDeltaArrayCompressor = objectDeltaArrayCompressor;
|
|
87
|
+
//# sourceMappingURL=object.array.delta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.array.delta.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.array.delta.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,64 @@
|
|
|
1
|
+
import { FieldOfType } from '../key';
|
|
2
|
+
import { EqualityComparatorFunction } from '../value/comparator';
|
|
1
3
|
/**
|
|
2
4
|
* Performs a deep comparison to check if all values on the input filters are equal.
|
|
3
5
|
*/
|
|
4
6
|
export declare function areEqualPOJOValues<F>(a: F, b: F): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for an ObjectFieldEqualityChecker.
|
|
9
|
+
*/
|
|
10
|
+
export interface ObjectFieldEqualityCheckerConfig<T extends object> {
|
|
11
|
+
/**
|
|
12
|
+
* Fields to capture as part of the compressor.
|
|
13
|
+
*/
|
|
14
|
+
readonly fields: (ObjectFieldEqualityCheckerFieldConfig<T, any> | FieldOfType<T>)[];
|
|
15
|
+
/**
|
|
16
|
+
* Default equality function to use when a field's equality function is not provided.
|
|
17
|
+
*/
|
|
18
|
+
readonly defaultEqualityFunction?: EqualityComparatorFunction<unknown>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Field configration for a single field of a ObjectFieldEqualityCheckerConfig.
|
|
22
|
+
*/
|
|
23
|
+
export interface ObjectFieldEqualityCheckerFieldConfig<T extends object, K extends FieldOfType<T>> {
|
|
24
|
+
/**
|
|
25
|
+
* Field name to compare.
|
|
26
|
+
*/
|
|
27
|
+
readonly fieldName: K;
|
|
28
|
+
/**
|
|
29
|
+
* Custom equality comparator for the field.
|
|
30
|
+
*/
|
|
31
|
+
readonly isEqual: EqualityComparatorFunction<T[K]>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Results of an ObjectFieldEqualityChecker.
|
|
35
|
+
*/
|
|
36
|
+
export interface ObjectFieldEqualityCheckResults<T extends object> {
|
|
37
|
+
/**
|
|
38
|
+
* First compared object.
|
|
39
|
+
*/
|
|
40
|
+
readonly a: T;
|
|
41
|
+
/**
|
|
42
|
+
* Second compared object.
|
|
43
|
+
*/
|
|
44
|
+
readonly b: T;
|
|
45
|
+
/**
|
|
46
|
+
* Returns true if the object has no unequal fields.
|
|
47
|
+
*/
|
|
48
|
+
readonly isEqual: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Fields that are considered equal.
|
|
51
|
+
*/
|
|
52
|
+
readonly equalFields: FieldOfType<T>[];
|
|
53
|
+
/**
|
|
54
|
+
* Fields that are considered unequal.
|
|
55
|
+
*/
|
|
56
|
+
readonly unequalFields: FieldOfType<T>[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Function used to check if two objects are considered equal.
|
|
60
|
+
*/
|
|
61
|
+
export declare type ObjectFieldEqualityChecker<T extends object> = ((a: Partial<T>, b: Partial<T>) => ObjectFieldEqualityCheckResults<T>) & {
|
|
62
|
+
readonly _fields: Map<keyof T, ObjectFieldEqualityCheckerFieldConfig<T, any>>;
|
|
63
|
+
};
|
|
64
|
+
export declare function objectFieldEqualityChecker<T extends object>(config: ObjectFieldEqualityCheckerConfig<T>): ObjectFieldEqualityChecker<T>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.areEqualPOJOValues = void 0;
|
|
3
|
+
exports.objectFieldEqualityChecker = exports.areEqualPOJOValues = void 0;
|
|
4
4
|
const lodash_1 = require("lodash");
|
|
5
5
|
/**
|
|
6
6
|
* Performs a deep comparison to check if all values on the input filters are equal.
|
|
@@ -9,4 +9,39 @@ function areEqualPOJOValues(a, b) {
|
|
|
9
9
|
return (0, lodash_1.isEqual)(a, b);
|
|
10
10
|
}
|
|
11
11
|
exports.areEqualPOJOValues = areEqualPOJOValues;
|
|
12
|
+
function objectFieldEqualityChecker(config) {
|
|
13
|
+
const { fields, defaultEqualityFunction = (a, b) => a === b } = config;
|
|
14
|
+
const _fields = new Map();
|
|
15
|
+
fields.forEach((input) => {
|
|
16
|
+
let field;
|
|
17
|
+
if (typeof input === 'object') {
|
|
18
|
+
field = input;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
field = {
|
|
22
|
+
fieldName: input,
|
|
23
|
+
isEqual: defaultEqualityFunction
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
_fields.set(field.fieldName, field);
|
|
27
|
+
});
|
|
28
|
+
const fn = ((a, b) => {
|
|
29
|
+
const equalFields = [];
|
|
30
|
+
const unequalFields = [];
|
|
31
|
+
_fields.forEach((fieldConfig, fieldName) => {
|
|
32
|
+
const { isEqual } = fieldConfig;
|
|
33
|
+
isEqual(a[fieldName], b[fieldName]) ? equalFields.push(fieldName) : unequalFields.push(fieldName);
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
a,
|
|
37
|
+
b,
|
|
38
|
+
isEqual: unequalFields.length === 0,
|
|
39
|
+
equalFields,
|
|
40
|
+
unequalFields
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
fn._fields = _fields;
|
|
44
|
+
return fn;
|
|
45
|
+
}
|
|
46
|
+
exports.objectFieldEqualityChecker = objectFieldEqualityChecker;
|
|
12
47
|
//# sourceMappingURL=object.equal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.equal.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.equal.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;
|
|
1
|
+
{"version":3,"file":"object.equal.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.equal.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAKjC;;GAEG;AACH,SAAgB,kBAAkB,CAAI,CAAI,EAAE,CAAI;IAC9C,OAAO,IAAA,gBAAO,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC;AAFD,gDAEC;AAgED,SAAgB,0BAA0B,CAAmB,MAA2C;IACtG,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0D,CAAC;IAElF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,KAAoD,CAAC;QAEzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,GAAG,KAAK,CAAC;SACf;aAAM;YACL,KAAK,GAAG;gBACN,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,uBAAuB;aACjC,CAAC;SACH;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,CAAC,CAAC,CAAI,EAAE,CAAI,EAAsC,EAAE;QAC7D,MAAM,WAAW,GAAqB,EAAE,CAAC;QACzC,MAAM,aAAa,GAAqB,EAAE,CAAC;QAE3C,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE;YACzC,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAChC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,CAAC;YACD,CAAC;YACD,OAAO,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;YACnC,WAAW;YACX,aAAa;SACd,CAAC;IACJ,CAAC,CAA4C,CAAC;IAC9C,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;IACrB,OAAO,EAAmC,CAAC;AAC7C,CAAC;AAtCD,gEAsCC"}
|
package/src/lib/value/equal.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { IterableOrValue } from './../iterable/iterable';
|
|
2
|
-
|
|
3
|
-
* Function used for equivalence comparisons on an object.
|
|
4
|
-
*/
|
|
5
|
-
export declare type IsEqualFunction<T = unknown> = (a: T, b: T) => boolean;
|
|
2
|
+
import { EqualityComparatorFunction } from './comparator';
|
|
6
3
|
/**
|
|
7
4
|
* Used to check if the input object is considered equal to the current context.
|
|
8
5
|
*/
|
|
@@ -20,7 +17,7 @@ export declare type AreEqualContext<T = unknown> = (x: IterableOrValue<T>) => bo
|
|
|
20
17
|
* @param fn
|
|
21
18
|
* @returns
|
|
22
19
|
*/
|
|
23
|
-
export declare function isEqualContext<T>(contextValue: T, fn:
|
|
20
|
+
export declare function isEqualContext<T>(contextValue: T, fn: EqualityComparatorFunction<T>): IsEqualContext<T>;
|
|
24
21
|
/**
|
|
25
22
|
* Creates an AreEqualContext
|
|
26
23
|
*
|
|
@@ -28,7 +25,7 @@ export declare function isEqualContext<T>(contextValue: T, fn: IsEqualFunction<T
|
|
|
28
25
|
* @param fn
|
|
29
26
|
* @returns
|
|
30
27
|
*/
|
|
31
|
-
export declare function areEqualContext<T>(contextValue: T, fn:
|
|
28
|
+
export declare function areEqualContext<T>(contextValue: T, fn: EqualityComparatorFunction<T>): AreEqualContext<T>;
|
|
32
29
|
/**
|
|
33
30
|
* Returns true if all input values are equal.
|
|
34
31
|
*
|
|
@@ -38,4 +35,10 @@ export declare function areEqualContext<T>(contextValue: T, fn: IsEqualFunction<
|
|
|
38
35
|
* @param fn
|
|
39
36
|
* @returns
|
|
40
37
|
*/
|
|
41
|
-
export declare function allObjectsAreEqual<T>(values: IterableOrValue<T>, fn:
|
|
38
|
+
export declare function allObjectsAreEqual<T>(values: IterableOrValue<T>, fn: EqualityComparatorFunction<T>): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Function used for equivalence comparisons on an object.
|
|
41
|
+
*
|
|
42
|
+
* @deprecated use EqualityComparatorFunction instead.
|
|
43
|
+
*/
|
|
44
|
+
export declare type IsEqualFunction<T = unknown> = EqualityComparatorFunction<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"equal.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/equal.ts"],"names":[],"mappings":";;;AAAA,qDAA+G;
|
|
1
|
+
{"version":3,"file":"equal.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/equal.ts"],"names":[],"mappings":";;;AAAA,qDAA+G;AAe/G;;;;;;GAMG;AACH,SAAgB,cAAc,CAAI,YAAe,EAAE,EAAiC;IAClF,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC;AAJD,wCAIC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAI,YAAe,EAAE,EAAiC;IACnF,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEjD,OAAO,CAAC,KAAyB,EAAE,EAAE;QACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,IAAA,qBAAU,EAAC,KAAK,CAAC,EAAE;YACrB,QAAQ,GAAG,CAAC,IAAA,2BAAgB,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACzD;aAAM;YACL,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAdD,0CAcC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAI,MAA0B,EAAE,EAAiC;IACjG,IAAI,IAAA,qBAAU,EAAC,MAAM,CAAC,EAAE;QACtB,MAAM,WAAW,GAAG,IAAA,iCAAsB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACpF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAPD,gDAOC"}
|
package/test/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [9.25.14](https://github.com/dereekb/dbx-components/compare/v9.25.13-dev...v9.25.14) (2023-11-23)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
5
9
|
## [9.25.13](https://github.com/dereekb/dbx-components/compare/v9.25.12-dev...v9.25.13) (2023-11-15)
|
|
6
10
|
|
|
7
11
|
|
package/test/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/util/test",
|
|
3
|
-
"version": "9.25.
|
|
3
|
+
"version": "9.25.14",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
7
7
|
"dependencies": {},
|
|
8
8
|
"peerDependencies": {
|
|
9
|
-
"@dereekb/util": "9.25.
|
|
9
|
+
"@dereekb/util": "9.25.14",
|
|
10
10
|
"lodash.isequal": "^4.5.0",
|
|
11
11
|
"make-error": "^1.3.0",
|
|
12
12
|
"class-validator": "^0.13.2",
|