@domql/utils 2.29.80 → 2.29.81
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/dist/cjs/object.js +48 -30
- package/dist/esm/object.js +48 -30
- package/object.js +60 -29
- package/package.json +2 -2
package/dist/cjs/object.js
CHANGED
|
@@ -31,7 +31,6 @@ __export(object_exports, {
|
|
|
31
31
|
detachFunctionsFromObject: () => detachFunctionsFromObject,
|
|
32
32
|
detectInfiniteLoop: () => detectInfiniteLoop,
|
|
33
33
|
diff: () => diff,
|
|
34
|
-
diffArrays: () => diffArrays,
|
|
35
34
|
diffObjects: () => diffObjects,
|
|
36
35
|
excludeKeysFromObject: () => excludeKeysFromObject,
|
|
37
36
|
exec: () => exec,
|
|
@@ -433,45 +432,64 @@ const stringToObject = (str, opts = { verbose: true }) => {
|
|
|
433
432
|
if (opts.errorCallback) opts.errorCallback(e);
|
|
434
433
|
}
|
|
435
434
|
};
|
|
436
|
-
const diffObjects = (original, objToDiff, cache) => {
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
const
|
|
435
|
+
const diffObjects = (original, objToDiff, cache, opts) => {
|
|
436
|
+
let hasDiff = false;
|
|
437
|
+
for (const key in objToDiff) {
|
|
438
|
+
if (key === "ref") continue;
|
|
439
|
+
const originalProp = original[key];
|
|
440
|
+
const objToDiffProp = objToDiff[key];
|
|
441
441
|
if ((0, import_types.isObject)(originalProp) && (0, import_types.isObject)(objToDiffProp)) {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
442
|
+
const nestedDiff = diff(originalProp, objToDiffProp, {}, opts);
|
|
443
|
+
if (nestedDiff && Object.keys(nestedDiff).length > 0) {
|
|
444
|
+
cache[key] = nestedDiff;
|
|
445
|
+
hasDiff = true;
|
|
446
|
+
}
|
|
447
|
+
} else if ((0, import_types.isArray)(originalProp) && (0, import_types.isArray)(objToDiffProp)) {
|
|
448
|
+
const nestedDiff = diffArrays(originalProp, objToDiffProp, [], opts);
|
|
449
|
+
if (nestedDiff && nestedDiff.length > 0) {
|
|
450
|
+
cache[key] = nestedDiff;
|
|
451
|
+
hasDiff = true;
|
|
452
|
+
}
|
|
453
|
+
} else if (objToDiffProp !== originalProp) {
|
|
454
|
+
cache[key] = objToDiffProp;
|
|
455
|
+
hasDiff = true;
|
|
446
456
|
}
|
|
447
457
|
}
|
|
448
|
-
return cache;
|
|
458
|
+
return hasDiff ? cache : void 0;
|
|
449
459
|
};
|
|
450
|
-
const diffArrays = (original, objToDiff, cache) => {
|
|
460
|
+
const diffArrays = (original, objToDiff, cache, opts) => {
|
|
451
461
|
if (original.length !== objToDiff.length) {
|
|
452
|
-
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
}
|
|
461
|
-
if (diffArr.length > 0) {
|
|
462
|
-
cache = diffArr;
|
|
462
|
+
return objToDiff;
|
|
463
|
+
}
|
|
464
|
+
let hasDiff = false;
|
|
465
|
+
for (let i = 0; i < original.length; i++) {
|
|
466
|
+
const diffObj = diff(original[i], objToDiff[i], {}, opts);
|
|
467
|
+
if (diffObj && ((0, import_types.isObject)(diffObj) ? Object.keys(diffObj).length > 0 : true)) {
|
|
468
|
+
cache[i] = diffObj;
|
|
469
|
+
hasDiff = true;
|
|
463
470
|
}
|
|
464
471
|
}
|
|
465
|
-
return cache;
|
|
472
|
+
return hasDiff ? cache : void 0;
|
|
466
473
|
};
|
|
467
|
-
const diff = (original, objToDiff, cache = {}) => {
|
|
474
|
+
const diff = (original, objToDiff, cache = {}, opts = {}) => {
|
|
475
|
+
if (opts.cloneInstances) {
|
|
476
|
+
original = deepClone(original);
|
|
477
|
+
objToDiff = deepClone(objToDiff);
|
|
478
|
+
}
|
|
479
|
+
original = deepStringify(original);
|
|
480
|
+
objToDiff = deepStringify(objToDiff);
|
|
468
481
|
if ((0, import_types.isArray)(original) && (0, import_types.isArray)(objToDiff)) {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
}
|
|
472
|
-
|
|
482
|
+
const result = diffArrays(original, objToDiff, [], opts);
|
|
483
|
+
return result === void 0 ? {} : result;
|
|
484
|
+
}
|
|
485
|
+
if ((0, import_types.isObject)(original) && (0, import_types.isObject)(objToDiff)) {
|
|
486
|
+
const result = diffObjects(original, objToDiff, {}, opts);
|
|
487
|
+
return result === void 0 ? {} : result;
|
|
488
|
+
}
|
|
489
|
+
if (original !== objToDiff) {
|
|
490
|
+
return objToDiff;
|
|
473
491
|
}
|
|
474
|
-
return
|
|
492
|
+
return {};
|
|
475
493
|
};
|
|
476
494
|
const hasOwnProperty = (o, ...args) => Object.prototype.hasOwnProperty.call(o, ...args);
|
|
477
495
|
const isEmpty = (o) => Object.keys(o).length === 0;
|
package/dist/esm/object.js
CHANGED
|
@@ -401,45 +401,64 @@ const stringToObject = (str, opts = { verbose: true }) => {
|
|
|
401
401
|
if (opts.errorCallback) opts.errorCallback(e);
|
|
402
402
|
}
|
|
403
403
|
};
|
|
404
|
-
const diffObjects = (original, objToDiff, cache) => {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
const
|
|
404
|
+
const diffObjects = (original, objToDiff, cache, opts) => {
|
|
405
|
+
let hasDiff = false;
|
|
406
|
+
for (const key in objToDiff) {
|
|
407
|
+
if (key === "ref") continue;
|
|
408
|
+
const originalProp = original[key];
|
|
409
|
+
const objToDiffProp = objToDiff[key];
|
|
409
410
|
if (isObject(originalProp) && isObject(objToDiffProp)) {
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
411
|
+
const nestedDiff = diff(originalProp, objToDiffProp, {}, opts);
|
|
412
|
+
if (nestedDiff && Object.keys(nestedDiff).length > 0) {
|
|
413
|
+
cache[key] = nestedDiff;
|
|
414
|
+
hasDiff = true;
|
|
415
|
+
}
|
|
416
|
+
} else if (isArray(originalProp) && isArray(objToDiffProp)) {
|
|
417
|
+
const nestedDiff = diffArrays(originalProp, objToDiffProp, [], opts);
|
|
418
|
+
if (nestedDiff && nestedDiff.length > 0) {
|
|
419
|
+
cache[key] = nestedDiff;
|
|
420
|
+
hasDiff = true;
|
|
421
|
+
}
|
|
422
|
+
} else if (objToDiffProp !== originalProp) {
|
|
423
|
+
cache[key] = objToDiffProp;
|
|
424
|
+
hasDiff = true;
|
|
414
425
|
}
|
|
415
426
|
}
|
|
416
|
-
return cache;
|
|
427
|
+
return hasDiff ? cache : void 0;
|
|
417
428
|
};
|
|
418
|
-
const diffArrays = (original, objToDiff, cache) => {
|
|
429
|
+
const diffArrays = (original, objToDiff, cache, opts) => {
|
|
419
430
|
if (original.length !== objToDiff.length) {
|
|
420
|
-
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
}
|
|
429
|
-
if (diffArr.length > 0) {
|
|
430
|
-
cache = diffArr;
|
|
431
|
+
return objToDiff;
|
|
432
|
+
}
|
|
433
|
+
let hasDiff = false;
|
|
434
|
+
for (let i = 0; i < original.length; i++) {
|
|
435
|
+
const diffObj = diff(original[i], objToDiff[i], {}, opts);
|
|
436
|
+
if (diffObj && (isObject(diffObj) ? Object.keys(diffObj).length > 0 : true)) {
|
|
437
|
+
cache[i] = diffObj;
|
|
438
|
+
hasDiff = true;
|
|
431
439
|
}
|
|
432
440
|
}
|
|
433
|
-
return cache;
|
|
441
|
+
return hasDiff ? cache : void 0;
|
|
434
442
|
};
|
|
435
|
-
const diff = (original, objToDiff, cache = {}) => {
|
|
443
|
+
const diff = (original, objToDiff, cache = {}, opts = {}) => {
|
|
444
|
+
if (opts.cloneInstances) {
|
|
445
|
+
original = deepClone(original);
|
|
446
|
+
objToDiff = deepClone(objToDiff);
|
|
447
|
+
}
|
|
448
|
+
original = deepStringify(original);
|
|
449
|
+
objToDiff = deepStringify(objToDiff);
|
|
436
450
|
if (isArray(original) && isArray(objToDiff)) {
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
}
|
|
440
|
-
|
|
451
|
+
const result = diffArrays(original, objToDiff, [], opts);
|
|
452
|
+
return result === void 0 ? {} : result;
|
|
453
|
+
}
|
|
454
|
+
if (isObject(original) && isObject(objToDiff)) {
|
|
455
|
+
const result = diffObjects(original, objToDiff, {}, opts);
|
|
456
|
+
return result === void 0 ? {} : result;
|
|
457
|
+
}
|
|
458
|
+
if (original !== objToDiff) {
|
|
459
|
+
return objToDiff;
|
|
441
460
|
}
|
|
442
|
-
return
|
|
461
|
+
return {};
|
|
443
462
|
};
|
|
444
463
|
const hasOwnProperty = (o, ...args) => Object.prototype.hasOwnProperty.call(o, ...args);
|
|
445
464
|
const isEmpty = (o) => Object.keys(o).length === 0;
|
|
@@ -743,7 +762,6 @@ export {
|
|
|
743
762
|
detachFunctionsFromObject,
|
|
744
763
|
detectInfiniteLoop,
|
|
745
764
|
diff,
|
|
746
|
-
diffArrays,
|
|
747
765
|
diffObjects,
|
|
748
766
|
excludeKeysFromObject,
|
|
749
767
|
exec,
|
package/object.js
CHANGED
|
@@ -494,50 +494,81 @@ export const stringToObject = (str, opts = { verbose: true }) => {
|
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
496
|
|
|
497
|
-
export const diffObjects = (original, objToDiff, cache) => {
|
|
498
|
-
|
|
499
|
-
if (e === 'ref') continue
|
|
497
|
+
export const diffObjects = (original, objToDiff, cache, opts) => {
|
|
498
|
+
let hasDiff = false
|
|
500
499
|
|
|
501
|
-
|
|
502
|
-
|
|
500
|
+
for (const key in objToDiff) {
|
|
501
|
+
if (key === 'ref') continue
|
|
502
|
+
|
|
503
|
+
const originalProp = original[key]
|
|
504
|
+
const objToDiffProp = objToDiff[key]
|
|
503
505
|
|
|
504
506
|
if (isObject(originalProp) && isObject(objToDiffProp)) {
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
507
|
+
const nestedDiff = diff(originalProp, objToDiffProp, {}, opts)
|
|
508
|
+
if (nestedDiff && Object.keys(nestedDiff).length > 0) {
|
|
509
|
+
cache[key] = nestedDiff
|
|
510
|
+
hasDiff = true
|
|
511
|
+
}
|
|
512
|
+
} else if (isArray(originalProp) && isArray(objToDiffProp)) {
|
|
513
|
+
const nestedDiff = diffArrays(originalProp, objToDiffProp, [], opts)
|
|
514
|
+
if (nestedDiff && nestedDiff.length > 0) {
|
|
515
|
+
cache[key] = nestedDiff
|
|
516
|
+
hasDiff = true
|
|
517
|
+
}
|
|
518
|
+
} else if (objToDiffProp !== originalProp) {
|
|
519
|
+
cache[key] = objToDiffProp
|
|
520
|
+
hasDiff = true
|
|
509
521
|
}
|
|
510
522
|
}
|
|
511
|
-
|
|
523
|
+
|
|
524
|
+
return hasDiff ? cache : undefined
|
|
512
525
|
}
|
|
513
526
|
|
|
514
|
-
|
|
527
|
+
const diffArrays = (original, objToDiff, cache, opts) => {
|
|
515
528
|
if (original.length !== objToDiff.length) {
|
|
516
|
-
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
cache =
|
|
529
|
+
return objToDiff
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
let hasDiff = false
|
|
533
|
+
for (let i = 0; i < original.length; i++) {
|
|
534
|
+
const diffObj = diff(original[i], objToDiff[i], {}, opts)
|
|
535
|
+
if (
|
|
536
|
+
diffObj &&
|
|
537
|
+
(isObject(diffObj) ? Object.keys(diffObj).length > 0 : true)
|
|
538
|
+
) {
|
|
539
|
+
cache[i] = diffObj
|
|
540
|
+
hasDiff = true
|
|
527
541
|
}
|
|
528
542
|
}
|
|
529
|
-
|
|
543
|
+
|
|
544
|
+
return hasDiff ? cache : undefined
|
|
530
545
|
}
|
|
531
546
|
|
|
532
|
-
export const diff = (original, objToDiff, cache = {}) => {
|
|
547
|
+
export const diff = (original, objToDiff, cache = {}, opts = {}) => {
|
|
548
|
+
if (opts.cloneInstances) {
|
|
549
|
+
original = deepClone(original)
|
|
550
|
+
objToDiff = deepClone(objToDiff)
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
original = deepStringify(original)
|
|
554
|
+
objToDiff = deepStringify(objToDiff)
|
|
555
|
+
|
|
533
556
|
if (isArray(original) && isArray(objToDiff)) {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
}
|
|
537
|
-
|
|
557
|
+
const result = diffArrays(original, objToDiff, [], opts)
|
|
558
|
+
return result === undefined ? {} : result
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
if (isObject(original) && isObject(objToDiff)) {
|
|
562
|
+
const result = diffObjects(original, objToDiff, {}, opts)
|
|
563
|
+
return result === undefined ? {} : result
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
// fallback for primitives or differing types
|
|
567
|
+
if (original !== objToDiff) {
|
|
568
|
+
return objToDiff
|
|
538
569
|
}
|
|
539
570
|
|
|
540
|
-
return
|
|
571
|
+
return {}
|
|
541
572
|
}
|
|
542
573
|
|
|
543
574
|
export const hasOwnProperty = (o, ...args) =>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domql/utils",
|
|
3
|
-
"version": "2.29.
|
|
3
|
+
"version": "2.29.81",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"build": "npx rimraf -I dist; npm run build:cjs; npm run build:esm",
|
|
25
25
|
"prepublish": "npm run build; npm run copy:package:cjs"
|
|
26
26
|
},
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "bd0e154d7fd091d33b99e5c8da9011de0e4abea4",
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@babel/core": "^7.27.1"
|
|
30
30
|
}
|