@appartmint/mint 2.6.7 → 2.6.15

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.
@@ -75,7 +75,7 @@ export declare abstract class MintObject {
75
75
  /**
76
76
  * Create a deep copy of an object
77
77
  */
78
- static deepClone(object: any): any;
78
+ static deepClone<T>(object: T): T;
79
79
  }
80
80
  export default MintObject;
81
81
  //# sourceMappingURL=object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/ts/imports/util/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,UAAU;IAC5B;;OAEG;IACF,MAAM,CAAC,SAAS,CAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAI,OAAO;IAclD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAI,OAAO;IA8BxD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,GAAG;IASrD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,GAAG;IAStD;;OAEG;IACH,MAAM,CAAC,IAAI,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAI7E;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAOjF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GAAI,GAAG;IAO5E;;OAEG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAOxD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,MAAM;IASzD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,SAAO,GAAI,GAAG;IAqCzE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIjE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;CAqBlC;AACD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/ts/imports/util/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,UAAU;IAC5B;;OAEG;IACF,MAAM,CAAC,SAAS,CAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAI,OAAO;IAclD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAI,OAAO;IA8BxD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,GAAG;IASrD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,GAAG;IAStD;;OAEG;IACH,MAAM,CAAC,IAAI,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAI7E;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAOjF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GAAI,GAAG;IAO5E;;OAEG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAOxD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,MAAM;IASzD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,SAAO,GAAI,GAAG;IAqCzE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIjE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;CA+DjC;AACD,eAAe,UAAU,CAAC"}
package/dist/js/index.js CHANGED
@@ -1709,23 +1709,53 @@ class MintObject {
1709
1709
  * Create a deep copy of an object
1710
1710
  */
1711
1711
  static deepClone(object) {
1712
- // Clone every property
1713
- const clone = {};
1714
- for (const key in object) {
1715
- // Functions
1716
- if (typeof object[key] === 'function') {
1717
- clone[key] = object[key].bind(clone);
1718
- // Objects
1719
- }
1720
- else if (object[key] && typeof object[key] === 'object') {
1721
- clone[key] = this.deepClone(object[key]);
1712
+ // Only clone objects
1713
+ if (typeof object !== 'object' || object === null) {
1714
+ return object;
1715
+ }
1716
+ // Track object references to avoid circular references
1717
+ const seen = new WeakMap();
1718
+ const stack = [[object, Array.isArray(object) ? [] : {}]];
1719
+ // Run clone tasks
1720
+ while (stack.length) {
1721
+ const [source, clone, key] = stack.pop();
1722
+ if (key !== undefined) {
1723
+ const value = source[key];
1724
+ // Bind functions
1725
+ if (typeof value === 'function') {
1726
+ clone[key] = value.bind(clone);
1727
+ continue;
1728
+ }
1722
1729
  // Primitives
1730
+ if (typeof value !== 'object' || value === null) {
1731
+ clone[key] = value;
1732
+ continue;
1733
+ }
1734
+ // Circular references
1735
+ if (seen.has(value)) {
1736
+ clone[key] = seen.get(value);
1737
+ continue;
1738
+ }
1739
+ // Object / Array
1740
+ clone[key] = Array.isArray(value) ? [] : {};
1741
+ seen.set(value, clone[key]);
1742
+ stack.push([value, clone[key]]);
1743
+ // No key, process full object
1723
1744
  }
1724
1745
  else {
1725
- clone[key] = object[key];
1746
+ seen.set(source, clone);
1747
+ if (Array.isArray(source)) {
1748
+ source.forEach((_, index) => {
1749
+ stack.push([source, clone, index]);
1750
+ });
1751
+ continue;
1752
+ }
1753
+ Object.keys(source).forEach((key) => {
1754
+ stack.push([source, clone, key]);
1755
+ });
1726
1756
  }
1727
1757
  }
1728
- return clone;
1758
+ return seen.get(object);
1729
1759
  }
1730
1760
  }
1731
1761
  ;