stringweaver 1.4.3 → 1.4.5

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,5 +1,5 @@
1
1
  /*© KooiInc 2026-2031*/
2
- var E=be(),U=Q(),pe=Q("");function Q(e,t={}){let{useSymbolicExtensions:r}=t;return e=E(e,String,Number)?String(e):void 0,r&&de(),function(s,...l){return j(s,w(l))};function n(s,l){return l&&E(e,String,Number)?String(e):`{${s}}`}function o(s,l){let S=s in l;return S&&E(l[s],String,Number)?String(l[s]):n(s,S)}function u(s){return(...l)=>{let S=l.find(c=>c.key);return o(S?S.key:"_",s)}}function b(s,l){return s.replace(/\{(?<key>[a-z_\d]+)}/gim,u(l))}function m(s){let l=[];return Object.entries(s).forEach(([S,c])=>{c.forEach((i,h)=>(l[h]??={},l[h][S]=i))}),l}function y(s){return s.length===1&&Object.values(s[0]).every(Array.isArray)}function w(s){return y(s)?m(s[0]):s}function j(s,l){let S=l?.length?l.filter(c=>E(c,Object)).map((c,i)=>b(s,{...c,index:i+1})).join(""):s;return E(e,void 0)?S:S.replace(/\{[a-z_\d].+\}/gim,String(e))}}function de(){return String.prototype[Symbol.for("interpolate")]||Object.defineProperties(String.prototype,{[Symbol.for("interpolate")]:{value(...e){return U(this,...e)}},[Symbol.for("interpolate$")]:{value(...e){return pe(this,...e)}}}),[Symbol.for("interpolate"),Symbol.for("interpolate$")]}function be(){let e=new Intl.Collator("en",{sensitivity:"base"}),t=o=>typeof o=="function"?o?.name||o?.constructor?.name:"noCTOR";function r(o,u){return u===Number&&(Number.isNaN(o)||!Number.isFinite(o))?!1:e.compare(Object.prototype.toString.call(o),`[object ${t(u)}]`)===0||o?.name===u?.name}function n(o,...u){if(u.length>1){for(let b of u)if(r(o,b))return!0;return!1}return r(o,u?.shift())}return n}var R=Object.defineProperties(J,{escape:{value:$e,enumerable:!0}});function J(e,...t){let{flags:r,cleanedArgs:n}=Se(...t);return ve(new RegExp(je(he(e,...n)),r))}function he(e,...t){return L(t)?e.raw.reduce((r,n,o)=>r.concat(t[o-1]||"").concat(n),""):e.raw.join("")}function Se(...e){let t=z(ye(e.at(-1)));return{flags:t,cleanedArgs:L(t)?e.slice(0,-1):e}}function ye(e){return D(e,Array)?e.join(""):""}function ve(e){let t=new Proxy(Object.defineProperties({},{re:{get(){return e},enumerable:!1},toString:{value:()=>e.toString(),enumerable:!1},valueOf:{value:()=>e,enumerable:!1},flags:{value(r){return e=Ie(r,e),t},enumerable:!1},clone:{get(){return Oe(t)},enumerable:!1}}),Ce(e));return t}function L(e){return e?.length>0}function D(e,t){return e?.constructor===t}function we(e,t,r){let n=Reflect.get(r,t);return{fromInstance:Reflect.get(e,t),fromRegExpMethod:D(n,Function)?n.bind(e.re):e.re[t]}}function Ce(e){return{get(t,r){let{fromInstance:n,fromRegExpMethod:o}=we(t,r,e);switch(!0){case!!n:return n;default:return o}}}}function Oe(e){let t=e.re.source,r=L(e.re.flags)?[...e.re.flags]:[];return J`${t} ${r}`}function z(e,t){return t=(t??"").replace(/^-r\|/,""),e=t.concat(D(e,String)&&L(e)?e:""),[...new Set([...e])].join("").replace(/[^dgimsuvy]/g,"")}function Ie(e,t){switch(!0){case(!D(e,String)||!L(e)):return t;case e==="-r":return t=new RegExp(t.source);case e.startsWith("-r|"):return t=new RegExp(t.source,z(e));default:return t=new RegExp(t.source,z(t.flags,e))}}function $e(e){switch(!0){case(e?.constructor!==String||!L(e)):return"";case!!RegExp.escape:return RegExp.escape(e);default:return(`\\x${e.at(0)}`+e.slice(1).replace(/\p{S}|\p{P}/gu,t=>`\\${t}`)).replace(/ |\\x /g,"\\x20")}}function je(e){return e.replace(/\/\*(?:[^*]|\*+[^*\/])*\*+\/|(?<!:|\\\|')\/\/.*/gm,"").replace(/\s/g,"").trim().replace(/<!([^>]\d+)>/g,(t,r)=>String.fromCharCode(+r)??t)}var{randomString:ee,uuid4:te}=xe();function xe(){let e=S(),t=()=>e?[...crypto.getRandomValues(new Uint32Array(1))].shift()/2**32:Math.random(),r=({min:a=0,max:f=Number.MAX_SAFE_INTEGER}={})=>Math.floor(t()*(f-a+1)+a),n=(a=0,f=10,p)=>(p||[])instanceof Function?[...Array(f)].map((C,O)=>a+O).map(p):[...Array(f)].map((C,O)=>a+O),o=a=>String.fromCharCode(a),u="!?@#$%^&*=+_;-".split(""),b=RegExp(`[${u.map(a=>`\\${a}`).join("")}]`,"g"),m=a=>{let f=a.length;for(;f--;){let p=r({max:f});[a[f],a[p]]=[a[p],a[f]]}return a},y=m(n(65,26,o)),w=m(n(97,26,o)),s={UCLC:m(y.concat(w)),UC:y,LC:w,Nrs:m(n()),Sym:m(u)},l=a=>Object.entries(a).reduce((f,[p,C])=>C?[...f,...s[p]]:f,w);function S(){try{return window&&"crypto"in window}catch{return!1}}function c(){return e&&crypto.randomUUID?crypto.randomUUID():[...new Uint8Array(16)].map(a=>r({max:255})).map((a,f)=>`${(f===8?a&63|128:f===6?a&15|64:a).toString(16).padStart(2,"0")}${~[3,5,7,9].indexOf(f)?"-":""}`).join("")}function i(a,f,p){return/[a-z]/i.test(a)&&(f&&p?/\d/.test(a)&&b.test(a):f?/\d/.test(a):p?b.test(a):!0)}function h(a){let f=[...a],p=f.findIndex(C=>/[a-z]/i.test(C));return[f[0],f[p]]=[f[p],f[0]],f.join("")}function V({len:a=12,includeUppercase:f=!0,includeNumbers:p,includeSymbols:C,startAlphabetic:O}={}){a=a<6?6:a;let I=m(l({UC:f,Nrs:p,Sym:C}));for(;I.length<a;)I=[...I,...m(I)];let x=I.slice(0,a).join("");if(!(p||C))return x;for(let G=0;G<I.length;G+=1)if(x=I.slice(G,G+a).join(""),i(x,p,C))return O&&!/^[a-z]/i.test(x)?h(x):x;return V({len:a,includeUppercase:f,includeNumbers:p,includeSymbols:C,startAlphabetic:O})}return{randomString:V,uuid4:c}}var d=Re(),re=/symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i;function Re(){let e={backtick:["`","`"],parentheses:["(",")"],curlyBrackets:["{","}"],curlyDoubleInward:["\u201D","\u201C"],curlyDouble:["\u201C","\u201D"],curlyDoubleEqual:["\u201C","\u201C"],curlyLHDouble:["\u201E","\u201D"],curlyLHDoubleInward:["\u201E","\u201C"],curlyLHSingle:["\u201A","\u2019"],curlyLHSingleInward:["\u201A","\u2018"],curlySingle:["\u201B","\u2019"],curlySingleEqual:["\u201B","\u201B"],curlySingleInward:["\u2019","\u201B"],double:['"','"'],guillemets:["\xAB","\xBB"],guillemetsInward:["\xBB","\xAB"],guillemetsSingle:["\u2039","\u203A"],guillemetsSingleInward:["\u203A","\u2039"],single:["'","'"],squareBrackets:["[","]"]};return e.re=T([...new Set(Object.values(e).filter(t=>Array.isArray(t)).flat())].join(""),"g"),e}function T(e,t){return new RegExp(e.replace(/\p{S}|\p{P}/gu,r=>`\\${r}`),t)}function g(e){return e?.value||e?.constructor===String&&e||""}function N(e,t,r=!0){return Array.isArray(t)&&t.length>0&&!t.find(n=>Le(e,n,r))}function F(e){return e?.constructor===Number&&!Number.isNaN(e)}function P(e,t){return`${e} (${t})`}function Le(e,t,r){return e===String&&r?t?.constructor!==v&&t?.constructor!==e:t?.constructor!==e}function ne(e,...t){return e?.raw?String.raw({raw:e},...t):g(e).length?e:""}function Ne(e,t){return Object.entries(Object.getOwnPropertyDescriptors(e.value)).sort((r,n)=>r[0].localeCompare(n[0])).reduce((r,[n])=>{if(n==="remove")return[...r,"[instance].quote.remove (only predefined)"];if(n==="custom")return[...r,"[instance].quote.custom(start:string, end:string)"];let o=t("[instance]").quote[n];return[...r,`[instance].quote.${n} ( ${o} )`]},[])}function W(e,t){return t=t??function(r){return r},{value:{get backtick(){return e.enclose(...d.backtick)},get parentheses(){return e.enclose(...d.parentheses)},get curlyBrackets(){return e.enclose(...d.curlyBrackets)},get curlyDouble(){return e.enclose(...d.curlyDouble)},get curlyDoubleInward(){return e.enclose(...d.curlyDoubleInward)},get curlyDoubleEqual(){return e.enclose(...d.curlyDoubleEqual)},get curlyLHDoubleInward(){return e.enclose(...d.curlyLHDoubleInward)},get curlyLHSingle(){return e.enclose(...d.curlyLHSingle)},get curlyLHSingleInward(){return e.enclose(...d.curlyLHSingleInward)},get curlySingle(){return e.enclose(...d.curlySingle)},get curlySingleEqual(){return e.enclose(...d.curlySingleEqual)},get curlySingleInward(){return e.enclose(...d.curlySingleInward)},get custom(){return(r,n)=>e.enclose(r,n??r)},get double(){return e.enclose(...d.double)},get guillemets(){return e.enclose(...d.guillemets)},get guillemetsInward(){return e.enclose(...d.guillemetsInward)},get guillemetsSingle(){return e.enclose(...d.guillemetsSingle)},get guillemetsSingleInward(){return e.enclose(...d.guillemetsSingleInward)},get remove(){return t(`${e.value.replace(d.re,"")}`)},get single(){return e.enclose(...d.single)},get squareBrackets(){return e.enclose(...d.squareBrackets)}},enumerable:!1,configurable:!1}}function M(e,t){return{get full(){return t(e.value.toUpperCase())},get none(){return t(e.value.toLowerCase())},get camel(){return t(Z(e.value))},get snake(){return t(H(e.value))},get first(){return t(A(e.value))},get kebab(){return t(q(e.value))},get words(){return t(_(e.value))},get dashed(){return t(q(e.value))}}}function oe(e,t){let r=Ne(W(e()),e),n=Fe("constructor,history,indexOf,toString,value,valueOf,empty".split(","),e);Symbol.toSB=Symbol("toStringBuilder"),Object.defineProperty(String.prototype,Symbol.toSB,{get(){return e(this)},enumerable:!1,configurable:!1}),Object.defineProperties(e,{create:{get(){return e()},enumerable:!1},constructor:{get(){return e},enumerable:!1},format:{value(o,...u){return v(o).format(...u)}},addCustom:{value({name:o,method:u,enumerable:b=!1,isGetter:m=!1}={}){if(v``[o])return console.error(`addCustom: the property "${o}" exists and can not be redefined`),`addCustom: the property "${o}" exists and can not be redefined`;if(o?.constructor===String&&u?.constructor===Function&&u.length>0)return t[o]={method:u,enumerable:b,isGetter:m},`addCustom: the ${m?"getter":"method"} named "${o}" is added`}},info:{value:n},keys:{get(){return Object.keys(Object.getOwnPropertyDescriptors(v``)).sort((o,u)=>o.localeCompare(u)).map(o=>!/constructor|toString|valueOf/.test(o)&&o in t?`${o} *custom*`:o)}},quoteInfo:{value:r},uuid4:{get(){return v(te())}},randomString:{value:function({len:o,includeUppercase:u,includeNumbers:b,includeSymbols:m,startAlphabetic:y}={}){return v(ee({len:o,includeUppercase:u,includeNumbers:b,includeSymbols:m,startAlphabetic:y}))}},regExp:{value:R}})}function Fe(e,t){let r=v(Ee()),n=Ve();return r.split(/\n/).concat(Object.entries(Object.getOwnPropertyDescriptors(r)).sort(([o],[u])=>o.localeCompare(u)).map(([o,u])=>{let b=!e.find(i=>i===o),m="get"in u,y="value"in u,w=o in String.prototype,j=!w&&o in n,s=o in t?" *custom*":"",l=m&&b?`chainable getter${s}`:"getter",S=y&&b?`chainable method${s}`:"method",c=w&&`${u.get?"getter":"method"} (override)`;switch(!0){case j:return P(o,n[o]);case w:return P(o,c);case y:return P(o,S);case m:return P(o,l)}}))}function Ve(){return{value:"getter/setter",clone:"chainable getter",notEmpty:"chainable getter|undefined",quote:"Object. See [constructor].quoteInfo",capitalize:`getter. Object with chainable getters: [${Object.keys(M()).join(", ")}]`}}function Ee(){return atob("Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21dIGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhvZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl").replace(/\[cm]/g,"\u2714")}function $(e,t,r){return e=g(e),e.length>0?t(e):r||e}function Y(e,...t){return $(e,()=>`${U(e,...t)}`)}function ue(e,t,r){return!t&&!r?e:([t,r]=N(String,[t,r??""])?[t,r]:["",""],`${t}${e}${r||t}`)}function A(e){return $(e,()=>`${e[0].toUpperCase()}${e.slice(1).toLowerCase()}`)}function q(e){let t="";for(let r of[...e])switch(!0){case!/[a-z _]/i.test(r):break;case/[ _]/.test(r):t+="-";break;case r===r.toUpperCase():t+=`-${r.toLowerCase()}`;break;default:t+=r}return t.replace(/-{2,}/g,"-").replace(/^-|-$/g,"")}function H(e){let t="";for(let r of[...e])switch(!0){case!/[a-z _-]/i.test(r):break;case/[ -]/.test(r):t+="_";break;case r===r.toUpperCase():t+=`_${r.toLowerCase()}`;break;default:t+=r}return t.replace(/_{2,}/g,"_").replace(/^_|_$/g,"")}function Z(e){return $(e,()=>e.toLowerCase().trim().split(/[-\s]/).filter(t=>t&&t.length>0).map((t,r)=>r>0&&`${A(t)}`||t).join(""))}function _(e){return $(e,()=>[...e.toLowerCase()].slice(1).reduce((t,r)=>t+(/\p{L}|[-']/u.test(t.at(-1))?r.toLowerCase():r.toUpperCase()),e[0].toUpperCase()))}function ce(e,t,r){return $(e,()=>!r&&!t?e.trim():(r=R.escape(r||t),t=R.escape(t),e.replace(R`^(${t})+ | (${r})+$`.flags("gm"),"")))}function qe(e){return[...e.matchAll(/\p{Pe}|\p{Z}/gu)].at(-1)?.index??e.length}function le(e,{at:t,html:r=!1,wordBoundary:n=!1}={}){return r=r?.constructor===Boolean&&r||!1,n=n?.constructor===Boolean&&n||!1,$(e,()=>{if(e.length<=t)return e;let o=e.slice(0,t-1),u=r?"&hellip;":"...",b=n?qe(o):o.length;return(n?o.slice(0,b+1).trim():o)+u})}function K(e,t=!1){return t=t?.constructor===Boolean&&t||!1,$(e,()=>{let r=e.replace(/\n/gm,"#LF#").split(/#LF#/).map(n=>n.trim().replace(/\s{2,}/g,o=>o[0]));return t?r.join("#LF#").replace(/#LF#/g,`
2
+ var q=be(),G=Q(),me=Q("");function Q(e,t={}){let{useSymbolicExtensions:r}=t;return e=q(e,String,Number)?String(e):void 0,r&&de(),function(s,...l){return I(s,O(l))};function n(s,l){return l&&q(e,String,Number)?String(e):`{${s}}`}function o(s,l){let S=s in l;return S&&q(l[s],String,Number)?String(l[s]):n(s,S)}function u(s){return(...l)=>{let S=l.find(c=>c.key);return o(S?S.key:"_",s)}}function h(s,l){return s.replace(/\{(?<key>[a-z_\d]+)}/gim,u(l))}function p(s){let l=[];return Object.entries(s).forEach(([S,c])=>{c.forEach((i,m)=>(l[m]??={},l[m][S]=i))}),l}function y(s){return s.length===1&&Object.values(s[0]).every(Array.isArray)}function O(s){return y(s)?p(s[0]):s}function I(s,l){let S=l?.length?l.filter(c=>q(c,Object)).map((c,i)=>h(s,{...c,index:i+1})).join(""):s;return q(e,void 0)?S:S.replace(/\{[a-z_\d].+\}/gim,String(e))}}function de(){return String.prototype[Symbol.for("interpolate")]||Object.defineProperties(String.prototype,{[Symbol.for("interpolate")]:{value(...e){return G(this,...e)}},[Symbol.for("interpolate$")]:{value(...e){return me(this,...e)}}}),[Symbol.for("interpolate"),Symbol.for("interpolate$")]}function be(){let e=new Intl.Collator("en",{sensitivity:"base"}),t=o=>typeof o=="function"?o?.name||o?.constructor?.name:"noCTOR";function r(o,u){return u===Number&&(Number.isNaN(o)||!Number.isFinite(o))?!1:e.compare(Object.prototype.toString.call(o),`[object ${t(u)}]`)===0||o?.name===u?.name}function n(o,...u){if(u.length>1){for(let h of u)if(r(o,h))return!0;return!1}return r(o,u?.shift())}return n}var R=Object.defineProperties(J,{escape:{value:$e,enumerable:!0}});function J(e,...t){let{flags:r,cleanedArgs:n}=Se(...t);return we(new RegExp(Ie(he(e,...n)),r))}function he(e,...t){return L(t)?e.raw.reduce((r,n,o)=>r.concat(t[o-1]||"").concat(n),""):e.raw.join("")}function Se(...e){let t=_(ye(e.at(-1)));return{flags:t,cleanedArgs:L(t)?e.slice(0,-1):e}}function ye(e){return P(e,Array)?e.join(""):""}function we(e){let t=new Proxy(Object.defineProperties({},{re:{get(){return e},enumerable:!1},toString:{value:()=>e.toString(),enumerable:!1},valueOf:{value:()=>e,enumerable:!1},flags:{value(r){return e=je(r,e),t},enumerable:!1},clone:{get(){return Ce(t)},enumerable:!1}}),ve(e));return t}function L(e){return e?.length>0}function P(e,t){return e?.constructor===t}function Oe(e,t,r){let n=Reflect.get(r,t);return{fromInstance:Reflect.get(e,t),fromRegExpMethod:P(n,Function)?n.bind(e.re):e.re[t]}}function ve(e){return{get(t,r){let{fromInstance:n,fromRegExpMethod:o}=Oe(t,r,e);switch(!0){case!!n:return n;default:return o}}}}function Ce(e){let t=e.re.source,r=L(e.re.flags)?[...e.re.flags]:[];return J`${t} ${r}`}function _(e,t){return t=(t??"").replace(/^-r\|/,""),e=t.concat(P(e,String)&&L(e)?e:""),[...new Set([...e])].join("").replace(/[^dgimsuvy]/g,"")}function je(e,t){switch(!0){case(!P(e,String)||!L(e)):return t;case e==="-r":return t=new RegExp(t.source);case e.startsWith("-r|"):return t=new RegExp(t.source,_(e));default:return t=new RegExp(t.source,_(t.flags,e))}}function $e(e){switch(!0){case(e?.constructor!==String||!L(e)):return"";case!!RegExp.escape:return RegExp.escape(e);default:return(`\\x${e.at(0)}`+e.slice(1).replace(/\p{S}|\p{P}/gu,t=>`\\${t}`)).replace(/ |\\x /g,"\\x20")}}function Ie(e){return e.replace(/\/\*(?:[^*]|\*+[^*\/])*\*+\/|(?<!:|\\\|')\/\/.*/gm,"").replace(/\s/g,"").trim().replace(/<!([^>]\d+)>/g,(t,r)=>String.fromCharCode(+r)??t)}var{randomString:ee,uuid4:te}=xe();function xe(){let e=S(),t=()=>e?[...crypto.getRandomValues(new Uint32Array(1))].shift()/2**32:Math.random(),r=({min:a=0,max:f=Number.MAX_SAFE_INTEGER}={})=>Math.floor(t()*(f-a+1)+a),n=(a=0,f=10,d)=>(d||[])instanceof Function?[...Array(f)].map((v,C)=>a+C).map(d):[...Array(f)].map((v,C)=>a+C),o=a=>String.fromCharCode(a),u="!?@#$%^&*=+_;-".split(""),h=RegExp(`[${u.map(a=>`\\${a}`).join("")}]`,"g"),p=a=>{let f=a.length;for(;f--;){let d=r({max:f});[a[f],a[d]]=[a[d],a[f]]}return a},y=p(n(65,26,o)),O=p(n(97,26,o)),s={UCLC:p(y.concat(O)),UC:y,LC:O,Nrs:p(n()),Sym:p(u)},l=a=>Object.entries(a).reduce((f,[d,v])=>v?[...f,...s[d]]:f,O);function S(){try{return window&&"crypto"in window}catch{return!1}}function c(){return e&&crypto.randomUUID?crypto.randomUUID():[...new Uint8Array(16)].map(a=>r({max:255})).map((a,f)=>`${(f===8?a&63|128:f===6?a&15|64:a).toString(16).padStart(2,"0")}${~[3,5,7,9].indexOf(f)?"-":""}`).join("")}function i(a,f,d){return/[a-z]/i.test(a)&&(f&&d?/\d/.test(a)&&h.test(a):f?/\d/.test(a):d?h.test(a):!0)}function m(a){let f=[...a],d=f.findIndex(v=>/[a-z]/i.test(v));return[f[0],f[d]]=[f[d],f[0]],f.join("")}function V({len:a=12,includeUppercase:f=!0,includeNumbers:d,includeSymbols:v,startAlphabetic:C}={}){a=a<6?6:a;let j=p(l({UC:f,Nrs:d,Sym:v}));for(;j.length<a;)j=[...j,...p(j)];let x=j.slice(0,a).join("");if(!(d||v))return x;for(let D=0;D<j.length;D+=1)if(x=j.slice(D,D+a).join(""),i(x,d,v))return C&&!/^[a-z]/i.test(x)?m(x):x;return V({len:a,includeUppercase:f,includeNumbers:d,includeSymbols:v,startAlphabetic:C})}return{randomString:V,uuid4:c}}var b=Re(),re=/symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i;function Re(){let e={backtick:["`","`"],parentheses:["(",")"],curlyBrackets:["{","}"],curlyDoubleInward:["\u201D","\u201C"],curlyDouble:["\u201C","\u201D"],curlyDoubleEqual:["\u201C","\u201C"],curlyLHDouble:["\u201E","\u201D"],curlyLHDoubleInward:["\u201E","\u201C"],curlyLHSingle:["\u201A","\u2019"],curlyLHSingleInward:["\u201A","\u2018"],curlySingle:["\u201B","\u2019"],curlySingleEqual:["\u201B","\u201B"],curlySingleInward:["\u2019","\u201B"],double:['"','"'],guillemets:["\xAB","\xBB"],guillemetsInward:["\xBB","\xAB"],guillemetsSingle:["\u2039","\u203A"],guillemetsSingleInward:["\u203A","\u2039"],single:["'","'"],squareBrackets:["[","]"]};return e.re=new RegExp(`[${z([...new Set(Object.values(e).filter(t=>Array.isArray(t)).flat())].join(""))}]`,"g"),e}function z(e){return e.replace(/\p{S}|\p{P}/gu,t=>`\\${t}`)}function g(e){return e?.value||e?.constructor===String&&e||""}function N(e,t,r=!0){return Array.isArray(t)&&t.length>0&&!t.find(n=>Le(e,n,r))}function E(e){return e?.constructor===Number&&!Number.isNaN(e)}function U(e,t){return`${e} (${t})`}function Le(e,t,r){return e===String&&r?t?.constructor!==w&&t?.constructor!==e:t?.constructor!==e}function ne(e,...t){return e?.raw?String.raw({raw:e},...t):g(e).length?e:""}function Ne(e,t){return Object.entries(Object.getOwnPropertyDescriptors(e.value)).sort((r,n)=>r[0].localeCompare(n[0])).reduce((r,[n])=>{if(n==="remove")return[...r,"[instance].quote.remove (only predefined)"];if(n==="custom")return[...r,"[instance].quote.custom(start:string, end:string)"];let o=t("[instance]").quote[n];return[...r,`[instance].quote.${n} ( ${o} )`]},[])}function W(e,t){return t=t??function(r){return r},{value:{get backtick(){return e.enclose(...b.backtick)},get parentheses(){return e.enclose(...b.parentheses)},get curlyBrackets(){return e.enclose(...b.curlyBrackets)},get curlyDouble(){return e.enclose(...b.curlyDouble)},get curlyDoubleInward(){return e.enclose(...b.curlyDoubleInward)},get curlyDoubleEqual(){return e.enclose(...b.curlyDoubleEqual)},get curlyLHDoubleInward(){return e.enclose(...b.curlyLHDoubleInward)},get curlyLHSingle(){return e.enclose(...b.curlyLHSingle)},get curlyLHSingleInward(){return e.enclose(...b.curlyLHSingleInward)},get curlySingle(){return e.enclose(...b.curlySingle)},get curlySingleEqual(){return e.enclose(...b.curlySingleEqual)},get curlySingleInward(){return e.enclose(...b.curlySingleInward)},get custom(){return(r,n)=>e.enclose(r,n??r)},get double(){return e.enclose(...b.double)},get guillemets(){return e.enclose(...b.guillemets)},get guillemetsInward(){return e.enclose(...b.guillemetsInward)},get guillemetsSingle(){return e.enclose(...b.guillemetsSingle)},get guillemetsSingleInward(){return e.enclose(...b.guillemetsSingleInward)},get remove(){return t(`${e.value.replace(b.re,"")}`)},get single(){return e.enclose(...b.single)},get squareBrackets(){return e.enclose(...b.squareBrackets)}},enumerable:!1,configurable:!1}}function M(e,t){return{get full(){return t(e.value.toUpperCase())},get none(){return t(e.value.toLowerCase())},get camel(){return t(T(e.value))},get snake(){return t(H(e.value))},get first(){return t(A(e.value))},get kebab(){return t(F(e.value))},get words(){return t(Z(e.value))},get dashed(){return t(F(e.value))}}}function oe(e,t){let r=Ne(W(e()),e),n=()=>Ee("constructor,history,indexOf,toString,value,valueOf,empty".split(","),t);Symbol.toSB=Symbol("toStringBuilder"),Object.defineProperty(String.prototype,Symbol.toSB,{get(){return e(this)},enumerable:!1,configurable:!1}),Object.defineProperties(e,{create:{get(){return e()},enumerable:!1},constructor:{get(){return e},enumerable:!1},format:{value(o,...u){return w(o).format(...u)}},addCustom:{value({name:o,method:u,enumerable:h=!1,isGetter:p=!1}={}){if(w``[o])return console.error(`addCustom: the property "${o}" exists and can not be redefined`),`addCustom: the property "${o}" exists and can not be redefined`;if(typeof o=="string"&&typeof u=="function"&&u.length>0)return t[o]={method:u,enumerable:h,isGetter:p},`addCustom: the ${p?"getter":"method"} named "${o}" is added`}},info:{get(){return n()}},keys:{get(){return Object.keys(Object.getOwnPropertyDescriptors(w``)).sort((o,u)=>o.localeCompare(u)).map(o=>!/constructor|toString|valueOf/.test(o)&&Object.hasOwn(t,o)?`${o} *custom*`:o)}},quoteInfo:{value:r},uuid4:{get(){return w(te())}},randomString:{value:function({len:o,includeUppercase:u,includeNumbers:h,includeSymbols:p,startAlphabetic:y}={}){return w(ee({len:o,includeUppercase:u,includeNumbers:h,includeSymbols:p,startAlphabetic:y}))}},regExp:{value:R}})}function Ee(e,t){let r=w(qe()),n=Ve();return r.split(/\n/).concat(Object.entries(Object.getOwnPropertyDescriptors(r)).sort(([o],[u])=>o.localeCompare(u)).map(([o,u])=>{let h=!e.find(i=>i===o),p=Object.hasOwn(u,"get"),y=Object.hasOwn(u,"value"),O=Object.hasOwn(String.prototype,o),I=!O&&Object.hasOwn(n,o),s=Object.hasOwn(t,o)?" *custom*":"",l=p&&h?`chainable getter${s}`:"getter",S=y&&h?`chainable method${s}`:"method",c=O&&`${u.get?"getter":"method"} (override)`;switch(!0){case I:return U(o,n[o]);case O:return U(o,c);case y:return U(o,S);case p:return U(o,l)}}))}function Ve(){return{value:"getter/setter",clone:"chainable getter",notEmpty:"chainable getter|undefined",quote:"Object. See [constructor].quoteInfo",capitalize:`getter. Object with chainable getters: [${Object.keys(M()).join(", ")}]`}}function qe(){return atob("Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21dIGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhvZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl").replace(/\[cm]/g,"\u2714")}function $(e,t,r){return e=g(e),e.length>0?t(e):r||e}function Y(e,...t){return $(e,()=>`${G(e,...t)}`)}function ue(e,t,r){return!t&&!r?e:([t,r]=N(String,[t,r??""])?[t,r]:["",""],`${t}${e}${r||t}`)}function A(e){return $(e,()=>`${e[0].toUpperCase()}${e.slice(1).toLowerCase()}`)}function F(e){let t="";for(let r of[...e])switch(!0){case!/[a-z _]/i.test(r):break;case/[ _]/.test(r):t+="-";break;case r===r.toUpperCase():t+=`-${r.toLowerCase()}`;break;default:t+=r}return t.replace(/-{2,}/g,"-").replace(/^-|-$/g,"")}function H(e){let t="";for(let r of[...e])switch(!0){case!/[a-z _-]/i.test(r):break;case/[ -]/.test(r):t+="_";break;case r===r.toUpperCase():t+=`_${r.toLowerCase()}`;break;default:t+=r}return t.replace(/_{2,}/g,"_").replace(/^_|_$/g,"")}function T(e){return $(e,()=>e.toLowerCase().trim().split(/[-\s]/).filter(t=>t&&t.length>0).map((t,r)=>r>0&&`${A(t)}`||t).join(""))}function Z(e){return $(e,()=>[...e.toLowerCase()].slice(1).reduce((t,r)=>t+(/\p{L}|[-']/u.test(t.at(-1))?r.toLowerCase():r.toUpperCase()),e[0].toUpperCase()))}function ce(e,t,r){return $(e,()=>!r&&!t?e.trim():(r=R.escape(r||t),t=R.escape(t),e.replace(R`^(${t})+ | (${r})+$`.flags("gm"),"")))}function Fe(e){return[...e.matchAll(/\p{Pe}|\p{Z}/gu)].at(-1)?.index??e.length}function le(e,{at:t,html:r=!1,wordBoundary:n=!1}={}){return r=r?.constructor===Boolean&&r||!1,n=n?.constructor===Boolean&&n||!1,$(e,()=>{if(e.length<=t)return e;let o=e.slice(0,t-1),u=r?"&hellip;":"...",h=n?Fe(o):o.length;return(n?o.slice(0,h+1).trim():o)+u})}function K(e,t=!1){return t=t?.constructor===Boolean&&t||!1,$(e,()=>{let r=e.replace(/\n/gm,"#LF#").split(/#LF#/).map(n=>n.trim().replace(/\s{2,}/g,o=>o[0]));return t?r.join("#LF#").replace(/#LF#/g,`
3
3
  `).trim():r.filter(n=>n.length>0).join(`
4
- `)})}function ae(e,{replacements:t={},caseSensitive:r=!1}={}){e=g(e);let n=Object.entries(t).flat(),o=N(String,n)&&r?.constructor===Boolean,u=`g${r?"":"i"}`;if(!o)return e;for(;n.length;){let[b,m]=[n.shift(),n.shift()],y=T(b,u);e=e.replace(y,m)}return e}function ie(e,t,r=0){e=g(e),r=F(r)&&r||0;let n=e.indexOf(t,r||0);return n<0?void 0:n}function se(e,t,r=0){e=g(e),r=F(r)&&r||e.length;let n=e.lastIndexOf(t,r);return n<0?void 0:n}function k(e,{value:t,values:r,at:n=0}={}){e=g(e),n=F(n)&&n||0;let o=g(r);return r=g(t).length?t:o.length?o:N(String,r)?r.map(u=>g(u)).join(""):[],r.length<=1?e:e.length===0?`${r}${e}`:`${e.slice(0,n)}${r}${e.slice(n)}`}function fe(e,...t){return t=N(String,t)&&t,t?k(g(e),{values:t,at:0}):g(e)}function ge(e,...t){return t=N(String,t)&&t,t&&t.length>0?`${g(e)}`.concat(t.join("")):g(e)}var me=Ae;function Ae({initialstring:e}={}){let t={},r=new Proxy(t,b(t)),n=g(e),o=[n],u={configurable:!1,enumerable:!1};return Object.defineProperties(t,{append:{...u,value(...c){return l(ge(n,...c))}},enclose:{...u,value(c,i){return l(ue(n,c,i))}},format:{...u,value(...c){return l(Y(n,...c))}},indexOf:{...u,value(c){return ie(n,c)}},interpolate:{...u,value(...c){return l(Y(n,...c))}},insert:{...u,value({value:c,values:i,at:h}={}){return l(k(n,{value:c,values:i,at:h}))}},lastIndexOf:{...u,value(c){return se(n,c)}},prefix:{...u,value(...c){return l(fe(n,...c))}},replaceWords:{...u,value({caseSensitive:c=!1,replacements:i={}}={}){return l(ae(n,{replacements:i??{},caseSensitive:c}))}},toString:{...u,value(){return n}},trim:{...u,value(c,i){return l(ce(n,c,i))}},truncate:{...u,value({at:c,html:i=!1,wordBoundary:h=!1}={}){return l(le(n,{at:c,html:i,wordBoundary:h}))}},valueOf:{...u,value(){return n}},undoLast:{...u,value(c){return j(c)}},camelCase:{...u,get(){return l(Z(g(n)))}},capitalize:{...u,value:M(r,l)},clone:{...u,get(){return X(r,B)}},firstUp:{...u,get(){return l(A(g(n)))}},history:{...u,get(){return o},set(c){o=c}},empty:{...u,get(){return n.length<1}},notEmpty:{...u,get(){return n.length<1?void 0:r}},kebabCase:{...u,get(){return l(q(g(n)))}},quote:W(r,l),snakeCase:{...u,get(){return l(H(g(n)))}},trimAll:{...u,get(){return l(K(n))}},trimAllKeepLF:{...u,get(){return l(K(n,!0))}},undoAll:{...u,get(){return w()}},undo:{...u,get(){return s()}},wordsUCFirst:{...u,get(){return l(_(g(n)))}},value:{...u,get(){return n},set(c){let i=g(c);i.length&&(n=i,o.push(i))}}}),S(B),r;function b(c){return{get(i,h){return Object.hasOwn(c,h)?c[h]:m(String(h))?y(h):void 0}}}function m(c){return!re.test(c)&&c in String.prototype}function y(c){return n[c]instanceof Function?function(...i){let h=n[c](...i);return h?.constructor===String?l(n[c](...i)):h}:n[c]}function w(){for(;o.length>1;)o.pop();return n=o.at(-1),l(n,!1)}function j(c){if(!F(c))return l(n,!1);let i=o.length;return c>=i||c<1?(o=o.slice(0,1),n=o.at(-1),l(o.at(-1),!1)):(o=o.slice(0,i-c),n=o.at(-1),l(n,!1))}function s(){return o.length===1?l(o[0]):(o.pop(),n=o.at(-1),l(n,!1))}function l(c,i=!0){return n!==c&&i&&o.push(c),n=c,r}function S(c){Object.entries(c).forEach(([i,h])=>{let{enumerable:V,method:a,isGetter:f}=h,p=!1;Object.defineProperty(t,i,f?{get(){return l(a(r).value)},enumerable:V,configurable:p}:{value(...O){return l(a(r,...O).value)},enumerable:V,configurable:p})})}}var B={};oe(v,B);function v(e,...t){let r=me({initialstring:ne(e,...t)});return Object.defineProperty(r,"constructor",{get(){return v},enumerable:!1}),Object.freeze(r)}function X(e){let t=v(e.value);return t.history=[...e.history],t}var tt=v;export{tt as default};
4
+ `)})}function ae(e,{replacements:t={},caseSensitive:r=!1}={}){e=g(e);let n=Object.entries(t).flat(),o=N(String,n)&&r?.constructor===Boolean,u=`g${r?"":"i"}`;if(!o)return e;for(;n.length;){let[h,p]=[n.shift(),n.shift()],y=new RegExp(z(h),u);e=e.replace(y,p)}return e}function ie(e,t,r=0){e=g(e),r=E(r)&&r||0;let n=e.indexOf(t,r||0);return n<0?void 0:n}function se(e,t,r=0){e=g(e),r=E(r)&&r||e.length;let n=e.lastIndexOf(t,r);return n<0?void 0:n}function k(e,{value:t,values:r,at:n=0}={}){e=g(e),n=E(n)&&n||0;let o=g(r);return r=g(t).length?t:o.length?o:N(String,r)?r.map(u=>g(u)).join(""):[],r.length<=1?e:e.length===0?`${r}${e}`:`${e.slice(0,n)}${r}${e.slice(n)}`}function fe(e,...t){return t=N(String,t)&&t,t?k(g(e),{values:t,at:0}):g(e)}function ge(e,...t){return t=N(String,t)&&t,t&&t.length>0?`${g(e)}`.concat(t.join("")):g(e)}var pe=Ae;function Ae({initialstring:e}={}){let t=Object.create(null,{}),r=new Proxy(t,h(t)),n=g(e),o=[n],u={configurable:!1,enumerable:!1};return Object.defineProperties(t,{append:{...u,value(...c){return l(ge(n,...c))}},enclose:{...u,value(c,i){return l(ue(n,c,i))}},format:{...u,value(...c){return l(Y(n,...c))}},indexOf:{...u,value(c){return ie(n,c)}},interpolate:{...u,value(...c){return l(Y(n,...c))}},insert:{...u,value({value:c,values:i,at:m}={}){return l(k(n,{value:c,values:i,at:m}))}},lastIndexOf:{...u,value(c){return se(n,c)}},prefix:{...u,value(...c){return l(fe(n,...c))}},replaceWords:{...u,value({caseSensitive:c=!1,replacements:i={}}={}){return l(ae(n,{replacements:i??{},caseSensitive:c}))}},toString:{...u,value(){return n}},trim:{...u,value(c,i){return l(ce(n,c,i))}},truncate:{...u,value({at:c,html:i=!1,wordBoundary:m=!1}={}){return l(le(n,{at:c,html:i,wordBoundary:m}))}},valueOf:{...u,value(){return n}},undoLast:{...u,value(c){return I(c)}},camelCase:{...u,get(){return l(T(g(n)))}},capitalize:{...u,value:M(r,l)},clone:{...u,get(){return X(r,B)}},firstUp:{...u,get(){return l(A(g(n)))}},history:{...u,get(){return o},set(c){o=c}},empty:{...u,get(){return n.length<1}},notEmpty:{...u,get(){return n.length<1?void 0:r}},kebabCase:{...u,get(){return l(F(g(n)))}},quote:W(r,l),snakeCase:{...u,get(){return l(H(g(n)))}},trimAll:{...u,get(){return l(K(n))}},trimAllKeepLF:{...u,get(){return l(K(n,!0))}},undoAll:{...u,get(){return O()}},undo:{...u,get(){return s()}},wordsUCFirst:{...u,get(){return l(Z(g(n)))}},value:{...u,get(){return n},set(c){let i=g(c);i.length&&(n=i,o.push(i))}}}),S(B),r;function h(c){return{get(i,m){switch(!0){case m===Symbol.for("myType"):return"stringWeaver instance (Proxy)";case Object.hasOwn(c,m):return c[m];case p(String(m)):return y(m);default:return y(m)}}}}function p(c){return!re.test(c)&&Object.hasOwn(String.prototype,c)}function y(c){return typeof n[c]=="function"?function(...i){let m=n[c](...i);return m?.constructor===String?l(n[c](...i)):m}:n[c]}function O(){for(;o.length>1;)o.pop();return n=o.at(-1),l(n,!1)}function I(c){if(!E(c))return l(n,!1);let i=o.length;return c>=i||c<1?(o=o.slice(0,1),n=o.at(-1),l(o.at(-1),!1)):(o=o.slice(0,i-c),n=o.at(-1),l(n,!1))}function s(){return o.length===1?l(o[0]):(o.pop(),n=o.at(-1),l(n,!1))}function l(c,i=!0){return n!==c&&i&&o.push(c),n=c,r}function S(c){Object.entries(c).forEach(([i,m])=>{let{enumerable:V,method:a,isGetter:f}=m,d=!1;Object.defineProperty(t,i,f?{get(){return l(a(r).value)},enumerable:V,configurable:d}:{value(...C){return l(a(r,...C).value)},enumerable:V,configurable:d})})}}var B=Object.create(null,{});oe(w,B);function w(e,...t){let r=pe({initialstring:ne(e,...t)});return Object.defineProperty(r,"constructor",{get(){return w},enumerable:!1}),Object.freeze(r)}function X(e){let t=w(e.value);return t.history=[...e.history],t}var tt=w;export{tt as default};
5
5
  //# sourceMappingURL=index.min.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/factories/splatESBundle.js", "../src/Factories/regExpFromMultilineStringFactory.js", "../src/Factories/randomStringFactory.js", "../src/helpers.js", "../src/instanceMethods.js", "../src/instanceCreator.js", "../src/CTORCreator.js", "../index.js"],
4
- "sourcesContent": ["const IS = typeCheckFactory();\r\nconst interpolateDefault = interpolateFactory();\r\nconst interpolateClear = interpolateFactory(\"\");\r\n\r\nexport {\r\n interpolateDefault as default,\r\n interpolateClear,\r\n addSymbolicStringExtensions,\r\n interpolateFactory,\r\n};\r\n\r\n/**\r\n * Factory function to create an interpolate function with a default replacer.\r\n * @param {string|number} defaultReplacer - Default value to use for missing tokens.\r\n * @returns {Function} - The interpolation function.\r\n */\r\nfunction interpolateFactory(defaultReplacer, specs = {}) {\r\n const {useSymbolicExtensions} = specs;\r\n defaultReplacer = IS(defaultReplacer, String, Number) ?\r\n String(defaultReplacer) : undefined;\r\n \r\n if (!!useSymbolicExtensions) {\r\n addSymbolicStringExtensions();\r\n }\r\n \r\n /**\r\n * Main interpolation function.\r\n * @param {string} str - The string with placeholders.\r\n * @param {...object} tokens - Objects containing replacement values.\r\n * @returns {string} - The interpolated string.\r\n */\r\n return function(str, ...tokens) {\r\n return interpolate(str, processTokens(tokens));\r\n }\r\n \r\n /**\r\n * Handle invalid keys by returning the default replacer or the key in braces.\r\n * @param {string} key - The placeholder key.\r\n * @param {boolean} keyExists - Flag indicating if the key exists in the token.\r\n * @returns {string} - The replacement value.\r\n */\r\n function invalidate(key, keyExists) {\r\n if (keyExists && IS(defaultReplacer, String, Number)) {\r\n return String(defaultReplacer);\r\n }\r\n \r\n return `{${key}}`;\r\n }\r\n \r\n /**\r\n * Get the replacement value for a key from the token.\r\n * @param {string} key - The placeholder key.\r\n * @param {object} token - The token object containing replacement values.\r\n * @returns {string} - The replacement value.\r\n */\r\n function replacement(key, token) {\r\n const isValid = key in token;\r\n return isValid && IS(token[key], String, Number) ? String(token[key]) : invalidate(key, isValid);\r\n }\r\n \r\n /**\r\n * Create a lambda function for replacing placeholders in the string.\r\n * @param {object} token - The token object containing replacement values.\r\n * @returns {Function} - The replacer lambda function.\r\n */\r\n function getReplacerLambda(token) {\r\n return (...args) => {\r\n const replacementObject = args.find(a => a.key);\r\n return replacement((replacementObject ? replacementObject.key : `_`), token);\r\n };\r\n }\r\n \r\n /**\r\n * Replace placeholders in the string with values from the token.\r\n * @param {string} str - The string with placeholders.\r\n * @param {object} token - The token object containing replacement values.\r\n * @returns {string} - The interpolated string.\r\n */\r\n function replace(str, token) {\r\n return str.replace(/\\{(?<key>[a-z_\\d]+)}/gim, getReplacerLambda(token));\r\n }\r\n \r\n /**\r\n * Convert token object to array of token Objects\r\n * when it's values are arrays of values.\r\n * @param {object} tokenObject - The token object containing arrays of values.\r\n * @returns {object[]} - Array of token objects.\r\n */\r\n function convertTokensFromArrayValues(tokenObject) {\r\n const converted = [];\r\n \r\n Object.entries(tokenObject).forEach(([key, value]) => {\r\n value.forEach((v, i) => (converted[i] ??= {}, converted[i][key] = v));\r\n });\r\n \r\n return converted;\r\n }\r\n \r\n /**\r\n * Check if single token and its values are arrays.\r\n * @param {object[]} tokens - The tokens to check.\r\n * @returns {boolean} - True if tokens contains one Object\r\n * and all it's values are of type Array.\r\n */\r\n function isMultiLineWithArrays(tokens) {\r\n return tokens.length === 1 && Object.values(tokens[0]).every(Array.isArray);\r\n }\r\n \r\n /**\r\n * Process tokens to handle multi-line formats.\r\n * @param {object[]} tokens - The tokens to process.\r\n * @returns {object[]} - Processed tokens.\r\n */\r\n function processTokens(tokens) {\r\n return isMultiLineWithArrays(tokens) ? convertTokensFromArrayValues(tokens[0]) : tokens;\r\n }\r\n \r\n /**\r\n * Interpolate the string with the given tokens.\r\n * @param {string} str - The string with placeholders.\r\n * @param {object[]} tokens - The tokens containing replacement values.\r\n * @returns {string} - The interpolated string.\r\n */\r\n function interpolate(str, tokens) {\r\n const injected = !tokens?.length ? str : tokens\r\n .filter(token => IS(token, Object))\r\n .map((token, i) => replace(str, {...token, index: i + 1}))\r\n .join(``);\r\n \r\n return IS(defaultReplacer, undefined)\r\n ? injected : injected.replace(/\\{[a-z_\\d].+\\}/gim, String(defaultReplacer));\r\n }\r\n}\r\n\r\n/**\r\n * Extend String.prototype using the above two\r\n * interpolate methods.\r\n * Note: Symbols are unique, so there is no risk the\r\n * methods will conflict with native String methods or\r\n * methods in other ES libraries.\r\n * @returns {symbol[]}\r\n */\r\nfunction addSymbolicStringExtensions() {\r\n if (!String.prototype[Symbol.for(`interpolate`)]) {\r\n Object.defineProperties(String.prototype, {\r\n [Symbol.for(`interpolate`)]: {\r\n value(...args) {\r\n return interpolateDefault(this, ...args);\r\n }\r\n },\r\n [Symbol.for(`interpolate$`)]: {\r\n value(...args) {\r\n return interpolateClear(this, ...args);\r\n }\r\n },\r\n });\r\n }\r\n \r\n return [Symbol.for(\"interpolate\"), Symbol.for(`interpolate$`)];\r\n}\r\n\r\n/**\r\n * Simple 'type' checking factory\r\n * @returns {function(*, ...[*]): (boolean|*)}\r\n */\r\nfunction typeCheckFactory() {\r\n const collate = new Intl.Collator(`en`, {sensitivity: 'base'});\r\n const nameOf = type2Check => typeof type2Check === `function`\r\n ? type2Check?.name || type2Check?.constructor?.name : `noCTOR`;\r\n \r\n /**\r\n * check obj to be of [type2Check]\r\n * @param {*} obj\r\n * @param {*} type2Check\r\n * @returns {boolean}\r\n */\r\n function checkSingleType(obj, type2Check) {\r\n if (type2Check === Number && (Number.isNaN(obj) || !Number.isFinite(obj))) {\r\n return false;\r\n }\r\n \r\n return 0 === collate.compare(\r\n Object.prototype.toString.call(obj),\r\n `[object ${nameOf(type2Check)}]`\r\n ) || obj?.name === type2Check?.name;\r\n }\r\n \r\n /**\r\n *\r\n * @param {*} obj\r\n * @param {*[]} type2Check\r\n * @returns {boolean}\r\n */\r\n function checkType(obj, ...type2Check) {\r\n if (type2Check.length > 1) {\r\n for (const chkType of type2Check) {\r\n if (checkSingleType(obj, chkType)) { return true; }\r\n }\r\n \r\n return false;\r\n }\r\n \r\n return checkSingleType(obj, type2Check?.shift());\r\n }\r\n \r\n return checkType;\r\n}\r\n", "export default Object.defineProperties(instanceCreator, {escape: {value: escape4RE, enumerable: true}});\r\n\r\nfunction instanceCreator(regExStr, ...args) {\r\n const {flags, cleanedArgs} = maybeFlags(...args);\r\n return createInstance(\r\n new RegExp(cleanup(createRegExpStringFromInput(regExStr, ...cleanedArgs)), flags)\r\n );\r\n}\r\n\r\nfunction createRegExpStringFromInput(regExStr, ...cleanedArgs) {\r\n return !hasLength(cleanedArgs) ? regExStr.raw.join(``) :\r\n regExStr.raw.reduce((a, v, i) => a.concat(cleanedArgs[i - 1] || ``).concat(v), ``);\r\n}\r\n\r\nfunction maybeFlags(...args) {\r\n const flags = cleanupFlags(getFlags(args.at(-1)));\r\n return { flags, cleanedArgs: hasLength(flags) ? args.slice(0, -1) : args };\r\n}\r\n\r\nfunction getFlags(maybeFlags) { return isOfType(maybeFlags, Array) ? maybeFlags.join(``) : ``; }\r\n\r\nfunction createInstance(regExp) {\r\n const instance = new Proxy( Object.defineProperties({}, {\r\n re: { get() { return regExp; }, enumerable: false },\r\n toString: {value: () => regExp.toString(), enumerable: false},\r\n valueOf: {value: () => regExp, enumerable: false},\r\n flags: { value(flags) { regExp = modifyFlags(flags, regExp); return instance; }, enumerable: false },\r\n clone: { get() { return clone(instance); }, enumerable: false },\r\n }), getterTrap(regExp) );\r\n \r\n return instance;\r\n}\r\n\r\nfunction hasLength(variable) { return variable?.length > 0; }\r\n\r\nfunction isOfType(any, CTOR) { return any?.constructor === CTOR; }\r\n\r\nfunction maybeProp(target, key, regExp) {\r\n const fromRegExp = Reflect.get(regExp, key);\r\n return {\r\n fromInstance: Reflect.get(target, key),\r\n fromRegExpMethod: isOfType(fromRegExp, Function) ? fromRegExp.bind(target.re) : target.re[key]\r\n }\r\n}\r\n\r\nfunction getterTrap(regExp) {\r\n return {\r\n get(target, key) {\r\n const {fromInstance, fromRegExpMethod} = maybeProp(target, key, regExp);\r\n switch (true) {\r\n case !!fromInstance: return fromInstance;\r\n default: return fromRegExpMethod;\r\n }\r\n },\r\n };\r\n}\r\n\r\nfunction clone(instance) {\r\n const source = instance.re.source;\r\n const flags = hasLength(instance.re.flags) ? [...instance.re.flags] : [];\r\n return instanceCreator`${source} ${flags}`;\r\n}\r\n\r\nfunction cleanupFlags(flags, currentFlags) {\r\n currentFlags = (currentFlags ?? ``).replace(/^-r\\|/, ``);\r\n flags = currentFlags.concat(isOfType(flags, String) && hasLength(flags) ? flags : ``);\r\n return [...new Set([...flags])].join(``).replace(/[^dgimsuvy]/g, ``);\r\n}\r\n\r\nfunction modifyFlags(flags, regExp) {\r\n switch (true) {\r\n case !isOfType(flags, String) || !hasLength(flags): return regExp;\r\n case flags === `-r`: return regExp = new RegExp(regExp.source);\r\n case flags.startsWith(`-r|`): return regExp = new RegExp(regExp.source, cleanupFlags(flags));\r\n default: return regExp = new RegExp(regExp.source, cleanupFlags(regExp.flags, flags));\r\n }\r\n}\r\n\r\nfunction escape4RE(string2Escape) {\r\n switch (true) {\r\n case string2Escape?.constructor !== String || !hasLength(string2Escape): return ``;\r\n case !!RegExp.escape: return RegExp.escape(string2Escape);\r\n default: return (`\\\\x${string2Escape.at(0)}` +\r\n string2Escape.slice(1).replace(/\\p{S}|\\p{P}/gu, a => `\\\\${a}`))\r\n .replace(/ |\\\\x /g, `\\\\x20`); }\r\n}\r\n\r\nfunction cleanup(str) {\r\n return str\r\n .replace(/\\/\\*(?:[^*]|\\*+[^*\\/])*\\*+\\/|(?<!:|\\\\\\|')\\/\\/.*/gm, ``)\r\n .replace(/\\s/g, ``)\r\n .trim().replace(/<!([^>]\\d+)>/g, (a, b) => String.fromCharCode(+b) ?? a);\r\n}\r\n", "const { randomString, uuid4 } = randomStringGeneratorFactory();\r\nexport { randomString as default, randomString, uuid4 };\r\n\r\nfunction randomStringGeneratorFactory() {\r\n const hasCrypto = checkBrowserCrypto();\r\n const getRandomValue = () => hasCrypto\r\n ? [...crypto.getRandomValues(new Uint32Array(1))].shift() / 2**32\r\n : Math.random();\r\n const randomNr = ({min = 0, max = Number.MAX_SAFE_INTEGER} = {}) =>\r\n Math.floor( getRandomValue() * (max - min + 1) + min );\r\n const range = (start = 0, len = 10, reMap) => (reMap || []) instanceof Function\r\n ? [...Array(len)].map((_, i) => start + i).map(reMap)\r\n : [...Array(len)].map((_, i) => start + i);\r\n const map2Chrs = v => String.fromCharCode(v);\r\n const symbols = `!?@#$%^&*=+_;-`.split(``);\r\n const symRE = RegExp(`[${symbols.map(v => `\\\\${v}`).join(``)}]`, `g`);\r\n const shuffle = array => {\r\n let i = array.length;\r\n while (i--) {\r\n const ri = randomNr( { max: i } );\r\n [array[i], array[ri]] = [array[ri], array[i]];\r\n }\r\n\r\n return array;\r\n };\r\n const UC = shuffle(range(65, 26, map2Chrs));\r\n const LC = shuffle(range(97, 26, map2Chrs));\r\n const UCLC = shuffle(UC.concat(LC));\r\n const allChars = { UCLC, UC, LC, Nrs: shuffle(range()), Sym: shuffle(symbols), };\r\n const getChars2Use = use => Object.entries(use)\r\n .reduce( (acc, [key, value]) => value ? [...acc, ...allChars[key]] : acc, LC );\r\n\r\n function checkBrowserCrypto() {\r\n try { return window && `crypto` in window }\r\n catch(_) { return false; }\r\n }\r\n\r\n function uuid4() {\r\n // Note: randomUUID only in secure context (https)\r\n return hasCrypto && crypto.randomUUID\r\n ? crypto.randomUUID()\r\n : [...new Uint8Array(16)]\r\n .map(_ => randomNr({max: 255}))\r\n .map( (v, i) => `${\r\n (i === 8 ? v & 0b00111111 | 0b10000000 : i === 6 ? v & 0b00001111 | 0b01000000 : v)\r\n .toString(16).padStart(2, `0`)}${~[3,5,7,9].indexOf(i) ? `-` : ``}` )\r\n .join(``);\r\n }\r\n\r\n function strTest(strFound, numbers, symbols) {\r\n return /[a-z]/i.test(strFound) && (\r\n numbers && symbols ? /\\d/.test(strFound) && symRE.test(strFound)\r\n : numbers ? /\\d/.test(strFound)\r\n : symbols ? symRE.test(strFound)\r\n : true);\r\n }\r\n\r\n function alphaSwap(strFound) {\r\n const chars = [...strFound];\r\n const idx = chars.findIndex(v => /[a-z]/i.test(v));\r\n [chars[0], chars[idx]] = [chars[idx], chars[0]];\r\n return chars.join(``);\r\n }\r\n\r\n function randomString( {len = 12, includeUppercase = true, includeNumbers, includeSymbols, startAlphabetic} = {} ) {\r\n len = len < 6 ? 6 : len;\r\n let chrs2Use = shuffle( getChars2Use( { UC: includeUppercase, Nrs: includeNumbers, Sym: includeSymbols } ) );\r\n\r\n while (chrs2Use.length < len) { chrs2Use = [...chrs2Use, ...shuffle(chrs2Use)]; }\r\n\r\n let strFound = chrs2Use.slice(0, len).join(``);\r\n\r\n if (!(includeNumbers || includeSymbols)) { return strFound; }\r\n\r\n for (let i = 0; i < chrs2Use.length; i += 1) {\r\n strFound = chrs2Use.slice(i, i + len).join(``);\r\n\r\n if (strTest(strFound, includeNumbers, includeSymbols)) {\r\n return startAlphabetic && !/^[a-z]/i.test(strFound) ? alphaSwap(strFound) : strFound;\r\n }\r\n }\r\n\r\n return randomString({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic});\r\n }\r\n\r\n return { randomString, uuid4 };\r\n}\r\n", "import interpolate from \"./factories/splatESBundle.js\";\r\nimport createRegExp from \"./Factories/regExpFromMultilineStringFactory.js\";\r\nimport {default as randomString, uuid4} from \"./Factories/randomStringFactory.js\";\r\nimport {CustomStringConstructor} from \"./CTORCreator.js\";\r\nimport {parseCamelcase, parseKebabCase, parseSnakeCase, ucFirst, wordsFirstUp} from \"./instanceMethods.js\";\r\nconst quotingStyles = defineQuotingStyles();\r\nconst deprecatedRE = /symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i\r\n\r\nexport {\r\n capitalizerFactory, createExtendedCTOR, createRegExp, defineQuotingStyles,\r\n deprecatedRE, getStringValue, escapeRE, infoValue, interpolate, isArrayOf, isNumber,\r\n randomString, resolveTemplateString, retrieveQuotInfo, quotGetters4Instance, uuid4,\r\n};\r\n\r\nfunction defineQuotingStyles() {\r\n // see https://en.wikipedia.org/wiki/Quotation_mark\r\n const quots = {\r\n backtick: [\"`\", \"`\"],\r\n parentheses: [`(`, `)`],\r\n curlyBrackets: [`{`, `}`],\r\n curlyDoubleInward: [`\u201D`, `\u201C`],\r\n curlyDouble: [`\u201C`, `\u201D`],\r\n curlyDoubleEqual: [`\u201C`, `\u201C`],\r\n curlyLHDouble: [`\u201E`, `\u201D`],\r\n curlyLHDoubleInward: [`\u201E`, `\u201C`],\r\n curlyLHSingle: [`\u201A`, `\u2019`],\r\n curlyLHSingleInward: [`\u201A`, `\u2018`],\r\n curlySingle: [`\u201B`, `\u2019`],\r\n curlySingleEqual: [`\u201B`, `\u201B`],\r\n curlySingleInward: [`\u2019`, `\u201B`],\r\n double: [`\"`, `\"`],\r\n guillemets: [`\u00AB`, `\u00BB`],\r\n guillemetsInward: [`\u00BB`, `\u00AB`],\r\n guillemetsSingle: [`\u2039`, `\u203A`],\r\n guillemetsSingleInward: [`\u203A`, `\u2039`],\r\n single: [`'`, `'`],\r\n squareBrackets: [`[`, `]`],\r\n };\r\n quots.re = escapeRE([...new Set(\r\n Object.values(quots)\r\n .filter(v => Array.isArray(v))\r\n .flat())].join(``), \"g\");\r\n return quots;\r\n}\r\n\r\nfunction escapeRE(reString, modifiers) {\r\n return new RegExp(reString.replace(/\\p{S}|\\p{P}/gu, a => `\\\\${a}`), modifiers);\r\n}\r\n\r\n\r\nfunction getStringValue(string) {\r\n return string?.value || (string?.constructor === String && string) || ``;\r\n}\r\n\r\nfunction isArrayOf(type, value, includeInstances = true) {\r\n return Array.isArray(value) && value.length > 0 &&\r\n !value.find(v => checkType(type, v, includeInstances));\r\n}\r\n\r\nfunction isNumber(value) {\r\n return value?.constructor === Number && !Number.isNaN(value);\r\n}\r\n\r\nfunction infoValue(key, infoValue) {\r\n return `${key} (${infoValue})`;\r\n}\r\n\r\nfunction checkType(type, item, includeInstances) {\r\n return type === String && includeInstances\r\n ? item?.constructor !== CustomStringConstructor && item?.constructor !== type\r\n : item?.constructor !== type;\r\n}\r\n\r\nfunction resolveTemplateString(str, ...args) {\r\n return str?.raw\r\n ? String.raw({ raw: str }, ...args)\r\n : getStringValue(str).length ? str : \"\";\r\n}\r\n\r\nfunction retrieveQuotInfo(instanceQuotGetters4Info, ctor) {\r\n return Object.entries(Object.getOwnPropertyDescriptors(instanceQuotGetters4Info.value))\r\n .sort( (a,b) => a[0].localeCompare(b[0]) )\r\n .reduce((acc, [k,]) => {\r\n if (k === `remove`) { return [...acc, `[instance].quote.remove (only predefined)`]; }\r\n if (k === `custom`) { return [...acc, `[instance].quote.custom(start:string, end:string)`]; }\r\n\r\n const val = ctor(`[instance]`).quote[k];\r\n return [...acc, `[instance].quote.${k} ( ${val} )`];\r\n }, []);\r\n}\r\n\r\nfunction quotGetters4Instance(instance, wrap) {\r\n wrap = wrap ?? function(me) { return me; };\r\n return {\r\n value: {\r\n get backtick() { return instance.enclose(...quotingStyles.backtick); },\r\n get parentheses() { return instance.enclose(...quotingStyles.parentheses); },\r\n get curlyBrackets() { return instance.enclose(...quotingStyles.curlyBrackets); },\r\n get curlyDouble() { return instance.enclose(...quotingStyles.curlyDouble); },\r\n get curlyDoubleInward() { return instance.enclose(...quotingStyles.curlyDoubleInward); },\r\n get curlyDoubleEqual() { return instance.enclose(...quotingStyles.curlyDoubleEqual); },\r\n get curlyLHDoubleInward() { return instance.enclose(...quotingStyles.curlyLHDoubleInward); },\r\n get curlyLHSingle() { return instance.enclose(...quotingStyles.curlyLHSingle); },\r\n get curlyLHSingleInward() { return instance.enclose(...quotingStyles.curlyLHSingleInward); },\r\n get curlySingle() { return instance.enclose(...quotingStyles.curlySingle); },\r\n get curlySingleEqual() { return instance.enclose(...quotingStyles.curlySingleEqual); },\r\n get curlySingleInward() { return instance.enclose(...quotingStyles.curlySingleInward); },\r\n get custom() { return (start, end) => instance.enclose(...[start, end ?? start]); },\r\n get double() { return instance.enclose(...quotingStyles.double); },\r\n get guillemets() { return instance.enclose(...quotingStyles.guillemets); },\r\n get guillemetsInward() { return instance.enclose(...quotingStyles.guillemetsInward); },\r\n get guillemetsSingle() { return instance.enclose(...quotingStyles.guillemetsSingle); },\r\n get guillemetsSingleInward() { return instance.enclose(...quotingStyles.guillemetsSingleInward); },\r\n get remove() { return wrap(`${instance.value.replace(quotingStyles.re, ``)}`); },\r\n get single() { return instance.enclose(...quotingStyles.single); },\r\n get squareBrackets() { return instance.enclose(...quotingStyles.squareBrackets); },\r\n },\r\n enumerable: false,\r\n configurable: false,\r\n };\r\n}\r\n\r\nfunction capitalizerFactory(instance, wrap) {\r\n return {\r\n get full() {\r\n return wrap(instance.value.toUpperCase());\r\n },\r\n get none() {\r\n return wrap(instance.value.toLowerCase());\r\n },\r\n get camel() {\r\n return wrap(parseCamelcase(instance.value));\r\n },\r\n get snake() {\r\n return wrap(parseSnakeCase(instance.value));\r\n },\r\n get first() {\r\n return wrap(ucFirst(instance.value));\r\n },\r\n get kebab() {\r\n return wrap(parseKebabCase(instance.value));\r\n },\r\n get words() {\r\n return wrap(wordsFirstUp(instance.value));\r\n },\r\n get dashed() {\r\n return wrap(parseKebabCase(instance.value));\r\n },\r\n }\r\n}\r\n\r\nfunction createExtendedCTOR(ctor, customMethods) {\r\n const quoteInfo = retrieveQuotInfo(quotGetters4Instance(ctor()), ctor);\r\n const swInfo = getSWInformation(`constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`), ctor);\r\n Symbol.toSB = Symbol(`toStringBuilder`);\r\n Object.defineProperty(\r\n String.prototype,\r\n Symbol.toSB, {\r\n get() { return ctor(this); },\r\n enumerable: false,\r\n configurable: false\r\n }\r\n );\r\n\r\n Object.defineProperties(ctor, {\r\n create: {\r\n get() { return ctor(); },\r\n enumerable: false\r\n },\r\n constructor: {\r\n get() { return ctor; },\r\n enumerable: false,\r\n },\r\n format: {\r\n value(str, ...tokens) {\r\n return CustomStringConstructor(str).format(...tokens);\r\n }\r\n },\r\n addCustom: {\r\n value( { name, method, enumerable = false, isGetter = false } = {} ) {\r\n if (CustomStringConstructor``[name]) {\r\n console.error(`addCustom: the property \"${name}\" exists and can not be redefined`);\r\n return `addCustom: the property \"${name}\" exists and can not be redefined`;\r\n }\r\n\r\n if (name?.constructor === String && method?.constructor === Function && method.length > 0) {\r\n customMethods[name] = {method, enumerable, isGetter};\r\n return `addCustom: the ${isGetter ? `getter` : `method`} named \"${name}\" is added`;\r\n }\r\n }\r\n },\r\n info: { value: swInfo, },\r\n keys: {\r\n get() {\r\n return Object.keys(Object.getOwnPropertyDescriptors(CustomStringConstructor``))\r\n .sort( (a,b) => a.localeCompare(b) )\r\n .map(v => !/constructor|toString|valueOf/.test(v) && v in customMethods ? `${v} *custom*` : v);\r\n }\r\n },\r\n quoteInfo: { value: quoteInfo },\r\n uuid4: { get() { return CustomStringConstructor(uuid4()); } },\r\n randomString: {\r\n value: function({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic} = {}) {\r\n return CustomStringConstructor(randomString({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic}));\r\n }\r\n },\r\n regExp: { value: createRegExp }\r\n });\r\n\r\n return;\r\n}\r\n\r\nfunction getSWInformation(notChainable, customMethods) {\r\n const firstLines = CustomStringConstructor(getInfoPrefix());\r\n const plainValues = getPlainValues();\r\n\r\n return firstLines.split(/\\n/)\r\n .concat(\r\n Object.entries(Object.getOwnPropertyDescriptors(firstLines))\r\n .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))\r\n .map(([key, descriptr]) => {\r\n const isChainable = !notChainable.find(k => k === key);\r\n const isGetter = 'get' in descriptr;\r\n const isMethod = 'value' in descriptr;\r\n const isNative = key in String.prototype;\r\n const isPlainValue = !isNative && key in plainValues;\r\n const custom = key in customMethods ? ` *custom*` : ``;\r\n const getter = isGetter && isChainable ? `chainable getter${custom}` : `getter`;\r\n const method = isMethod && isChainable ? `chainable method${custom}` : `method`;\r\n const native = isNative && `${descriptr.get ? `getter` : `method`} (override)`;\r\n\r\n switch (true) {\r\n case isPlainValue: return infoValue(key, plainValues[key]);\r\n case isNative: return infoValue(key, native);\r\n case isMethod: return infoValue(key, method);\r\n case isGetter: return infoValue(key, getter);\r\n }\r\n }\r\n )\r\n );\r\n}\r\n\r\nfunction getPlainValues() {\r\n const capitalizerKeys = Object.keys(capitalizerFactory());\r\n return {\r\n value: `getter/setter`,\r\n clone: `chainable getter`,\r\n notEmpty: `chainable getter|undefined`,\r\n quote: `Object. See [constructor].quoteInfo`,\r\n capitalize: `getter. Object with chainable getters: [${capitalizerKeys.join(`, `)}]`,\r\n };\r\n}\r\n\r\nfunction getInfoPrefix() {\r\n return atob(\r\n `Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21d`+\r\n `IGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0`+\r\n `SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhv`+\r\n `ZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl`).replace(/\\[cm]/g, `\\u2714`);\r\n}\r\n", "import { customMethods, clone, } from \"./CTORCreator.js\";\r\n\r\nimport {\r\n createRegExp as $RE, getStringValue, isArrayOf, interpolate,\r\n isNumber, escapeRE, quotGetters4Instance as quotGetters,\r\n} from \"./helpers.js\";\r\n\r\nexport {\r\n format,\r\n ucFirst,\r\n truncate,\r\n trimAll,\r\n replaceWords,\r\n indexOf,\r\n lastIndexOf,\r\n insert,\r\n append,\r\n isNumber,\r\n prefix,\r\n getStringValue,\r\n parseCamelcase,\r\n wordsFirstUp,\r\n parseKebabCase,\r\n parseSnakeCase,\r\n quotGetters,\r\n surroundWith,\r\n customMethods,\r\n clone,\r\n trim,\r\n};\r\n\r\nfunction checkAndRun(string, fn, or) {\r\n string = getStringValue(string);\r\n return string.length > 0 ? fn(string) : or || string;\r\n}\r\n\r\nfunction format(string, ...tokens) {\r\n return checkAndRun(string, () => `${interpolate(string, ...tokens)}`);\r\n}\r\n\r\nfunction surroundWith(string, start, end) {\r\n if (!start && !end) {\r\n return string;\r\n }\r\n [start, end] = isArrayOf(String, [start, end ?? ``]) ? [start, end] : [``, ``];\r\n return `${start}${string}${end || start}`;\r\n}\r\n\r\nfunction ucFirst(string) {\r\n return checkAndRun(string, () => `${string[0].toUpperCase()}${string.slice(1).toLowerCase()}`);\r\n}\r\n\r\nfunction parseKebabCase(str) {\r\n let result = ``;\r\n\r\n for (const s of [...str]) {\r\n switch(true) {\r\n case !/[a-z _]/i.test(s): break;\r\n case /[ _]/.test(s): result += `-`; break;\r\n case s === s.toUpperCase(): result += `-${s.toLowerCase()}`; break;\r\n default: result += s;\r\n }\r\n }\r\n\r\n return result.replace(/-{2,}/g, `-`).replace(/^-|-$/g, ``);\r\n}\r\n\r\nfunction parseSnakeCase(str) {\r\n let result = ``;\r\n\r\n for (const s of [...str]) {\r\n switch(true) {\r\n case !/[a-z _-]/i.test(s): break;\r\n case /[ -]/.test(s): result += `_`; break;\r\n case s === s.toUpperCase(): result += `_${s.toLowerCase()}`; break;\r\n default: result += s;\r\n }\r\n }\r\n\r\n return result.replace(/_{2,}/g, `_`).replace(/^_|_$/g, ``);\r\n}\r\n\r\nfunction parseCamelcase(string) {\r\n return checkAndRun(string, () =>\r\n string.toLowerCase()\r\n .trim()\r\n .split(/[-\\s]/)\r\n .filter(l => l && l.length > 0)\r\n .map( (str, i) => i > 0 && `${ucFirst(str)}` || str)\r\n .join(``)\r\n );\r\n}\r\n\r\nfunction wordsFirstUp(string) {\r\n return checkAndRun(string, () => [...string.toLowerCase()].slice(1).reduce( (acc, v) =>\r\n acc + ( !/\\p{L}|[-']/u.test(acc.at(-1)) ? v.toUpperCase() : v.toLowerCase() ),\r\n string[0].toUpperCase()\r\n ));\r\n}\r\n\r\nfunction trim(string, start, end) {\r\n return checkAndRun(string, () => {\r\n if (!end && !start) { return string.trim(); }\r\n\r\n end = $RE.escape(end || start);\r\n start = $RE.escape(start);\r\n\r\n return string.replace($RE`^(${start})+ | (${end})+$`.flags(`gm`), ``);\r\n });\r\n}\r\n\r\nfunction getWordBoundary(string) {\r\n const match = [...string.matchAll(/\\p{Pe}|\\p{Z}/gu)].at(-1);\r\n return match?.index ?? string.length;\r\n}\r\n\r\nfunction truncate(string, {at, html = false, wordBoundary = false} = {} ) {\r\n html = html?.constructor === Boolean && html || false;\r\n wordBoundary = wordBoundary?.constructor === Boolean && wordBoundary || false;\r\n return checkAndRun(string, () => {\r\n if (string.length <= at) { return string; }\r\n\r\n const subString = string.slice(0, at - 1);\r\n const endwith = html ? \"&hellip;\" : `...`;\r\n const boundary = wordBoundary\r\n ? getWordBoundary(subString)\r\n : subString.length;\r\n\r\n return (wordBoundary\r\n ? subString.slice(0, boundary+1).trim()\r\n : subString) + endwith;\r\n }\r\n );\r\n}\r\n\r\nfunction trimAll(string, keepLines = false) {\r\n keepLines = keepLines?.constructor === Boolean && keepLines || false;\r\n return checkAndRun(string, () => {\r\n const lines = string.replace(/\\n/gm, `#LF#`)\r\n .split(/#LF#/)\r\n .map(line => line.trim().replace(/\\s{2,}/g, a => a[0]) );\r\n return keepLines\r\n ? lines.join(`#LF#`).replace(/#LF#/g, `\\n`).trim()\r\n : lines.filter(l => l.length > 0).join(`\\n`);\r\n });\r\n}\r\n\r\nfunction replaceWords(string, { replacements = {}, caseSensitive = false} = {}) {\r\n string = getStringValue(string);\r\n let replacements2Array = Object.entries(replacements).flat();\r\n const cando = isArrayOf(String, replacements2Array) && caseSensitive?.constructor === Boolean;\r\n const modifiers = `g${!caseSensitive ? 'i' : ''}`;\r\n\r\n if (!cando) { return string; }\r\n\r\n while (replacements2Array.length) {\r\n const [initial, replacement] = [replacements2Array.shift(), replacements2Array.shift()];\r\n const re = escapeRE(initial, modifiers);\r\n string = string.replace(re, replacement);\r\n }\r\n\r\n return string;\r\n}\r\n\r\n// SEE https://youtu.be/99Zacm7SsWQ?t=2101\r\nfunction indexOf(string, findMe, fromIndex = 0) {\r\n string = getStringValue(string);\r\n fromIndex = isNumber(fromIndex) && fromIndex || 0;\r\n const index = string.indexOf(findMe, fromIndex || 0);\r\n return index < 0 ? undefined : index;\r\n}\r\n\r\nfunction lastIndexOf(string, findMe, beforeIndex = 0) {\r\n string = getStringValue(string);\r\n beforeIndex = isNumber(beforeIndex) && beforeIndex || string.length;\r\n const index = string.lastIndexOf(findMe, beforeIndex);\r\n return index < 0 ? undefined : index;\r\n}\r\n\r\nfunction insert(string, { value, values, at = 0 } = {}) {\r\n string = getStringValue(string);\r\n at = isNumber(at) && at || 0;\r\n const valuesMaybeValue = getStringValue(values);\r\n values = getStringValue(value).length\r\n ? value\r\n : valuesMaybeValue.length\r\n ? valuesMaybeValue\r\n : isArrayOf(String, values)\r\n ? values.map(v => getStringValue(v)).join(``)\r\n : [];\r\n\r\n return values.length <= 1\r\n ? string\r\n : string.length === 0\r\n ? `${values}${string}`\r\n : `${string.slice(0, at)}${values}${string.slice(at)}`;\r\n}\r\n\r\nfunction prefix(string, ...strings) {\r\n strings = isArrayOf(String, strings) && strings;\r\n return strings ? insert(getStringValue(string), {values: strings, at: 0}) : getStringValue(string);\r\n}\r\n\r\nfunction append(string, ...strings2Append) {\r\n strings2Append = isArrayOf(String, strings2Append) && strings2Append;\r\n\r\n if (strings2Append && strings2Append.length > 0) {\r\n return `${getStringValue(string)}`.concat(strings2Append.join(``))\r\n }\r\n\r\n return getStringValue(string);\r\n}\r\n", "import {\r\n format,\r\n ucFirst,\r\n truncate,\r\n trimAll,\r\n replaceWords,\r\n indexOf,\r\n lastIndexOf,\r\n insert,\r\n append,\r\n prefix,\r\n getStringValue,\r\n quotGetters,\r\n surroundWith,\r\n parseCamelcase,\r\n wordsFirstUp,\r\n parseKebabCase,\r\n parseSnakeCase,\r\n customMethods,\r\n isNumber,\r\n clone,\r\n trim,\r\n} from \"./instanceMethods.js\";\r\n\r\nimport { capitalizerFactory, deprecatedRE } from \"./helpers.js\";\r\n\r\nexport default instanceCreator;\r\n\r\nfunction instanceCreator({initialstring} = {}) {\r\n let customStringExtensions = { };\r\n let instance = new Proxy(customStringExtensions, getTraps(customStringExtensions));\r\n let actualValue = getStringValue(initialstring);\r\n let history = [actualValue];\r\n const descriptorProps = {configurable: false, enumerable: false};\r\n\r\n Object.defineProperties( customStringExtensions, {\r\n // methods\r\n append: { ...descriptorProps, value(...strings) { return wrap(append(actualValue, ...strings)); } },\r\n enclose: { ...descriptorProps, value(start, end) { return wrap(surroundWith(actualValue, start, end)); } },\r\n format: { ...descriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },\r\n indexOf: { ...descriptorProps, value(str) { return indexOf(actualValue, str); } },\r\n interpolate: { ...descriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },\r\n insert: { ...descriptorProps, value({ value, values, at } = {}) {\r\n return wrap(insert(actualValue, { value, values, at }));\r\n }\r\n },\r\n lastIndexOf: { ...descriptorProps, value(str) { return lastIndexOf(actualValue, str); } },\r\n prefix: { ...descriptorProps, value(...strings) { return wrap(prefix(actualValue, ...strings)); } },\r\n replaceWords: { ...descriptorProps, value({caseSensitive = false, replacements = {}} = {}) {\r\n return wrap(replaceWords(actualValue, { replacements: replacements ?? {}, caseSensitive }));\r\n } },\r\n toString: { ...descriptorProps, value() { return actualValue; } },\r\n trim: {...descriptorProps, value(start, end) { return wrap(trim(actualValue, start, end)); } },\r\n truncate: { ...descriptorProps, value({at, html = false, wordBoundary = false} = {}) {\r\n return wrap(truncate(actualValue, {at, html, wordBoundary})); } },\r\n valueOf: { ...descriptorProps, value() { return actualValue; } },\r\n undoLast: { ...descriptorProps, value(nSteps) { return undoSteps(nSteps); } },\r\n\r\n // getters\r\n camelCase: { ...descriptorProps, get() { return wrap(parseCamelcase(getStringValue(actualValue))); } },\r\n capitalize: { ...descriptorProps, value: capitalizerFactory(instance, wrap) },\r\n clone: { ...descriptorProps, get() { return clone(instance, customMethods); } },\r\n firstUp: { ...descriptorProps, get() { return wrap(ucFirst(getStringValue(actualValue))); } },\r\n history: { ...descriptorProps, get() { return history; }, set(value) { history = value; } },\r\n empty: { ...descriptorProps, get() { return actualValue.length < 1; } },\r\n notEmpty: { ...descriptorProps, get() { return actualValue.length < 1 ? undefined: instance; } },\r\n kebabCase: { ...descriptorProps, get() { return wrap(parseKebabCase(getStringValue(actualValue))); } },\r\n quote: quotGetters(instance, wrap),\r\n snakeCase: { ...descriptorProps, get() { return wrap(parseSnakeCase(getStringValue(actualValue))); } },\r\n trimAll: { ...descriptorProps, get() { return wrap(trimAll(actualValue)); } },\r\n trimAllKeepLF: { ...descriptorProps, get() { return wrap(trimAll(actualValue, true)); } },\r\n undoAll: { ...descriptorProps, get() { return undoAll(); } },\r\n undo: { ...descriptorProps, get() { return undoLast(); } },\r\n wordsUCFirst: { ...descriptorProps, get() { return wrap(wordsFirstUp(getStringValue(actualValue))); } },\r\n value: { ...descriptorProps,\r\n get() { return actualValue; },\r\n set(value) {\r\n const nwValue = getStringValue(value);\r\n if (nwValue.length) {\r\n actualValue = nwValue;\r\n history.push(nwValue);\r\n }\r\n }\r\n },\r\n });\r\n\r\n injectCustomMethods(customMethods);\r\n\r\n return instance;\r\n\r\n function getTraps(extensions) {\r\n return {\r\n get( target, key ) {\r\n return Object.hasOwn(extensions, key)\r\n ? extensions[key]\r\n : canWrapNative(String(key))\r\n ? wrapNative(key)\r\n : undefined;\r\n },\r\n };\r\n }\r\n\r\n function canWrapNative(key) {\r\n return !deprecatedRE.test(key)\r\n && key in String.prototype;\r\n }\r\n\r\n function wrapNative(key) {\r\n return actualValue[key] instanceof Function\r\n ? function(...args) {\r\n const result = actualValue[key](...args);\r\n return result?.constructor === String ? wrap(actualValue[key](...args)) : result;\r\n } : actualValue[key];\r\n }\r\n\r\n function undoAll() {\r\n while (history.length > 1) { history.pop(); }\r\n actualValue = history.at(-1);\r\n return wrap(actualValue, false);\r\n }\r\n\r\n function undoSteps(steps) {\r\n if (!isNumber(steps)) {\r\n return wrap(actualValue, false);\r\n }\r\n\r\n const historyLen = history.length;\r\n\r\n if (steps >= historyLen || steps < 1) {\r\n history = history.slice(0, 1);\r\n actualValue = history.at(-1);\r\n return wrap(history.at(-1), false);\r\n }\r\n\r\n history = history.slice(0, historyLen - steps);\r\n\r\n actualValue = history.at(-1);\r\n return wrap(actualValue, false);\r\n }\r\n\r\n function undoLast() {\r\n if (history.length === 1) {\r\n return wrap(history[0]);\r\n }\r\n\r\n history.pop();\r\n actualValue = history.at(-1);\r\n return wrap(actualValue, false);\r\n }\r\n\r\n function wrap(result, pushHistory = true) {\r\n const changed = actualValue !== result;\r\n changed && pushHistory && history.push(result);\r\n actualValue = result;\r\n return instance;\r\n }\r\n\r\n function injectCustomMethods(customMethods) {\r\n Object.entries(customMethods).forEach(([methodName, methodContainer]) => {\r\n const {enumerable, method, isGetter} = methodContainer;\r\n const configurable = false\r\n const descriptor = isGetter\r\n ? { get() { return wrap(method(instance).value); }, enumerable, configurable }\r\n : { value(...args) { return wrap(method(instance, ...args).value); }, enumerable, configurable };\r\n\r\n Object.defineProperty(customStringExtensions, methodName, descriptor);\r\n });\r\n }\r\n}\r\n", "import createInstance from \"./instanceCreator.js\";\r\nimport { createExtendedCTOR, resolveTemplateString, } from \"./helpers.js\";\r\nconst customMethods = {};\r\n\r\nexport { customMethods, CustomStringConstructor, clone, };\r\n\r\ncreateExtendedCTOR(CustomStringConstructor, customMethods);\r\n\r\nfunction CustomStringConstructor(str, ...args) {\r\n const instance = createInstance({initialstring: resolveTemplateString(str, ...args)});\r\n Object.defineProperty( instance,\r\n `constructor`, { get() { return CustomStringConstructor; }, enumerable: false}\r\n );\r\n return Object.freeze(instance);\r\n}\r\n\r\nfunction clone(instance) {\r\n const newInstance = CustomStringConstructor(instance.value);\r\n newInstance.history = [...instance.history];\r\n return newInstance;\r\n}\r\n", "import { CustomStringConstructor as defaultStringCTOR} from \"./src/CTORCreator.js\";\r\n\r\nexport default defaultStringCTOR;\r\n"],
5
- "mappings": "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",
6
- "names": ["IS", "typeCheckFactory", "interpolateDefault", "interpolateFactory", "interpolateClear", "interpolateFactory", "defaultReplacer", "specs", "useSymbolicExtensions", "IS", "addSymbolicStringExtensions", "str", "tokens", "interpolate", "processTokens", "invalidate", "key", "keyExists", "replacement", "token", "isValid", "getReplacerLambda", "args", "replacementObject", "a", "replace", "convertTokensFromArrayValues", "tokenObject", "converted", "value", "v", "i", "isMultiLineWithArrays", "injected", "interpolateDefault", "interpolateClear", "typeCheckFactory", "collate", "nameOf", "type2Check", "checkSingleType", "obj", "checkType", "chkType", "regExpFromMultilineStringFactory_default", "instanceCreator", "escape4RE", "regExStr", "args", "flags", "cleanedArgs", "maybeFlags", "createInstance", "cleanup", "createRegExpStringFromInput", "hasLength", "a", "v", "i", "cleanupFlags", "getFlags", "isOfType", "regExp", "instance", "modifyFlags", "clone", "getterTrap", "variable", "any", "CTOR", "maybeProp", "target", "key", "fromRegExp", "fromInstance", "fromRegExpMethod", "source", "currentFlags", "string2Escape", "str", "b", "randomString", "uuid4", "randomStringGeneratorFactory", "randomStringGeneratorFactory", "hasCrypto", "checkBrowserCrypto", "getRandomValue", "randomNr", "min", "max", "range", "start", "len", "reMap", "_", "i", "map2Chrs", "v", "symbols", "symRE", "shuffle", "array", "ri", "UC", "LC", "allChars", "getChars2Use", "use", "acc", "key", "value", "uuid4", "strTest", "strFound", "numbers", "alphaSwap", "chars", "idx", "randomString", "includeUppercase", "includeNumbers", "includeSymbols", "startAlphabetic", "chrs2Use", "quotingStyles", "defineQuotingStyles", "deprecatedRE", "defineQuotingStyles", "quots", "escapeRE", "v", "reString", "modifiers", "a", "getStringValue", "string", "isArrayOf", "type", "value", "includeInstances", "checkType", "isNumber", "infoValue", "key", "item", "CustomStringConstructor", "resolveTemplateString", "str", "args", "retrieveQuotInfo", "instanceQuotGetters4Info", "ctor", "b", "acc", "k", "val", "quotGetters4Instance", "instance", "wrap", "me", "quotingStyles", "start", "end", "capitalizerFactory", "parseCamelcase", "parseSnakeCase", "ucFirst", "parseKebabCase", "wordsFirstUp", "createExtendedCTOR", "customMethods", "quoteInfo", "swInfo", "getSWInformation", "tokens", "name", "method", "enumerable", "isGetter", "uuid4", "len", "includeUppercase", "includeNumbers", "includeSymbols", "startAlphabetic", "randomString", "regExpFromMultilineStringFactory_default", "notChainable", "firstLines", "getInfoPrefix", "plainValues", "getPlainValues", "keyA", "keyB", "descriptr", "isChainable", "isMethod", "isNative", "isPlainValue", "custom", "getter", "native", "checkAndRun", "string", "fn", "or", "getStringValue", "format", "tokens", "interpolateDefault", "surroundWith", "start", "end", "isArrayOf", "ucFirst", "parseKebabCase", "str", "result", "s", "parseSnakeCase", "parseCamelcase", "l", "i", "wordsFirstUp", "acc", "v", "trim", "regExpFromMultilineStringFactory_default", "getWordBoundary", "truncate", "at", "html", "wordBoundary", "subString", "endwith", "boundary", "trimAll", "keepLines", "lines", "line", "a", "replaceWords", "replacements", "caseSensitive", "replacements2Array", "cando", "modifiers", "initial", "replacement", "re", "escapeRE", "indexOf", "findMe", "fromIndex", "isNumber", "index", "lastIndexOf", "beforeIndex", "insert", "value", "values", "valuesMaybeValue", "prefix", "strings", "append", "strings2Append", "instanceCreator_default", "instanceCreator", "initialstring", "customStringExtensions", "instance", "getTraps", "actualValue", "getStringValue", "history", "descriptorProps", "strings", "wrap", "append", "start", "end", "surroundWith", "tokens", "format", "str", "indexOf", "value", "values", "at", "insert", "lastIndexOf", "prefix", "caseSensitive", "replacements", "replaceWords", "trim", "html", "wordBoundary", "truncate", "nSteps", "undoSteps", "parseCamelcase", "capitalizerFactory", "clone", "customMethods", "ucFirst", "parseKebabCase", "quotGetters4Instance", "parseSnakeCase", "trimAll", "undoAll", "undoLast", "wordsFirstUp", "nwValue", "injectCustomMethods", "extensions", "target", "key", "canWrapNative", "wrapNative", "deprecatedRE", "args", "result", "steps", "isNumber", "historyLen", "pushHistory", "methodName", "methodContainer", "enumerable", "method", "isGetter", "configurable", "customMethods", "createExtendedCTOR", "CustomStringConstructor", "customMethods", "str", "args", "instance", "instanceCreator_default", "resolveTemplateString", "clone", "newInstance", "index_default", "CustomStringConstructor"]
4
+ "sourcesContent": ["const IS = typeCheckFactory();\r\nconst interpolateDefault = interpolateFactory();\r\nconst interpolateClear = interpolateFactory(\"\");\r\n\r\nexport {\r\n interpolateDefault as default,\r\n interpolateClear,\r\n addSymbolicStringExtensions,\r\n interpolateFactory,\r\n};\r\n\r\n/**\r\n * Factory function to create an interpolate function with a default replacer.\r\n * @param {string|number} defaultReplacer - Default value to use for missing tokens.\r\n * @returns {Function} - The interpolation function.\r\n */\r\nfunction interpolateFactory(defaultReplacer, specs = {}) {\r\n const {useSymbolicExtensions} = specs;\r\n defaultReplacer = IS(defaultReplacer, String, Number) ?\r\n String(defaultReplacer) : undefined;\r\n \r\n if (!!useSymbolicExtensions) {\r\n addSymbolicStringExtensions();\r\n }\r\n \r\n /**\r\n * Main interpolation function.\r\n * @param {string} str - The string with placeholders.\r\n * @param {...object} tokens - Objects containing replacement values.\r\n * @returns {string} - The interpolated string.\r\n */\r\n return function(str, ...tokens) {\r\n return interpolate(str, processTokens(tokens));\r\n }\r\n \r\n /**\r\n * Handle invalid keys by returning the default replacer or the key in braces.\r\n * @param {string} key - The placeholder key.\r\n * @param {boolean} keyExists - Flag indicating if the key exists in the token.\r\n * @returns {string} - The replacement value.\r\n */\r\n function invalidate(key, keyExists) {\r\n if (keyExists && IS(defaultReplacer, String, Number)) {\r\n return String(defaultReplacer);\r\n }\r\n \r\n return `{${key}}`;\r\n }\r\n \r\n /**\r\n * Get the replacement value for a key from the token.\r\n * @param {string} key - The placeholder key.\r\n * @param {object} token - The token object containing replacement values.\r\n * @returns {string} - The replacement value.\r\n */\r\n function replacement(key, token) {\r\n const isValid = key in token;\r\n return isValid && IS(token[key], String, Number) ? String(token[key]) : invalidate(key, isValid);\r\n }\r\n \r\n /**\r\n * Create a lambda function for replacing placeholders in the string.\r\n * @param {object} token - The token object containing replacement values.\r\n * @returns {Function} - The replacer lambda function.\r\n */\r\n function getReplacerLambda(token) {\r\n return (...args) => {\r\n const replacementObject = args.find(a => a.key);\r\n return replacement((replacementObject ? replacementObject.key : `_`), token);\r\n };\r\n }\r\n \r\n /**\r\n * Replace placeholders in the string with values from the token.\r\n * @param {string} str - The string with placeholders.\r\n * @param {object} token - The token object containing replacement values.\r\n * @returns {string} - The interpolated string.\r\n */\r\n function replace(str, token) {\r\n return str.replace(/\\{(?<key>[a-z_\\d]+)}/gim, getReplacerLambda(token));\r\n }\r\n \r\n /**\r\n * Convert token object to array of token Objects\r\n * when it's values are arrays of values.\r\n * @param {object} tokenObject - The token object containing arrays of values.\r\n * @returns {object[]} - Array of token objects.\r\n */\r\n function convertTokensFromArrayValues(tokenObject) {\r\n const converted = [];\r\n \r\n Object.entries(tokenObject).forEach(([key, value]) => {\r\n value.forEach((v, i) => (converted[i] ??= {}, converted[i][key] = v));\r\n });\r\n \r\n return converted;\r\n }\r\n \r\n /**\r\n * Check if single token and its values are arrays.\r\n * @param {object[]} tokens - The tokens to check.\r\n * @returns {boolean} - True if tokens contains one Object\r\n * and all it's values are of type Array.\r\n */\r\n function isMultiLineWithArrays(tokens) {\r\n return tokens.length === 1 && Object.values(tokens[0]).every(Array.isArray);\r\n }\r\n \r\n /**\r\n * Process tokens to handle multi-line formats.\r\n * @param {object[]} tokens - The tokens to process.\r\n * @returns {object[]} - Processed tokens.\r\n */\r\n function processTokens(tokens) {\r\n return isMultiLineWithArrays(tokens) ? convertTokensFromArrayValues(tokens[0]) : tokens;\r\n }\r\n \r\n /**\r\n * Interpolate the string with the given tokens.\r\n * @param {string} str - The string with placeholders.\r\n * @param {object[]} tokens - The tokens containing replacement values.\r\n * @returns {string} - The interpolated string.\r\n */\r\n function interpolate(str, tokens) {\r\n const injected = !tokens?.length ? str : tokens\r\n .filter(token => IS(token, Object))\r\n .map((token, i) => replace(str, {...token, index: i + 1}))\r\n .join(``);\r\n \r\n return IS(defaultReplacer, undefined)\r\n ? injected : injected.replace(/\\{[a-z_\\d].+\\}/gim, String(defaultReplacer));\r\n }\r\n}\r\n\r\n/**\r\n * Extend String.prototype using the above two\r\n * interpolate methods.\r\n * Note: Symbols are unique, so there is no risk the\r\n * methods will conflict with native String methods or\r\n * methods in other ES libraries.\r\n * @returns {symbol[]}\r\n */\r\nfunction addSymbolicStringExtensions() {\r\n if (!String.prototype[Symbol.for(`interpolate`)]) {\r\n Object.defineProperties(String.prototype, {\r\n [Symbol.for(`interpolate`)]: {\r\n value(...args) {\r\n return interpolateDefault(this, ...args);\r\n }\r\n },\r\n [Symbol.for(`interpolate$`)]: {\r\n value(...args) {\r\n return interpolateClear(this, ...args);\r\n }\r\n },\r\n });\r\n }\r\n \r\n return [Symbol.for(\"interpolate\"), Symbol.for(`interpolate$`)];\r\n}\r\n\r\n/**\r\n * Simple 'type' checking factory\r\n * @returns {function(*, ...[*]): (boolean|*)}\r\n */\r\nfunction typeCheckFactory() {\r\n const collate = new Intl.Collator(`en`, {sensitivity: 'base'});\r\n const nameOf = type2Check => typeof type2Check === `function`\r\n ? type2Check?.name || type2Check?.constructor?.name : `noCTOR`;\r\n \r\n /**\r\n * check obj to be of [type2Check]\r\n * @param {*} obj\r\n * @param {*} type2Check\r\n * @returns {boolean}\r\n */\r\n function checkSingleType(obj, type2Check) {\r\n if (type2Check === Number && (Number.isNaN(obj) || !Number.isFinite(obj))) {\r\n return false;\r\n }\r\n \r\n return 0 === collate.compare(\r\n Object.prototype.toString.call(obj),\r\n `[object ${nameOf(type2Check)}]`\r\n ) || obj?.name === type2Check?.name;\r\n }\r\n \r\n /**\r\n *\r\n * @param {*} obj\r\n * @param {*[]} type2Check\r\n * @returns {boolean}\r\n */\r\n function checkType(obj, ...type2Check) {\r\n if (type2Check.length > 1) {\r\n for (const chkType of type2Check) {\r\n if (checkSingleType(obj, chkType)) { return true; }\r\n }\r\n \r\n return false;\r\n }\r\n \r\n return checkSingleType(obj, type2Check?.shift());\r\n }\r\n \r\n return checkType;\r\n}\r\n", "export default Object.defineProperties(instanceCreator, {escape: {value: escape4RE, enumerable: true}});\r\n\r\nfunction instanceCreator(regExStr, ...args) {\r\n const {flags, cleanedArgs} = maybeFlags(...args);\r\n return createInstance(\r\n new RegExp(cleanup(createRegExpStringFromInput(regExStr, ...cleanedArgs)), flags)\r\n );\r\n}\r\n\r\nfunction createRegExpStringFromInput(regExStr, ...cleanedArgs) {\r\n return !hasLength(cleanedArgs) ? regExStr.raw.join(``) :\r\n regExStr.raw.reduce((a, v, i) => a.concat(cleanedArgs[i - 1] || ``).concat(v), ``);\r\n}\r\n\r\nfunction maybeFlags(...args) {\r\n const flags = cleanupFlags(getFlags(args.at(-1)));\r\n return { flags, cleanedArgs: hasLength(flags) ? args.slice(0, -1) : args };\r\n}\r\n\r\nfunction getFlags(maybeFlags) { return isOfType(maybeFlags, Array) ? maybeFlags.join(``) : ``; }\r\n\r\nfunction createInstance(regExp) {\r\n const instance = new Proxy( Object.defineProperties({}, {\r\n re: { get() { return regExp; }, enumerable: false },\r\n toString: {value: () => regExp.toString(), enumerable: false},\r\n valueOf: {value: () => regExp, enumerable: false},\r\n flags: { value(flags) { regExp = modifyFlags(flags, regExp); return instance; }, enumerable: false },\r\n clone: { get() { return clone(instance); }, enumerable: false },\r\n }), getterTrap(regExp) );\r\n \r\n return instance;\r\n}\r\n\r\nfunction hasLength(variable) { return variable?.length > 0; }\r\n\r\nfunction isOfType(any, CTOR) { return any?.constructor === CTOR; }\r\n\r\nfunction maybeProp(target, key, regExp) {\r\n const fromRegExp = Reflect.get(regExp, key);\r\n return {\r\n fromInstance: Reflect.get(target, key),\r\n fromRegExpMethod: isOfType(fromRegExp, Function) ? fromRegExp.bind(target.re) : target.re[key]\r\n }\r\n}\r\n\r\nfunction getterTrap(regExp) {\r\n return {\r\n get(target, key) {\r\n const {fromInstance, fromRegExpMethod} = maybeProp(target, key, regExp);\r\n switch (true) {\r\n case !!fromInstance: return fromInstance;\r\n default: return fromRegExpMethod;\r\n }\r\n },\r\n };\r\n}\r\n\r\nfunction clone(instance) {\r\n const source = instance.re.source;\r\n const flags = hasLength(instance.re.flags) ? [...instance.re.flags] : [];\r\n return instanceCreator`${source} ${flags}`;\r\n}\r\n\r\nfunction cleanupFlags(flags, currentFlags) {\r\n currentFlags = (currentFlags ?? ``).replace(/^-r\\|/, ``);\r\n flags = currentFlags.concat(isOfType(flags, String) && hasLength(flags) ? flags : ``);\r\n return [...new Set([...flags])].join(``).replace(/[^dgimsuvy]/g, ``);\r\n}\r\n\r\nfunction modifyFlags(flags, regExp) {\r\n switch (true) {\r\n case !isOfType(flags, String) || !hasLength(flags): return regExp;\r\n case flags === `-r`: return regExp = new RegExp(regExp.source);\r\n case flags.startsWith(`-r|`): return regExp = new RegExp(regExp.source, cleanupFlags(flags));\r\n default: return regExp = new RegExp(regExp.source, cleanupFlags(regExp.flags, flags));\r\n }\r\n}\r\n\r\nfunction escape4RE(string2Escape) {\r\n switch (true) {\r\n case string2Escape?.constructor !== String || !hasLength(string2Escape): return ``;\r\n case !!RegExp.escape: return RegExp.escape(string2Escape);\r\n default: return (`\\\\x${string2Escape.at(0)}` +\r\n string2Escape.slice(1).replace(/\\p{S}|\\p{P}/gu, a => `\\\\${a}`))\r\n .replace(/ |\\\\x /g, `\\\\x20`); }\r\n}\r\n\r\nfunction cleanup(str) {\r\n return str\r\n .replace(/\\/\\*(?:[^*]|\\*+[^*\\/])*\\*+\\/|(?<!:|\\\\\\|')\\/\\/.*/gm, ``)\r\n .replace(/\\s/g, ``)\r\n .trim().replace(/<!([^>]\\d+)>/g, (a, b) => String.fromCharCode(+b) ?? a);\r\n}\r\n", "const { randomString, uuid4 } = randomStringGeneratorFactory();\r\nexport { randomString as default, randomString, uuid4 };\r\n\r\nfunction randomStringGeneratorFactory() {\r\n const hasCrypto = checkBrowserCrypto();\r\n const getRandomValue = () => hasCrypto\r\n ? [...crypto.getRandomValues(new Uint32Array(1))].shift() / 2**32\r\n : Math.random();\r\n const randomNr = ({min = 0, max = Number.MAX_SAFE_INTEGER} = {}) =>\r\n Math.floor( getRandomValue() * (max - min + 1) + min );\r\n const range = (start = 0, len = 10, reMap) => (reMap || []) instanceof Function\r\n ? [...Array(len)].map((_, i) => start + i).map(reMap)\r\n : [...Array(len)].map((_, i) => start + i);\r\n const map2Chrs = v => String.fromCharCode(v);\r\n const symbols = `!?@#$%^&*=+_;-`.split(``);\r\n const symRE = RegExp(`[${symbols.map(v => `\\\\${v}`).join(``)}]`, `g`);\r\n const shuffle = array => {\r\n let i = array.length;\r\n while (i--) {\r\n const ri = randomNr( { max: i } );\r\n [array[i], array[ri]] = [array[ri], array[i]];\r\n }\r\n\r\n return array;\r\n };\r\n const UC = shuffle(range(65, 26, map2Chrs));\r\n const LC = shuffle(range(97, 26, map2Chrs));\r\n const UCLC = shuffle(UC.concat(LC));\r\n const allChars = { UCLC, UC, LC, Nrs: shuffle(range()), Sym: shuffle(symbols), };\r\n const getChars2Use = use => Object.entries(use)\r\n .reduce( (acc, [key, value]) => value ? [...acc, ...allChars[key]] : acc, LC );\r\n\r\n function checkBrowserCrypto() {\r\n try { return window && `crypto` in window }\r\n catch(_) { return false; }\r\n }\r\n\r\n function uuid4() {\r\n // Note: randomUUID only in secure context (https)\r\n return hasCrypto && crypto.randomUUID\r\n ? crypto.randomUUID()\r\n : [...new Uint8Array(16)]\r\n .map(_ => randomNr({max: 255}))\r\n .map( (v, i) => `${\r\n (i === 8 ? v & 0b00111111 | 0b10000000 : i === 6 ? v & 0b00001111 | 0b01000000 : v)\r\n .toString(16).padStart(2, `0`)}${~[3,5,7,9].indexOf(i) ? `-` : ``}` )\r\n .join(``);\r\n }\r\n\r\n function strTest(strFound, numbers, symbols) {\r\n return /[a-z]/i.test(strFound) && (\r\n numbers && symbols ? /\\d/.test(strFound) && symRE.test(strFound)\r\n : numbers ? /\\d/.test(strFound)\r\n : symbols ? symRE.test(strFound)\r\n : true);\r\n }\r\n\r\n function alphaSwap(strFound) {\r\n const chars = [...strFound];\r\n const idx = chars.findIndex(v => /[a-z]/i.test(v));\r\n [chars[0], chars[idx]] = [chars[idx], chars[0]];\r\n return chars.join(``);\r\n }\r\n\r\n function randomString( {len = 12, includeUppercase = true, includeNumbers, includeSymbols, startAlphabetic} = {} ) {\r\n len = len < 6 ? 6 : len;\r\n let chrs2Use = shuffle( getChars2Use( { UC: includeUppercase, Nrs: includeNumbers, Sym: includeSymbols } ) );\r\n\r\n while (chrs2Use.length < len) { chrs2Use = [...chrs2Use, ...shuffle(chrs2Use)]; }\r\n\r\n let strFound = chrs2Use.slice(0, len).join(``);\r\n\r\n if (!(includeNumbers || includeSymbols)) { return strFound; }\r\n\r\n for (let i = 0; i < chrs2Use.length; i += 1) {\r\n strFound = chrs2Use.slice(i, i + len).join(``);\r\n\r\n if (strTest(strFound, includeNumbers, includeSymbols)) {\r\n return startAlphabetic && !/^[a-z]/i.test(strFound) ? alphaSwap(strFound) : strFound;\r\n }\r\n }\r\n\r\n return randomString({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic});\r\n }\r\n\r\n return { randomString, uuid4 };\r\n}\r\n", "import interpolate from \"./factories/splatESBundle.js\";\r\nimport createRegExp from \"./Factories/regExpFromMultilineStringFactory.js\";\r\nimport {default as randomString, uuid4} from \"./Factories/randomStringFactory.js\";\r\nimport {CustomStringConstructor} from \"./CTORCreator.js\";\r\nimport {parseCamelcase, parseKebabCase, parseSnakeCase, ucFirst, wordsFirstUp} from \"./instanceMethods.js\";\r\nconst quotingStyles = defineQuotingStyles();\r\nconst deprecatedRE = /symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i\r\n\r\nexport {\r\n capitalizerFactory, createExtendedCTOR, createRegExp, defineQuotingStyles,\r\n deprecatedRE, getStringValue, escape4RE as escapeRE, infoValue, interpolate, isArrayOf,\r\n isNumber, randomString, resolveTemplateString, retrieveQuotInfo, quotGetters4Instance,\r\n quotingStyles, uuid4,\r\n};\r\n\r\nfunction defineQuotingStyles() {\r\n // see https://en.wikipedia.org/wiki/Quotation_mark\r\n const quots = {\r\n backtick: [\"`\", \"`\"],\r\n parentheses: [`(`, `)`],\r\n curlyBrackets: [`{`, `}`],\r\n curlyDoubleInward: [`\u201D`, `\u201C`],\r\n curlyDouble: [`\u201C`, `\u201D`],\r\n curlyDoubleEqual: [`\u201C`, `\u201C`],\r\n curlyLHDouble: [`\u201E`, `\u201D`],\r\n curlyLHDoubleInward: [`\u201E`, `\u201C`],\r\n curlyLHSingle: [`\u201A`, `\u2019`],\r\n curlyLHSingleInward: [`\u201A`, `\u2018`],\r\n curlySingle: [`\u201B`, `\u2019`],\r\n curlySingleEqual: [`\u201B`, `\u201B`],\r\n curlySingleInward: [`\u2019`, `\u201B`],\r\n double: [`\"`, `\"`],\r\n guillemets: [`\u00AB`, `\u00BB`],\r\n guillemetsInward: [`\u00BB`, `\u00AB`],\r\n guillemetsSingle: [`\u2039`, `\u203A`],\r\n guillemetsSingleInward: [`\u203A`, `\u2039`],\r\n single: [`'`, `'`],\r\n squareBrackets: [`[`, `]`],\r\n };\r\n quots.re = new RegExp(`[${\r\n escape4RE([...new Set(\r\n Object.values(quots)\r\n .filter(v => Array.isArray(v))\r\n .flat())].join(``))\r\n }]`, \"g\");\r\n return quots;\r\n}\r\n\r\nfunction escape4RE(str2Escape) {\r\n return str2Escape.replace(/\\p{S}|\\p{P}/gu, a => `\\\\${a}`);\r\n}\r\n\r\nfunction getStringValue(string) {\r\n return string?.value || (string?.constructor === String && string) || ``;\r\n}\r\n\r\nfunction isArrayOf(type, value, includeInstances = true) {\r\n return Array.isArray(value) && value.length > 0 &&\r\n !value.find(v => checkType(type, v, includeInstances));\r\n}\r\n\r\nfunction isNumber(value) {\r\n return value?.constructor === Number && !Number.isNaN(value);\r\n}\r\n\r\nfunction infoValue(key, infoValue) {\r\n return `${key} (${infoValue})`;\r\n}\r\n\r\nfunction checkType(type, item, includeInstances) {\r\n return type === String && includeInstances\r\n ? item?.constructor !== CustomStringConstructor && item?.constructor !== type\r\n : item?.constructor !== type;\r\n}\r\n\r\nfunction resolveTemplateString(str, ...args) {\r\n return str?.raw\r\n ? String.raw({ raw: str }, ...args)\r\n : getStringValue(str).length ? str : \"\";\r\n}\r\n\r\nfunction retrieveQuotInfo(instanceQuotGetters4Info, ctor) {\r\n return Object.entries(Object.getOwnPropertyDescriptors(instanceQuotGetters4Info.value))\r\n .sort( (a,b) => a[0].localeCompare(b[0]) )\r\n .reduce((acc, [k,]) => {\r\n if (k === `remove`) { return [...acc, `[instance].quote.remove (only predefined)`]; }\r\n if (k === `custom`) { return [...acc, `[instance].quote.custom(start:string, end:string)`]; }\r\n\r\n const val = ctor(`[instance]`).quote[k];\r\n return [...acc, `[instance].quote.${k} ( ${val} )`];\r\n }, []);\r\n}\r\n\r\nfunction quotGetters4Instance(instance, wrap) {\r\n wrap = wrap ?? function(me) { return me; };\r\n\r\n return {\r\n value: {\r\n get backtick() { return instance.enclose(...quotingStyles.backtick); },\r\n get parentheses() { return instance.enclose(...quotingStyles.parentheses); },\r\n get curlyBrackets() { return instance.enclose(...quotingStyles.curlyBrackets); },\r\n get curlyDouble() { return instance.enclose(...quotingStyles.curlyDouble); },\r\n get curlyDoubleInward() { return instance.enclose(...quotingStyles.curlyDoubleInward); },\r\n get curlyDoubleEqual() { return instance.enclose(...quotingStyles.curlyDoubleEqual); },\r\n get curlyLHDoubleInward() { return instance.enclose(...quotingStyles.curlyLHDoubleInward); },\r\n get curlyLHSingle() { return instance.enclose(...quotingStyles.curlyLHSingle); },\r\n get curlyLHSingleInward() { return instance.enclose(...quotingStyles.curlyLHSingleInward); },\r\n get curlySingle() { return instance.enclose(...quotingStyles.curlySingle); },\r\n get curlySingleEqual() { return instance.enclose(...quotingStyles.curlySingleEqual); },\r\n get curlySingleInward() { return instance.enclose(...quotingStyles.curlySingleInward); },\r\n get custom() { return (start, end) => instance.enclose(...[start, end ?? start]); },\r\n get double() { return instance.enclose(...quotingStyles.double); },\r\n get guillemets() { return instance.enclose(...quotingStyles.guillemets); },\r\n get guillemetsInward() { return instance.enclose(...quotingStyles.guillemetsInward); },\r\n get guillemetsSingle() { return instance.enclose(...quotingStyles.guillemetsSingle); },\r\n get guillemetsSingleInward() { return instance.enclose(...quotingStyles.guillemetsSingleInward); },\r\n get remove() { return wrap(`${instance.value.replace(quotingStyles.re, ``)}`); },\r\n get single() { return instance.enclose(...quotingStyles.single); },\r\n get squareBrackets() { return instance.enclose(...quotingStyles.squareBrackets); },\r\n },\r\n enumerable: false,\r\n configurable: false,\r\n };\r\n}\r\n\r\nfunction capitalizerFactory(instance, wrap) {\r\n return {\r\n get full() {\r\n return wrap(instance.value.toUpperCase());\r\n },\r\n get none() {\r\n return wrap(instance.value.toLowerCase());\r\n },\r\n get camel() {\r\n return wrap(parseCamelcase(instance.value));\r\n },\r\n get snake() {\r\n return wrap(parseSnakeCase(instance.value));\r\n },\r\n get first() {\r\n return wrap(ucFirst(instance.value));\r\n },\r\n get kebab() {\r\n return wrap(parseKebabCase(instance.value));\r\n },\r\n get words() {\r\n return wrap(wordsFirstUp(instance.value));\r\n },\r\n get dashed() {\r\n return wrap(parseKebabCase(instance.value));\r\n },\r\n }\r\n}\r\n\r\nfunction createExtendedCTOR(ctor, customMethods) {\r\n const quoteInfo = retrieveQuotInfo(quotGetters4Instance(ctor()), ctor);\r\n const swInfo = () => getSWInformation(`constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`), customMethods);\r\n Symbol.toSB = Symbol(`toStringBuilder`);\r\n Object.defineProperty(\r\n String.prototype,\r\n Symbol.toSB, {\r\n get() { return ctor(this); },\r\n enumerable: false,\r\n configurable: false\r\n }\r\n );\r\n\r\n Object.defineProperties(ctor, {\r\n create: {\r\n get() { return ctor(); },\r\n enumerable: false\r\n },\r\n constructor: {\r\n get() { return ctor; },\r\n enumerable: false,\r\n },\r\n format: {\r\n value(str, ...tokens) {\r\n return CustomStringConstructor(str).format(...tokens);\r\n }\r\n },\r\n addCustom: {\r\n value( { name, method, enumerable = false, isGetter = false } = {} ) {\r\n if (CustomStringConstructor``[name]) {\r\n console.error(`addCustom: the property \"${name}\" exists and can not be redefined`);\r\n return `addCustom: the property \"${name}\" exists and can not be redefined`;\r\n }\r\n\r\n if (typeof name === `string` && typeof method === `function` && method.length > 0) {\r\n customMethods[name] = {method, enumerable, isGetter};\r\n return `addCustom: the ${isGetter ? `getter` : `method`} named \"${name}\" is added`;\r\n }\r\n }\r\n },\r\n info: { get() { return swInfo(); } },\r\n keys: {\r\n get() {\r\n return Object.keys(Object.getOwnPropertyDescriptors(CustomStringConstructor``))\r\n .sort( (a,b) => a.localeCompare(b) )\r\n .map(v => !/constructor|toString|valueOf/.test(v) && Object.hasOwn(customMethods, v) ? `${v} *custom*` : v);\r\n }\r\n },\r\n quoteInfo: { value: quoteInfo },\r\n uuid4: { get() { return CustomStringConstructor(uuid4()); } },\r\n randomString: {\r\n value: function({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic} = {}) {\r\n return CustomStringConstructor(randomString({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic}));\r\n }\r\n },\r\n regExp: { value: createRegExp }\r\n });\r\n\r\n return;\r\n}\r\n\r\nfunction getSWInformation(notChainable, customMethods) {\r\n const firstLines = CustomStringConstructor(getInfoPrefix());\r\n const plainValues = getPlainValues();\r\n\r\n return firstLines.split(/\\n/)\r\n .concat(\r\n Object.entries(Object.getOwnPropertyDescriptors(firstLines))\r\n .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))\r\n .map(([key, descriptr]) => {\r\n const isChainable = !notChainable.find(k => k === key);\r\n const isGetter = Object.hasOwn(descriptr, `get`);\r\n const isMethod = Object.hasOwn(descriptr, `value`);\r\n const isNative = Object.hasOwn(String.prototype, key);\r\n const isPlainValue = !isNative && Object.hasOwn(plainValues, key);\r\n const custom = Object.hasOwn(customMethods, key) ? ` *custom*` : ``;\r\n const getter = isGetter && isChainable ? `chainable getter${custom}` : `getter`;\r\n const method = isMethod && isChainable ? `chainable method${custom}` : `method`;\r\n const native = isNative && `${descriptr.get ? `getter` : `method`} (override)`;\r\n\r\n switch (true) {\r\n case isPlainValue: return infoValue(key, plainValues[key]);\r\n case isNative: return infoValue(key, native);\r\n case isMethod: return infoValue(key, method);\r\n case isGetter: return infoValue(key, getter);\r\n }\r\n }\r\n )\r\n );\r\n}\r\n\r\nfunction getPlainValues() {\r\n const capitalizerKeys = Object.keys(capitalizerFactory());\r\n return {\r\n value: `getter/setter`,\r\n clone: `chainable getter`,\r\n notEmpty: `chainable getter|undefined`,\r\n quote: `Object. See [constructor].quoteInfo`,\r\n capitalize: `getter. Object with chainable getters: [${capitalizerKeys.join(`, `)}]`,\r\n };\r\n}\r\n\r\nfunction getInfoPrefix() {\r\n return atob(\r\n `Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21d`+\r\n `IGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0`+\r\n `SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhv`+\r\n `ZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl`).replace(/\\[cm]/g, `\\u2714`);\r\n}\r\n", "import { customMethods, clone, } from \"./CTORCreator.js\";\r\n\r\nimport {\r\n createRegExp as $RE, getStringValue, isArrayOf, interpolate,\r\n isNumber, escapeRE, quotGetters4Instance as quotGetters,\r\n} from \"./helpers.js\";\r\n\r\nexport {\r\n format,\r\n ucFirst,\r\n truncate,\r\n trimAll,\r\n replaceWords,\r\n indexOf,\r\n lastIndexOf,\r\n insert,\r\n append,\r\n isNumber,\r\n prefix,\r\n getStringValue,\r\n parseCamelcase,\r\n wordsFirstUp,\r\n parseKebabCase,\r\n parseSnakeCase,\r\n quotGetters,\r\n surroundWith,\r\n customMethods,\r\n clone,\r\n trim,\r\n};\r\n\r\nfunction checkAndRun(string, fn, or) {\r\n string = getStringValue(string);\r\n return string.length > 0 ? fn(string) : or || string;\r\n}\r\n\r\nfunction format(string, ...tokens) {\r\n return checkAndRun(string, () => `${interpolate(string, ...tokens)}`);\r\n}\r\n\r\nfunction surroundWith(string, start, end) {\r\n if (!start && !end) {\r\n return string;\r\n }\r\n [start, end] = isArrayOf(String, [start, end ?? ``]) ? [start, end] : [``, ``];\r\n return `${start}${string}${end || start}`;\r\n}\r\n\r\nfunction ucFirst(string) {\r\n return checkAndRun(string, () => `${string[0].toUpperCase()}${string.slice(1).toLowerCase()}`);\r\n}\r\n\r\nfunction parseKebabCase(str) {\r\n let result = ``;\r\n\r\n for (const s of [...str]) {\r\n switch(true) {\r\n case !/[a-z _]/i.test(s): break;\r\n case /[ _]/.test(s): result += `-`; break;\r\n case s === s.toUpperCase(): result += `-${s.toLowerCase()}`; break;\r\n default: result += s;\r\n }\r\n }\r\n\r\n return result.replace(/-{2,}/g, `-`).replace(/^-|-$/g, ``);\r\n}\r\n\r\nfunction parseSnakeCase(str) {\r\n let result = ``;\r\n\r\n for (const s of [...str]) {\r\n switch(true) {\r\n case !/[a-z _-]/i.test(s): break;\r\n case /[ -]/.test(s): result += `_`; break;\r\n case s === s.toUpperCase(): result += `_${s.toLowerCase()}`; break;\r\n default: result += s;\r\n }\r\n }\r\n\r\n return result.replace(/_{2,}/g, `_`).replace(/^_|_$/g, ``);\r\n}\r\n\r\nfunction parseCamelcase(string) {\r\n return checkAndRun(string, () =>\r\n string.toLowerCase()\r\n .trim()\r\n .split(/[-\\s]/)\r\n .filter(l => l && l.length > 0)\r\n .map( (str, i) => i > 0 && `${ucFirst(str)}` || str)\r\n .join(``)\r\n );\r\n}\r\n\r\nfunction wordsFirstUp(string) {\r\n return checkAndRun(string, () => [...string.toLowerCase()].slice(1).reduce( (acc, v) =>\r\n acc + ( !/\\p{L}|[-']/u.test(acc.at(-1)) ? v.toUpperCase() : v.toLowerCase() ),\r\n string[0].toUpperCase()\r\n ));\r\n}\r\n\r\nfunction trim(string, start, end) {\r\n return checkAndRun(string, () => {\r\n if (!end && !start) { return string.trim(); }\r\n\r\n end = $RE.escape(end || start);\r\n start = $RE.escape(start);\r\n\r\n return string.replace($RE`^(${start})+ | (${end})+$`.flags(`gm`), ``);\r\n });\r\n}\r\n\r\nfunction getWordBoundary(string) {\r\n const match = [...string.matchAll(/\\p{Pe}|\\p{Z}/gu)].at(-1);\r\n return match?.index ?? string.length;\r\n}\r\n\r\nfunction truncate(string, {at, html = false, wordBoundary = false} = {} ) {\r\n html = html?.constructor === Boolean && html || false;\r\n wordBoundary = wordBoundary?.constructor === Boolean && wordBoundary || false;\r\n return checkAndRun(string, () => {\r\n if (string.length <= at) { return string; }\r\n\r\n const subString = string.slice(0, at - 1);\r\n const endwith = html ? \"&hellip;\" : `...`;\r\n const boundary = wordBoundary\r\n ? getWordBoundary(subString)\r\n : subString.length;\r\n\r\n return (wordBoundary\r\n ? subString.slice(0, boundary+1).trim()\r\n : subString) + endwith;\r\n }\r\n );\r\n}\r\n\r\nfunction trimAll(string, keepLines = false) {\r\n keepLines = keepLines?.constructor === Boolean && keepLines || false;\r\n return checkAndRun(string, () => {\r\n const lines = string.replace(/\\n/gm, `#LF#`)\r\n .split(/#LF#/)\r\n .map(line => line.trim().replace(/\\s{2,}/g, a => a[0]) );\r\n return keepLines\r\n ? lines.join(`#LF#`).replace(/#LF#/g, `\\n`).trim()\r\n : lines.filter(l => l.length > 0).join(`\\n`);\r\n });\r\n}\r\n\r\nfunction replaceWords(string, { replacements = {}, caseSensitive = false} = {}) {\r\n string = getStringValue(string);\r\n let replacements2Array = Object.entries(replacements).flat();\r\n const cando = isArrayOf(String, replacements2Array) && caseSensitive?.constructor === Boolean;\r\n const modifiers = `g${!caseSensitive ? 'i' : ''}`;\r\n\r\n if (!cando) { return string; }\r\n\r\n while (replacements2Array.length) {\r\n const [initial, replacement] = [replacements2Array.shift(), replacements2Array.shift()];\r\n const re = new RegExp(escapeRE(initial), modifiers);\r\n string = string.replace(re, replacement);\r\n }\r\n\r\n return string;\r\n}\r\n\r\n// SEE https://youtu.be/99Zacm7SsWQ?t=2101\r\nfunction indexOf(string, findMe, fromIndex = 0) {\r\n string = getStringValue(string);\r\n fromIndex = isNumber(fromIndex) && fromIndex || 0;\r\n const index = string.indexOf(findMe, fromIndex || 0);\r\n return index < 0 ? undefined : index;\r\n}\r\n\r\nfunction lastIndexOf(string, findMe, beforeIndex = 0) {\r\n string = getStringValue(string);\r\n beforeIndex = isNumber(beforeIndex) && beforeIndex || string.length;\r\n const index = string.lastIndexOf(findMe, beforeIndex);\r\n return index < 0 ? undefined : index;\r\n}\r\n\r\nfunction insert(string, { value, values, at = 0 } = {}) {\r\n string = getStringValue(string);\r\n at = isNumber(at) && at || 0;\r\n const valuesMaybeValue = getStringValue(values);\r\n values = getStringValue(value).length\r\n ? value\r\n : valuesMaybeValue.length\r\n ? valuesMaybeValue\r\n : isArrayOf(String, values)\r\n ? values.map(v => getStringValue(v)).join(``)\r\n : [];\r\n\r\n return values.length <= 1\r\n ? string\r\n : string.length === 0\r\n ? `${values}${string}`\r\n : `${string.slice(0, at)}${values}${string.slice(at)}`;\r\n}\r\n\r\nfunction prefix(string, ...strings) {\r\n strings = isArrayOf(String, strings) && strings;\r\n return strings ? insert(getStringValue(string), {values: strings, at: 0}) : getStringValue(string);\r\n}\r\n\r\nfunction append(string, ...strings2Append) {\r\n strings2Append = isArrayOf(String, strings2Append) && strings2Append;\r\n\r\n if (strings2Append && strings2Append.length > 0) {\r\n return `${getStringValue(string)}`.concat(strings2Append.join(``))\r\n }\r\n\r\n return getStringValue(string);\r\n}\r\n", "import {\r\n format,\r\n ucFirst,\r\n truncate,\r\n trimAll,\r\n replaceWords,\r\n indexOf,\r\n lastIndexOf,\r\n insert,\r\n append,\r\n prefix,\r\n getStringValue,\r\n quotGetters,\r\n surroundWith,\r\n parseCamelcase,\r\n wordsFirstUp,\r\n parseKebabCase,\r\n parseSnakeCase,\r\n customMethods,\r\n isNumber,\r\n clone,\r\n trim,\r\n} from \"./instanceMethods.js\";\r\n\r\nimport { capitalizerFactory, deprecatedRE } from \"./helpers.js\";\r\n\r\nexport default instanceCreator;\r\n\r\nfunction instanceCreator({initialstring} = {}) {\r\n let customStringExtensions = Object.create(null, { });\r\n let instance = new Proxy(customStringExtensions, getTraps(customStringExtensions));\r\n let actualValue = getStringValue(initialstring);\r\n let history = [actualValue];\r\n const defaultDescriptorProps = {configurable: false, enumerable: false};\r\n\r\n Object.defineProperties( customStringExtensions, {\r\n // methods\r\n append: { ...defaultDescriptorProps, value(...strings) { return wrap(append(actualValue, ...strings)); } },\r\n enclose: { ...defaultDescriptorProps, value(start, end) { return wrap(surroundWith(actualValue, start, end)); } },\r\n format: { ...defaultDescriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },\r\n indexOf: { ...defaultDescriptorProps, value(str) { return indexOf(actualValue, str); } },\r\n interpolate: { ...defaultDescriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },\r\n insert: { ...defaultDescriptorProps, value({ value, values, at } = {}) {\r\n return wrap(insert(actualValue, { value, values, at }));\r\n }\r\n },\r\n lastIndexOf: { ...defaultDescriptorProps, value(str) { return lastIndexOf(actualValue, str); } },\r\n prefix: { ...defaultDescriptorProps, value(...strings) { return wrap(prefix(actualValue, ...strings)); } },\r\n replaceWords: { ...defaultDescriptorProps, value({caseSensitive = false, replacements = {}} = {}) {\r\n return wrap(replaceWords(actualValue, { replacements: replacements ?? {}, caseSensitive }));\r\n } },\r\n toString: { ...defaultDescriptorProps, value() { return actualValue; } },\r\n trim: {...defaultDescriptorProps, value(start, end) { return wrap(trim(actualValue, start, end)); } },\r\n truncate: { ...defaultDescriptorProps, value({at, html = false, wordBoundary = false} = {}) {\r\n return wrap(truncate(actualValue, {at, html, wordBoundary})); } },\r\n valueOf: { ...defaultDescriptorProps, value() { return actualValue; } },\r\n undoLast: { ...defaultDescriptorProps, value(nSteps) { return undoSteps(nSteps); } },\r\n\r\n // getters\r\n camelCase: { ...defaultDescriptorProps, get() { return wrap(parseCamelcase(getStringValue(actualValue))); } },\r\n capitalize: { ...defaultDescriptorProps, value: capitalizerFactory(instance, wrap) },\r\n clone: { ...defaultDescriptorProps, get() { return clone(instance, customMethods); } },\r\n firstUp: { ...defaultDescriptorProps, get() { return wrap(ucFirst(getStringValue(actualValue))); } },\r\n history: { ...defaultDescriptorProps, get() { return history; }, set(value) { history = value; } },\r\n empty: { ...defaultDescriptorProps, get() { return actualValue.length < 1; } },\r\n notEmpty: { ...defaultDescriptorProps, get() { return actualValue.length < 1 ? undefined: instance; } },\r\n kebabCase: { ...defaultDescriptorProps, get() { return wrap(parseKebabCase(getStringValue(actualValue))); } },\r\n quote: quotGetters(instance, wrap),\r\n snakeCase: { ...defaultDescriptorProps, get() { return wrap(parseSnakeCase(getStringValue(actualValue))); } },\r\n trimAll: { ...defaultDescriptorProps, get() { return wrap(trimAll(actualValue)); } },\r\n trimAllKeepLF: { ...defaultDescriptorProps, get() { return wrap(trimAll(actualValue, true)); } },\r\n undoAll: { ...defaultDescriptorProps, get() { return undoAll(); } },\r\n undo: { ...defaultDescriptorProps, get() { return undoLast(); } },\r\n wordsUCFirst: { ...defaultDescriptorProps, get() { return wrap(wordsFirstUp(getStringValue(actualValue))); } },\r\n value: { ...defaultDescriptorProps,\r\n get() { return actualValue; },\r\n set(value) {\r\n const nwValue = getStringValue(value);\r\n if (nwValue.length) {\r\n actualValue = nwValue;\r\n history.push(nwValue);\r\n }\r\n }\r\n },\r\n });\r\n\r\n injectCustomMethods(customMethods);\r\n\r\n return instance;\r\n\r\n function getTraps(customExtensions) {\r\n return {\r\n get( target, key ) {\r\n switch(true) {\r\n case key === Symbol.for(\"myType\"): return `stringWeaver instance (Proxy)`;\r\n case Object.hasOwn(customExtensions, key): return customExtensions[key];\r\n case canWrapNative(String(key)): return wrapNative(key);\r\n default: return wrapNative(key);\r\n }\r\n },\r\n };\r\n }\r\n\r\n function canWrapNative(key) {\r\n return !deprecatedRE.test(key) && Object.hasOwn(String.prototype, key);\r\n }\r\n\r\n function wrapNative(key) {\r\n return typeof actualValue[key] === `function`\r\n ? function(...args) {\r\n const result = actualValue[key](...args);\r\n return result?.constructor === String ? wrap(actualValue[key](...args)) : result;\r\n }\r\n : actualValue[key];\r\n }\r\n\r\n function undoAll() {\r\n while (history.length > 1) { history.pop(); }\r\n actualValue = history.at(-1);\r\n return wrap(actualValue, false);\r\n }\r\n\r\n function undoSteps(steps) {\r\n if (!isNumber(steps)) {\r\n return wrap(actualValue, false);\r\n }\r\n\r\n const historyLen = history.length;\r\n\r\n if (steps >= historyLen || steps < 1) {\r\n history = history.slice(0, 1);\r\n actualValue = history.at(-1);\r\n return wrap(history.at(-1), false);\r\n }\r\n\r\n history = history.slice(0, historyLen - steps);\r\n\r\n actualValue = history.at(-1);\r\n return wrap(actualValue, false);\r\n }\r\n\r\n function undoLast() {\r\n if (history.length === 1) {\r\n return wrap(history[0]);\r\n }\r\n\r\n history.pop();\r\n actualValue = history.at(-1);\r\n return wrap(actualValue, false);\r\n }\r\n\r\n function wrap(result, pushHistory = true) {\r\n const changed = actualValue !== result;\r\n changed && pushHistory && history.push(result);\r\n actualValue = result;\r\n return instance;\r\n }\r\n\r\n function injectCustomMethods(customMethods) {\r\n Object.entries(customMethods).forEach(([methodName, methodContainer]) => {\r\n const {enumerable, method, isGetter} = methodContainer;\r\n const configurable = false\r\n const descriptor = isGetter\r\n ? { get() { return wrap(method(instance).value); }, enumerable, configurable }\r\n : { value(...args) { return wrap(method(instance, ...args).value); }, enumerable, configurable };\r\n\r\n Object.defineProperty(customStringExtensions, methodName, descriptor);\r\n });\r\n }\r\n}\r\n", "import createInstance from \"./instanceCreator.js\";\r\nimport { createExtendedCTOR, resolveTemplateString, } from \"./helpers.js\";\r\nconst customMethods = Object.create(null, {});\r\n\r\nexport { customMethods, CustomStringConstructor, clone, };\r\n\r\ncreateExtendedCTOR(CustomStringConstructor, customMethods);\r\n\r\nfunction CustomStringConstructor(str, ...args) {\r\n const instance = createInstance({initialstring: resolveTemplateString(str, ...args)});\r\n Object.defineProperty( instance,\r\n `constructor`, { get() { return CustomStringConstructor; }, enumerable: false}\r\n );\r\n return Object.freeze(instance);\r\n}\r\n\r\nfunction clone(instance) {\r\n const newInstance = CustomStringConstructor(instance.value);\r\n newInstance.history = [...instance.history];\r\n return newInstance;\r\n}\r\n", "import { CustomStringConstructor as defaultStringCTOR} from \"./src/CTORCreator.js\";\r\n\r\nexport default defaultStringCTOR;\r\n"],
5
+ "mappings": "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",
6
+ "names": ["IS", "typeCheckFactory", "interpolateDefault", "interpolateFactory", "interpolateClear", "interpolateFactory", "defaultReplacer", "specs", "useSymbolicExtensions", "IS", "addSymbolicStringExtensions", "str", "tokens", "interpolate", "processTokens", "invalidate", "key", "keyExists", "replacement", "token", "isValid", "getReplacerLambda", "args", "replacementObject", "a", "replace", "convertTokensFromArrayValues", "tokenObject", "converted", "value", "v", "i", "isMultiLineWithArrays", "injected", "interpolateDefault", "interpolateClear", "typeCheckFactory", "collate", "nameOf", "type2Check", "checkSingleType", "obj", "checkType", "chkType", "regExpFromMultilineStringFactory_default", "instanceCreator", "escape4RE", "regExStr", "args", "flags", "cleanedArgs", "maybeFlags", "createInstance", "cleanup", "createRegExpStringFromInput", "hasLength", "a", "v", "i", "cleanupFlags", "getFlags", "isOfType", "regExp", "instance", "modifyFlags", "clone", "getterTrap", "variable", "any", "CTOR", "maybeProp", "target", "key", "fromRegExp", "fromInstance", "fromRegExpMethod", "source", "currentFlags", "string2Escape", "str", "b", "randomString", "uuid4", "randomStringGeneratorFactory", "randomStringGeneratorFactory", "hasCrypto", "checkBrowserCrypto", "getRandomValue", "randomNr", "min", "max", "range", "start", "len", "reMap", "_", "i", "map2Chrs", "v", "symbols", "symRE", "shuffle", "array", "ri", "UC", "LC", "allChars", "getChars2Use", "use", "acc", "key", "value", "uuid4", "strTest", "strFound", "numbers", "alphaSwap", "chars", "idx", "randomString", "includeUppercase", "includeNumbers", "includeSymbols", "startAlphabetic", "chrs2Use", "quotingStyles", "defineQuotingStyles", "deprecatedRE", "defineQuotingStyles", "quots", "escape4RE", "v", "str2Escape", "a", "getStringValue", "string", "isArrayOf", "type", "value", "includeInstances", "checkType", "isNumber", "infoValue", "key", "item", "CustomStringConstructor", "resolveTemplateString", "str", "args", "retrieveQuotInfo", "instanceQuotGetters4Info", "ctor", "b", "acc", "k", "val", "quotGetters4Instance", "instance", "wrap", "me", "quotingStyles", "start", "end", "capitalizerFactory", "parseCamelcase", "parseSnakeCase", "ucFirst", "parseKebabCase", "wordsFirstUp", "createExtendedCTOR", "customMethods", "quoteInfo", "swInfo", "getSWInformation", "tokens", "name", "method", "enumerable", "isGetter", "uuid4", "len", "includeUppercase", "includeNumbers", "includeSymbols", "startAlphabetic", "randomString", "regExpFromMultilineStringFactory_default", "notChainable", "firstLines", "getInfoPrefix", "plainValues", "getPlainValues", "keyA", "keyB", "descriptr", "isChainable", "isMethod", "isNative", "isPlainValue", "custom", "getter", "native", "checkAndRun", "string", "fn", "or", "getStringValue", "format", "tokens", "interpolateDefault", "surroundWith", "start", "end", "isArrayOf", "ucFirst", "parseKebabCase", "str", "result", "s", "parseSnakeCase", "parseCamelcase", "l", "i", "wordsFirstUp", "acc", "v", "trim", "regExpFromMultilineStringFactory_default", "getWordBoundary", "truncate", "at", "html", "wordBoundary", "subString", "endwith", "boundary", "trimAll", "keepLines", "lines", "line", "a", "replaceWords", "replacements", "caseSensitive", "replacements2Array", "cando", "modifiers", "initial", "replacement", "re", "escape4RE", "indexOf", "findMe", "fromIndex", "isNumber", "index", "lastIndexOf", "beforeIndex", "insert", "value", "values", "valuesMaybeValue", "prefix", "strings", "append", "strings2Append", "instanceCreator_default", "instanceCreator", "initialstring", "customStringExtensions", "instance", "getTraps", "actualValue", "getStringValue", "history", "defaultDescriptorProps", "strings", "wrap", "append", "start", "end", "surroundWith", "tokens", "format", "str", "indexOf", "value", "values", "at", "insert", "lastIndexOf", "prefix", "caseSensitive", "replacements", "replaceWords", "trim", "html", "wordBoundary", "truncate", "nSteps", "undoSteps", "parseCamelcase", "capitalizerFactory", "clone", "customMethods", "ucFirst", "parseKebabCase", "quotGetters4Instance", "parseSnakeCase", "trimAll", "undoAll", "undoLast", "wordsFirstUp", "nwValue", "injectCustomMethods", "customExtensions", "target", "key", "canWrapNative", "wrapNative", "deprecatedRE", "args", "result", "steps", "isNumber", "historyLen", "pushHistory", "methodName", "methodContainer", "enumerable", "method", "isGetter", "configurable", "customMethods", "createExtendedCTOR", "CustomStringConstructor", "customMethods", "str", "args", "instance", "instanceCreator_default", "resolveTemplateString", "clone", "newInstance", "index_default", "CustomStringConstructor"]
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stringweaver",
3
3
  "type": "module",
4
- "version": "1.4.3",
4
+ "version": "1.4.5",
5
5
  "private": false,
6
6
  "main": "./index.js",
7
7
  "sideEffects": false,
@@ -1,6 +1,6 @@
1
1
  import createInstance from "./instanceCreator.js";
2
2
  import { createExtendedCTOR, resolveTemplateString, } from "./helpers.js";
3
- const customMethods = {};
3
+ const customMethods = Object.create(null, {});
4
4
 
5
5
  export { customMethods, CustomStringConstructor, clone, };
6
6
 
package/src/helpers.js CHANGED
@@ -8,8 +8,9 @@ const deprecatedRE = /symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|ital
8
8
 
9
9
  export {
10
10
  capitalizerFactory, createExtendedCTOR, createRegExp, defineQuotingStyles,
11
- deprecatedRE, getStringValue, escapeRE, infoValue, interpolate, isArrayOf, isNumber,
12
- randomString, resolveTemplateString, retrieveQuotInfo, quotGetters4Instance, uuid4,
11
+ deprecatedRE, getStringValue, escape4RE as escapeRE, infoValue, interpolate, isArrayOf,
12
+ isNumber, randomString, resolveTemplateString, retrieveQuotInfo, quotGetters4Instance,
13
+ quotingStyles, uuid4,
13
14
  };
14
15
 
15
16
  function defineQuotingStyles() {
@@ -36,18 +37,19 @@ function defineQuotingStyles() {
36
37
  single: [`'`, `'`],
37
38
  squareBrackets: [`[`, `]`],
38
39
  };
39
- quots.re = escapeRE([...new Set(
40
- Object.values(quots)
41
- .filter(v => Array.isArray(v))
42
- .flat())].join(``), "g");
40
+ quots.re = new RegExp(`[${
41
+ escape4RE([...new Set(
42
+ Object.values(quots)
43
+ .filter(v => Array.isArray(v))
44
+ .flat())].join(``))
45
+ }]`, "g");
43
46
  return quots;
44
47
  }
45
48
 
46
- function escapeRE(reString, modifiers) {
47
- return new RegExp(reString.replace(/\p{S}|\p{P}/gu, a => `\\${a}`), modifiers);
49
+ function escape4RE(str2Escape) {
50
+ return str2Escape.replace(/\p{S}|\p{P}/gu, a => `\\${a}`);
48
51
  }
49
52
 
50
-
51
53
  function getStringValue(string) {
52
54
  return string?.value || (string?.constructor === String && string) || ``;
53
55
  }
@@ -91,6 +93,7 @@ function retrieveQuotInfo(instanceQuotGetters4Info, ctor) {
91
93
 
92
94
  function quotGetters4Instance(instance, wrap) {
93
95
  wrap = wrap ?? function(me) { return me; };
96
+
94
97
  return {
95
98
  value: {
96
99
  get backtick() { return instance.enclose(...quotingStyles.backtick); },
@@ -151,7 +154,7 @@ function capitalizerFactory(instance, wrap) {
151
154
 
152
155
  function createExtendedCTOR(ctor, customMethods) {
153
156
  const quoteInfo = retrieveQuotInfo(quotGetters4Instance(ctor()), ctor);
154
- const swInfo = getSWInformation(`constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`), ctor);
157
+ const swInfo = () => getSWInformation(`constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`), customMethods);
155
158
  Symbol.toSB = Symbol(`toStringBuilder`);
156
159
  Object.defineProperty(
157
160
  String.prototype,
@@ -183,18 +186,18 @@ function createExtendedCTOR(ctor, customMethods) {
183
186
  return `addCustom: the property "${name}" exists and can not be redefined`;
184
187
  }
185
188
 
186
- if (name?.constructor === String && method?.constructor === Function && method.length > 0) {
189
+ if (typeof name === `string` && typeof method === `function` && method.length > 0) {
187
190
  customMethods[name] = {method, enumerable, isGetter};
188
191
  return `addCustom: the ${isGetter ? `getter` : `method`} named "${name}" is added`;
189
192
  }
190
193
  }
191
194
  },
192
- info: { value: swInfo, },
195
+ info: { get() { return swInfo(); } },
193
196
  keys: {
194
197
  get() {
195
198
  return Object.keys(Object.getOwnPropertyDescriptors(CustomStringConstructor``))
196
199
  .sort( (a,b) => a.localeCompare(b) )
197
- .map(v => !/constructor|toString|valueOf/.test(v) && v in customMethods ? `${v} *custom*` : v);
200
+ .map(v => !/constructor|toString|valueOf/.test(v) && Object.hasOwn(customMethods, v) ? `${v} *custom*` : v);
198
201
  }
199
202
  },
200
203
  quoteInfo: { value: quoteInfo },
@@ -220,11 +223,11 @@ function getSWInformation(notChainable, customMethods) {
220
223
  .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))
221
224
  .map(([key, descriptr]) => {
222
225
  const isChainable = !notChainable.find(k => k === key);
223
- const isGetter = 'get' in descriptr;
224
- const isMethod = 'value' in descriptr;
225
- const isNative = key in String.prototype;
226
- const isPlainValue = !isNative && key in plainValues;
227
- const custom = key in customMethods ? ` *custom*` : ``;
226
+ const isGetter = Object.hasOwn(descriptr, `get`);
227
+ const isMethod = Object.hasOwn(descriptr, `value`);
228
+ const isNative = Object.hasOwn(String.prototype, key);
229
+ const isPlainValue = !isNative && Object.hasOwn(plainValues, key);
230
+ const custom = Object.hasOwn(customMethods, key) ? ` *custom*` : ``;
228
231
  const getter = isGetter && isChainable ? `chainable getter${custom}` : `getter`;
229
232
  const method = isMethod && isChainable ? `chainable method${custom}` : `method`;
230
233
  const native = isNative && `${descriptr.get ? `getter` : `method`} (override)`;
@@ -27,52 +27,52 @@ import { capitalizerFactory, deprecatedRE } from "./helpers.js";
27
27
  export default instanceCreator;
28
28
 
29
29
  function instanceCreator({initialstring} = {}) {
30
- let customStringExtensions = { };
30
+ let customStringExtensions = Object.create(null, { });
31
31
  let instance = new Proxy(customStringExtensions, getTraps(customStringExtensions));
32
32
  let actualValue = getStringValue(initialstring);
33
33
  let history = [actualValue];
34
- const descriptorProps = {configurable: false, enumerable: false};
34
+ const defaultDescriptorProps = {configurable: false, enumerable: false};
35
35
 
36
36
  Object.defineProperties( customStringExtensions, {
37
37
  // methods
38
- append: { ...descriptorProps, value(...strings) { return wrap(append(actualValue, ...strings)); } },
39
- enclose: { ...descriptorProps, value(start, end) { return wrap(surroundWith(actualValue, start, end)); } },
40
- format: { ...descriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },
41
- indexOf: { ...descriptorProps, value(str) { return indexOf(actualValue, str); } },
42
- interpolate: { ...descriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },
43
- insert: { ...descriptorProps, value({ value, values, at } = {}) {
38
+ append: { ...defaultDescriptorProps, value(...strings) { return wrap(append(actualValue, ...strings)); } },
39
+ enclose: { ...defaultDescriptorProps, value(start, end) { return wrap(surroundWith(actualValue, start, end)); } },
40
+ format: { ...defaultDescriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },
41
+ indexOf: { ...defaultDescriptorProps, value(str) { return indexOf(actualValue, str); } },
42
+ interpolate: { ...defaultDescriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },
43
+ insert: { ...defaultDescriptorProps, value({ value, values, at } = {}) {
44
44
  return wrap(insert(actualValue, { value, values, at }));
45
45
  }
46
46
  },
47
- lastIndexOf: { ...descriptorProps, value(str) { return lastIndexOf(actualValue, str); } },
48
- prefix: { ...descriptorProps, value(...strings) { return wrap(prefix(actualValue, ...strings)); } },
49
- replaceWords: { ...descriptorProps, value({caseSensitive = false, replacements = {}} = {}) {
47
+ lastIndexOf: { ...defaultDescriptorProps, value(str) { return lastIndexOf(actualValue, str); } },
48
+ prefix: { ...defaultDescriptorProps, value(...strings) { return wrap(prefix(actualValue, ...strings)); } },
49
+ replaceWords: { ...defaultDescriptorProps, value({caseSensitive = false, replacements = {}} = {}) {
50
50
  return wrap(replaceWords(actualValue, { replacements: replacements ?? {}, caseSensitive }));
51
51
  } },
52
- toString: { ...descriptorProps, value() { return actualValue; } },
53
- trim: {...descriptorProps, value(start, end) { return wrap(trim(actualValue, start, end)); } },
54
- truncate: { ...descriptorProps, value({at, html = false, wordBoundary = false} = {}) {
52
+ toString: { ...defaultDescriptorProps, value() { return actualValue; } },
53
+ trim: {...defaultDescriptorProps, value(start, end) { return wrap(trim(actualValue, start, end)); } },
54
+ truncate: { ...defaultDescriptorProps, value({at, html = false, wordBoundary = false} = {}) {
55
55
  return wrap(truncate(actualValue, {at, html, wordBoundary})); } },
56
- valueOf: { ...descriptorProps, value() { return actualValue; } },
57
- undoLast: { ...descriptorProps, value(nSteps) { return undoSteps(nSteps); } },
56
+ valueOf: { ...defaultDescriptorProps, value() { return actualValue; } },
57
+ undoLast: { ...defaultDescriptorProps, value(nSteps) { return undoSteps(nSteps); } },
58
58
 
59
59
  // getters
60
- camelCase: { ...descriptorProps, get() { return wrap(parseCamelcase(getStringValue(actualValue))); } },
61
- capitalize: { ...descriptorProps, value: capitalizerFactory(instance, wrap) },
62
- clone: { ...descriptorProps, get() { return clone(instance, customMethods); } },
63
- firstUp: { ...descriptorProps, get() { return wrap(ucFirst(getStringValue(actualValue))); } },
64
- history: { ...descriptorProps, get() { return history; }, set(value) { history = value; } },
65
- empty: { ...descriptorProps, get() { return actualValue.length < 1; } },
66
- notEmpty: { ...descriptorProps, get() { return actualValue.length < 1 ? undefined: instance; } },
67
- kebabCase: { ...descriptorProps, get() { return wrap(parseKebabCase(getStringValue(actualValue))); } },
60
+ camelCase: { ...defaultDescriptorProps, get() { return wrap(parseCamelcase(getStringValue(actualValue))); } },
61
+ capitalize: { ...defaultDescriptorProps, value: capitalizerFactory(instance, wrap) },
62
+ clone: { ...defaultDescriptorProps, get() { return clone(instance, customMethods); } },
63
+ firstUp: { ...defaultDescriptorProps, get() { return wrap(ucFirst(getStringValue(actualValue))); } },
64
+ history: { ...defaultDescriptorProps, get() { return history; }, set(value) { history = value; } },
65
+ empty: { ...defaultDescriptorProps, get() { return actualValue.length < 1; } },
66
+ notEmpty: { ...defaultDescriptorProps, get() { return actualValue.length < 1 ? undefined: instance; } },
67
+ kebabCase: { ...defaultDescriptorProps, get() { return wrap(parseKebabCase(getStringValue(actualValue))); } },
68
68
  quote: quotGetters(instance, wrap),
69
- snakeCase: { ...descriptorProps, get() { return wrap(parseSnakeCase(getStringValue(actualValue))); } },
70
- trimAll: { ...descriptorProps, get() { return wrap(trimAll(actualValue)); } },
71
- trimAllKeepLF: { ...descriptorProps, get() { return wrap(trimAll(actualValue, true)); } },
72
- undoAll: { ...descriptorProps, get() { return undoAll(); } },
73
- undo: { ...descriptorProps, get() { return undoLast(); } },
74
- wordsUCFirst: { ...descriptorProps, get() { return wrap(wordsFirstUp(getStringValue(actualValue))); } },
75
- value: { ...descriptorProps,
69
+ snakeCase: { ...defaultDescriptorProps, get() { return wrap(parseSnakeCase(getStringValue(actualValue))); } },
70
+ trimAll: { ...defaultDescriptorProps, get() { return wrap(trimAll(actualValue)); } },
71
+ trimAllKeepLF: { ...defaultDescriptorProps, get() { return wrap(trimAll(actualValue, true)); } },
72
+ undoAll: { ...defaultDescriptorProps, get() { return undoAll(); } },
73
+ undo: { ...defaultDescriptorProps, get() { return undoLast(); } },
74
+ wordsUCFirst: { ...defaultDescriptorProps, get() { return wrap(wordsFirstUp(getStringValue(actualValue))); } },
75
+ value: { ...defaultDescriptorProps,
76
76
  get() { return actualValue; },
77
77
  set(value) {
78
78
  const nwValue = getStringValue(value);
@@ -88,29 +88,30 @@ function instanceCreator({initialstring} = {}) {
88
88
 
89
89
  return instance;
90
90
 
91
- function getTraps(extensions) {
91
+ function getTraps(customExtensions) {
92
92
  return {
93
93
  get( target, key ) {
94
- return Object.hasOwn(extensions, key)
95
- ? extensions[key]
96
- : canWrapNative(String(key))
97
- ? wrapNative(key)
98
- : undefined;
94
+ switch(true) {
95
+ case key === Symbol.for("myType"): return `stringWeaver instance (Proxy)`;
96
+ case Object.hasOwn(customExtensions, key): return customExtensions[key];
97
+ case canWrapNative(String(key)): return wrapNative(key);
98
+ default: return wrapNative(key);
99
+ }
99
100
  },
100
101
  };
101
102
  }
102
103
 
103
104
  function canWrapNative(key) {
104
- return !deprecatedRE.test(key)
105
- && key in String.prototype;
105
+ return !deprecatedRE.test(key) && Object.hasOwn(String.prototype, key);
106
106
  }
107
107
 
108
108
  function wrapNative(key) {
109
- return actualValue[key] instanceof Function
109
+ return typeof actualValue[key] === `function`
110
110
  ? function(...args) {
111
- const result = actualValue[key](...args);
112
- return result?.constructor === String ? wrap(actualValue[key](...args)) : result;
113
- } : actualValue[key];
111
+ const result = actualValue[key](...args);
112
+ return result?.constructor === String ? wrap(actualValue[key](...args)) : result;
113
+ }
114
+ : actualValue[key];
114
115
  }
115
116
 
116
117
  function undoAll() {
@@ -155,7 +155,7 @@ function replaceWords(string, { replacements = {}, caseSensitive = false} = {})
155
155
 
156
156
  while (replacements2Array.length) {
157
157
  const [initial, replacement] = [replacements2Array.shift(), replacements2Array.shift()];
158
- const re = escapeRE(initial, modifiers);
158
+ const re = new RegExp(escapeRE(initial), modifiers);
159
159
  string = string.replace(re, replacement);
160
160
  }
161
161
 
@@ -4,8 +4,8 @@
4
4
 
5
5
  import assert from 'node:assert';
6
6
  import {describe, it} from 'node:test';
7
- import {default as $S, CustomStringConstructor} from "../index.js";
8
- import {quotingStyles, isArrayOf, quotGetters4Instance} from "../src/genericMethods.js";
7
+ import {default as $S} from "../index.js";
8
+ import {quotingStyles, isArrayOf, quotGetters4Instance} from "../src/helpers.js";
9
9
 
10
10
  describe(`Basics constructor`, () => {
11
11
  describe(`Instantiation`, () => {
@@ -49,8 +49,8 @@ describe(`Basics constructor`, () => {
49
49
  "isValue": true
50
50
  },
51
51
  "info": {
52
- "isGetter": false,
53
- "isValue": true,
52
+ "isGetter": true,
53
+ "isValue": false,
54
54
  },
55
55
  "keys": {
56
56
  "isGetter": true,
@@ -77,8 +77,7 @@ describe(`Basics constructor`, () => {
77
77
 
78
78
  it(`Symbolic String extension in place`, () => {
79
79
  const test = `hello world`[Symbol.toSB];
80
- assert.strictEqual(test.constructor, CustomStringConstructor);
81
- assert.strictEqual(test.value, `hello world`);
80
+ assert.strictEqual(test.constructor, $S);
82
81
  });
83
82
 
84
83
  it(`constructor can be used as regular function`, () => {
@@ -143,18 +142,18 @@ describe(`Basics constructor`, () => {
143
142
 
144
143
  describe(`Instantiation by Symbolic String extensions`, () => {
145
144
  it(`creates an instance from a plain string`, () => {
146
- assert.strictEqual("Hello world"[Symbol.toSB].constructor, CustomStringConstructor);
145
+ assert.strictEqual("Hello world"[Symbol.toSB].constructor, $S);
147
146
  assert.strictEqual("Hello world"[Symbol.toSB].value, `Hello world`);
148
147
  });
149
148
 
150
149
  it(`creates an instance from a template string`, () => {
151
150
  const wrld = `world`;
152
- assert.strictEqual(`Hello ${wrld}`[Symbol.toSB].constructor, CustomStringConstructor);
151
+ assert.strictEqual(`Hello ${wrld}`[Symbol.toSB].constructor, $S);
153
152
  assert.strictEqual(`Hello ${wrld}`[Symbol.toSB].wordsUCFirst.value, `Hello World`);
154
153
  });
155
154
 
156
155
  it(`creates an instance from an empty string`, () => {
157
- assert.strictEqual(``[Symbol.toSB].constructor, CustomStringConstructor);
156
+ assert.strictEqual(``[Symbol.toSB].constructor, $S);
158
157
  assert.strictEqual(``[Symbol.toSB].append(`!!!`).value, `!!!`);
159
158
  });
160
159
  });
@@ -162,7 +161,7 @@ describe(`Basics constructor`, () => {
162
161
 
163
162
  describe(`Constructor static methods`, () => {
164
163
  it(`$S.constructor as expected`, () => {
165
- assert.strictEqual($S.constructor, CustomStringConstructor);
164
+ assert.strictEqual($S.constructor, $S);
166
165
  });
167
166
 
168
167
  it(`$S.keys delivers all keys`, () => {
@@ -673,7 +672,7 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
673
672
  });
674
673
 
675
674
  it(`[instance].constructor is CustomStringConstructor`, () => {
676
- assert.deepStrictEqual($S``.constructor, CustomStringConstructor);
675
+ assert.deepStrictEqual($S``.constructor, $S);
677
676
  assert.strictEqual($S``.constructor.name, `CustomStringConstructor`);
678
677
  });
679
678
 
@@ -961,7 +960,7 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
961
960
  it(`quotingStyles.re is what we expect`, () => {
962
961
  assert.deepStrictEqual(
963
962
  quotingStyles.re,
964
- /^[\`\(\)\{\}\”\“\„\‚\’\‘\‛\"\«\»\‹\›\'\[\]]|[\`\(\)\{\}\”\“\„\‚\’\‘\‛\"\«\»\‹\›\'\[\]]$/g
963
+ /[\`\(\)\{\}\”\“\„\‚\’\‘\‛\"\«\»\‹\›\'\[\]]/g,
965
964
  );
966
965
  });
967
966
 
@@ -1006,8 +1005,8 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
1006
1005
 
1007
1006
  it(`toString as expected`, () => {
1008
1007
  const hi = $S`stringified`;
1009
- assert.strictEqual(hi.constructor, CustomStringConstructor);
1010
- assert.notStrictEqual(hi.toString().constructor, CustomStringConstructor);
1008
+ assert.strictEqual(hi.constructor, $S);
1009
+ assert.notStrictEqual(hi.toString().constructor, $S);
1011
1010
  assert.strictEqual(hi.toString(), `stringified`);
1012
1011
  assert.strictEqual(String(hi), `stringified`);
1013
1012
  assert(`${hi}`, `stringified`);