stringweaver 1.3.9 → 1.4.2

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{randomString:K,uuid4:k}=ie();function ie(){let e=S(),t=()=>e?[...crypto.getRandomValues(new Uint32Array(1))].shift()/2**32:Math.random(),r=({min:a=0,max:s=Number.MAX_SAFE_INTEGER}={})=>Math.floor(t()*(s-a+1)+a),n=(a=0,s=10,m)=>(m||[])instanceof Function?[...Array(s)].map((C,O)=>a+O).map(m):[...Array(s)].map((C,O)=>a+O),u=a=>String.fromCharCode(a),o="!?@#$%^&*=+_;-".split(""),h=RegExp(`[${o.map(a=>`\\${a}`).join("")}]`,"g"),g=a=>{let s=a.length;for(;s--;){let m=r({max:s});[a[s],a[m]]=[a[m],a[s]]}return a},y=g(n(65,26,u)),v=g(n(97,26,u)),i={UCLC:g(y.concat(v)),UC:y,LC:v,Nrs:g(n()),Sym:g(o)},l=a=>Object.entries(a).reduce((s,[m,C])=>C?[...s,...i[m]]:s,v);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,s)=>`${(s===8?a&63|128:s===6?a&15|64:a).toString(16).padStart(2,"0")}${~[3,5,7,9].indexOf(s)?"-":""}`).join("")}function f(a,s,m){return/[a-z]/i.test(a)&&(s&&m?/\d/.test(a)&&h.test(a):s?/\d/.test(a):m?h.test(a):!0)}function d(a){let s=[...a],m=s.findIndex(C=>/[a-z]/i.test(C));return[s[0],s[m]]=[s[m],s[0]],s.join("")}function E({len:a=12,includeUppercase:s=!0,includeNumbers:m,includeSymbols:C,startAlphabetic:O}={}){a=a<6?6:a;let j=g(l({UC:s,Nrs:m,Sym:C}));for(;j.length<a;)j=[...j,...g(j)];let x=j.slice(0,a).join("");if(!(m||C))return x;for(let q=0;q<j.length;q+=1)if(x=j.slice(q,q+a).join(""),f(x,m,C))return O&&!/^[a-z]/i.test(x)?d(x):x;return E({len:a,includeUppercase:s,includeNumbers:m,includeSymbols:C,startAlphabetic:O})}return{randomString:E,uuid4:c}}var P=se();function se(e=""){return e=e?.constructor===String?e:"",function(i,...l){return $(i,y(l))};function t(i,l){return l&&e.length>0?String(e):`{${i}}`}function r(i){return i?.constructor===String||i?.constructor===Number&&!Number.isNaN(i)}function n(i,l){let S=i in l;return S&&r(l[i])?String(l[i]):t(i,S)}function u(i){return(...l)=>{let S=l.find(c=>c.key);return n(S?S.key:"_",i)}}function o(i,l){return i.replace(/\{(?<key>[a-z_\d]+)}/gim,u(l))}function h(i){let l=[];return Object.entries(i).forEach(([S,c])=>{c.forEach((f,d)=>(l[d]??={},l[d][S]=f))}),l}function g(i){return i.length===1&&Object.values(i[0]).every(Array.isArray)}function y(i){return g(i)?h(i[0]):i}function v(i){return!Array.isArray(i)&&i?.constructor===Object&&Object.entries(i)?.length>0}function $(i,l){return l?.length?l.filter(S=>S).map((S,c)=>v(S)?o(i,{...S,index:c+1}):"").join(""):i}}var R=Object.defineProperties(X,{escape:{value:ye,enumerable:!0}});function X(e,...t){let{flags:r,cleanedArgs:n}=ge(...t);return me(new RegExp(we(fe(e,...n)),r))}function fe(e,...t){return L(t)?e.raw.reduce((r,n,u)=>r.concat(t[u-1]||"").concat(n),""):e.raw.join("")}function ge(...e){let t=B(pe(e.at(-1)));return{flags:t,cleanedArgs:L(t)?e.slice(0,-1):e}}function pe(e){return G(e,Array)?e.join(""):""}function me(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=Se(r,e),t},enumerable:!1},clone:{get(){return he(t)},enumerable:!1}}),be(e));return t}function L(e){return e?.length>0}function G(e,t){return e?.constructor===t}function de(e,t,r){let n=Reflect.get(r,t);return{fromInstance:Reflect.get(e,t),fromRegExpMethod:G(n,Function)?n.bind(e.re):e.re[t]}}function be(e){return{get(t,r){let{fromInstance:n,fromRegExpMethod:u}=de(t,r,e);switch(!0){case!!n:return n;default:return u}}}}function he(e){let t=e.re.source,r=L(e.re.flags)?[...e.re.flags]:[];return X`${t} ${r}`}function B(e,t){return t=(t??"").replace(/^-r\|/,""),e=t.concat(G(e,String)&&L(e)?e:""),[...new Set([...e])].join("").replace(/[^dgimsuvy]/g,"")}function Se(e,t){switch(!0){case(!G(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,B(e));default:return t=new RegExp(t.source,B(t.flags,e))}}function ye(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 we(e){return e.replace(/\/\*(?:[^*]|\*+[^*\/])*\*+\/|(?<!:|\\\|')\/\/.*/gm,"").replace(/\s/g,"").trim().replace(/<!([^>]\d+)>/g,(t,r)=>String.fromCharCode(+r)??t)}function I(e,t,r){return e=p(e),e.length>0?t(e):r||e}function H(e,...t){return I(e,()=>`${P(e,...t)}`)}function Q(e,t,r){return!t&&!r?e:([t,r]=N(String,[t,r??""])?[t,r]:["",""],`${t}${e}${r||t}`)}function U(e){return I(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 Z(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 I(e,()=>e.toLowerCase().trim().split(/[-\s]/).filter(t=>t&&t.length>0).map((t,r)=>r>0&&`${U(t)}`||t).join(""))}function _(e){return I(e,()=>[...e.toLowerCase()].slice(1).reduce((t,r)=>t+(/\p{L}|[-']/u.test(t.at(-1))?r.toLowerCase():r.toUpperCase()),e[0].toUpperCase()))}function J(e,t,r){return I(e,()=>!r&&!t?e.trim():(r=R.escape(r||t),t=R.escape(t),e.replace(R`^(${t})+ | (${r})+$`.flags("gm"),"")))}function Ce(e){return[...e.matchAll(/\p{Pe}|\p{Z}/gu)].at(-1)?.index??e.length}function ee(e,{at:t,html:r=!1,wordBoundary:n=!1}={}){return r=r?.constructor===Boolean&&r||!1,n=n?.constructor===Boolean&&n||!1,I(e,()=>{if(e.length<=t)return e;let u=e.slice(0,t-1),o=r?"&hellip;":"...",h=n?Ce(u):u.length;return(n?u.slice(0,h+1).trim():u)+o})}function M(e,t=!1){return t=t?.constructor===Boolean&&t||!1,I(e,()=>{let r=e.replace(/\n/gm,"#LF#").split(/#LF#/).map(n=>n.trim().replace(/\s{2,}/g,u=>u[0]));return t?r.join("#LF#").replace(/#LF#/g,`
2
+ var{randomString:X,uuid4:Q}=fe();function fe(){let e=S(),t=()=>e?[...crypto.getRandomValues(new Uint32Array(1))].shift()/2**32:Math.random(),r=({min:a=0,max:i=Number.MAX_SAFE_INTEGER}={})=>Math.floor(t()*(i-a+1)+a),n=(a=0,i=10,m)=>(m||[])instanceof Function?[...Array(i)].map((w,$)=>a+$).map(m):[...Array(i)].map((w,$)=>a+$),o=a=>String.fromCharCode(a),u="!?@#$%^&*=+_;-".split(""),b=RegExp(`[${u.map(a=>`\\${a}`).join("")}]`,"g"),p=a=>{let i=a.length;for(;i--;){let m=r({max:i});[a[i],a[m]]=[a[m],a[i]]}return a},y=p(n(65,26,o)),C=p(n(97,26,o)),s={UCLC:p(y.concat(C)),UC:y,LC:C,Nrs:p(n()),Sym:p(u)},l=a=>Object.entries(a).reduce((i,[m,w])=>w?[...i,...s[m]]:i,C);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,i)=>`${(i===8?a&63|128:i===6?a&15|64:a).toString(16).padStart(2,"0")}${~[3,5,7,9].indexOf(i)?"-":""}`).join("")}function f(a,i,m){return/[a-z]/i.test(a)&&(i&&m?/\d/.test(a)&&b.test(a):i?/\d/.test(a):m?b.test(a):!0)}function h(a){let i=[...a],m=i.findIndex(w=>/[a-z]/i.test(w));return[i[0],i[m]]=[i[m],i[0]],i.join("")}function F({len:a=12,includeUppercase:i=!0,includeNumbers:m,includeSymbols:w,startAlphabetic:$}={}){a=a<6?6:a;let I=p(l({UC:i,Nrs:m,Sym:w}));for(;I.length<a;)I=[...I,...p(I)];let x=I.slice(0,a).join("");if(!(m||w))return x;for(let A=0;A<I.length;A+=1)if(x=I.slice(A,A+a).join(""),f(x,m,w))return $&&!/^[a-z]/i.test(x)?h(x):x;return F({len:a,includeUppercase:i,includeNumbers:m,includeSymbols:w,startAlphabetic:$})}return{randomString:F,uuid4:c}}var q=me(),B=J(),ge=J("");function J(e,t={}){let{useSymbolicExtensions:r}=t;return e=q(e,String,Number)?String(e):void 0,r&&pe(),function(s,...l){return O(s,C(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 b(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((f,h)=>(l[h]??={},l[h][S]=f))}),l}function y(s){return s.length===1&&Object.values(s[0]).every(Array.isArray)}function C(s){return y(s)?p(s[0]):s}function O(s,l){let S=l?.length?l.filter(c=>q(c,Object)).map((c,f)=>b(s,{...c,index:f+1})).join(""):s;return q(e,void 0)?S:S.replace(/\{[a-z_\d].+\}/gim,String(e))}}function pe(){return String.prototype[Symbol.for("interpolate")]||Object.defineProperties(String.prototype,{[Symbol.for("interpolate")]:{value(...e){return B(this,...e)}},[Symbol.for("interpolate$")]:{value(...e){return ge(this,...e)}}}),[Symbol.for("interpolate"),Symbol.for("interpolate$")]}function me(){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(ee,{escape:{value:$e,enumerable:!0}});function ee(e,...t){let{flags:r,cleanedArgs:n}=be(...t);return Se(new RegExp(Oe(de(e,...n)),r))}function de(e,...t){return L(t)?e.raw.reduce((r,n,o)=>r.concat(t[o-1]||"").concat(n),""):e.raw.join("")}function be(...e){let t=H(he(e.at(-1)));return{flags:t,cleanedArgs:L(t)?e.slice(0,-1):e}}function he(e){return G(e,Array)?e.join(""):""}function Se(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=Ce(r,e),t},enumerable:!1},clone:{get(){return we(t)},enumerable:!1}}),ve(e));return t}function L(e){return e?.length>0}function G(e,t){return e?.constructor===t}function ye(e,t,r){let n=Reflect.get(r,t);return{fromInstance:Reflect.get(e,t),fromRegExpMethod:G(n,Function)?n.bind(e.re):e.re[t]}}function ve(e){return{get(t,r){let{fromInstance:n,fromRegExpMethod:o}=ye(t,r,e);switch(!0){case!!n:return n;default:return o}}}}function we(e){let t=e.re.source,r=L(e.re.flags)?[...e.re.flags]:[];return ee`${t} ${r}`}function H(e,t){return t=(t??"").replace(/^-r\|/,""),e=t.concat(G(e,String)&&L(e)?e:""),[...new Set([...e])].join("").replace(/[^dgimsuvy]/g,"")}function Ce(e,t){switch(!0){case(!G(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,H(e));default:return t=new RegExp(t.source,H(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 Oe(e){return e.replace(/\/\*(?:[^*]|\*+[^*\/])*\*+\/|(?<!:|\\\|')\/\/.*/gm,"").replace(/\s/g,"").trim().replace(/<!([^>]\d+)>/g,(t,r)=>String.fromCharCode(+r)??t)}function j(e,t,r){return e=g(e),e.length>0?t(e):r||e}function Z(e,...t){return j(e,()=>`${B(e,...t)}`)}function te(e,t,r){return!t&&!r?e:([t,r]=V(String,[t,r??""])?[t,r]:["",""],`${t}${e}${r||t}`)}function P(e){return j(e,()=>`${e[0].toUpperCase()}${e.slice(1).toLowerCase()}`)}function D(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 _(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 j(e,()=>e.toLowerCase().trim().split(/[-\s]/).filter(t=>t&&t.length>0).map((t,r)=>r>0&&`${P(t)}`||t).join(""))}function M(e){return j(e,()=>[...e.toLowerCase()].slice(1).reduce((t,r)=>t+(/\p{L}|[-']/u.test(t.at(-1))?r.toLowerCase():r.toUpperCase()),e[0].toUpperCase()))}function re(e,t,r){return j(e,()=>!r&&!t?e.trim():(r=R.escape(r||t),t=R.escape(t),e.replace(R`^(${t})+ | (${r})+$`.flags("gm"),"")))}function Ie(e){return[...e.matchAll(/\p{Pe}|\p{Z}/gu)].at(-1)?.index??e.length}function ne(e,{at:t,html:r=!1,wordBoundary:n=!1}={}){return r=r?.constructor===Boolean&&r||!1,n=n?.constructor===Boolean&&n||!1,j(e,()=>{if(e.length<=t)return e;let o=e.slice(0,t-1),u=r?"&hellip;":"...",b=n?Ie(o):o.length;return(n?o.slice(0,b+1).trim():o)+u})}function Y(e,t=!1){return t=t?.constructor===Boolean&&t||!1,j(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 te(e,{replacements:t={},caseSensitive:r=!1}={}){e=p(e);let n=Object.entries(t).flat(),u=N(String,n)&&r?.constructor===Boolean,o=`g${r?"":"i"}`;if(!u)return e;for(;n.length;){let[h,g]=[n.shift(),n.shift()],y=le(h,o);e=e.replace(y,g)}return e}function re(e,t,r=0){e=p(e),r=A(r)&&r||0;let n=e.indexOf(t,r||0);return n<0?void 0:n}function ne(e,t,r=0){e=p(e),r=A(r)&&r||e.length;let n=e.lastIndexOf(t,r);return n<0?void 0:n}function T(e,{value:t,values:r,at:n=0}={}){e=p(e),n=A(n)&&n||0;let u=p(r);return r=p(t).length?t:u.length?u:N(String,r)?r.map(o=>p(o)).join(""):[],r.length<=1?e:e.length===0?`${r}${e}`:`${e.slice(0,n)}${r}${e.slice(n)}`}function ue(e,...t){return t=N(String,t)&&t,t?T(p(e),{values:t,at:0}):p(e)}function oe(e,...t){return t=N(String,t)&&t,t&&t.length>0?`${p(e)}`.concat(t.join("")):p(e)}function ce(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(Z(e.value))},get first(){return t(U(e.value))},get kebab(){return t(F(e.value))},get words(){return t(_(e.value))},get dashed(){return t(F(e.value))}}}var ae=Oe,ve=/symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i;function Oe({initialstring:e}={}){let t={},r=new Proxy(t,h(t)),n=p(e),u=[n],o={configurable:!1,enumerable:!1};return Object.defineProperties(t,{append:{...o,value(...c){return l(oe(n,...c))}},enclose:{...o,value(c,f){return l(Q(n,c,f))}},format:{...o,value(...c){return l(H(n,...c))}},indexOf:{...o,value(c){return re(n,c)}},interpolate:{...o,value(...c){return l(H(n,...c))}},insert:{...o,value({value:c,values:f,at:d}={}){return l(T(n,{value:c,values:f,at:d}))}},lastIndexOf:{...o,value(c){return ne(n,c)}},prefix:{...o,value(...c){return l(ue(n,...c))}},replaceWords:{...o,value({caseSensitive:c=!1,replacements:f={}}={}){return l(te(n,{replacements:f??{},caseSensitive:c}))}},toString:{...o,value(){return n}},trim:{...o,value(c,f){return l(J(n,c,f))}},truncate:{...o,value({at:c,html:f=!1,wordBoundary:d=!1}={}){return l(ee(n,{at:c,html:f,wordBoundary:d}))}},valueOf:{...o,value(){return n}},undoLast:{...o,value(c){return $(c)}},camelCase:{...o,get(){return l(z(p(n)))}},capitalize:{...o,value:ce(r,l)},clone:{...o,get(){return Y(r,V)}},firstUp:{...o,get(){return l(U(p(n)))}},history:{...o,get(){return u},set(c){u=c}},empty:{...o,get(){return n.length<1}},notEmpty:{...o,get(){return n.length<1?void 0:r}},kebabCase:{...o,get(){return l(F(p(n)))}},quote:W(r,l),snakeCase:{...o,get(){return l(Z(p(n)))}},trimAll:{...o,get(){return l(M(n))}},trimAllKeepLF:{...o,get(){return l(M(n,!0))}},undoAll:{...o,get(){return v()}},undo:{...o,get(){return i()}},wordsUCFirst:{...o,get(){return l(_(p(n)))}},value:{...o,get(){return n},set(c){let f=p(c);f.length&&(n=f,u.push(f))}}}),S(V),r;function h(c){return{get(f,d){return Object.hasOwn(c,d)?c[d]:g(String(d))?y(d):void 0}}}function g(c){return!ve.test(c)&&c in String.prototype}function y(c){return n[c]instanceof Function?function(...f){let d=n[c](...f);return d?.constructor===String?l(n[c](...f)):d}:n[c]}function v(){for(;u.length>1;)u.pop();return n=u.at(-1),l(n,!1)}function $(c){if(!A(c))return l(n,!1);let f=u.length;return c>=f||c<1?(u=u.slice(0,1),n=u.at(-1),l(u.at(-1),!1)):(u=u.slice(0,f-c),n=u.at(-1),l(n,!1))}function i(){return u.length===1?l(u[0]):(u.pop(),n=u.at(-1),l(n,!1))}function l(c,f=!0){return n!==c&&f&&u.push(c),n=c,r}function S(c){Object.entries(c).forEach(([f,d])=>{let{enumerable:E,method:a,isGetter:s}=d,m=!1;Object.defineProperty(t,f,s?{get(){return l(a(r).value)},enumerable:E,configurable:m}:{value(...O){return l(a(r,...O).value)},enumerable:E,configurable:m})})}}var V={},b=Le();Ve(w,V);function w(e,...t){let r=ae({initialstring:$e(e,...t)});return Object.defineProperty(r,"constructor",{get(){return w},enumerable:!1}),Object.freeze(r)}function $e(e,...t){return e?.raw?String.raw({raw:e},...t):p(e).length?e:""}function N(e,t,r=!0){return Array.isArray(t)&&t.length>0&&!t.find(n=>Ne(e,n,r))}function Y(e){let t=w(e.value);return t.history=[...e.history],t}function p(e){return e?.value||e?.constructor===String&&e||""}function A(e){return e?.constructor===Number&&!Number.isNaN(e)}function le(e,t){return new RegExp(e.replace(/\p{S}|\p{P}/gu,r=>`\\${r}`),t)}function je(e){return e.replace(/\p{S}|\p{P}/gu,t=>`\\${t}`)}function D(e,t){return`${e} (${t})`}function Ie(){return{value:"getter/setter",clone:"chainable getter",notEmpty:"chainable getter|undefined",quote:"Object. See [constructor].quoteInfo",capitalize:`getter. Object with chainable getters: [${Object.keys(w.create.capitalize).join(", ")}]`}}function xe(e){let t=w(Re()),r=Ie();return t.split(/\n/).concat(Object.entries(Object.getOwnPropertyDescriptors(t)).sort(([n],[u])=>n.localeCompare(u)).map(([n,u])=>{let o=!e.find(c=>c===n),h="get"in u,g="value"in u,y=n in String.prototype,v=!y&&n in r,$=n in V?" *custom*":"",i=h&&o?`chainable getter${$}`:"getter",l=g&&o?`chainable method${$}`:"method",S=y&&`${u.get?"getter":"method"} (override)`;switch(!0){case v:return D(n,r[n]);case y:return D(n,S);case g:return D(n,l);case h:return D(n,i)}}))}function W(e,t){return t=t??function(r){return r},{value:{get backtick(){return e.enclose(...b.backtick)},get bracket(){return e.enclose(...b.bracket)},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 Re(){return atob`Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21dIGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhvZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl`.replace(/\[cm]/g,"\u2714")}function Le(){let e={backtick:["`","`"],bracket:["{","}"],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:["[","]"]},t=je([...new Set(Object.values(e).filter(r=>Array.isArray(r)).flat())].join(""));return e.re=RegExp(`^[${t}]|[${t}]$`,"g"),e}function Ve(e,t){let r=W(e());Symbol.toSB=Symbol.for("toStringBuilder"),Object.defineProperty(String.prototype,Symbol.toSB,{get(){return e(this)},enumerable:!1,configurable:!1});let n="constructor,history,indexOf,toString,value,valueOf,empty".split(",");return Object.defineProperties(e,{create:{get(){return e()},enumerable:!1},constructor:{get(){return e},enumerable:!1},format:{value(u,...o){return w(u).format(...o)}},addCustom:{value({name:u,method:o,enumerable:h=!1,isGetter:g=!1}={}){if(w``[u])return console.error(`addCustom: the property "${u}" exists and can not be redefined`),`addCustom: the property "${u}" exists and can not be redefined`;if(u?.constructor===String&&o?.constructor===Function&&o.length>0)return t[u]={method:o,enumerable:h,isGetter:g},`addCustom: the ${g?"getter":"method"} named "${u}" is added`}},info:{get(){return xe(n)}},keys:{get(){return Object.keys(Object.getOwnPropertyDescriptors(w``)).sort((u,o)=>u.localeCompare(o)).map(u=>!/constructor|toString|valueOf/.test(u)&&u in t?`${u} *custom*`:u)}},quoteInfo:{get(){return Object.entries(Object.getOwnPropertyDescriptors(r.value)).sort((u,o)=>u[0].localeCompare(o[0])).reduce((u,[o,h])=>{if(o==="remove")return[...u,"[instance].quote.remove (only predefined)"];if(o==="custom")return[...u,"[instance].quote.custom(start:string, end:string)"];let g=e(" [instance] ").quote[o];return[...u,`[instance].quote.${o} (${g})`]},[])}},uuid4:{get(){return w(k())}},randomString:{value:function({len:u,includeUppercase:o,includeNumbers:h,includeSymbols:g,startAlphabetic:y}={}){return w(K({len:u,includeUppercase:o,includeNumbers:h,includeSymbols:g,startAlphabetic:y}))}},regExp:{value:R}}),e}function Ne(e,t,r){return e===String&&r?t?.constructor!==w&&t?.constructor!==e:t?.constructor!==e}var _e=w;export{w as CustomStringConstructor,_e as default};
4
+ `)})}function oe(e,{replacements:t={},caseSensitive:r=!1}={}){e=g(e);let n=Object.entries(t).flat(),o=V(String,n)&&r?.constructor===Boolean,u=`g${r?"":"i"}`;if(!o)return e;for(;n.length;){let[b,p]=[n.shift(),n.shift()],y=ie(b,u);e=e.replace(y,p)}return e}function ue(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 ce(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:V(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 le(e,...t){return t=V(String,t)&&t,t?K(g(e),{values:t,at:0}):g(e)}function ae(e,...t){return t=V(String,t)&&t,t&&t.length>0?`${g(e)}`.concat(t.join("")):g(e)}function U(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(_(e.value))},get first(){return t(P(e.value))},get kebab(){return t(D(e.value))},get words(){return t(M(e.value))},get dashed(){return t(D(e.value))}}}var se=xe,je=/symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i;function xe({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(ae(n,...c))}},enclose:{...u,value(c,f){return l(te(n,c,f))}},format:{...u,value(...c){return l(Z(n,...c))}},indexOf:{...u,value(c){return ue(n,c)}},interpolate:{...u,value(...c){return l(Z(n,...c))}},insert:{...u,value({value:c,values:f,at:h}={}){return l(K(n,{value:c,values:f,at:h}))}},lastIndexOf:{...u,value(c){return ce(n,c)}},prefix:{...u,value(...c){return l(le(n,...c))}},replaceWords:{...u,value({caseSensitive:c=!1,replacements:f={}}={}){return l(oe(n,{replacements:f??{},caseSensitive:c}))}},toString:{...u,value(){return n}},trim:{...u,value(c,f){return l(re(n,c,f))}},truncate:{...u,value({at:c,html:f=!1,wordBoundary:h=!1}={}){return l(ne(n,{at:c,html:f,wordBoundary:h}))}},valueOf:{...u,value(){return n}},undoLast:{...u,value(c){return O(c)}},camelCase:{...u,get(){return l(T(g(n)))}},capitalize:{...u,value:U(r,l)},clone:{...u,get(){return k(r,N)}},firstUp:{...u,get(){return l(P(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(D(g(n)))}},quote:W(r,l),snakeCase:{...u,get(){return l(_(g(n)))}},trimAll:{...u,get(){return l(Y(n))}},trimAllKeepLF:{...u,get(){return l(Y(n,!0))}},undoAll:{...u,get(){return C()}},undo:{...u,get(){return s()}},wordsUCFirst:{...u,get(){return l(M(g(n)))}},value:{...u,get(){return n},set(c){let f=g(c);f.length&&(n=f,o.push(f))}}}),S(N),r;function b(c){return{get(f,h){return Object.hasOwn(c,h)?c[h]:p(String(h))?y(h):void 0}}}function p(c){return!je.test(c)&&c in String.prototype}function y(c){return n[c]instanceof Function?function(...f){let h=n[c](...f);return h?.constructor===String?l(n[c](...f)):h}:n[c]}function C(){for(;o.length>1;)o.pop();return n=o.at(-1),l(n,!1)}function O(c){if(!E(c))return l(n,!1);let f=o.length;return c>=f||c<1?(o=o.slice(0,1),n=o.at(-1),l(o.at(-1),!1)):(o=o.slice(0,f-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,f=!0){return n!==c&&f&&o.push(c),n=c,r}function S(c){Object.entries(c).forEach(([f,h])=>{let{enumerable:F,method:a,isGetter:i}=h,m=!1;Object.defineProperty(t,f,i?{get(){return l(a(r).value)},enumerable:F,configurable:m}:{value(...$){return l(a(r,...$).value)},enumerable:F,configurable:m})})}}var N={},d=Fe();Ae(v,N);function v(e,...t){let r=se({initialstring:Re(e,...t)});return Object.defineProperty(r,"constructor",{get(){return v},enumerable:!1}),Object.freeze(r)}function Re(e,...t){return e?.raw?String.raw({raw:e},...t):g(e).length?e:""}function V(e,t,r=!0){return Array.isArray(t)&&t.length>0&&!t.find(n=>Be(e,n,r))}function k(e){let t=v(e.value);return t.history=[...e.history],t}function g(e){return e?.value||e?.constructor===String&&e||""}function E(e){return e?.constructor===Number&&!Number.isNaN(e)}function ie(e,t){return new RegExp(e.replace(/\p{S}|\p{P}/gu,r=>`\\${r}`),t)}function Le(e){return e.replace(/\p{S}|\p{P}/gu,t=>`\\${t}`)}function z(e,t){return`${e} (${t})`}function Ne(){return{value:"getter/setter",clone:"chainable getter",notEmpty:"chainable getter|undefined",quote:"Object. See [constructor].quoteInfo",capitalize:`getter. Object with chainable getters: [${Object.keys(U()).join(", ")}]`}}function Ve(e){let t=v(Ee()),r=Ne();return t.split(/\n/).concat(Object.entries(Object.getOwnPropertyDescriptors(t)).sort(([n],[o])=>n.localeCompare(o)).map(([n,o])=>{let u=!e.find(c=>c===n),b="get"in o,p="value"in o,y=n in String.prototype,C=!y&&n in r,O=n in N?" *custom*":"",s=b&&u?`chainable getter${O}`:"getter",l=p&&u?`chainable method${O}`:"method",S=y&&`${o.get?"getter":"method"} (override)`;switch(!0){case C:return z(n,r[n]);case y:return z(n,S);case p:return z(n,l);case b:return z(n,s)}}))}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 Ee(){return atob`Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21dIGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhvZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl`.replace(/\[cm]/g,"\u2714")}function Fe(){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:["[","]"]},t=Le([...new Set(Object.values(e).filter(r=>Array.isArray(r)).flat())].join(""));return e.re=RegExp(`^[${t}]|[${t}]$`,"g"),e}function qe(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 Ae(e,t){let r=qe(W(e()),e),n=Ve("constructor,history,indexOf,toString,value,valueOf,empty".split(","));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:p=!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:p},`addCustom: the ${p?"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(Q())}},randomString:{value:function({len:o,includeUppercase:u,includeNumbers:b,includeSymbols:p,startAlphabetic:y}={}){return v(X({len:o,includeUppercase:u,includeNumbers:b,includeSymbols:p,startAlphabetic:y}))}},regExp:{value:R}})}function Be(e,t,r){return e===String&&r?t?.constructor!==v&&t?.constructor!==e:t?.constructor!==e}var Xe=v;export{v as CustomStringConstructor,Xe as default};
5
5
  //# sourceMappingURL=index.min.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/Factories/randomStringFactory.js", "../src/Factories/interpolateFactory.js", "../src/Factories/regExpFromMultilineStringFactory.js", "../src/instanceMethods.js", "../src/extensions.js", "../src/genericMethods.js", "../index.js"],
4
- "sourcesContent": ["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", "const defaultInterpolator = interpolateFactory();\r\nexport {defaultInterpolator as default, interpolateFactory};\r\n\r\n/**\r\n * Factory function to create an interpolate function with a default replacer.\r\n * @param {string} defaultReplacer - Default value to use for missing tokens.\r\n * @returns {Function} - The interpolation function.\r\n */\r\nfunction interpolateFactory(defaultReplacer = \"\") {\r\n defaultReplacer = defaultReplacer?.constructor === String ? defaultReplacer : \"\";\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 && defaultReplacer.length > 0) {\r\n return String(defaultReplacer);\r\n }\r\n\r\n return `{${key}}`;\r\n }\r\n\r\n /**\r\n * determine if [value] is a String or Number\r\n * @param {any} value\r\n * @returns {boolean}\r\n */\r\n function isStringOrNumber(value ) {\r\n return value?.constructor === String || value?.constructor === Number && !Number.isNaN(value);\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 && isStringOrNumber(token[key]) ? 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 /* node:coverage disable (internal method, not covered by tests)*/\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 * Determine [value] is a real Object and contains keys and values\r\n * @param {any} value\r\n * @returns {boolean}\r\n */\r\n function isKeyValueObject(value) {\r\n return !Array.isArray(value) && value?.constructor === Object && Object.entries(value)?.length > 0;\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 return !tokens?.length ? str : tokens\r\n .filter(token => token)\r\n .map((token, i) => isKeyValueObject(token) ? replace(str, {...token, index: i+1}) : ``)\r\n .join(``);\r\n }\r\n}\r\n", "// v1.2.6\r\nexport 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", "import {\r\n isArrayOf,\r\n isNumber,\r\n quotGetters4Instance as quotGetters,\r\n getStringValue,\r\n escapeRE,\r\n customMethods,\r\n interpolate,\r\n createRegExp as $RE,\r\n clone } from \"./genericMethods.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 capitalizerFactory,\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\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", "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 capitalizerFactory,\r\n} from \"./instanceMethods.js\";\r\n\r\nexport default instanceCreator;\r\n\r\nconst deprecatedRE = /symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i\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 {default as randomString, uuid4} from \"./Factories/randomStringFactory.js\";\r\nimport interpolate from \"./Factories/interpolateFactory.js\";\r\nimport createRegExp from \"./Factories/regExpFromMultilineStringFactory.js\";\r\nimport createInstance from \"./extensions.js\";\r\nconst customMethods = {};\r\nconst quotingStyles = defineQuotingStyles();\r\n\r\nexport {\r\n customMethods,\r\n CustomStringConstructor,\r\n isNumber,\r\n isArrayOf,\r\n quotGetters4Instance,\r\n getStringValue,\r\n escapeRE,\r\n resolveTemplateString,\r\n clone,\r\n interpolate,\r\n quotingStyles,\r\n createRegExp,\r\n};\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 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 isArrayOf(type, value, includeInstances = true) {\r\n return Array.isArray(value) && value.length > 0 && !value.find(v => checkType(type, v, includeInstances));\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\r\nfunction getStringValue(string) {\r\n return string?.value || (string?.constructor === String && string) || ``;\r\n}\r\n\r\nfunction isNumber(value) {\r\n return value?.constructor === Number && !Number.isNaN(value);\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\nfunction escape4RE(reString) {\r\n return reString.replace(/\\p{S}|\\p{P}/gu, a => `\\\\${a}`);\r\n}\r\n\r\nfunction infoValue(key, infoValue) {\r\n return `${key} (${infoValue})`;\r\n}\r\n\r\nfunction getPlainValues() {\r\n const capitalizerKeys = Object.keys(CustomStringConstructor.create.capitalize);\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 getSWInformation(notChainable) {\r\n const firstLines = CustomStringConstructor(decode());\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 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 bracket() { return instance.enclose(...quotingStyles.bracket); },\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 decode() {\r\n return atob`Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21dIGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhvZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl`.replace(/\\[cm]/g, `\\u2714`);\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 bracket: [`{`, `}`],\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 const regExpValues = escape4RE([...new Set(\r\n Object.values(quots)\r\n .filter(v => Array.isArray(v))\r\n .flat())].join(``));\r\n quots.re = RegExp(`^[${regExpValues}]|[${regExpValues}]$`, \"g\");\r\n\r\n return quots;\r\n}\r\n\r\nfunction createExtendedCTOR(ctor, customMethods) {\r\n const instanceQuotGetters4Info = quotGetters4Instance(ctor());\r\n Symbol.toSB = Symbol.for(`toStringBuilder`);\r\n Object.defineProperty(String.prototype, Symbol.toSB, {\r\n get() { return ctor(this); },\r\n enumerable: false,\r\n configurable: false });\r\n const notChainable = `constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`);\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: {\r\n get() { return getSWInformation(notChainable); }\r\n },\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: {\r\n get() {\r\n return Object.entries(Object.getOwnPropertyDescriptors(instanceQuotGetters4Info.value))\r\n .sort( (a,b) => a[0].localeCompare(b[0]) )\r\n .reduce((acc, [k, v]) => {\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\n uuid4: {\r\n get() { return CustomStringConstructor(uuid4()); }\r\n },\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 ctor;\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", "import { CustomStringConstructor } from \"./src/genericMethods.js\";\r\nconst defaultStringCTOR = CustomStringConstructor;\r\n\r\nexport {defaultStringCTOR as default, CustomStringConstructor};\r\n"],
5
- "mappings": "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",
6
- "names": ["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", "defaultInterpolator", "interpolateFactory", "interpolateFactory", "defaultReplacer", "str", "tokens", "interpolate", "processTokens", "invalidate", "key", "keyExists", "isStringOrNumber", "value", "replacement", "token", "isValid", "getReplacerLambda", "args", "replacementObject", "a", "replace", "convertTokensFromArrayValues", "tokenObject", "converted", "v", "i", "isMultiLineWithArrays", "isKeyValueObject", "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", "checkAndRun", "string", "fn", "or", "getStringValue", "format", "tokens", "defaultInterpolator", "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", "capitalizerFactory", "instance", "wrap", "extensions_default", "instanceCreator", "deprecatedRE", "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", "args", "result", "steps", "isNumber", "historyLen", "pushHistory", "methodName", "methodContainer", "enumerable", "method", "isGetter", "configurable", "customMethods", "quotingStyles", "defineQuotingStyles", "createExtendedCTOR", "CustomStringConstructor", "customMethods", "str", "args", "instance", "extensions_default", "resolveTemplateString", "getStringValue", "isArrayOf", "type", "value", "includeInstances", "v", "checkType", "clone", "newInstance", "string", "isNumber", "escapeRE", "reString", "modifiers", "a", "escape4RE", "infoValue", "key", "getPlainValues", "getSWInformation", "notChainable", "firstLines", "decode", "plainValues", "keyA", "keyB", "descriptr", "isChainable", "k", "isGetter", "isMethod", "isNative", "isPlainValue", "custom", "getter", "method", "native", "quotGetters4Instance", "wrap", "me", "quotingStyles", "start", "end", "defineQuotingStyles", "quots", "regExpValues", "ctor", "instanceQuotGetters4Info", "tokens", "name", "enumerable", "b", "acc", "val", "uuid4", "len", "includeUppercase", "includeNumbers", "includeSymbols", "startAlphabetic", "randomString", "regExpFromMultilineStringFactory_default", "item", "defaultStringCTOR", "CustomStringConstructor"]
3
+ "sources": ["../src/Factories/randomStringFactory.js", "../src/factories/splatESBundle.js", "../src/Factories/regExpFromMultilineStringFactory.js", "../src/instanceMethods.js", "../src/extensions.js", "../src/genericMethods.js", "../index.js"],
4
+ "sourcesContent": ["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", "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 */\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 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 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", "import {\r\n isArrayOf,\r\n isNumber,\r\n quotGetters4Instance as quotGetters,\r\n getStringValue,\r\n escapeRE,\r\n customMethods,\r\n interpolate,\r\n createRegExp as $RE,\r\n clone } from \"./genericMethods.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 capitalizerFactory,\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\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", "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 capitalizerFactory,\r\n} from \"./instanceMethods.js\";\r\n\r\nexport default instanceCreator;\r\n\r\nconst deprecatedRE = /symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i\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 {default as randomString, uuid4} from \"./Factories/randomStringFactory.js\";\r\nimport interpolate from \"./factories/splatESBundle.js\";\r\nimport createRegExp from \"./Factories/regExpFromMultilineStringFactory.js\";\r\nimport createInstance from \"./extensions.js\";\r\nimport {capitalizerFactory} from \"./instanceMethods.js\";\r\nconst customMethods = {};\r\nconst quotingStyles = defineQuotingStyles();\r\n\r\nexport {\r\n customMethods,\r\n CustomStringConstructor,\r\n isNumber,\r\n isArrayOf,\r\n quotGetters4Instance,\r\n getStringValue,\r\n escapeRE,\r\n resolveTemplateString,\r\n clone,\r\n interpolate,\r\n quotingStyles,\r\n createRegExp,\r\n};\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 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 isArrayOf(type, value, includeInstances = true) {\r\n return Array.isArray(value) && value.length > 0 && !value.find(v => checkType(type, v, includeInstances));\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\r\nfunction getStringValue(string) {\r\n return string?.value || (string?.constructor === String && string) || ``;\r\n}\r\n\r\nfunction isNumber(value) {\r\n return value?.constructor === Number && !Number.isNaN(value);\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\nfunction escape4RE(reString) {\r\n return reString.replace(/\\p{S}|\\p{P}/gu, a => `\\\\${a}`);\r\n}\r\n\r\nfunction infoValue(key, infoValue) {\r\n return `${key} (${infoValue})`;\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 getSWInformation(notChainable) {\r\n const firstLines = CustomStringConstructor(decode());\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 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 decode() {\r\n return atob`Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21dIGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhvZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl`.replace(/\\[cm]/g, `\\u2714`);\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 const regExpValues = escape4RE([...new Set(\r\n Object.values(quots)\r\n .filter(v => Array.isArray(v))\r\n .flat())].join(``));\r\n quots.re = RegExp(`^[${regExpValues}]|[${regExpValues}]$`, \"g\");\r\n\r\n return quots;\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 createExtendedCTOR(ctor, customMethods) {\r\n const quoteInfo = retrieveQuotInfo(quotGetters4Instance(ctor()), ctor);\r\n const swInfo = getSWInformation(`constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`));\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\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 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", "import { CustomStringConstructor } from \"./src/genericMethods.js\";\r\nconst defaultStringCTOR = CustomStringConstructor;\r\n\r\nexport {defaultStringCTOR as default, CustomStringConstructor};\r\n"],
5
+ "mappings": "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",
6
+ "names": ["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", "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", "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", "capitalizerFactory", "instance", "wrap", "extensions_default", "instanceCreator", "deprecatedRE", "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", "args", "result", "steps", "isNumber", "historyLen", "pushHistory", "methodName", "methodContainer", "enumerable", "method", "isGetter", "configurable", "customMethods", "quotingStyles", "defineQuotingStyles", "createExtendedCTOR", "CustomStringConstructor", "customMethods", "str", "args", "instance", "extensions_default", "resolveTemplateString", "getStringValue", "isArrayOf", "type", "value", "includeInstances", "v", "checkType", "clone", "newInstance", "string", "isNumber", "escapeRE", "reString", "modifiers", "a", "escape4RE", "infoValue", "key", "getPlainValues", "capitalizerFactory", "getSWInformation", "notChainable", "firstLines", "decode", "plainValues", "keyA", "keyB", "descriptr", "isChainable", "k", "isGetter", "isMethod", "isNative", "isPlainValue", "custom", "getter", "method", "native", "quotGetters4Instance", "wrap", "me", "quotingStyles", "start", "end", "defineQuotingStyles", "quots", "regExpValues", "retrieveQuotInfo", "instanceQuotGetters4Info", "ctor", "b", "acc", "val", "quoteInfo", "swInfo", "tokens", "name", "enumerable", "uuid4", "len", "includeUppercase", "includeNumbers", "includeSymbols", "startAlphabetic", "randomString", "regExpFromMultilineStringFactory_default", "item", "defaultStringCTOR", "CustomStringConstructor"]
7
7
  }
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  <div align="center">
2
2
 
3
- [![](https://badgen.net/bundlephobia/min/stringweaver)](https://bundlephobia.com/package/stringweaver)
3
+ <!--
4
+ bundlephobia is probably a lost case
5
+ [![](https://badgen.net/bundlephobia/min/stringweaver)](https://bundlephobia.com/package/stringweaver)
6
+ -->
7
+ [![](https://deno.bundlejs.com/?q=stringweaver@latest&badge)](https://bundlejs.com/?q=stringweaver)
4
8
  [![](https://img.shields.io/npm/v/stringweaver.svg?labelColor=cb3837&logo=npm&color=dcfdd9)](https://www.npmjs.com/package/stringweaver)
5
9
  [![](https://depx.co/api/badge/stringweaver)](https://depx.co/pkg/stringweaver)
6
10
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stringweaver",
3
3
  "type": "module",
4
- "version": "1.3.9",
4
+ "version": "1.4.2",
5
5
  "private": false,
6
6
  "main": "./index.js",
7
7
  "sideEffects": false,
@@ -1,4 +1,3 @@
1
- // v1.2.6
2
1
  export default Object.defineProperties(instanceCreator, {escape: {value: escape4RE, enumerable: true}});
3
2
 
4
3
  function instanceCreator(regExStr, ...args) {
@@ -28,7 +27,7 @@ function createInstance(regExp) {
28
27
  flags: { value(flags) { regExp = modifyFlags(flags, regExp); return instance; }, enumerable: false },
29
28
  clone: { get() { return clone(instance); }, enumerable: false },
30
29
  }), getterTrap(regExp) );
31
-
30
+
32
31
  return instance;
33
32
  }
34
33
 
@@ -1,14 +1,28 @@
1
- const defaultInterpolator = interpolateFactory();
2
- export {defaultInterpolator as default, interpolateFactory};
1
+ const IS = typeCheckFactory();
2
+ const interpolateDefault = interpolateFactory();
3
+ const interpolateClear = interpolateFactory("");
4
+
5
+ export {
6
+ interpolateDefault as default,
7
+ interpolateClear,
8
+ addSymbolicStringExtensions,
9
+ interpolateFactory,
10
+ };
3
11
 
4
12
  /**
5
13
  * Factory function to create an interpolate function with a default replacer.
6
- * @param {string} defaultReplacer - Default value to use for missing tokens.
14
+ * @param {string|number} defaultReplacer - Default value to use for missing tokens.
7
15
  * @returns {Function} - The interpolation function.
8
16
  */
9
- function interpolateFactory(defaultReplacer = "") {
10
- defaultReplacer = defaultReplacer?.constructor === String ? defaultReplacer : "";
11
-
17
+ function interpolateFactory(defaultReplacer, specs = {}) {
18
+ const {useSymbolicExtensions} = specs;
19
+ defaultReplacer = IS(defaultReplacer, String, Number) ?
20
+ String(defaultReplacer) : undefined;
21
+
22
+ if (!!useSymbolicExtensions) {
23
+ addSymbolicStringExtensions();
24
+ }
25
+
12
26
  /**
13
27
  * Main interpolation function.
14
28
  * @param {string} str - The string with placeholders.
@@ -18,7 +32,7 @@ function interpolateFactory(defaultReplacer = "") {
18
32
  return function(str, ...tokens) {
19
33
  return interpolate(str, processTokens(tokens));
20
34
  }
21
-
35
+
22
36
  /**
23
37
  * Handle invalid keys by returning the default replacer or the key in braces.
24
38
  * @param {string} key - The placeholder key.
@@ -26,22 +40,13 @@ function interpolateFactory(defaultReplacer = "") {
26
40
  * @returns {string} - The replacement value.
27
41
  */
28
42
  function invalidate(key, keyExists) {
29
- if (keyExists && defaultReplacer.length > 0) {
43
+ if (keyExists && IS(defaultReplacer, String, Number)) {
30
44
  return String(defaultReplacer);
31
45
  }
32
-
46
+
33
47
  return `{${key}}`;
34
48
  }
35
-
36
- /**
37
- * determine if [value] is a String or Number
38
- * @param {any} value
39
- * @returns {boolean}
40
- */
41
- function isStringOrNumber(value ) {
42
- return value?.constructor === String || value?.constructor === Number && !Number.isNaN(value);
43
- }
44
-
49
+
45
50
  /**
46
51
  * Get the replacement value for a key from the token.
47
52
  * @param {string} key - The placeholder key.
@@ -50,9 +55,9 @@ function interpolateFactory(defaultReplacer = "") {
50
55
  */
51
56
  function replacement(key, token) {
52
57
  const isValid = key in token;
53
- return isValid && isStringOrNumber(token[key]) ? String(token[key]) : invalidate(key, isValid);
58
+ return isValid && IS(token[key], String, Number) ? String(token[key]) : invalidate(key, isValid);
54
59
  }
55
-
60
+
56
61
  /**
57
62
  * Create a lambda function for replacing placeholders in the string.
58
63
  * @param {object} token - The token object containing replacement values.
@@ -64,7 +69,7 @@ function interpolateFactory(defaultReplacer = "") {
64
69
  return replacement((replacementObject ? replacementObject.key : `_`), token);
65
70
  };
66
71
  }
67
-
72
+
68
73
  /**
69
74
  * Replace placeholders in the string with values from the token.
70
75
  * @param {string} str - The string with placeholders.
@@ -74,24 +79,23 @@ function interpolateFactory(defaultReplacer = "") {
74
79
  function replace(str, token) {
75
80
  return str.replace(/\{(?<key>[a-z_\d]+)}/gim, getReplacerLambda(token));
76
81
  }
77
-
82
+
78
83
  /**
79
84
  * Convert token object to array of token Objects
80
85
  * when it's values are arrays of values.
81
86
  * @param {object} tokenObject - The token object containing arrays of values.
82
87
  * @returns {object[]} - Array of token objects.
83
88
  */
84
- /* node:coverage disable (internal method, not covered by tests)*/
85
89
  function convertTokensFromArrayValues(tokenObject) {
86
90
  const converted = [];
87
-
91
+
88
92
  Object.entries(tokenObject).forEach(([key, value]) => {
89
93
  value.forEach((v, i) => (converted[i] ??= {}, converted[i][key] = v));
90
94
  });
91
-
95
+
92
96
  return converted;
93
97
  }
94
-
98
+
95
99
  /**
96
100
  * Check if single token and its values are arrays.
97
101
  * @param {object[]} tokens - The tokens to check.
@@ -101,7 +105,7 @@ function interpolateFactory(defaultReplacer = "") {
101
105
  function isMultiLineWithArrays(tokens) {
102
106
  return tokens.length === 1 && Object.values(tokens[0]).every(Array.isArray);
103
107
  }
104
-
108
+
105
109
  /**
106
110
  * Process tokens to handle multi-line formats.
107
111
  * @param {object[]} tokens - The tokens to process.
@@ -110,16 +114,7 @@ function interpolateFactory(defaultReplacer = "") {
110
114
  function processTokens(tokens) {
111
115
  return isMultiLineWithArrays(tokens) ? convertTokensFromArrayValues(tokens[0]) : tokens;
112
116
  }
113
-
114
- /**
115
- * Determine [value] is a real Object and contains keys and values
116
- * @param {any} value
117
- * @returns {boolean}
118
- */
119
- function isKeyValueObject(value) {
120
- return !Array.isArray(value) && value?.constructor === Object && Object.entries(value)?.length > 0;
121
- }
122
-
117
+
123
118
  /**
124
119
  * Interpolate the string with the given tokens.
125
120
  * @param {string} str - The string with placeholders.
@@ -127,9 +122,73 @@ function interpolateFactory(defaultReplacer = "") {
127
122
  * @returns {string} - The interpolated string.
128
123
  */
129
124
  function interpolate(str, tokens) {
130
- return !tokens?.length ? str : tokens
131
- .filter(token => token)
132
- .map((token, i) => isKeyValueObject(token) ? replace(str, {...token, index: i+1}) : ``)
125
+ const injected = !tokens?.length ? str : tokens
126
+ .filter(token => IS(token, Object))
127
+ .map((token, i) => replace(str, {...token, index: i + 1}))
133
128
  .join(``);
129
+
130
+ return IS(defaultReplacer, undefined)
131
+ ? injected : injected.replace(/\{[a-z_\d].+\}/gim, String(defaultReplacer));
132
+ }
133
+ }
134
+
135
+ /**
136
+ * Extend String.prototype using the above two
137
+ * interpolate methods.
138
+ * Note: Symbols are unique, so there is no risk the
139
+ * methods will conflict with native String methods or
140
+ * methods in other ES libraries.
141
+ */
142
+ function addSymbolicStringExtensions() {
143
+ if (!String.prototype[Symbol.for(`interpolate`)]) {
144
+ Object.defineProperties(String.prototype, {
145
+ [Symbol.for(`interpolate`)]: {
146
+ value(...args) {
147
+ return interpolateDefault(this, ...args);
148
+ }
149
+ },
150
+ [Symbol.for(`interpolate$`)]: {
151
+ value(...args) {
152
+ return interpolateClear(this, ...args);
153
+ }
154
+ },
155
+ });
156
+ }
157
+
158
+ return [Symbol.for("interpolate"), Symbol.for(`interpolate$`)];
159
+ }
160
+
161
+ /**
162
+ * Simple 'type' checking factory
163
+ * @returns {(function(*, ...[*]): (boolean|*))|*}
164
+ */
165
+ function typeCheckFactory() {
166
+ const collate = new Intl.Collator(`en`, {sensitivity: 'base'});
167
+ const nameOf = type2Check => typeof type2Check === `function`
168
+ ? type2Check?.name || type2Check?.constructor?.name : `noCTOR`;
169
+
170
+ function checkSingleType(obj, type2Check) {
171
+ if (type2Check === Number && (Number.isNaN(obj) || !Number.isFinite(obj))) {
172
+ return false;
173
+ }
174
+
175
+ return 0 === collate.compare(
176
+ Object.prototype.toString.call(obj),
177
+ `[object ${nameOf(type2Check)}]`
178
+ ) || obj?.name === type2Check?.name;
179
+ }
180
+
181
+ function checkType(obj, ...type2Check) {
182
+ if (type2Check.length > 1) {
183
+ for (const chkType of type2Check) {
184
+ if (checkSingleType(obj, chkType)) { return true; }
185
+ }
186
+
187
+ return false;
188
+ }
189
+
190
+ return checkSingleType(obj, type2Check?.shift());
134
191
  }
192
+
193
+ return checkType;
135
194
  }
@@ -1,7 +1,8 @@
1
1
  import {default as randomString, uuid4} from "./Factories/randomStringFactory.js";
2
- import interpolate from "./Factories/interpolateFactory.js";
2
+ import interpolate from "./factories/splatESBundle.js";
3
3
  import createRegExp from "./Factories/regExpFromMultilineStringFactory.js";
4
4
  import createInstance from "./extensions.js";
5
+ import {capitalizerFactory} from "./instanceMethods.js";
5
6
  const customMethods = {};
6
7
  const quotingStyles = defineQuotingStyles();
7
8
 
@@ -67,7 +68,7 @@ function infoValue(key, infoValue) {
67
68
  }
68
69
 
69
70
  function getPlainValues() {
70
- const capitalizerKeys = Object.keys(CustomStringConstructor.create.capitalize);
71
+ const capitalizerKeys = Object.keys(capitalizerFactory());
71
72
  return {
72
73
  value: `getter/setter`,
73
74
  clone: `chainable getter`,
@@ -112,7 +113,8 @@ function quotGetters4Instance(instance, wrap) {
112
113
  return {
113
114
  value: {
114
115
  get backtick() { return instance.enclose(...quotingStyles.backtick); },
115
- get bracket() { return instance.enclose(...quotingStyles.bracket); },
116
+ get parentheses() { return instance.enclose(...quotingStyles.parentheses); },
117
+ get curlyBrackets() { return instance.enclose(...quotingStyles.curlyBrackets); },
116
118
  get curlyDouble() { return instance.enclose(...quotingStyles.curlyDouble); },
117
119
  get curlyDoubleInward() { return instance.enclose(...quotingStyles.curlyDoubleInward); },
118
120
  get curlyDoubleEqual() { return instance.enclose(...quotingStyles.curlyDoubleEqual); },
@@ -145,7 +147,8 @@ function defineQuotingStyles() {
145
147
  // see https://en.wikipedia.org/wiki/Quotation_mark
146
148
  const quots = {
147
149
  backtick: ["`", "`"],
148
- bracket: [`{`, `}`],
150
+ parentheses: [`(`, `)`],
151
+ curlyBrackets: [`{`, `}`],
149
152
  curlyDoubleInward: [`”`, `“`],
150
153
  curlyDouble: [`“`, `”`],
151
154
  curlyDoubleEqual: [`“`, `“`],
@@ -173,14 +176,32 @@ function defineQuotingStyles() {
173
176
  return quots;
174
177
  }
175
178
 
179
+ function retrieveQuotInfo(instanceQuotGetters4Info, ctor) {
180
+ return Object.entries(Object.getOwnPropertyDescriptors(instanceQuotGetters4Info.value))
181
+ .sort( (a,b) => a[0].localeCompare(b[0]) )
182
+ .reduce((acc, [k,]) => {
183
+ if (k === `remove`) { return [...acc, `[instance].quote.remove (only predefined)`]; }
184
+ if (k === `custom`) { return [...acc, `[instance].quote.custom(start:string, end:string)`]; }
185
+
186
+ const val = ctor(`[instance]`).quote[k];
187
+ return [...acc, `[instance].quote.${k} ( ${val} )`];
188
+ }, []);
189
+ }
190
+
176
191
  function createExtendedCTOR(ctor, customMethods) {
177
- const instanceQuotGetters4Info = quotGetters4Instance(ctor());
178
- Symbol.toSB = Symbol.for(`toStringBuilder`);
179
- Object.defineProperty(String.prototype, Symbol.toSB, {
180
- get() { return ctor(this); },
181
- enumerable: false,
182
- configurable: false });
183
- const notChainable = `constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`);
192
+ const quoteInfo = retrieveQuotInfo(quotGetters4Instance(ctor()), ctor);
193
+ const swInfo = getSWInformation(`constructor,history,indexOf,toString,value,valueOf,empty`.split(`,`));
194
+ Symbol.toSB = Symbol(`toStringBuilder`);
195
+ Object.defineProperty(
196
+ String.prototype,
197
+ Symbol.toSB, {
198
+ get() { return ctor(this); },
199
+ enumerable: false,
200
+ configurable: false
201
+ }
202
+ );
203
+
204
+
184
205
  Object.defineProperties(ctor, {
185
206
  create: {
186
207
  get() { return ctor(); },
@@ -208,9 +229,7 @@ function createExtendedCTOR(ctor, customMethods) {
208
229
  }
209
230
  }
210
231
  },
211
- info: {
212
- get() { return getSWInformation(notChainable); }
213
- },
232
+ info: { value: swInfo, },
214
233
  keys: {
215
234
  get() {
216
235
  return Object.keys(Object.getOwnPropertyDescriptors(CustomStringConstructor``))
@@ -218,22 +237,8 @@ function createExtendedCTOR(ctor, customMethods) {
218
237
  .map(v => !/constructor|toString|valueOf/.test(v) && v in customMethods ? `${v} *custom*` : v);
219
238
  }
220
239
  },
221
- quoteInfo: {
222
- get() {
223
- return Object.entries(Object.getOwnPropertyDescriptors(instanceQuotGetters4Info.value))
224
- .sort( (a,b) => a[0].localeCompare(b[0]) )
225
- .reduce((acc, [k, v]) => {
226
- if (k === `remove`) { return [...acc, `[instance].quote.remove (only predefined)`]; }
227
- if (k === `custom`) { return [...acc, `[instance].quote.custom(start:string, end:string)`]; }
228
-
229
- const val = ctor(` [instance] `).quote[k];
230
- return [...acc, `[instance].quote.${k} (${val})`];
231
- }, []);
232
- }
233
- },
234
- uuid4: {
235
- get() { return CustomStringConstructor(uuid4()); }
236
- },
240
+ quoteInfo: { value: quoteInfo },
241
+ uuid4: { get() { return CustomStringConstructor(uuid4()); } },
237
242
  randomString: {
238
243
  value: function({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic} = {}) {
239
244
  return CustomStringConstructor(randomString({len, includeUppercase, includeNumbers, includeSymbols, startAlphabetic}));
@@ -242,7 +247,7 @@ function createExtendedCTOR(ctor, customMethods) {
242
247
  regExp: { value: createRegExp }
243
248
  });
244
249
 
245
- return ctor;
250
+ return;
246
251
  }
247
252
 
248
253
  function checkType(type, item, includeInstances) {
@@ -49,16 +49,16 @@ describe(`Basics constructor`, () => {
49
49
  "isValue": true
50
50
  },
51
51
  "info": {
52
- "isGetter": true,
53
- "isValue": false
52
+ "isGetter": false,
53
+ "isValue": true,
54
54
  },
55
55
  "keys": {
56
56
  "isGetter": true,
57
57
  "isValue": false
58
58
  },
59
59
  "quoteInfo": {
60
- "isGetter": true,
61
- "isValue": false
60
+ "isGetter": false,
61
+ "isValue": true,
62
62
  },
63
63
  "uuid4": {
64
64
  "isGetter": true,
@@ -253,26 +253,28 @@ describe(`Basics constructor`, () => {
253
253
 
254
254
  it(`$S.keys.quoteInfo as expected`, () => {
255
255
  const shouldBe = [
256
- '[instance].quote.backtick (` [instance] `)',
257
- '[instance].quote.bracket ({ [instance] })',
258
- '[instance].quote.curlyDouble (“ [instance] )',
259
- '[instance].quote.curlyDoubleEqual (“ [instance] )',
260
- '[instance].quote.curlyDoubleInward (” [instance] )',
261
- '[instance].quote.curlyLHDoubleInward („ [instance] )',
262
- '[instance].quote.curlyLHSingle (‚ [instance] )',
263
- '[instance].quote.curlyLHSingleInward (‚ [instance] )',
264
- '[instance].quote.curlySingle (‛ [instance] )',
265
- '[instance].quote.curlySingleEqual (‛ [instance] )',
266
- '[instance].quote.curlySingleInward (’ [instance] )',
267
- '[instance].quote.custom(start:string, end:string)',
268
- '[instance].quote.double (" [instance] ")',
269
- '[instance].quote.guillemets (« [instance] »)',
270
- '[instance].quote.guillemetsInward (» [instance] «)',
271
- '[instance].quote.guillemetsSingle (‹ [instance] )',
272
- '[instance].quote.guillemetsSingleInward (› [instance] )',
273
- '[instance].quote.remove (only predefined)',
274
- "[instance].quote.single (' [instance] ')",
275
- '[instance].quote.squareBrackets ([ [instance] ])' ];
256
+ "[instance].quote.backtick ( `[instance]` )",
257
+ "[instance].quote.curlyBrackets ( {[instance]} )",
258
+ "[instance].quote.curlyDouble ( “[instance] )",
259
+ "[instance].quote.curlyDoubleEqual ( “[instance] )",
260
+ "[instance].quote.curlyDoubleInward ( ”[instance] )",
261
+ "[instance].quote.curlyLHDoubleInward ( „[instance] )",
262
+ "[instance].quote.curlyLHSingle ( ‚[instance] )",
263
+ "[instance].quote.curlyLHSingleInward ( ‚[instance] )",
264
+ "[instance].quote.curlySingle ( ‛[instance] )",
265
+ "[instance].quote.curlySingleEqual ( ‛[instance] )",
266
+ "[instance].quote.curlySingleInward ( ’[instance] )",
267
+ "[instance].quote.custom(start:string, end:string)",
268
+ "[instance].quote.double ( \"[instance]\" )",
269
+ "[instance].quote.guillemets ( «[instance]» )",
270
+ "[instance].quote.guillemetsInward ( »[instance]« )",
271
+ "[instance].quote.guillemetsSingle ( ‹[instance] )",
272
+ "[instance].quote.guillemetsSingleInward ( ›[instance] )",
273
+ "[instance].quote.parentheses ( ([instance]) )",
274
+ "[instance].quote.remove (only predefined)",
275
+ "[instance].quote.single ( '[instance]' )",
276
+ "[instance].quote.squareBrackets ( [[instance]] )"
277
+ ];
276
278
  assert.deepStrictEqual($S.quoteInfo, shouldBe);
277
279
  });
278
280
 
@@ -933,7 +935,8 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
933
935
 
934
936
  assert.deepStrictEqual(testme, [
935
937
  "backtick: `quoting`",
936
- "bracket: {quoting}",
938
+ "parentheses: (quoting)",
939
+ "curlyBrackets: {quoting}",
937
940
  "curlyDouble: “quoting”",
938
941
  "curlyDoubleInward: ”quoting“",
939
942
  "curlyDoubleEqual: “quoting“",
@@ -958,7 +961,8 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
958
961
  it(`quotingStyles.re is what we expect`, () => {
959
962
  assert.deepStrictEqual(
960
963
  quotingStyles.re,
961
- /^[\`\{\}\”\“\„\‚\’\‘\‛\"\«\»\‹\›\'\[\]]|[\`\{\}\”\“\„\‚\’\‘\‛\"\«\»\‹\›\'\[\]]$/g);
964
+ /^[\`\(\)\{\}\”\“\„\‚\’\‘\‛\"\«\»\‹\›\'\[\]]|[\`\(\)\{\}\”\“\„\‚\’\‘\‛\"\«\»\‹\›\'\[\]]$/g
965
+ );
962
966
  });
963
967
 
964
968
  it(`[instance.quote.remove for all possibilities as expected]`, () => {
@@ -973,7 +977,8 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
973
977
  });
974
978
  assert.deepStrictEqual(testme, [
975
979
  "backtick: quoting",
976
- "bracket: quoting",
980
+ "parentheses: quoting",
981
+ "curlyBrackets: quoting",
977
982
  "curlyDouble: quoting",
978
983
  "curlyDoubleInward: quoting",
979
984
  "curlyDoubleEqual: quoting",