stringweaver 1.2.8 → 1.2.9
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.
- package/Bundle/index.min.js +3 -3
- package/Bundle/index.min.js.map +3 -3
- package/package.json +1 -1
- package/src/extensions.js +34 -30
- package/src/genericMethods.js +2 -1
- package/src/instanceMethods.js +35 -5
- package/tests/UnitTests.js +105 -2
package/Bundle/index.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*© KooiInc 2025-2030*/
|
|
2
|
-
var{randomString:
|
|
3
|
-
`).map(
|
|
2
|
+
var{randomString:Y,uuid4:K}=le();function le(){let e=S(),t=()=>e?[...crypto.getRandomValues(new Uint32Array(1))].shift()/2**32:Math.random(),n=({min:a=0,max:s=Number.MAX_SAFE_INTEGER}={})=>Math.floor(t()*(s-a+1)+a),r=(a=0,s=10,d)=>(d||[])instanceof Function?[...Array(s)].map((C,O)=>a+O).map(d):[...Array(s)].map((C,O)=>a+O),u=a=>String.fromCharCode(a),o="!?@#$%^&*=+_;-".split(""),b=RegExp(`[${o.map(a=>`\\${a}`).join("")}]`,"g"),g=a=>{let s=a.length;for(;s--;){let d=n({max:s});[a[s],a[d]]=[a[d],a[s]]}return a},y=g(r(65,26,u)),v=g(r(97,26,u)),i={UCLC:g(y.concat(v)),UC:y,LC:v,Nrs:g(r()),Sym:g(o)},l=a=>Object.entries(a).reduce((s,[d,C])=>C?[...s,...i[d]]: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=>n({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,d){return/[a-z]/i.test(a)&&(s&&d?/\d/.test(a)&&b.test(a):s?/\d/.test(a):d?b.test(a):!0)}function m(a){let s=[...a],d=s.findIndex(C=>/[a-z]/i.test(C));return[s[0],s[d]]=[s[d],s[0]],s.join("")}function N({len:a=12,includeUppercase:s=!0,includeNumbers:d,includeSymbols:C,startAlphabetic:O}={}){a=a<6?6:a;let $=g(l({UC:s,Nrs:d,Sym:C}));for(;$.length<a;)$=[...$,...g($)];let x=$.slice(0,a).join("");if(!(d||C))return x;for(let V=0;V<$.length;V+=1)if(x=$.slice(V,V+a).join(""),f(x,d,C))return O&&!/^[a-z]/i.test(x)?m(x):x;return N({len:a,includeUppercase:s,includeNumbers:d,includeSymbols:C,startAlphabetic:O})}return{randomString:N,uuid4:c}}var Z=ae();function ae(e=""){return e=e?.constructor===String?e:"",function(i,...l){return I(i,y(l))};function t(i,l){return l&&e.length>0?String(e):`{${i}}`}function n(i){return i?.constructor===String||i?.constructor===Number&&!Number.isNaN(i)}function r(i,l){let S=i in l;return S&&n(l[i])?String(l[i]):t(i,S)}function u(i){return(...l)=>{let S=l.find(c=>c.key);return r(S?S.key:"_",i)}}function o(i,l){return i.replace(/\{(?<key>[a-z_\d]+)}/gim,u(l))}function b(i){let l=[];return Object.entries(i).forEach(([S,c])=>{c.forEach((f,m)=>(l[m]??={},l[m][S]=f))}),l}function g(i){return i.length===1&&Object.values(i[0]).every(Array.isArray)}function y(i){return g(i)?b(i[0]):i}function v(i){return!Array.isArray(i)&&i?.constructor===Object&&Object.entries(i)?.length>0}function I(i,l){return l?.length?l.filter(S=>S).map((S,c)=>v(S)?o(i,{...S,index:c+1}):"").join(""):i}}var X=Object.defineProperties(ie,{escape:{value:be,enumerable:!0}});function ie(e,...t){let{flags:n,cleanedArgs:r}=fe(...t),u=se(e,...r);return pe(new RegExp(u.split(`
|
|
3
|
+
`).map(o=>Se(o)).join(""),n))}function se(e,...t){return A(t)?e.raw.reduce((n,r,u)=>n.concat(t[u-1]||"").concat(r),""):e.raw.join("")}function fe(...e){let t=P(ge(e.at(-1)));return{flags:t,cleanedArgs:A(t)?e.slice(0,-1):e}}function ge(e){return q(e,Array)?e.join(""):""}function pe(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(n){return e=he(n,e),t},enumerable:!1}}),me(e));return t}function A(e){return e?.length>0}function q(e,t){return e?.constructor===t}function de(e,t,n){let r=Reflect.get(n,t);return{fromInstance:Reflect.get(e,t),fromRegExpMethod:q(r,Function)?r.bind(n):n[t]}}function me(e){return{get(t,n){let{fromInstance:r,fromRegExpMethod:u}=de(t,n,e);switch(!0){case!!r:return r;default:return u}}}}function P(e,t){return t=(t??"").replace(/^-r\|/,""),e=t.concat(q(e,String)&&A(e)?e:""),[...new Set([...e])].join("").replace(/[^dgimsuvy]/g,"")}function he(e,t){switch(!0){case!q(e,String):return t;case e.startsWith("-r|"):return new RegExp(t.source,P(e));case e==="-r":return new RegExp(t.source);case A(e):return new RegExp(t.source,P(e,t.flags))}}function be(e){switch(!0){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 Se(e){return e.replace(/\/\*(?:[^*]|\*+[^*\/])*\*+\/|(?<!:|\\\|')\/\/.*/g,"").replace(/\s/g,"").trim().replace(/<!([^>]\d+)>/g,(t,n)=>String.fromCharCode(+n)??t)}function j(e,t,n){return e=p(e),e.length>0?t(e):n||e}function D(e){return j(e,()=>`${e[0].toUpperCase()}${e.slice(1)}`)}function B(e,...t){return j(e,()=>`${Z(e,...t)}`)}function Q(e,t,n){return!t&&!n?e:([t,n]=E(String,[t,n??""])?[t,n]:["",""],`${t}${e}${n||t}`)}function G(e){return j(e,()=>e.replace(/\s/g,"-").replace(/[A-Z_]/g,t=>`-${t.toLowerCase()}`).replace(/[^a-z-]/g,"").replace(/-{2,}/g,"-").replace(/^-|-$/,""))}function H(e){return j(e,()=>e.replace(/\s/g,"_").replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`).replace(/[^a-z_]/g,"").replace(/_{2,}/g,"_").replace(/^_|_$/,""))}function U(e){return j(e,()=>[...e.toLowerCase()].slice(1).reduce((t,n)=>t+(/\p{L}|[-']/u.test(t.at(-1))?n.toLowerCase():n.toUpperCase()),e[0].toUpperCase()))}function z(e){return j(e,()=>e.toLowerCase().trim().split(/[- ]/).filter(t=>t&&t.length>0).map((t,n)=>n>0&&`${D(t)}`||t).join(""))}function ye(e){return[...e.matchAll(/\p{Pe}|\p{Z}/gu)].at(-1)?.index??e.length}function J(e,{at:t,html:n=!1,wordBoundary:r=!1}={}){return n=n?.constructor===Boolean&&n||!1,r=r?.constructor===Boolean&&r||!1,j(e,()=>{if(e.length<=t)return e;let u=e.slice(0,t-1),o=n?"…":"...",b=r?ye(u):u.length;return(r?u.slice(0,b+1).trim():u)+o})}function _(e,t=!1){return t=t?.constructor===Boolean&&t||!1,j(e,()=>{let n=e.replace(/\n/gm,"#LF#").split(/#LF#/).map(r=>r.trim().replace(/\s{2,}/g,u=>u[0]));return t?n.join("#LF#").replace(/#LF#/g,`
|
|
4
4
|
`).trim():n.filter(r=>r.length>0).join(`
|
|
5
|
-
`)})}function k(e,{replacements:t={},caseSensitive:n=!1}={}){e=p(e);let r=Object.entries(t).flat(),
|
|
5
|
+
`)})}function k(e,{replacements:t={},caseSensitive:n=!1}={}){e=p(e);let r=Object.entries(t).flat(),u=E(String,r)&&n?.constructor===Boolean,o=`g${n?"":"i"}`;if(!u)return e;for(;r.length;){let[b,g]=[r.shift(),r.shift()],y=oe(b,o);e=e.replace(y,g)}return e}function ee(e,t,n=0){e=p(e),n=L(n)&&n||0;let r=e.indexOf(t,n||0);return r<0?void 0:r}function te(e,t,n=0){e=p(e),n=L(n)&&n||e.length;let r=e.lastIndexOf(t,n);return r<0?void 0:r}function M(e,{value:t,values:n,at:r=0}={}){e=p(e),r=L(r)&&r||0;let u=p(n);return n=p(t).length?t:u.length?u:E(String,n)?n.map(o=>p(o)).join(""):[],n.length<=1?e:e.length===0?`${n}${e}`:`${e.slice(0,r)}${n}${e.slice(r)}`}function re(e,...t){return t=E(String,t)&&t,t?M(p(e),{values:t,at:0}):p(e)}function ne(e,...t){return t=E(String,t)&&t,t&&t.length>0?`${p(e)}`.concat(t.join("")):p(e)}function ue(e,t){return{get full(){return t(e.value.toUpperCase())},get none(){return t(e.value.toLowerCase())},get camel(){return t(z(e.value))},get snake(){return t(H(e.value))},get first(){return t(D(e.value))},get kebab(){return t(G(e.value))},get words(){return t(U(e.value))},get dashed(){return t(G(e.value))}}}var ce=Ce,we=/symbol|anchor|big|blink|bold|fixed|fontsize|fontcolor|italics|link|small|strike|sup|sub/i;function Ce({initialstring:e}={}){let t={},n=new Proxy(t,b(t)),r=p(e),u=[r],o={configurable:!1,enumerable:!1};return Object.defineProperties(t,{append:{...o,value(...c){return l(ne(r,...c))}},enclose:{...o,value(c,f){return l(Q(r,c,f))}},format:{...o,value(...c){return l(B(r,...c))}},indexOf:{...o,value(c){return ee(r,c)}},interpolate:{...o,value(...c){return l(B(r,...c))}},insert:{...o,value({value:c,values:f,at:m}={}){return l(M(r,{value:c,values:f,at:m}))}},lastIndexOf:{...o,value(c){return te(r,c)}},prefix:{...o,value(...c){return l(re(r,...c))}},replaceWords:{...o,value({caseSensitive:c=!1,replacements:f={}}={}){return l(k(r,{replacements:f??{},caseSensitive:c}))}},toString:{...o,value(){return r}},truncate:{...o,value({at:c,html:f=!1,wordBoundary:m=!1}={}){return l(J(r,{at:c,html:f,wordBoundary:m}))}},valueOf:{...o,value(){return r}},undoLast:{...o,value(c){return I(c)}},camelCase:{...o,get(){return l(z(p(r)))}},capitalize:{...o,value:ue(n,l)},clone:{...o,get(){return T(n,R)}},firstUp:{...o,get(){return l(D(p(r)))}},history:{...o,get(){return u},set(c){u=c}},empty:{...o,get(){return r.length<1}},notEmpty:{...o,get(){return r.length<1?void 0:n}},kebabCase:{...o,get(){return l(G(p(r)))}},quote:F(n,l),snakeCase:{...o,get(){return l(H(p(r)))}},trimAll:{...o,get(){return l(_(r))}},trimAllKeepLF:{...o,get(){return l(_(r,!0))}},undoAll:{...o,get(){return v()}},undo:{...o,get(){return i()}},wordsUCFirst:{...o,get(){return l(U(p(r)))}},value:{...o,get(){return r},set(c){let f=p(c);f.length&&(r=f,u.push(f))}}}),S(R),n;function b(c){return{get(f,m){return m in c?c[m]:g(String(m))?y(m):void 0}}}function g(c){return!we.test(c)&&c in String.prototype}function y(c){return r[c]instanceof Function?function(...f){let m=r[c](...f);return m?.constructor===String?l(r[c](...f)):m}:r[c]}function v(){for(;u.length>1;)u.pop();return r=u.at(-1),l(r,!1)}function I(c){if(!L(c))return l(r,!1);let f=u.length;return c>=f||c<1?(u=u.slice(0,1),r=u.at(-1),l(u.at(-1),!1)):(u=u.slice(0,f-c),r=u.at(-1),l(r,!1))}function i(){return u.length===1?l(u[0]):(u.pop(),r=u.at(-1),l(r,!1))}function l(c,f=!0){return r!==c&&f&&u.push(c),r=c,n}function S(c){Object.entries(c).forEach(([f,m])=>{let{enumerable:N,method:a,isGetter:s}=m,d=!1;Object.defineProperty(t,f,s?{get(){return l(a(n).value)},enumerable:N,configurable:d}:{value(...O){return l(a(n,...O).value)},enumerable:N,configurable:d})})}}var R={},h=xe();Re(w,R);function w(e,...t){let n=ce({initialstring:ve(e,...t)});return Object.defineProperty(n,"constructor",{get(){return w},enumerable:!1}),Object.freeze(n)}function ve(e,...t){return e?.raw?String.raw({raw:e},...t):p(e).length?e:""}function E(e,t,n=!0){return Array.isArray(t)&&t.length>0&&!t.find(r=>Ee(e,r,n))}function T(e){let t=w(e.value);return t.history=[...e.history],t}function p(e){return e?.value||e?.constructor===String&&e||""}function L(e){return e?.constructor===Number&&!Number.isNaN(e)}function oe(e,t){return new RegExp(e.replace(/\p{S}|\p{P}/gu,n=>`\\${n}`),t)}function Oe(e){return e.replace(/\p{S}|\p{P}/gu,t=>`\\${t}`)}function W(e,t){return`${e} (${t})`}function je(){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 Ie(e){let t=w($e()),n=je();return t.split(/\n/).concat(Object.entries(Object.getOwnPropertyDescriptors(t)).sort(([r],[u])=>r.localeCompare(u)).map(([r,u])=>{let o=!e.find(c=>c===r),b="get"in u,g="value"in u,y=r in String.prototype,v=!y&&r in n,I=r in R?" *custom*":"",i=b&&o?`chainable getter${I}`:"getter",l=g&&o?`chainable method${I}`:"method",S=y&&`${u.get?"getter":"method"} (override)`;switch(!0){case v:return W(r,n[r]);case y:return W(r,S);case g:return W(r,l);case b:return W(r,i)}}))}function F(e,t){return t=t??function(n){return n},{value:{get backtick(){return e.enclose(...h.backtick)},get bracket(){return e.enclose(...h.bracket)},get curlyDouble(){return e.enclose(...h.curlyDouble)},get curlyDoubleInward(){return e.enclose(...h.curlyDoubleInward)},get curlyDoubleEqual(){return e.enclose(...h.curlyDoubleEqual)},get curlyLHDoubleInward(){return e.enclose(...h.curlyLHDoubleInward)},get curlyLHSingle(){return e.enclose(...h.curlyLHSingle)},get curlyLHSingleInward(){return e.enclose(...h.curlyLHSingleInward)},get curlySingle(){return e.enclose(...h.curlySingle)},get curlySingleEqual(){return e.enclose(...h.curlySingleEqual)},get curlySingleInward(){return e.enclose(...h.curlySingleInward)},get custom(){return(n,r)=>e.enclose(n,r??n)},get double(){return e.enclose(...h.double)},get guillemets(){return e.enclose(...h.guillemets)},get guillemetsInward(){return e.enclose(...h.guillemetsInward)},get guillemetsSingle(){return e.enclose(...h.guillemetsSingle)},get guillemetsSingleInward(){return e.enclose(...h.guillemetsSingleInward)},get remove(){return t(`${e.value.replace(h.re,"")}`)},get single(){return e.enclose(...h.single)},get squareBrackets(){return e.enclose(...h.squareBrackets)}},enumerable:!1,configurable:!1}}function $e(){return atob`Rm9yIHRoZSByZWNvcmQ6CltjbV0gY2hhaW5hYmxlIGdldHRlcnMvbWV0aG9kcyBtb2RpZnkgdGhlIGluc3RhbmNlIHN0cmluZwpbY21dIGluZGV4T2Ygb3ZlcnJpZGVzIHJldHVybnMgW3VuZGVmaW5lZF0gaWYgbm90aGluZyB3YXMgZm91bmQgKHNvIG9uZSBjYW4gdXNlIFtsYXN0SV1pbmRleE9mKFtzb21lIHN0cmluZyB2YWx1ZV0pID8/IDAKW2NtXSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBmb3IgY3VzdG9tIG1ldGhvZHMvZ2V0dGVycyBpZiBhcHBsaWNhYmxl`.replace(/\[cm]/g,"\u2714")}function xe(){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=Oe([...new Set(Object.values(e).filter(n=>Array.isArray(n)).flat())].join(""));return e.re=RegExp(`^[${t}]|[${t}]$`,"g"),e}function Re(e,t){let n=F(e());Symbol.toSB=Symbol.for("toStringBuilder"),Object.defineProperty(String.prototype,Symbol.toSB,{get(){return e(this)},enumerable:!1,configurable:!1});let r="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:b=!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:b,isGetter:g},`addCustom: the ${g?"getter":"method"} named "${u}" is added`}},info:{get(){return Ie(r)}},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(n.value)).sort((u,o)=>u[0].localeCompare(o[0])).reduce((u,[o,b])=>{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:b,includeSymbols:g,startAlphabetic:y}={}){return w(Y({len:u,includeUppercase:o,includeNumbers:b,includeSymbols:g,startAlphabetic:y}))}},regExp:{value:X}}),e}function Ee(e,t,n){return e===String&&n?t?.constructor!==w&&t?.constructor!==e:t?.constructor!==e}var Ue=w;export{w as CustomStringConstructor,Ue as default};
|
|
6
6
|
//# sourceMappingURL=index.min.js.map
|
package/Bundle/index.min.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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", "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 const initial = createRegExpFromInput(regExStr, ...cleanedArgs);\r\n return createInstance(new RegExp(initial.split(`\\n`).map(line => cleanup(line)).join(``),flags));\r\n}\r\n\r\nfunction createRegExpFromInput(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) {\r\n regExp = addFlags(flags, regExp);\r\n return instance; }, enumerable: false },\r\n }), getterTrap(regExp));\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(regExp) : regExp[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 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 addFlags(flags, re) {\r\n switch (true) {\r\n case !isOfType(flags, String): return re;\r\n case flags.startsWith(`-r|`): return new RegExp(re.source, cleanupFlags(flags));\r\n case flags === `-r`: return new RegExp(re.source);\r\n case hasLength(flags): return new RegExp(re.source, cleanupFlags(flags, re.flags));\r\n }\r\n}\r\n\r\nfunction escape4RE(reString) {\r\n switch (true) {\r\n case !!RegExp.escape: return RegExp.escape(reString);\r\n default: return (`\\\\x${reString.at(0)}` +\r\n reString.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(/\\/\\*(?:[^*]|\\*+[^*\\/])*\\*+\\/|(?<!:|\\\\\\|')\\/\\/.*/g, ``).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 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 toCamelcase,\r\n wordsFirstUp,\r\n toDashedNotation,\r\n quotGetters,\r\n surroundWith,\r\n toSnakeCase,\r\n customMethods,\r\n clone,\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 ucFirst(string) {\r\n return checkAndRun(string, () => `${string[0].toUpperCase()}${string.slice(1)}`);\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 toDashedNotation(string) {\r\n return checkAndRun(string, () =>\r\n string\r\n .replace(/\\s/g, '')\r\n .replace(/[A-Z]/g, a => `-${a.toLowerCase()}`)\r\n .replace(/-{2,}/g, `-`)\r\n .replace(/[^a-z-]/g, ``)\r\n .replace(/^-|-$/, ``)\r\n );\r\n}\r\n\r\nfunction toSnakeCase(string) {\r\n return checkAndRun(string, () =>\r\n string\r\n .replace(/\\s/g, '')\r\n .replace(/[A-Z]/g, a => `_${a.toLowerCase()}`)\r\n .replace(/_{2,}/g, `_`)\r\n .replace(/[^a-z_]/g, ``)\r\n .replace(/^_|_$/, ``)\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 toCamelcase(string) {\r\n return checkAndRun(string, () =>\r\n string.toLowerCase()\r\n .trim()\r\n .split(/[- ]/)\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 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 ? \"…\" : `...`;\r\n const boundary = wordBoundary\r\n ? getWordBoundary(subString)\r\n : subString.length;\r\n\r\n return (wordBoundary\r\n ? subString.slice(0, boundary+1).trim()\r\n : subString) + endwith;\r\n }\r\n );\r\n}\r\n\r\nfunction trimAll(string, keepLines = false) {\r\n keepLines = keepLines?.constructor === Boolean && keepLines || false;\r\n return checkAndRun(string, () => {\r\n const lines = string.replace(/\\n/gm, `#LF#`)\r\n .split(/#LF#/)\r\n .map(line => line.trim().replace(/\\s{2,}/g, a => a[0]) );\r\n return keepLines\r\n ? lines.join(`#LF#`).replace(/#LF#/g, `\\n`).trim()\r\n : lines.filter(l => l.length > 0).join(`\\n`);\r\n });\r\n}\r\n\r\nfunction replaceWords(string, { replacements = {}, caseSensitive = false} = {}) {\r\n string = getStringValue(string);\r\n let replacements2Array = Object.entries(replacements).flat();\r\n const cando = isArrayOf(String, replacements2Array) && caseSensitive?.constructor === Boolean;\r\n const modifiers = `g${!caseSensitive ? 'i' : ''}`;\r\n\r\n if (!cando) { return string; }\r\n\r\n while (replacements2Array.length) {\r\n const [initial, replacement] = [replacements2Array.shift(), replacements2Array.shift()];\r\n const re = escapeRE(initial, modifiers);\r\n string = string.replace(re, replacement);\r\n }\r\n\r\n return string;\r\n}\r\n\r\n// SEE https://youtu.be/99Zacm7SsWQ?t=2101\r\nfunction indexOf(string, findMe, fromIndex = 0) {\r\n string = getStringValue(string);\r\n fromIndex = isNumber(fromIndex) && fromIndex || 0;\r\n const index = string.indexOf(findMe, fromIndex || 0);\r\n return index < 0 ? undefined : index;\r\n}\r\n\r\nfunction lastIndexOf(string, findMe, beforeIndex = 0) {\r\n string = getStringValue(string);\r\n beforeIndex = isNumber(beforeIndex) && beforeIndex || string.length;\r\n const index = string.lastIndexOf(findMe, beforeIndex);\r\n return index < 0 ? undefined : index;\r\n}\r\n\r\nfunction insert(string, { value, values, at = 0 } = {}) {\r\n string = getStringValue(string);\r\n at = isNumber(at) && at || 0;\r\n const valuesMaybeValue = getStringValue(values);\r\n values = getStringValue(value).length\r\n ? value\r\n : valuesMaybeValue.length\r\n ? valuesMaybeValue\r\n : isArrayOf(String, values)\r\n ? values.map(v => getStringValue(v)).join(``)\r\n : [];\r\n\r\n return values.length <= 1\r\n ? string\r\n : string.length === 0\r\n ? `${values}${string}`\r\n : `${string.slice(0, at)}${values}${string.slice(at)}`;\r\n}\r\n\r\nfunction prefix(string, ...strings) {\r\n strings = isArrayOf(String, strings) && strings;\r\n return strings ? insert(getStringValue(string), {values: strings, at: 0}) : getStringValue(string);\r\n}\r\n\r\nfunction append(string, ...strings2Append) {\r\n strings2Append = isArrayOf(String, strings2Append) && strings2Append;\r\n\r\n if (strings2Append && strings2Append.length > 0) {\r\n return `${getStringValue(string)}`.concat(strings2Append.join(``))\r\n }\r\n\r\n return getStringValue(string);\r\n}\r\n", "import {\r\n format,\r\n ucFirst,\r\n truncate,\r\n trimAll,\r\n replaceWords,\r\n indexOf,\r\n lastIndexOf,\r\n insert,\r\n append,\r\n prefix,\r\n getStringValue,\r\n quotGetters,\r\n surroundWith,\r\n toCamelcase,\r\n wordsFirstUp,\r\n toDashedNotation,\r\n toSnakeCase,\r\n customMethods,\r\n isNumber,\r\n clone,\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 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 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 camelCase: { ...descriptorProps, get() { return wrap(toCamelcase(getStringValue(actualValue))); } }, \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(toDashedNotation(getStringValue(actualValue))); } },\r\n quote: quotGetters(instance, wrap),\r\n snakeCase: { ...descriptorProps, get() { return wrap(toSnakeCase(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 key in extensions\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 defineQuotingStyles,\r\n quotGetters4Instance,\r\n getStringValue,\r\n escapeRE,\r\n resolveTemplateString,\r\n clone,\r\n interpolate,\r\n quotingStyles,\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 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 };\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``)).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", "initial", "createRegExpFromInput", "createInstance", "line", "cleanup", "hasLength", "a", "v", "i", "cleanupFlags", "getFlags", "isOfType", "regExp", "instance", "addFlags", "getterTrap", "variable", "any", "CTOR", "maybeProp", "target", "key", "fromRegExp", "fromInstance", "fromRegExpMethod", "currentFlags", "re", "reString", "str", "b", "checkAndRun", "string", "fn", "or", "getStringValue", "ucFirst", "format", "tokens", "defaultInterpolator", "surroundWith", "start", "end", "isArrayOf", "toDashedNotation", "a", "toSnakeCase", "wordsFirstUp", "acc", "v", "toCamelcase", "l", "str", "i", "getWordBoundary", "truncate", "at", "html", "wordBoundary", "subString", "endwith", "boundary", "trimAll", "keepLines", "lines", "line", "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", "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", "html", "wordBoundary", "truncate", "nSteps", "undoSteps", "toCamelcase", "clone", "customMethods", "ucFirst", "toDashedNotation", "quotGetters4Instance", "toSnakeCase", "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"]
|
|
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", "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 const initial = createRegExpFromInput(regExStr, ...cleanedArgs);\r\n return createInstance(new RegExp(initial.split(`\\n`).map(line => cleanup(line)).join(``),flags));\r\n}\r\n\r\nfunction createRegExpFromInput(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) {\r\n regExp = addFlags(flags, regExp);\r\n return instance; }, enumerable: false },\r\n }), getterTrap(regExp));\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(regExp) : regExp[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 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 addFlags(flags, re) {\r\n switch (true) {\r\n case !isOfType(flags, String): return re;\r\n case flags.startsWith(`-r|`): return new RegExp(re.source, cleanupFlags(flags));\r\n case flags === `-r`: return new RegExp(re.source);\r\n case hasLength(flags): return new RegExp(re.source, cleanupFlags(flags, re.flags));\r\n }\r\n}\r\n\r\nfunction escape4RE(reString) {\r\n switch (true) {\r\n case !!RegExp.escape: return RegExp.escape(reString);\r\n default: return (`\\\\x${reString.at(0)}` +\r\n reString.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(/\\/\\*(?:[^*]|\\*+[^*\\/])*\\*+\\/|(?<!:|\\\\\\|')\\/\\/.*/g, ``).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 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 toCamelcase,\r\n wordsFirstUp,\r\n toDashedNotation,\r\n quotGetters,\r\n surroundWith,\r\n toSnakeCase,\r\n customMethods,\r\n clone,\r\n capitalizerFactory,\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 ucFirst(string) {\r\n return checkAndRun(string, () => `${string[0].toUpperCase()}${string.slice(1)}`);\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 toDashedNotation(string) {\r\n return checkAndRun(string, () =>\r\n string\r\n .replace(/\\s/g, '-')\r\n .replace(/[A-Z_]/g, a => `-${a.toLowerCase()}`)\r\n .replace(/[^a-z-]/g, ``)\r\n .replace(/-{2,}/g, `-`)\r\n .replace(/^-|-$/, ``)\r\n );\r\n}\r\n\r\nfunction toSnakeCase(string) {\r\n return checkAndRun(string, () =>\r\n string\r\n .replace(/\\s/g, '_')\r\n .replace(/[A-Z]/g, a => `_${a.toLowerCase()}`)\r\n .replace(/[^a-z_]/g, ``)\r\n .replace(/_{2,}/g, `_`)\r\n .replace(/^_|_$/, ``)\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 toCamelcase(string) {\r\n return checkAndRun(string, () =>\r\n string.toLowerCase()\r\n .trim()\r\n .split(/[- ]/)\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 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 ? \"…\" : `...`;\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(toCamelcase(instance.value));\r\n },\r\n get snake() {\r\n return wrap(toSnakeCase(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(toDashedNotation(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(toDashedNotation(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 toCamelcase,\r\n wordsFirstUp,\r\n toDashedNotation,\r\n toSnakeCase,\r\n customMethods,\r\n isNumber,\r\n clone,\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 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(toCamelcase(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(toDashedNotation(getStringValue(actualValue))); } },\r\n quote: quotGetters(instance, wrap),\r\n snakeCase: { ...descriptorProps, get() { return wrap(toSnakeCase(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 key in extensions\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};\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``)).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", "initial", "createRegExpFromInput", "createInstance", "line", "cleanup", "hasLength", "a", "v", "i", "cleanupFlags", "getFlags", "isOfType", "regExp", "instance", "addFlags", "getterTrap", "variable", "any", "CTOR", "maybeProp", "target", "key", "fromRegExp", "fromInstance", "fromRegExpMethod", "currentFlags", "re", "reString", "str", "b", "checkAndRun", "string", "fn", "or", "getStringValue", "ucFirst", "format", "tokens", "defaultInterpolator", "surroundWith", "start", "end", "isArrayOf", "toDashedNotation", "a", "toSnakeCase", "wordsFirstUp", "acc", "v", "toCamelcase", "l", "str", "i", "getWordBoundary", "truncate", "at", "html", "wordBoundary", "subString", "endwith", "boundary", "trimAll", "keepLines", "lines", "line", "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", "html", "wordBoundary", "truncate", "nSteps", "undoSteps", "toCamelcase", "capitalizerFactory", "clone", "customMethods", "ucFirst", "toDashedNotation", "quotGetters4Instance", "toSnakeCase", "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"]
|
|
7
7
|
}
|
package/package.json
CHANGED
package/src/extensions.js
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
customMethods,
|
|
20
20
|
isNumber,
|
|
21
21
|
clone,
|
|
22
|
+
capitalizerFactory,
|
|
22
23
|
} from "./instanceMethods.js";
|
|
23
24
|
|
|
24
25
|
export default instanceCreator;
|
|
@@ -31,16 +32,17 @@ function instanceCreator({initialstring} = {}) {
|
|
|
31
32
|
let actualValue = getStringValue(initialstring);
|
|
32
33
|
let history = [actualValue];
|
|
33
34
|
const descriptorProps = {configurable: false, enumerable: false};
|
|
34
|
-
|
|
35
|
+
|
|
35
36
|
Object.defineProperties( customStringExtensions, {
|
|
37
|
+
// methods
|
|
36
38
|
append: { ...descriptorProps, value(...strings) { return wrap(append(actualValue, ...strings)); } },
|
|
37
39
|
enclose: { ...descriptorProps, value(start, end) { return wrap(surroundWith(actualValue, start, end)); } },
|
|
38
40
|
format: { ...descriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },
|
|
39
41
|
indexOf: { ...descriptorProps, value(str) { return indexOf(actualValue, str); } },
|
|
40
42
|
interpolate: { ...descriptorProps, value(...tokens) { return wrap(format(actualValue, ...tokens)); } },
|
|
41
|
-
insert: { ...descriptorProps, value({ value, values, at } = {}) {
|
|
42
|
-
return wrap(insert(actualValue, { value, values, at }));
|
|
43
|
-
}
|
|
43
|
+
insert: { ...descriptorProps, value({ value, values, at } = {}) {
|
|
44
|
+
return wrap(insert(actualValue, { value, values, at }));
|
|
45
|
+
}
|
|
44
46
|
},
|
|
45
47
|
lastIndexOf: { ...descriptorProps, value(str) { return lastIndexOf(actualValue, str); } },
|
|
46
48
|
prefix: { ...descriptorProps, value(...strings) { return wrap(prefix(actualValue, ...strings)); } },
|
|
@@ -53,7 +55,9 @@ function instanceCreator({initialstring} = {}) {
|
|
|
53
55
|
valueOf: { ...descriptorProps, value() { return actualValue; } },
|
|
54
56
|
undoLast: { ...descriptorProps, value(nSteps) { return undoSteps(nSteps); } },
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
// getters
|
|
59
|
+
camelCase: { ...descriptorProps, get() { return wrap(toCamelcase(getStringValue(actualValue))); } },
|
|
60
|
+
capitalize: { ...descriptorProps, value: capitalizerFactory(instance, wrap) },
|
|
57
61
|
clone: { ...descriptorProps, get() { return clone(instance, customMethods); } },
|
|
58
62
|
firstUp: { ...descriptorProps, get() { return wrap(ucFirst(getStringValue(actualValue))); } },
|
|
59
63
|
history: { ...descriptorProps, get() { return history; }, set(value) { history = value; } },
|
|
@@ -67,22 +71,22 @@ function instanceCreator({initialstring} = {}) {
|
|
|
67
71
|
undoAll: { ...descriptorProps, get() { return undoAll(); } },
|
|
68
72
|
undo: { ...descriptorProps, get() { return undoLast(); } },
|
|
69
73
|
wordsUCFirst: { ...descriptorProps, get() { return wrap(wordsFirstUp(getStringValue(actualValue))); } },
|
|
70
|
-
value: { ...descriptorProps,
|
|
71
|
-
get() { return actualValue; },
|
|
74
|
+
value: { ...descriptorProps,
|
|
75
|
+
get() { return actualValue; },
|
|
72
76
|
set(value) {
|
|
73
77
|
const nwValue = getStringValue(value);
|
|
74
78
|
if (nwValue.length) {
|
|
75
79
|
actualValue = nwValue;
|
|
76
|
-
history.push(nwValue);
|
|
80
|
+
history.push(nwValue);
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
},
|
|
80
84
|
});
|
|
81
|
-
|
|
85
|
+
|
|
82
86
|
injectCustomMethods(customMethods);
|
|
83
|
-
|
|
87
|
+
|
|
84
88
|
return instance;
|
|
85
|
-
|
|
89
|
+
|
|
86
90
|
function getTraps(extensions) {
|
|
87
91
|
return {
|
|
88
92
|
get( target, key ) {
|
|
@@ -94,62 +98,62 @@ function instanceCreator({initialstring} = {}) {
|
|
|
94
98
|
},
|
|
95
99
|
};
|
|
96
100
|
}
|
|
97
|
-
|
|
101
|
+
|
|
98
102
|
function canWrapNative(key) {
|
|
99
103
|
return !deprecatedRE.test(key)
|
|
100
104
|
&& key in String.prototype;
|
|
101
105
|
}
|
|
102
|
-
|
|
106
|
+
|
|
103
107
|
function wrapNative(key) {
|
|
104
108
|
return actualValue[key] instanceof Function
|
|
105
109
|
? function(...args) {
|
|
106
|
-
const result = actualValue[key](...args);
|
|
107
|
-
return result?.constructor === String ? wrap(actualValue[key](...args)) : result;
|
|
110
|
+
const result = actualValue[key](...args);
|
|
111
|
+
return result?.constructor === String ? wrap(actualValue[key](...args)) : result;
|
|
108
112
|
} : actualValue[key];
|
|
109
113
|
}
|
|
110
|
-
|
|
114
|
+
|
|
111
115
|
function undoAll() {
|
|
112
|
-
while(history.length > 1) { history.pop(); }
|
|
116
|
+
while (history.length > 1) { history.pop(); }
|
|
113
117
|
actualValue = history.at(-1);
|
|
114
118
|
return wrap(actualValue, false);
|
|
115
119
|
}
|
|
116
|
-
|
|
120
|
+
|
|
117
121
|
function undoSteps(steps) {
|
|
118
122
|
if (!isNumber(steps)) {
|
|
119
|
-
return wrap(actualValue, false);
|
|
123
|
+
return wrap(actualValue, false);
|
|
120
124
|
}
|
|
121
|
-
|
|
125
|
+
|
|
122
126
|
const historyLen = history.length;
|
|
123
|
-
|
|
127
|
+
|
|
124
128
|
if (steps >= historyLen || steps < 1) {
|
|
125
129
|
history = history.slice(0, 1);
|
|
126
|
-
actualValue = history.at(-1);
|
|
127
|
-
return wrap(history.at(-1), false);
|
|
130
|
+
actualValue = history.at(-1);
|
|
131
|
+
return wrap(history.at(-1), false);
|
|
128
132
|
}
|
|
129
|
-
|
|
133
|
+
|
|
130
134
|
history = history.slice(0, historyLen - steps);
|
|
131
|
-
|
|
135
|
+
|
|
132
136
|
actualValue = history.at(-1);
|
|
133
137
|
return wrap(actualValue, false);
|
|
134
138
|
}
|
|
135
|
-
|
|
139
|
+
|
|
136
140
|
function undoLast() {
|
|
137
141
|
if (history.length === 1) {
|
|
138
142
|
return wrap(history[0]);
|
|
139
143
|
}
|
|
140
|
-
|
|
144
|
+
|
|
141
145
|
history.pop();
|
|
142
146
|
actualValue = history.at(-1);
|
|
143
147
|
return wrap(actualValue, false);
|
|
144
148
|
}
|
|
145
|
-
|
|
149
|
+
|
|
146
150
|
function wrap(result, pushHistory = true) {
|
|
147
151
|
const changed = actualValue !== result;
|
|
148
152
|
changed && pushHistory && history.push(result);
|
|
149
153
|
actualValue = result;
|
|
150
154
|
return instance;
|
|
151
155
|
}
|
|
152
|
-
|
|
156
|
+
|
|
153
157
|
function injectCustomMethods(customMethods) {
|
|
154
158
|
Object.entries(customMethods).forEach(([methodName, methodContainer]) => {
|
|
155
159
|
const {enumerable, method, isGetter} = methodContainer;
|
|
@@ -157,7 +161,7 @@ function instanceCreator({initialstring} = {}) {
|
|
|
157
161
|
const descriptor = isGetter
|
|
158
162
|
? { get() { return wrap(method(instance).value); }, enumerable, configurable }
|
|
159
163
|
: { value(...args) { return wrap(method(instance, ...args).value); }, enumerable, configurable };
|
|
160
|
-
|
|
164
|
+
|
|
161
165
|
Object.defineProperty(customStringExtensions, methodName, descriptor);
|
|
162
166
|
});
|
|
163
167
|
}
|
package/src/genericMethods.js
CHANGED
|
@@ -10,7 +10,6 @@ export {
|
|
|
10
10
|
CustomStringConstructor,
|
|
11
11
|
isNumber,
|
|
12
12
|
isArrayOf,
|
|
13
|
-
defineQuotingStyles,
|
|
14
13
|
quotGetters4Instance,
|
|
15
14
|
getStringValue,
|
|
16
15
|
escapeRE,
|
|
@@ -67,11 +66,13 @@ function infoValue(key, infoValue) {
|
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
function getPlainValues() {
|
|
69
|
+
const capitalizerKeys = Object.keys(CustomStringConstructor.create.capitalize);
|
|
70
70
|
return {
|
|
71
71
|
value: `getter/setter`,
|
|
72
72
|
clone: `chainable getter`,
|
|
73
73
|
notEmpty: `chainable getter|undefined`,
|
|
74
74
|
quote: `Object. See [constructor].quoteInfo`,
|
|
75
|
+
capitalize: `getter. Object with chainable getters: [${capitalizerKeys.join(`, `)}]`,
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
78
|
|
package/src/instanceMethods.js
CHANGED
|
@@ -29,6 +29,7 @@ export {
|
|
|
29
29
|
toSnakeCase,
|
|
30
30
|
customMethods,
|
|
31
31
|
clone,
|
|
32
|
+
capitalizerFactory,
|
|
32
33
|
};
|
|
33
34
|
|
|
34
35
|
function checkAndRun(string, fn, or) {
|
|
@@ -55,10 +56,10 @@ function surroundWith(string, start, end) {
|
|
|
55
56
|
function toDashedNotation(string) {
|
|
56
57
|
return checkAndRun(string, () =>
|
|
57
58
|
string
|
|
58
|
-
.replace(/\s/g, '')
|
|
59
|
-
.replace(/[A-
|
|
60
|
-
.replace(/-{2,}/g, `-`)
|
|
59
|
+
.replace(/\s/g, '-')
|
|
60
|
+
.replace(/[A-Z_]/g, a => `-${a.toLowerCase()}`)
|
|
61
61
|
.replace(/[^a-z-]/g, ``)
|
|
62
|
+
.replace(/-{2,}/g, `-`)
|
|
62
63
|
.replace(/^-|-$/, ``)
|
|
63
64
|
);
|
|
64
65
|
}
|
|
@@ -66,10 +67,10 @@ function toDashedNotation(string) {
|
|
|
66
67
|
function toSnakeCase(string) {
|
|
67
68
|
return checkAndRun(string, () =>
|
|
68
69
|
string
|
|
69
|
-
.replace(/\s/g, '')
|
|
70
|
+
.replace(/\s/g, '_')
|
|
70
71
|
.replace(/[A-Z]/g, a => `_${a.toLowerCase()}`)
|
|
71
|
-
.replace(/_{2,}/g, `_`)
|
|
72
72
|
.replace(/[^a-z_]/g, ``)
|
|
73
|
+
.replace(/_{2,}/g, `_`)
|
|
73
74
|
.replace(/^_|_$/, ``)
|
|
74
75
|
);
|
|
75
76
|
}
|
|
@@ -193,3 +194,32 @@ function append(string, ...strings2Append) {
|
|
|
193
194
|
|
|
194
195
|
return getStringValue(string);
|
|
195
196
|
}
|
|
197
|
+
|
|
198
|
+
function capitalizerFactory(instance, wrap) {
|
|
199
|
+
return {
|
|
200
|
+
get full() {
|
|
201
|
+
return wrap(instance.value.toUpperCase());
|
|
202
|
+
},
|
|
203
|
+
get none() {
|
|
204
|
+
return wrap(instance.value.toLowerCase());
|
|
205
|
+
},
|
|
206
|
+
get camel() {
|
|
207
|
+
return wrap(toCamelcase(instance.value));
|
|
208
|
+
},
|
|
209
|
+
get snake() {
|
|
210
|
+
return wrap(toSnakeCase(instance.value));
|
|
211
|
+
},
|
|
212
|
+
get first() {
|
|
213
|
+
return wrap(ucFirst(instance.value));
|
|
214
|
+
},
|
|
215
|
+
get kebab() {
|
|
216
|
+
return wrap(toDashedNotation(instance.value));
|
|
217
|
+
},
|
|
218
|
+
get words() {
|
|
219
|
+
return wrap(wordsFirstUp(instance.value));
|
|
220
|
+
},
|
|
221
|
+
get dashed() {
|
|
222
|
+
return wrap(toDashedNotation(instance.value));
|
|
223
|
+
},
|
|
224
|
+
}
|
|
225
|
+
}
|
package/tests/UnitTests.js
CHANGED
|
@@ -169,6 +169,7 @@ describe(`Basics constructor`, () => {
|
|
|
169
169
|
const keysShouldbe = [
|
|
170
170
|
'append',
|
|
171
171
|
'camelCase',
|
|
172
|
+
'capitalize',
|
|
172
173
|
'clone',
|
|
173
174
|
'constructor',
|
|
174
175
|
'empty',
|
|
@@ -205,6 +206,7 @@ describe(`Basics constructor`, () => {
|
|
|
205
206
|
const keysShouldbe = [
|
|
206
207
|
'append (chainable method)',
|
|
207
208
|
'camelCase (chainable getter)',
|
|
209
|
+
'capitalize (getter. Object with chainable getters: [full, none, camel, snake, first, kebab, words, dashed])',
|
|
208
210
|
'clone (chainable getter)',
|
|
209
211
|
'constructor (getter (override))',
|
|
210
212
|
'empty (getter)',
|
|
@@ -234,7 +236,7 @@ describe(`Basics constructor`, () => {
|
|
|
234
236
|
'wordsUCFirst (chainable getter)'
|
|
235
237
|
];
|
|
236
238
|
const info = $S.info;
|
|
237
|
-
// the first lines may vary and
|
|
239
|
+
// the first lines may vary and are not relevant for the test
|
|
238
240
|
assert.deepStrictEqual(info.slice(info.findIndex(v => v.startsWith(`append`))), keysShouldbe);
|
|
239
241
|
});
|
|
240
242
|
|
|
@@ -457,7 +459,6 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
|
|
|
457
459
|
assert.strictEqual(hi.value, `Hello world`);
|
|
458
460
|
});
|
|
459
461
|
|
|
460
|
-
// todo
|
|
461
462
|
describe(`case`, () => {
|
|
462
463
|
it(`camelCase`, () => {
|
|
463
464
|
const hello = $S`Hello World`.camelCase;
|
|
@@ -540,6 +541,108 @@ describe(`Instance methods, setters & getters (alphabetically ordered)`, () => {
|
|
|
540
541
|
});
|
|
541
542
|
});
|
|
542
543
|
|
|
544
|
+
describe(`capitalize`, () => {
|
|
545
|
+
it(`camel`, () => {
|
|
546
|
+
const hello = $S`Hello World`.capitalize.camel;
|
|
547
|
+
assert.strictEqual(hello.value, `helloWorld`);
|
|
548
|
+
});
|
|
549
|
+
|
|
550
|
+
it(`camel from dashed`, () => {
|
|
551
|
+
const hello = $S`hello-world`.capitalize.camel;
|
|
552
|
+
assert.strictEqual(hello.value, `helloWorld`);
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
it(`dashed from camel`, () => {
|
|
556
|
+
const hello = $S`hello-world`.capitalize.camel;
|
|
557
|
+
assert.strictEqual(hello.capitalize.dashed.value, `hello-world`);
|
|
558
|
+
});
|
|
559
|
+
|
|
560
|
+
it(`camel /w multiple spaces`, () => {
|
|
561
|
+
const hello = $S` hello world `.capitalize.camel;
|
|
562
|
+
assert.strictEqual(hello.value, `helloWorld`);
|
|
563
|
+
});
|
|
564
|
+
|
|
565
|
+
it(`camel /w multiple dashes`, () => {
|
|
566
|
+
const hello = $S`-hello---world `.capitalize.camel;
|
|
567
|
+
assert.strictEqual(hello.value, `helloWorld`);
|
|
568
|
+
});
|
|
569
|
+
|
|
570
|
+
it(`kebab regular`, () => {
|
|
571
|
+
const hello = $S`helloWorld`.capitalize.kebab;
|
|
572
|
+
assert.strictEqual(hello.value, `hello-world`);
|
|
573
|
+
});
|
|
574
|
+
|
|
575
|
+
it(`kebab /w numbers`, () => {
|
|
576
|
+
const hello = $S`hello42World`.capitalize.kebab;
|
|
577
|
+
assert.strictEqual(hello.value, `hello-world`);
|
|
578
|
+
});
|
|
579
|
+
|
|
580
|
+
it(`kebab /w spaces`, () => {
|
|
581
|
+
const hello = $S`hello World`.capitalize.kebab;
|
|
582
|
+
assert.strictEqual(hello.value, `hello-world`);
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
it(`kebab /w diacriticals`, () => {
|
|
586
|
+
const hello = $S`hello Woërld`.capitalize.kebab;
|
|
587
|
+
assert.strictEqual(hello.value, `hello-world`);
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
it(`kebab /w non alphabetic`, () => {
|
|
591
|
+
const hello = $S`hello $#! World!`.capitalize.kebab;
|
|
592
|
+
assert.strictEqual(hello.value, `hello-world`);
|
|
593
|
+
});
|
|
594
|
+
|
|
595
|
+
it(`dashed === kebab`, () => {
|
|
596
|
+
const hello = $S`hello $#! World!`.capitalize.dashed;
|
|
597
|
+
assert.strictEqual(hello.value, `hello-world`);
|
|
598
|
+
});
|
|
599
|
+
|
|
600
|
+
it(`snake regular`, () => {
|
|
601
|
+
const hello = $S`helloWorld`.capitalize.snake;
|
|
602
|
+
assert.strictEqual(hello.value, `hello_world`);
|
|
603
|
+
});
|
|
604
|
+
|
|
605
|
+
it(`snake /w numbers`, () => {
|
|
606
|
+
const hello = $S`hello42World`.capitalize.snake;
|
|
607
|
+
assert.strictEqual(hello.value, `hello_world`);
|
|
608
|
+
});
|
|
609
|
+
|
|
610
|
+
it(`snake /w spaces`, () => {
|
|
611
|
+
const hello = $S`hello World`.capitalize.snake;
|
|
612
|
+
assert.strictEqual(hello.value, `hello_world`);
|
|
613
|
+
});
|
|
614
|
+
|
|
615
|
+
it(`snake /w diacriticals`, () => {
|
|
616
|
+
const hello = $S`hello Woërld`.capitalize.snake;
|
|
617
|
+
assert.strictEqual(hello.value, `hello_world`);
|
|
618
|
+
});
|
|
619
|
+
|
|
620
|
+
it(`snake /w non alphabetic`, () => {
|
|
621
|
+
const hello = $S`hello $#! World!`.capitalize.snake;
|
|
622
|
+
assert.strictEqual(hello.value, `hello_world`);
|
|
623
|
+
});
|
|
624
|
+
|
|
625
|
+
it(`first`, () => {
|
|
626
|
+
const hello = $S`hello world`.capitalize.first;
|
|
627
|
+
assert.strictEqual(hello.value, `Hello world`);
|
|
628
|
+
});
|
|
629
|
+
|
|
630
|
+
it(`words`, () => {
|
|
631
|
+
const hello = $S`hello world What a day 't is`.capitalize.words;
|
|
632
|
+
assert.strictEqual(hello.value, `Hello World What A Day 't Is`);
|
|
633
|
+
});
|
|
634
|
+
|
|
635
|
+
it(`full`, () => {
|
|
636
|
+
const hello = $S`hello world What a day 't is`.capitalize.full;
|
|
637
|
+
assert.strictEqual(hello.value, `HELLO WORLD WHAT A DAY 'T IS`);
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
it(`none`, () => {
|
|
641
|
+
const hello = $S`HELLO WORLD WHAT A DAY 'T IS`.capitalize.none;
|
|
642
|
+
assert.strictEqual(hello.value, `hello world what a day 't is`);
|
|
643
|
+
});
|
|
644
|
+
});
|
|
645
|
+
|
|
543
646
|
it(`clone as expected`, () => {
|
|
544
647
|
const x = $S`Hi`;
|
|
545
648
|
const y = x.clone;
|