@etsoo/shared 1.2.40 → 1.2.41
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/__tests__/Utils.ts +10 -0
- package/lib/cjs/Utils.d.ts +2 -1
- package/lib/cjs/Utils.js +12 -4
- package/lib/mjs/Utils.d.ts +2 -1
- package/lib/mjs/Utils.js +12 -4
- package/package.json +2 -2
- package/src/Utils.ts +16 -4
package/__tests__/Utils.ts
CHANGED
|
@@ -306,6 +306,16 @@ test('Tests for setNestedValue', () => {
|
|
|
306
306
|
expect(Reflect.get((obj.jsonData as any).newProperty, 'value')).toBe(125);
|
|
307
307
|
});
|
|
308
308
|
|
|
309
|
+
test('Tests for setNestedValue removal', () => {
|
|
310
|
+
const obj = { jsonData: { photoSize: [200, 100], supportResizing: true } };
|
|
311
|
+
|
|
312
|
+
Utils.setNestedValue(obj, 'jsonData.photoSize', undefined);
|
|
313
|
+
expect(obj.jsonData.photoSize).toBeUndefined();
|
|
314
|
+
|
|
315
|
+
Utils.setNestedValue(obj, 'jsonData.supportResizing', undefined);
|
|
316
|
+
expect(obj.jsonData.supportResizing).toBeUndefined();
|
|
317
|
+
});
|
|
318
|
+
|
|
309
319
|
test('Tests for sortByFavor', () => {
|
|
310
320
|
const items = [1, 2, 3, 4, 5, 6, 7];
|
|
311
321
|
expect(Utils.sortByFavor(items, [5, 1, 3])).toStrictEqual([
|
package/lib/cjs/Utils.d.ts
CHANGED
|
@@ -267,8 +267,9 @@ export declare namespace Utils {
|
|
|
267
267
|
* @param data Data
|
|
268
268
|
* @param name Field name, support property chain like 'jsonData.logSize'
|
|
269
269
|
* @param value Value
|
|
270
|
+
* @param keepNull Keep null value or not
|
|
270
271
|
*/
|
|
271
|
-
function setNestedValue(data: object, name: string, value: unknown): void;
|
|
272
|
+
function setNestedValue(data: object, name: string, value: unknown, keepNull?: boolean): void;
|
|
272
273
|
/**
|
|
273
274
|
* Parse path similar with node.js path.parse
|
|
274
275
|
* @param path Input path
|
package/lib/cjs/Utils.js
CHANGED
|
@@ -541,18 +541,26 @@ var Utils;
|
|
|
541
541
|
* @param data Data
|
|
542
542
|
* @param name Field name, support property chain like 'jsonData.logSize'
|
|
543
543
|
* @param value Value
|
|
544
|
+
* @param keepNull Keep null value or not
|
|
544
545
|
*/
|
|
545
|
-
function setNestedValue(data, name, value) {
|
|
546
|
+
function setNestedValue(data, name, value, keepNull) {
|
|
546
547
|
const properties = name.split('.');
|
|
547
548
|
const len = properties.length;
|
|
548
|
-
if (len === 1)
|
|
549
|
-
|
|
549
|
+
if (len === 1) {
|
|
550
|
+
if (value == null && keepNull !== true) {
|
|
551
|
+
Reflect.deleteProperty(data, name);
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
Reflect.set(data, name, value);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
550
557
|
else {
|
|
551
558
|
let curr = data;
|
|
552
559
|
for (let i = 0; i < len; i++) {
|
|
553
560
|
const property = properties[i];
|
|
554
561
|
if (i + 1 === len) {
|
|
555
|
-
|
|
562
|
+
setNestedValue(curr, property, value, keepNull);
|
|
563
|
+
// Reflect.set(curr, property, value);
|
|
556
564
|
}
|
|
557
565
|
else {
|
|
558
566
|
let p = Reflect.get(curr, property);
|
package/lib/mjs/Utils.d.ts
CHANGED
|
@@ -267,8 +267,9 @@ export declare namespace Utils {
|
|
|
267
267
|
* @param data Data
|
|
268
268
|
* @param name Field name, support property chain like 'jsonData.logSize'
|
|
269
269
|
* @param value Value
|
|
270
|
+
* @param keepNull Keep null value or not
|
|
270
271
|
*/
|
|
271
|
-
function setNestedValue(data: object, name: string, value: unknown): void;
|
|
272
|
+
function setNestedValue(data: object, name: string, value: unknown, keepNull?: boolean): void;
|
|
272
273
|
/**
|
|
273
274
|
* Parse path similar with node.js path.parse
|
|
274
275
|
* @param path Input path
|
package/lib/mjs/Utils.js
CHANGED
|
@@ -535,18 +535,26 @@ export var Utils;
|
|
|
535
535
|
* @param data Data
|
|
536
536
|
* @param name Field name, support property chain like 'jsonData.logSize'
|
|
537
537
|
* @param value Value
|
|
538
|
+
* @param keepNull Keep null value or not
|
|
538
539
|
*/
|
|
539
|
-
function setNestedValue(data, name, value) {
|
|
540
|
+
function setNestedValue(data, name, value, keepNull) {
|
|
540
541
|
const properties = name.split('.');
|
|
541
542
|
const len = properties.length;
|
|
542
|
-
if (len === 1)
|
|
543
|
-
|
|
543
|
+
if (len === 1) {
|
|
544
|
+
if (value == null && keepNull !== true) {
|
|
545
|
+
Reflect.deleteProperty(data, name);
|
|
546
|
+
}
|
|
547
|
+
else {
|
|
548
|
+
Reflect.set(data, name, value);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
544
551
|
else {
|
|
545
552
|
let curr = data;
|
|
546
553
|
for (let i = 0; i < len; i++) {
|
|
547
554
|
const property = properties[i];
|
|
548
555
|
if (i + 1 === len) {
|
|
549
|
-
|
|
556
|
+
setNestedValue(curr, property, value, keepNull);
|
|
557
|
+
// Reflect.set(curr, property, value);
|
|
550
558
|
}
|
|
551
559
|
else {
|
|
552
560
|
let p = Reflect.get(curr, property);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etsoo/shared",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.41",
|
|
4
4
|
"description": "TypeScript shared utilities and functions",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/mjs/index.js",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"@types/lodash.isequal": "^4.5.8",
|
|
59
59
|
"jest": "^29.7.0",
|
|
60
60
|
"jest-environment-jsdom": "^29.7.0",
|
|
61
|
-
"ts-jest": "^29.1.
|
|
61
|
+
"ts-jest": "^29.1.4",
|
|
62
62
|
"typescript": "^5.4.5"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
package/src/Utils.ts
CHANGED
|
@@ -735,18 +735,30 @@ export namespace Utils {
|
|
|
735
735
|
* @param data Data
|
|
736
736
|
* @param name Field name, support property chain like 'jsonData.logSize'
|
|
737
737
|
* @param value Value
|
|
738
|
+
* @param keepNull Keep null value or not
|
|
738
739
|
*/
|
|
739
|
-
export function setNestedValue(
|
|
740
|
+
export function setNestedValue(
|
|
741
|
+
data: object,
|
|
742
|
+
name: string,
|
|
743
|
+
value: unknown,
|
|
744
|
+
keepNull?: boolean
|
|
745
|
+
) {
|
|
740
746
|
const properties = name.split('.');
|
|
741
747
|
const len = properties.length;
|
|
742
|
-
if (len === 1)
|
|
743
|
-
|
|
748
|
+
if (len === 1) {
|
|
749
|
+
if (value == null && keepNull !== true) {
|
|
750
|
+
Reflect.deleteProperty(data, name);
|
|
751
|
+
} else {
|
|
752
|
+
Reflect.set(data, name, value);
|
|
753
|
+
}
|
|
754
|
+
} else {
|
|
744
755
|
let curr = data;
|
|
745
756
|
for (let i = 0; i < len; i++) {
|
|
746
757
|
const property = properties[i];
|
|
747
758
|
|
|
748
759
|
if (i + 1 === len) {
|
|
749
|
-
|
|
760
|
+
setNestedValue(curr, property, value, keepNull);
|
|
761
|
+
// Reflect.set(curr, property, value);
|
|
750
762
|
} else {
|
|
751
763
|
let p = Reflect.get(curr, property);
|
|
752
764
|
if (p == null) {
|