@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.
@@ -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
- for (const e in objToDiff) {
438
- if (e === "ref") continue;
439
- const originalProp = original[e];
440
- const objToDiffProp = objToDiff[e];
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
- cache[e] = {};
443
- diff(originalProp, objToDiffProp, cache[e]);
444
- } else if (objToDiffProp !== void 0) {
445
- cache[e] = objToDiffProp;
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
- cache = objToDiff;
453
- } else {
454
- const diffArr = [];
455
- for (let i = 0; i < original.length; i++) {
456
- const diffObj = diff(original[i], objToDiff[i]);
457
- if (Object.keys(diffObj).length > 0) {
458
- diffArr.push(diffObj);
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
- cache = [];
470
- diffArrays(original, objToDiff, cache);
471
- } else {
472
- diffObjects(original, objToDiff, cache);
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 cache;
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;
@@ -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
- for (const e in objToDiff) {
406
- if (e === "ref") continue;
407
- const originalProp = original[e];
408
- const objToDiffProp = objToDiff[e];
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
- cache[e] = {};
411
- diff(originalProp, objToDiffProp, cache[e]);
412
- } else if (objToDiffProp !== void 0) {
413
- cache[e] = objToDiffProp;
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
- cache = objToDiff;
421
- } else {
422
- const diffArr = [];
423
- for (let i = 0; i < original.length; i++) {
424
- const diffObj = diff(original[i], objToDiff[i]);
425
- if (Object.keys(diffObj).length > 0) {
426
- diffArr.push(diffObj);
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
- cache = [];
438
- diffArrays(original, objToDiff, cache);
439
- } else {
440
- diffObjects(original, objToDiff, cache);
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 cache;
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
- for (const e in objToDiff) {
499
- if (e === 'ref') continue
497
+ export const diffObjects = (original, objToDiff, cache, opts) => {
498
+ let hasDiff = false
500
499
 
501
- const originalProp = original[e]
502
- const objToDiffProp = objToDiff[e]
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
- cache[e] = {}
506
- diff(originalProp, objToDiffProp, cache[e])
507
- } else if (objToDiffProp !== undefined) {
508
- cache[e] = objToDiffProp
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
- return cache
523
+
524
+ return hasDiff ? cache : undefined
512
525
  }
513
526
 
514
- export const diffArrays = (original, objToDiff, cache) => {
527
+ const diffArrays = (original, objToDiff, cache, opts) => {
515
528
  if (original.length !== objToDiff.length) {
516
- cache = objToDiff
517
- } else {
518
- const diffArr = []
519
- for (let i = 0; i < original.length; i++) {
520
- const diffObj = diff(original[i], objToDiff[i])
521
- if (Object.keys(diffObj).length > 0) {
522
- diffArr.push(diffObj)
523
- }
524
- }
525
- if (diffArr.length > 0) {
526
- cache = diffArr
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
- return cache
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
- cache = []
535
- diffArrays(original, objToDiff, cache)
536
- } else {
537
- diffObjects(original, objToDiff, cache)
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 cache
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.80",
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": "d82b592533bd0365992abd94490da846f787beb4",
27
+ "gitHead": "bd0e154d7fd091d33b99e5c8da9011de0e4abea4",
28
28
  "devDependencies": {
29
29
  "@babel/core": "^7.27.1"
30
30
  }