@untemps/utils 4.0.0-beta.13 → 4.0.0-beta.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.
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./isObject.cjs`);var t=(n,r,i=!1)=>{let a=i?r:structuredClone(r);for(let r of Object.keys(n))if(r in a&&e.isObject(n[r])&&e.isObject(a[r]))a[r]=t(n[r],a[r],i);else{let e=n[r];a[r]=typeof e==`object`&&e?structuredClone(e):e}return a};exports.deepMerge=t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./isObject.cjs`);var t=(n,r=new WeakMap)=>{if(Array.isArray(n)){if(r.has(n))return r.get(n);let e=Array(n.length);r.set(n,e);for(let i=0;i<n.length;i++)e[i]=t(n[i],r);return e}if(e.isObject(n)){if(r.has(n))return r.get(n);let e={};r.set(n,e);for(let i of Object.keys(n))i!==`__proto__`&&(e[i]=t(n[i],r));return e}if(typeof n!=`object`||!n)return n;try{return structuredClone(n)}catch{return n}},n=(r,i,a,o)=>{let s=o.get(r);if(s)return s;let c=a?i:t(i);o.set(r,c);for(let i of Object.keys(r))i!==`__proto__`&&(i in c&&e.isObject(r[i])&&e.isObject(c[i])?c[i]=n(r[i],c[i],a,o):c[i]=t(r[i]));return o.delete(r),c},r=(e,t,r=!1)=>n(e,t,r,new WeakMap);exports.deepMerge=r;
@@ -10,6 +10,10 @@
10
10
  * const target = { foo: 2, zaz: { juv: 1 }, bar: { gag: 'gag' } }
11
11
  * deepMerge(source, target) // { foo: 1, zaz: { juv: 1 }, bar: { gag: [1, 2, 3], pol: { mur: 'mur' } } }
12
12
  *
13
+ * Plain objects and arrays are deep-cloned, with circular references preserved. Non-cloneable
14
+ * values (functions, DOM nodes, non-serialisable instances) are copied by reference instead of
15
+ * throwing. `__proto__` keys are ignored to prevent prototype pollution.
16
+ *
13
17
  * @param source - The object to merge into the target.
14
18
  * @param target - The target object where source will be merged.
15
19
  * @param mutate - If true, merges directly into target without cloning. Defaults to false.
@@ -1 +1 @@
1
- {"version":3,"file":"deepMerge.d.ts","sourceRoot":"","sources":["../../src/object/deepMerge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,GACrB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,gBAAc,KACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAexB,CAAA"}
1
+ {"version":3,"file":"deepMerge.d.ts","sourceRoot":"","sources":["../../src/object/deepMerge.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6DH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,SAAS,GACrB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,gBAAc,KACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAiD,CAAA"}
@@ -1,13 +1,33 @@
1
1
  import { isObject as e } from "./isObject.js";
2
2
  //#region src/object/deepMerge.ts
3
- var t = (n, r, i = !1) => {
4
- let a = i ? r : structuredClone(r);
5
- for (let r of Object.keys(n)) if (r in a && e(n[r]) && e(a[r])) a[r] = t(n[r], a[r], i);
6
- else {
7
- let e = n[r];
8
- a[r] = typeof e == "object" && e ? structuredClone(e) : e;
3
+ var t = (n, r = /* @__PURE__ */ new WeakMap()) => {
4
+ if (Array.isArray(n)) {
5
+ if (r.has(n)) return r.get(n);
6
+ let e = Array(n.length);
7
+ r.set(n, e);
8
+ for (let i = 0; i < n.length; i++) e[i] = t(n[i], r);
9
+ return e;
9
10
  }
10
- return a;
11
- };
11
+ if (e(n)) {
12
+ if (r.has(n)) return r.get(n);
13
+ let e = {};
14
+ r.set(n, e);
15
+ for (let i of Object.keys(n)) i !== "__proto__" && (e[i] = t(n[i], r));
16
+ return e;
17
+ }
18
+ if (typeof n != "object" || !n) return n;
19
+ try {
20
+ return structuredClone(n);
21
+ } catch {
22
+ return n;
23
+ }
24
+ }, n = (r, i, a, o) => {
25
+ let s = o.get(r);
26
+ if (s) return s;
27
+ let c = a ? i : t(i);
28
+ o.set(r, c);
29
+ for (let i of Object.keys(r)) i !== "__proto__" && (i in c && e(r[i]) && e(c[i]) ? c[i] = n(r[i], c[i], a, o) : c[i] = t(r[i]));
30
+ return o.delete(r), c;
31
+ }, r = (e, t, r = !1) => n(e, t, r, /* @__PURE__ */ new WeakMap());
12
32
  //#endregion
13
- export { t as deepMerge };
33
+ export { r as deepMerge };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../lang/isNil.cjs`);var t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=e=>Object.keys(e).map(t).join(`|`),r=(r,i={},a=`%`)=>{let o=t(a),s=n(i),c=RegExp(`${o}(${s})${o}`,`g`);return r.replace(c,(t,n)=>e.isNil(i[n])?n:String(i[n]))};exports.interpolate=r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../lang/isNil.cjs`);var t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=e=>Object.keys(e).map(t).join(`|`),r=(r,i={},a=`%`)=>{let o=t(a),s=n(i),c=s?RegExp(`${o}(${s})${o}`,`g`):/(?!)/g;return r.replace(c,(t,n)=>e.isNil(i[n])?n:String(i[n]))};exports.interpolate=r;
@@ -1 +1 @@
1
- {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/string/interpolate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,gBAAa,KAAG,MAKhG,CAAA"}
1
+ {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/string/interpolate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,gBAAa,KAAG,MAMhG,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { isNil as e } from "../lang/isNil.js";
2
2
  //#region src/string/interpolate.ts
3
3
  var t = (e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), n = (e) => Object.keys(e).map(t).join("|"), r = (r, i = {}, a = "%") => {
4
- let o = t(a), s = n(i), c = RegExp(`${o}(${s})${o}`, "g");
4
+ let o = t(a), s = n(i), c = s ? RegExp(`${o}(${s})${o}`, "g") : /(?!)/g;
5
5
  return r.replace(c, (t, n) => e(i[n]) ? n : String(i[n]));
6
6
  };
7
7
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@untemps/utils",
3
- "version": "4.0.0-beta.13",
3
+ "version": "4.0.0-beta.15",
4
4
  "description": "Utils for @untemps packages",
5
5
  "repository": "git@github.com:untemps/utils.git",
6
6
  "keywords": [],