diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..ebe51d3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..6fed3d0 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "tabWidth": 2, + "useTabs": false, + "semi": false, + "singleQuote": true +} diff --git a/dist/index.js b/dist/index.js index bb5abe3..4057071 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -var e=require("lodash.get"),r=require("lodash.set"),t=require("lodash.isarray"),a=require("lodash.isplainobject");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/n(e),i=/*#__PURE__*/n(r),u=/*#__PURE__*/n(t),l=/*#__PURE__*/n(a);function c(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=new Array(r);t=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n.reverse());!(u=l()).done;){var s=u.value,f=s.replace(/[{}]/g,""),d=o.default(a,e),p=o.default(t,f),v=p;["string"].includes(typeof p)&&(v=d.replace(new RegExp(s),p)),i.default(a,e,v)}},r.recursiveReplace=function(e,r){for(var t=this,a=0,n=Object.keys(r);ae.length)&&(r=e.length);for(var t=0,a=new Array(r);t=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n.reverse());!(u=l()).done;){var s=u.value,f=s.replace(/[{}]/g,""),d=o.default(a,e),p=o.default(t,f),v=p;["string"].includes(typeof p)&&(v=d.replace(s,p)),i.default(a,e,v)}},r.recursiveReplace=function(e,r){for(var t=this,a=0,n=Object.keys(r);a this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer"],"names":["DryReplacer","data","this","replaceValue","key","value","template","matchedArray","String","match","_step","reverse","_iterator","done","item","patternKey","replace","templateValue","get","dataValue","newValue","includes","RegExp","set","recursiveReplace","_this","Object","keys","_i","_Object$keys","length","isPlainObject","isArray","map","_proto","jsonToParse","JSON","parse"],"mappings":"oZAQE,WAAA,SAAAA,EAAYC,GAFZA,KAAAA,UAGE,EAAAC,KAAKD,KAAOA,CACd,CAAC,IAEDE,EAAAA,EAAAA,UAuCC,OAvCDA,EAAAA,aAAA,SAAaC,EAAaC,EAAYJ,EAAcK,GAClD,IAAIC,EAAeC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAiBA,IAAsBG,EAAtBH,2qBAAAA,CAAAA,EAAaI,aAASD,EAAAE,KAAAC,MAAE,CAAhCC,IAAAA,EACPJ,EAAAL,MAAcU,EAAGD,EAAKE,QAAQ,QAAS,IACnCC,EAAgBC,UAAIZ,EAAUF,GAC9Be,EAAYD,EAAAA,QAAIjB,EAAMc,GACdK,EAAGD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAAcD,QAAQ,IAAUM,OAACR,GAAOK,IAGrDI,EAAAA,QAAIjB,EAAUF,EAAKgB,EACpB,CAEL,IAEAI,iBAAA,SAAiBvB,EAAcK,GAC7B,IAD0C,IAAAmB,EAAAvB,KAC1BwB,EAAAA,EAAAA,EAAAA,OAAOC,KAAKrB,GAASsB,EAAAC,EAAAC,OAAAF,IAAE,CAAlC,IAAIxB,EACPyB,EAAAD,GAASvB,EAAGC,EAASF,GAEjB2B,UAAc1B,GAChBH,KAAKsB,iBAAiBvB,EAAMI,GACnB2B,EAAO,QAAC3B,GACjBA,EAAM4B,IAAI,SAACnB,GAAI,OAASW,EAACD,iBAAiBvB,EAAMa,EAAK,GAErDZ,KAAKC,aAAaC,EAAKC,EAAOJ,EAAMK,EAEvC,CACD,OAAOA,CACT,EAAC4B,EAAA,IAED,SAAIC,GACF,IAAI7B,EAAW8B,KAAKC,MAAMF,GAG1B,OAFAjC,KAAKsB,iBAAiBtB,KAAKD,KAAMK,GAE1BA,CACT,EAACN,CAAA,CA3CD"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import get from 'lodash.get'\nimport set from 'lodash.set'\nimport isArray from 'lodash.isarray'\nimport isPlainObject from 'lodash.isplainobject'\n\nclass DryReplacer {\n data: object\n\n constructor(data: object) {\n this.data = data\n }\n\n replaceValue(key: string, value: any, data: object, template: object): void {\n let matchedArray = String(value).match(/{{.*?}}/g) // extract only {{}} pattern\n\n if (matchedArray) {\n for (let item of matchedArray.reverse()) {\n let patternKey = item.replace(/[{}]/g, '')\n let spotting = get(template, key)\n\n let valueFromData = get(data, patternKey)\n let newValue = valueFromData\n\n if (['string'].includes(typeof valueFromData)) {\n newValue = spotting.replace(item, valueFromData)\n }\n\n set(template, key, newValue)\n }\n }\n }\n\n recursiveReplace(data: object, template: any): object {\n for (let key of Object.keys(template)) {\n let value = template[key]\n\n if (isPlainObject(value)) {\n this.recursiveReplace(data, value)\n } else if (isArray(value)) {\n value.map((item) => this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer\n"],"names":["data","this","_proto","DryReplacer","prototype","replaceValue","key","value","template","matchedArray","String","match","_step","_iterator","_createForOfIteratorHelperLoose","reverse","done","item","patternKey","replace","spotting","get","valueFromData","newValue","includes","set","recursiveReplace","_this","_i","_Object$keys","Object","keys","length","isPlainObject","isArray","map","jsonToParse","JSON","parse"],"mappings":"oZAKiB,WAGf,SAAYA,EAAAA,GAAYC,KAFxBD,UAAI,EAGFC,KAAKD,KAAOA,CACd,CAAC,IAAAE,EAAAC,EAAAC,UA0CA,OA1CAF,EAEDG,aAAA,SAAaC,EAAaC,EAAYP,EAAcQ,GAClD,IAAgBC,EAAGC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAA,IAAyCG,EAAzCC,2qBAAAC,CAAiBL,EAAaM,aAAWH,EAAAC,KAAAG,MAAA,CAAA,IAA5BC,EAAAL,EAAAL,MACPW,EAAaD,EAAKE,QAAQ,QAAS,IACnCC,EAAWC,EAAAA,QAAIb,EAAUF,GAEZgB,EAAGD,EAAG,QAACrB,EAAMkB,GAClBK,EAAGD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAASD,QAAQF,EAAMK,IAGpCG,UAAIjB,EAAUF,EAAKiB,EACpB,CAEL,EAEAG,EAAAA,iBAAA,SAAiB1B,EAAcQ,GAC7B,IAAA,IAAAmB,EAAA1B,KAAA2B,EAAA,EAAAC,EAAgBC,OAAOC,KAAKvB,GAAWoB,EAAAC,EAAAG,OAAAJ,IAAA,CAAlC,IAAOtB,EAAAuB,EAAAD,GACNrB,EAAQC,EAASF,GAEjB2B,EAAAA,QAAc1B,GAChBN,KAAKyB,iBAAiB1B,EAAMO,GACnB2B,UAAQ3B,GACjBA,EAAM4B,IAAI,SAAClB,GAAS,OAAAU,EAAKD,iBAAiB1B,EAAMiB,EAAK,GAErDhB,KAAKI,aAAaC,EAAKC,EAAOP,EAAMQ,EAEvC,CACD,OAAOA,CACT,EAACN,EAAA,IAED,SAAIkC,GACF,IAAI5B,EAAW6B,KAAKC,MAAMF,GAG1B,OAFAnC,KAAKyB,iBAAiBzB,KAAKD,KAAMQ,GAE1BA,CACT,EAACL,CAAA,CA/Cc"} \ No newline at end of file diff --git a/dist/index.mjs b/dist/index.mjs index 8e2be09..f7d591f 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -1,2 +1,2 @@ -import r from"lodash.get";import e from"lodash.set";import t from"lodash.isarray";import a from"lodash.isplainobject";function n(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,a=new Array(e);t=r.length?{done:!0}:{done:!1,value:r[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(c.reverse());!(l=u()).done;){var s=l.value,f=s.replace(/[{}]/g,""),p=r(i,t),v=r(o,f),d=v;["string"].includes(typeof v)&&(d=p.replace(new RegExp(s),v)),e(i,t,d)}},i.recursiveReplace=function(r,e){for(var n=this,o=0,i=Object.keys(e);or.length)&&(e=r.length);for(var t=0,a=new Array(e);t=r.length?{done:!0}:{done:!1,value:r[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(c.reverse());!(l=u()).done;){var s=l.value,f=s.replace(/[{}]/g,""),p=r(i,t),v=r(o,f),d=v;["string"].includes(typeof v)&&(d=p.replace(s,v)),e(i,t,d)}},i.recursiveReplace=function(r,e){for(var n=this,o=0,i=Object.keys(e);o this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer"],"names":["DryReplacer","data","this","replaceValue","key","value","template","matchedArray","String","match","_step","reverse","_iterator","done","item","patternKey","replace","templateValue","get","dataValue","newValue","includes","RegExp","set","recursiveReplace","_this","Object","keys","_i","_Object$keys","length","isPlainObject","isArray","map","_proto","jsonToParse","JSON","parse"],"mappings":"gOAKMA,IAAAA,eAGJ,WAAA,SAAAA,EAAYC,GAFZA,KAAAA,UAGE,EAAAC,KAAKD,KAAOA,CACd,CAAC,IAEDE,EAAAA,EAAAA,UAuCC,OAvCDA,EAAAA,aAAA,SAAaC,EAAaC,EAAYJ,EAAcK,GAClD,IAAIC,EAAeC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAiBA,IAAsBG,EAAtBH,2qBAAAA,CAAAA,EAAaI,aAASD,EAAAE,KAAAC,MAAE,CAAhCC,IAAAA,EACPJ,EAAAL,MAAcU,EAAGD,EAAKE,QAAQ,QAAS,IACnCC,EAAgBC,EAAIZ,EAAUF,GAC9Be,EAAYD,EAAIjB,EAAMc,GACdK,EAAGD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAAcD,QAAQ,IAAUM,OAACR,GAAOK,IAGrDI,EAAIjB,EAAUF,EAAKgB,EACpB,CAEL,IAEAI,iBAAA,SAAiBvB,EAAcK,GAC7B,IAD0C,IAAAmB,EAAAvB,KAC1BwB,EAAAA,EAAAA,EAAAA,OAAOC,KAAKrB,GAASsB,EAAAC,EAAAC,OAAAF,IAAE,CAAlC,IAAIxB,EACPyB,EAAAD,GAASvB,EAAGC,EAASF,GAEjB2B,EAAc1B,GAChBH,KAAKsB,iBAAiBvB,EAAMI,GACnB2B,EAAQ3B,GACjBA,EAAM4B,IAAI,SAACnB,GAAI,OAASW,EAACD,iBAAiBvB,EAAMa,EAAK,GAErDZ,KAAKC,aAAaC,EAAKC,EAAOJ,EAAMK,EAEvC,CACD,OAAOA,CACT,EAAC4B,EAAA,IAED,SAAIC,GACF,IAAI7B,EAAW8B,KAAKC,MAAMF,GAG1B,OAFAjC,KAAKsB,iBAAiBtB,KAAKD,KAAMK,GAE1BA,CACT,EAACN,CAAA,CA3CD"} \ No newline at end of file +{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import get from 'lodash.get'\nimport set from 'lodash.set'\nimport isArray from 'lodash.isarray'\nimport isPlainObject from 'lodash.isplainobject'\n\nclass DryReplacer {\n data: object\n\n constructor(data: object) {\n this.data = data\n }\n\n replaceValue(key: string, value: any, data: object, template: object): void {\n let matchedArray = String(value).match(/{{.*?}}/g) // extract only {{}} pattern\n\n if (matchedArray) {\n for (let item of matchedArray.reverse()) {\n let patternKey = item.replace(/[{}]/g, '')\n let spotting = get(template, key)\n\n let valueFromData = get(data, patternKey)\n let newValue = valueFromData\n\n if (['string'].includes(typeof valueFromData)) {\n newValue = spotting.replace(item, valueFromData)\n }\n\n set(template, key, newValue)\n }\n }\n }\n\n recursiveReplace(data: object, template: any): object {\n for (let key of Object.keys(template)) {\n let value = template[key]\n\n if (isPlainObject(value)) {\n this.recursiveReplace(data, value)\n } else if (isArray(value)) {\n value.map((item) => this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer\n"],"names":["DryReplacer","data","this","_proto","prototype","replaceValue","key","value","template","matchedArray","String","match","_step","_iterator","_createForOfIteratorHelperLoose","reverse","done","item","patternKey","replace","spotting","get","valueFromData","newValue","includes","set","recursiveReplace","_this","_i","_Object$keys","Object","keys","length","isPlainObject","isArray","map","jsonToParse","JSON","parse"],"mappings":"gOAKMA,IAAWA,eAAA,WAGf,SAAYC,EAAAA,GAAYC,KAFxBD,UAAI,EAGFC,KAAKD,KAAOA,CACd,CAAC,IAAAE,EAAAH,EAAAI,UA0CA,OA1CAD,EAEDE,aAAA,SAAaC,EAAaC,EAAYN,EAAcO,GAClD,IAAgBC,EAAGC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAA,IAAyCG,EAAzCC,2qBAAAC,CAAiBL,EAAaM,aAAWH,EAAAC,KAAAG,MAAA,CAAA,IAA5BC,EAAAL,EAAAL,MACPW,EAAaD,EAAKE,QAAQ,QAAS,IACnCC,EAAWC,EAAIb,EAAUF,GAEZgB,EAAGD,EAAIpB,EAAMiB,GAClBK,EAAGD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAASD,QAAQF,EAAMK,IAGpCG,EAAIjB,EAAUF,EAAKiB,EACpB,CAEL,EAEAG,EAAAA,iBAAA,SAAiBzB,EAAcO,GAC7B,IAAA,IAAAmB,EAAAzB,KAAA0B,EAAA,EAAAC,EAAgBC,OAAOC,KAAKvB,GAAWoB,EAAAC,EAAAG,OAAAJ,IAAA,CAAlC,IAAOtB,EAAAuB,EAAAD,GACNrB,EAAQC,EAASF,GAEjB2B,EAAc1B,GAChBL,KAAKwB,iBAAiBzB,EAAMM,GACnB2B,EAAQ3B,GACjBA,EAAM4B,IAAI,SAAClB,GAAS,OAAAU,EAAKD,iBAAiBzB,EAAMgB,EAAK,GAErDf,KAAKG,aAAaC,EAAKC,EAAON,EAAMO,EAEvC,CACD,OAAOA,CACT,EAACL,EAAA,IAED,SAAIiC,GACF,IAAI5B,EAAW6B,KAAKC,MAAMF,GAG1B,OAFAlC,KAAKwB,iBAAiBxB,KAAKD,KAAMO,GAE1BA,CACT,EAACR,CAAA,CA/Cc"} \ No newline at end of file diff --git a/dist/index.modern.mjs b/dist/index.modern.mjs index 233cc3b..aa60473 100644 --- a/dist/index.modern.mjs +++ b/dist/index.modern.mjs @@ -1,2 +1,2 @@ -import e from"lodash.get";import r from"lodash.set";import t from"lodash.isarray";import a from"lodash.isplainobject";class s{constructor(e){this.data=void 0,this.data=e}replaceValue(t,a,s,l){let i=String(a).match(/{{.*?}}/g);if(i)for(let a of i.reverse()){let i=a.replace(/[{}]/g,""),o=e(l,t),c=e(s,i),p=c;["string"].includes(typeof c)&&(p=o.replace(new RegExp(a),c)),r(l,t,p)}}recursiveReplace(e,r){for(let s of Object.keys(r)){let l=r[s];a(l)?this.recursiveReplace(e,l):t(l)?l.map(r=>this.recursiveReplace(e,r)):this.replaceValue(s,l,e,r)}return r}try(e){let r=JSON.parse(e);return this.recursiveReplace(this.data,r),r}}export{s as default}; +import e from"lodash.get";import r from"lodash.set";import t from"lodash.isarray";import a from"lodash.isplainobject";class s{constructor(e){this.data=void 0,this.data=e}replaceValue(t,a,s,l){let i=String(a).match(/{{.*?}}/g);if(i)for(let a of i.reverse()){let i=a.replace(/[{}]/g,""),o=e(l,t),c=e(s,i),p=c;["string"].includes(typeof c)&&(p=o.replace(a,c)),r(l,t,p)}}recursiveReplace(e,r){for(let s of Object.keys(r)){let l=r[s];a(l)?this.recursiveReplace(e,l):t(l)?l.map(r=>this.recursiveReplace(e,r)):this.replaceValue(s,l,e,r)}return r}try(e){let r=JSON.parse(e);return this.recursiveReplace(this.data,r),r}}export{s as default}; //# sourceMappingURL=index.modern.mjs.map diff --git a/dist/index.modern.mjs.map b/dist/index.modern.mjs.map index 50da0a7..0aa4fb2 100644 --- a/dist/index.modern.mjs.map +++ b/dist/index.modern.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index.modern.mjs","sources":["../src/index.ts"],"sourcesContent":["import get from 'lodash.get'\nimport set from 'lodash.set'\nimport isArray from 'lodash.isarray'\nimport isPlainObject from 'lodash.isplainobject'\n\nclass DryReplacer {\n data: object\n\n constructor(data: object) {\n this.data = data\n }\n\n replaceValue(key: string, value: any, data: object, template: object): void {\n let matchedArray = String(value).match(/{{.*?}}/g)\n \n if (matchedArray) {\n for (let item of matchedArray.reverse()) {\n let patternKey = item.replace(/[{}]/g, '')\n let templateValue = get(template, key)\n let dataValue = get(data, patternKey)\n let newValue = dataValue\n\n if (['string'].includes(typeof dataValue)) {\n newValue = templateValue.replace(new RegExp(item), dataValue)\n }\n\n set(template, key, newValue)\n }\n }\n }\n\n recursiveReplace(data: object, template: any): object {\n for (let key of Object.keys(template)) {\n let value = template[key]\n\n if (isPlainObject(value)) {\n this.recursiveReplace(data, value)\n } else if (isArray(value)) {\n value.map((item) => this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer"],"names":["DryReplacer","constructor","data","this","replaceValue","key","value","template","matchedArray","String","match","item","reverse","patternKey","replace","templateValue","get","dataValue","newValue","includes","set","recursiveReplace","Object","keys","isPlainObject","isArray","map","try","jsonToParse","JSON","parse"],"mappings":"sHAKA,MAAiBA,EAGfC,YAAYC,GAFZA,KAAAA,YAGEC,KAAKD,KAAOA,CACd,CAEAE,aAAaC,EAAaC,EAAYJ,EAAcK,GAClD,IAAIC,EAAeC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAK,IAAQG,KAAgBH,EAACI,UAAW,CACvC,IAAIC,EAAaF,EAAKG,QAAQ,QAAS,IACnCC,EAAgBC,EAAIT,EAAUF,GACrBY,EAAGD,EAAId,EAAMW,GACdK,EAAGD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAAcD,QAAQ,WAAWH,GAAOM,IAGrDG,EAAIb,EAAUF,EAAKa,EACpB,CAEL,CAEAG,iBAAiBnB,EAAcK,GAC7B,IAAK,IAAIF,KAAOiB,OAAOC,KAAKhB,GAAW,CACrC,IAAID,EAAQC,EAASF,GAEjBmB,EAAclB,GAChBH,KAAKkB,iBAAiBnB,EAAMI,GACnBmB,EAAQnB,GACjBA,EAAMoB,IAAKf,GAASR,KAAKkB,iBAAiBnB,EAAMS,IAEhDR,KAAKC,aAAaC,EAAKC,EAAOJ,EAAMK,EAEvC,CACD,OAAOA,CACT,CAEAoB,IAAIC,GACF,IAAIrB,EAAWsB,KAAKC,MAAMF,GAG1B,OAFAzB,KAAKkB,iBAAiBlB,KAAKD,KAAMK,GAE1BA,CACT"} \ No newline at end of file +{"version":3,"file":"index.modern.mjs","sources":["../src/index.ts"],"sourcesContent":["import get from 'lodash.get'\nimport set from 'lodash.set'\nimport isArray from 'lodash.isarray'\nimport isPlainObject from 'lodash.isplainobject'\n\nclass DryReplacer {\n data: object\n\n constructor(data: object) {\n this.data = data\n }\n\n replaceValue(key: string, value: any, data: object, template: object): void {\n let matchedArray = String(value).match(/{{.*?}}/g) // extract only {{}} pattern\n\n if (matchedArray) {\n for (let item of matchedArray.reverse()) {\n let patternKey = item.replace(/[{}]/g, '')\n let spotting = get(template, key)\n\n let valueFromData = get(data, patternKey)\n let newValue = valueFromData\n\n if (['string'].includes(typeof valueFromData)) {\n newValue = spotting.replace(item, valueFromData)\n }\n\n set(template, key, newValue)\n }\n }\n }\n\n recursiveReplace(data: object, template: any): object {\n for (let key of Object.keys(template)) {\n let value = template[key]\n\n if (isPlainObject(value)) {\n this.recursiveReplace(data, value)\n } else if (isArray(value)) {\n value.map((item) => this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer\n"],"names":["DryReplacer","constructor","data","this","replaceValue","key","value","template","matchedArray","String","match","item","reverse","patternKey","replace","spotting","get","valueFromData","newValue","includes","set","recursiveReplace","Object","keys","isPlainObject","isArray","map","try","jsonToParse","JSON","parse"],"mappings":"sHAKA,MAAiBA,EAGfC,YAAYC,GAFZA,KAAAA,YAGEC,KAAKD,KAAOA,CACd,CAEAE,aAAaC,EAAaC,EAAYJ,EAAcK,GAClD,IAAgBC,EAAGC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAK,IAAIG,KAAQH,EAAaI,UAAW,CACvC,IAAcC,EAAGF,EAAKG,QAAQ,QAAS,IAC3BC,EAAGC,EAAIT,EAAUF,GAEzBY,EAAgBD,EAAId,EAAMW,GAC1BK,EAAWD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAASD,QAAQH,EAAMM,IAGpCG,EAAIb,EAAUF,EAAKa,EACpB,CAEL,CAEAG,iBAAiBnB,EAAcK,GAC7B,IAAK,IAAIF,KAAOiB,OAAOC,KAAKhB,GAAW,CACrC,IAAID,EAAQC,EAASF,GAEjBmB,EAAclB,GAChBH,KAAKkB,iBAAiBnB,EAAMI,GACnBmB,EAAQnB,GACjBA,EAAMoB,IAAKf,GAASR,KAAKkB,iBAAiBnB,EAAMS,IAEhDR,KAAKC,aAAaC,EAAKC,EAAOJ,EAAMK,EAEvC,CACD,OAAOA,CACT,CAEAoB,IAAIC,GACF,IAAIrB,EAAWsB,KAAKC,MAAMF,GAG1B,OAFAzB,KAAKkB,iBAAiBlB,KAAKD,KAAMK,GAE1BA,CACT"} \ No newline at end of file diff --git a/dist/index.umd.js b/dist/index.umd.js index 02f6163..ef0bba4 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -1,3 +1,3 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("lodash.get"),require("lodash.set"),require("lodash.isarray"),require("lodash.isplainobject")):"function"==typeof define&&define.amd?define(["lodash.get","lodash.set","lodash.isarray","lodash.isplainobject"],t):(e||self).dryReplacerJs=t(e.get,e.set,e.isArray,e.isPlainObject)}(this,function(e,t,r,n){function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/a(e),i=/*#__PURE__*/a(t),l=/*#__PURE__*/a(r),u=/*#__PURE__*/a(n);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(a.reverse());!(l=u()).done;){var c=l.value,f=c.replace(/[{}]/g,""),d=o.default(n,e),p=o.default(r,f),h=p;["string"].includes(typeof p)&&(h=d.replace(new RegExp(c),p)),i.default(n,e,h)}},t.recursiveReplace=function(e,t){for(var r=this,n=0,a=Object.keys(t);n=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(a.reverse());!(l=u()).done;){var c=l.value,f=c.replace(/[{}]/g,""),d=o.default(n,e),p=o.default(r,f),h=p;["string"].includes(typeof p)&&(h=d.replace(c,p)),i.default(n,e,h)}},t.recursiveReplace=function(e,t){for(var r=this,n=0,a=Object.keys(t);n this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer"],"names":["DryReplacer","data","this","replaceValue","key","value","template","matchedArray","String","match","_step","reverse","_iterator","done","item","patternKey","replace","templateValue","get","dataValue","newValue","includes","RegExp","set","recursiveReplace","_this","Object","keys","_i","_Object$keys","length","isPlainObject","isArray","map","_proto","jsonToParse","JSON","parse"],"mappings":";OAQE,WAAA,SAAAA,EAAYC,GAFZA,KAAAA,UAGE,EAAAC,KAAKD,KAAOA,CACd,CAAC,IAEDE,EAAAA,EAAAA,UAuCC,OAvCDA,EAAAA,aAAA,SAAaC,EAAaC,EAAYJ,EAAcK,GAClD,IAAIC,EAAeC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAiBA,IAAsBG,EAAtBH,2qBAAAA,CAAAA,EAAaI,aAASD,EAAAE,KAAAC,MAAE,CAAhCC,IAAAA,EACPJ,EAAAL,MAAcU,EAAGD,EAAKE,QAAQ,QAAS,IACnCC,EAAgBC,UAAIZ,EAAUF,GAC9Be,EAAYD,EAAAA,QAAIjB,EAAMc,GACdK,EAAGD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAAcD,QAAQ,IAAUM,OAACR,GAAOK,IAGrDI,EAAAA,QAAIjB,EAAUF,EAAKgB,EACpB,CAEL,IAEAI,iBAAA,SAAiBvB,EAAcK,GAC7B,IAD0C,IAAAmB,EAAAvB,KAC1BwB,EAAAA,EAAAA,EAAAA,OAAOC,KAAKrB,GAASsB,EAAAC,EAAAC,OAAAF,IAAE,CAAlC,IAAIxB,EACPyB,EAAAD,GAASvB,EAAGC,EAASF,GAEjB2B,UAAc1B,GAChBH,KAAKsB,iBAAiBvB,EAAMI,GACnB2B,EAAO,QAAC3B,GACjBA,EAAM4B,IAAI,SAACnB,GAAI,OAASW,EAACD,iBAAiBvB,EAAMa,EAAK,GAErDZ,KAAKC,aAAaC,EAAKC,EAAOJ,EAAMK,EAEvC,CACD,OAAOA,CACT,EAAC4B,EAAA,IAED,SAAIC,GACF,IAAI7B,EAAW8B,KAAKC,MAAMF,GAG1B,OAFAjC,KAAKsB,iBAAiBtB,KAAKD,KAAMK,GAE1BA,CACT,EAACN,CAAA,CA3CD"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":["import get from 'lodash.get'\nimport set from 'lodash.set'\nimport isArray from 'lodash.isarray'\nimport isPlainObject from 'lodash.isplainobject'\n\nclass DryReplacer {\n data: object\n\n constructor(data: object) {\n this.data = data\n }\n\n replaceValue(key: string, value: any, data: object, template: object): void {\n let matchedArray = String(value).match(/{{.*?}}/g) // extract only {{}} pattern\n\n if (matchedArray) {\n for (let item of matchedArray.reverse()) {\n let patternKey = item.replace(/[{}]/g, '')\n let spotting = get(template, key)\n\n let valueFromData = get(data, patternKey)\n let newValue = valueFromData\n\n if (['string'].includes(typeof valueFromData)) {\n newValue = spotting.replace(item, valueFromData)\n }\n\n set(template, key, newValue)\n }\n }\n }\n\n recursiveReplace(data: object, template: any): object {\n for (let key of Object.keys(template)) {\n let value = template[key]\n\n if (isPlainObject(value)) {\n this.recursiveReplace(data, value)\n } else if (isArray(value)) {\n value.map((item) => this.recursiveReplace(data, item))\n } else {\n this.replaceValue(key, value, data, template)\n }\n }\n return template\n }\n\n try(jsonToParse: string): object {\n let template = JSON.parse(jsonToParse)\n this.recursiveReplace(this.data, template)\n\n return template\n }\n}\n\nexport default DryReplacer\n"],"names":["data","this","_proto","DryReplacer","prototype","replaceValue","key","value","template","matchedArray","String","match","_step","_iterator","_createForOfIteratorHelperLoose","reverse","done","item","patternKey","replace","spotting","get","valueFromData","newValue","includes","set","recursiveReplace","_this","_i","_Object$keys","Object","keys","length","isPlainObject","isArray","map","jsonToParse","JSON","parse"],"mappings":";OAKiB,WAGf,SAAYA,EAAAA,GAAYC,KAFxBD,UAAI,EAGFC,KAAKD,KAAOA,CACd,CAAC,IAAAE,EAAAC,EAAAC,UA0CA,OA1CAF,EAEDG,aAAA,SAAaC,EAAaC,EAAYP,EAAcQ,GAClD,IAAgBC,EAAGC,OAAOH,GAAOI,MAAM,YAEvC,GAAIF,EACF,IAAA,IAAyCG,EAAzCC,2qBAAAC,CAAiBL,EAAaM,aAAWH,EAAAC,KAAAG,MAAA,CAAA,IAA5BC,EAAAL,EAAAL,MACPW,EAAaD,EAAKE,QAAQ,QAAS,IACnCC,EAAWC,EAAAA,QAAIb,EAAUF,GAEZgB,EAAGD,EAAG,QAACrB,EAAMkB,GAClBK,EAAGD,EAEX,CAAC,UAAUE,gBAAgBF,KAC7BC,EAAWH,EAASD,QAAQF,EAAMK,IAGpCG,UAAIjB,EAAUF,EAAKiB,EACpB,CAEL,EAEAG,EAAAA,iBAAA,SAAiB1B,EAAcQ,GAC7B,IAAA,IAAAmB,EAAA1B,KAAA2B,EAAA,EAAAC,EAAgBC,OAAOC,KAAKvB,GAAWoB,EAAAC,EAAAG,OAAAJ,IAAA,CAAlC,IAAOtB,EAAAuB,EAAAD,GACNrB,EAAQC,EAASF,GAEjB2B,EAAAA,QAAc1B,GAChBN,KAAKyB,iBAAiB1B,EAAMO,GACnB2B,UAAQ3B,GACjBA,EAAM4B,IAAI,SAAClB,GAAS,OAAAU,EAAKD,iBAAiB1B,EAAMiB,EAAK,GAErDhB,KAAKI,aAAaC,EAAKC,EAAOP,EAAMQ,EAEvC,CACD,OAAOA,CACT,EAACN,EAAA,IAED,SAAIkC,GACF,IAAI5B,EAAW6B,KAAKC,MAAMF,GAG1B,OAFAnC,KAAKyB,iBAAiBzB,KAAKD,KAAMQ,GAE1BA,CACT,EAACL,CAAA,CA/Cc"} \ No newline at end of file diff --git a/spec/replacer.test.ts b/spec/replacer.spec.ts similarity index 63% rename from spec/replacer.test.ts rename to spec/replacer.spec.ts index 5114b87..c492677 100644 --- a/spec/replacer.test.ts +++ b/spec/replacer.spec.ts @@ -1,4 +1,4 @@ -import dryreplacer from '../' +import dryreplacer from '../src' const data = { id: 1, @@ -40,87 +40,86 @@ const data = { describe('DryReplacer', () => { describe('root replaces', () => { - test('fixed value', () => { let template = { code: 'fixedvalue', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['code']).toBe('fixedvalue') }) - + test('number value', () => { let template = { id: '{{id}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['id']).toBe(1) }) - + test('string value', () => { let template = { name: '{{name}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['name']).toBe('test') }) - + test('boolean value', () => { let template = { bool: '{{bool}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['bool']).toBe(true) }) - + test('value inside str', () => { let template = { name: 'Name ({{name}})', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['name']).toBe('Name (test)') }) - + test('full object', () => { let template = { obj: '{{obj}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) expect(result['obj']).toMatchObject(data.obj) }) - + test('full list values', () => { let template = { list: '{{list}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) expect(result['list']).toEqual(expect.arrayContaining(['a', 'b', 'c'])) }) - + test('full list of object', () => { let template = { list: '{{listobjs}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) expect(result['list']).toMatchObject(data.listobjs) @@ -134,79 +133,161 @@ describe('DryReplacer', () => { name: '{{obj.name}}', list: '{{obj.list}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['id']).toBe(1) expect(result['name']).toBe('obj') expect(result['list']).toEqual(expect.arrayContaining(['a', 'b', 'c'])) }) - + test('list obj 1 attributes', () => { let template = { id: '{{listobjs.0.id}}', name: '{{listobjs.0.name}}', list: '{{listobjs.0.list}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['id']).toBe(1) expect(result['name']).toBe('obj1') expect(result['list']).toEqual(expect.arrayContaining(['a', 'b', 'c'])) }) - + test('complex obj 1 attributes', () => { let template = { id: '{{complex.0.obj.id}}', name: '{{complex.0.obj.name}}', obj: '{{complex.0.obj}}', } - + const replacer = new dryreplacer(data) let result = replacer.try(JSON.stringify(template)) - + expect(result['id']).toBe(999) expect(result['name']).toBe('complex') expect(result['obj']).toMatchObject(data.complex[0].obj) }) }) - describe('dont remove space between words', () => { + describe('dont remove space between words', () => { test('it should be return space between words', () => { const webhook = { ticket: [ { - "source": "call", - "attribute": "outbound_calls.extension", - "label": "Ramal do atendente" + source: 'call', + attribute: 'outbound_calls.extension', + label: 'Ramal do atendente', }, { - "source": "call", - "attribute": "outbound_calls.duration", - "label": "Duração do atendimento" + source: 'call', + attribute: 'outbound_calls.duration', + label: 'Duração do atendimento', }, { - "source": "call", - "attribute": "post_attendances.digits", - "label": "Nota da pesquisa - Avaliação da URA" - } - ] + source: 'call', + attribute: 'post_attendances.digits', + label: 'Nota da pesquisa - Avaliação da URA', + }, + ], } let template = { first_ticket_label: '{{ticket.0.label}}', - last_ticket_label: '{{ticket.2.label}}' - } - + last_ticket_label: '{{ticket.2.label}}', + } + const replacer = new dryreplacer(webhook) let result = replacer.try(JSON.stringify(template)) expect(result).toMatchObject({ first_ticket_label: 'Ramal do atendente', - last_ticket_label: 'Nota da pesquisa - Avaliação da URA' + last_ticket_label: 'Nota da pesquisa - Avaliação da URA', + }) + }) + }) + + describe('get values on nested arrays values', () => { + it('should be return one value reference to array index', () => { + const webhook = { + variables: { + var: ['index0', 'index1'], + }, + } + + let template = { + first_index: '{{variables.var.0}}', + second_index: '{{variables.var.1}}', + } + + const replacer = new dryreplacer(webhook) + let result = replacer.try(JSON.stringify(template)) + + expect(result).toMatchObject({ + first_index: 'index0', + second_index: 'index1', + }) + }) + + it('should be return one value reference to array index', () => { + const webhook = { + variables: { + var: ['index0', 'index1'], + }, + } + + let template = { + first_index: '{{variables.var[0]}}', + second_index: '{{variables.var[1]}}', + } + + const replacer = new dryreplacer(webhook) + let result = replacer.try(JSON.stringify(template)) + + expect(result).toMatchObject({ + first_index: 'index0', + second_index: 'index1', + }) + }) + + it('should be return one value reference to array index', () => { + const webhook = { + variables: { + var: ['index0', 'index1'], + }, + } + + let template = { + base_index: '{{variables.var.0}} - {{variables.var.[1]}}', + } + + const replacer = new dryreplacer(webhook) + let result = replacer.try(JSON.stringify(template)) + + expect(result).toMatchObject({ + base_index: 'index0 - index1', + }) + }) + + it('should be return one value reference to array index', () => { + const webhook = { + variables: { + var: ['index0', 'index1'], + }, + } + + let template = { + base_index: '{{variables.var[1]}} - {{variables.var.0}}', + } + + const replacer = new dryreplacer(webhook) + let result = replacer.try(JSON.stringify(template)) + + expect(result).toMatchObject({ + base_index: 'index1 - index0', }) }) }) diff --git a/src/index.ts b/src/index.ts index c7b7196..511d8ac 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,17 +11,18 @@ class DryReplacer { } replaceValue(key: string, value: any, data: object, template: object): void { - let matchedArray = String(value).match(/{{.*?}}/g) - + let matchedArray = String(value).match(/{{.*?}}/g) // extract only {{}} pattern + if (matchedArray) { for (let item of matchedArray.reverse()) { let patternKey = item.replace(/[{}]/g, '') - let templateValue = get(template, key) - let dataValue = get(data, patternKey) - let newValue = dataValue + let spotting = get(template, key) + + let valueFromData = get(data, patternKey) + let newValue = valueFromData - if (['string'].includes(typeof dataValue)) { - newValue = templateValue.replace(new RegExp(item), dataValue) + if (['string'].includes(typeof valueFromData)) { + newValue = spotting.replace(item, valueFromData) } set(template, key, newValue) @@ -52,4 +53,4 @@ class DryReplacer { } } -export default DryReplacer \ No newline at end of file +export default DryReplacer diff --git a/yarn.lock b/yarn.lock index 8b769b6..92caf77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -984,7 +984,7 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7": version "7.20.13" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== @@ -1037,61 +1037,61 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.4.1.tgz#cbc31d73f6329f693b3d34b365124de797704fff" - integrity sha512-m+XpwKSi3PPM9znm5NGS8bBReeAJJpSkL1OuFCqaMaJL2YX9YXLkkI+MBchMPwu+ZuM2rynL51sgfkQteQ1CKQ== +"@jest/console@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.2.tgz#bf1d4101347c23e07c029a1b1ae07d550f5cc541" + integrity sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w== dependencies: - "@jest/types" "^29.4.1" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.4.1" - jest-util "^29.4.1" + jest-message-util "^29.6.2" + jest-util "^29.6.2" slash "^3.0.0" -"@jest/core@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.4.1.tgz#91371179b5959951e211dfaeea4277a01dcca14f" - integrity sha512-RXFTohpBqpaTebNdg5l3I5yadnKo9zLBajMT0I38D0tDhreVBYv3fA8kywthI00sWxPztWLD3yjiUkewwu/wKA== +"@jest/core@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.2.tgz#6f2d1dbe8aa0265fcd4fb8082ae1952f148209c8" + integrity sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg== dependencies: - "@jest/console" "^29.4.1" - "@jest/reporters" "^29.4.1" - "@jest/test-result" "^29.4.1" - "@jest/transform" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/console" "^29.6.2" + "@jest/reporters" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.4.0" - jest-config "^29.4.1" - jest-haste-map "^29.4.1" - jest-message-util "^29.4.1" - jest-regex-util "^29.2.0" - jest-resolve "^29.4.1" - jest-resolve-dependencies "^29.4.1" - jest-runner "^29.4.1" - jest-runtime "^29.4.1" - jest-snapshot "^29.4.1" - jest-util "^29.4.1" - jest-validate "^29.4.1" - jest-watcher "^29.4.1" + jest-changed-files "^29.5.0" + jest-config "^29.6.2" + jest-haste-map "^29.6.2" + jest-message-util "^29.6.2" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.2" + jest-resolve-dependencies "^29.6.2" + jest-runner "^29.6.2" + jest-runtime "^29.6.2" + jest-snapshot "^29.6.2" + jest-util "^29.6.2" + jest-validate "^29.6.2" + jest-watcher "^29.6.2" micromatch "^4.0.4" - pretty-format "^29.4.1" + pretty-format "^29.6.2" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.4.1.tgz#52d232a85cdc995b407a940c89c86568f5a88ffe" - integrity sha512-pJ14dHGSQke7Q3mkL/UZR9ZtTOxqskZaC91NzamEH4dlKRt42W+maRBXiw/LWkdJe+P0f/zDR37+SPMplMRlPg== +"@jest/environment@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.2.tgz#794c0f769d85e7553439d107d3f43186dc6874a9" + integrity sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q== dependencies: - "@jest/fake-timers" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/fake-timers" "^29.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" - jest-mock "^29.4.1" + jest-mock "^29.6.2" "@jest/expect-utils@^29.4.1": version "29.4.1" @@ -1100,47 +1100,54 @@ dependencies: jest-get-type "^29.2.0" -"@jest/expect@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.4.1.tgz#3338fa20f547bb6e550c4be37d6f82711cc13c38" - integrity sha512-ZxKJP5DTUNF2XkpJeZIzvnzF1KkfrhEF6Rz0HGG69fHl6Bgx5/GoU3XyaeFYEjuuKSOOsbqD/k72wFvFxc3iTw== +"@jest/expect-utils@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.2.tgz#1b97f290d0185d264dd9fdec7567a14a38a90534" + integrity sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg== dependencies: - expect "^29.4.1" - jest-snapshot "^29.4.1" + jest-get-type "^29.4.3" -"@jest/fake-timers@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.4.1.tgz#7b673131e8ea2a2045858f08241cace5d518b42b" - integrity sha512-/1joI6rfHFmmm39JxNfmNAO3Nwm6Y0VoL5fJDy7H1AtWrD1CgRtqJbN9Ld6rhAkGO76qqp4cwhhxJ9o9kYjQMw== +"@jest/expect@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.2.tgz#5a2ad58bb345165d9ce0a1845bbf873c480a4b28" + integrity sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg== dependencies: - "@jest/types" "^29.4.1" + expect "^29.6.2" + jest-snapshot "^29.6.2" + +"@jest/fake-timers@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.2.tgz#fe9d43c5e4b1b901168fe6f46f861b3e652a2df4" + integrity sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA== + dependencies: + "@jest/types" "^29.6.1" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.4.1" - jest-mock "^29.4.1" - jest-util "^29.4.1" + jest-message-util "^29.6.2" + jest-mock "^29.6.2" + jest-util "^29.6.2" -"@jest/globals@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.4.1.tgz#3cd78c5567ab0249f09fbd81bf9f37a7328f4713" - integrity sha512-znoK2EuFytbHH0ZSf2mQK2K1xtIgmaw4Da21R2C/NE/+NnItm5mPEFQmn8gmF3f0rfOlmZ3Y3bIf7bFj7DHxAA== +"@jest/globals@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.2.tgz#74af81b9249122cc46f1eb25793617eec69bf21a" + integrity sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw== dependencies: - "@jest/environment" "^29.4.1" - "@jest/expect" "^29.4.1" - "@jest/types" "^29.4.1" - jest-mock "^29.4.1" + "@jest/environment" "^29.6.2" + "@jest/expect" "^29.6.2" + "@jest/types" "^29.6.1" + jest-mock "^29.6.2" -"@jest/reporters@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.4.1.tgz#50d509c08575c75e3cd2176d72ec3786419d5e04" - integrity sha512-AISY5xpt2Xpxj9R6y0RF1+O6GRy9JsGa8+vK23Lmzdy1AYcpQn5ItX79wJSsTmfzPKSAcsY1LNt/8Y5Xe5LOSg== +"@jest/reporters@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.2.tgz#524afe1d76da33d31309c2c4a2c8062d0c48780a" + integrity sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.4.1" - "@jest/test-result" "^29.4.1" - "@jest/transform" "^29.4.1" - "@jest/types" "^29.4.1" - "@jridgewell/trace-mapping" "^0.3.15" + "@jest/console" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1152,9 +1159,9 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.4.1" - jest-util "^29.4.1" - jest-worker "^29.4.1" + jest-message-util "^29.6.2" + jest-util "^29.6.2" + jest-worker "^29.6.2" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" @@ -1167,55 +1174,62 @@ dependencies: "@sinclair/typebox" "^0.25.16" -"@jest/source-map@^29.2.0": - version "29.2.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" - integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== +"@jest/schemas@^29.6.0": + version "29.6.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" + integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.0": + version "29.6.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.0.tgz#bd34a05b5737cb1a99d43e1957020ac8e5b9ddb1" + integrity sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA== dependencies: - "@jridgewell/trace-mapping" "^0.3.15" + "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.4.1.tgz#997f19695e13b34779ceb3c288a416bd26c3238d" - integrity sha512-WRt29Lwt+hEgfN8QDrXqXGgCTidq1rLyFqmZ4lmJOpVArC8daXrZWkWjiaijQvgd3aOUj2fM8INclKHsQW9YyQ== +"@jest/test-result@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.2.tgz#fdd11583cd1608e4db3114e8f0cce277bf7a32ed" + integrity sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw== dependencies: - "@jest/console" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/console" "^29.6.2" + "@jest/types" "^29.6.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.4.1.tgz#f7a006ec7058b194a10cf833c88282ef86d578fd" - integrity sha512-v5qLBNSsM0eHzWLXsQ5fiB65xi49A3ILPSFQKPXzGL4Vyux0DPZAIN7NAFJa9b4BiTDP9MBF/Zqc/QA1vuiJ0w== +"@jest/test-sequencer@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.2.tgz#585eff07a68dd75225a7eacf319780cb9f6b9bf4" + integrity sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw== dependencies: - "@jest/test-result" "^29.4.1" + "@jest/test-result" "^29.6.2" graceful-fs "^4.2.9" - jest-haste-map "^29.4.1" + jest-haste-map "^29.6.2" slash "^3.0.0" -"@jest/transform@^29.4.1": - version "29.4.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.4.1.tgz#e4f517841bb795c7dcdee1ba896275e2c2d26d4a" - integrity sha512-5w6YJrVAtiAgr0phzKjYd83UPbCXsBRTeYI4BXokv9Er9CcrH9hfXL/crCvP2d2nGOcovPUnlYiLPFLZrkG5Hg== +"@jest/transform@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.2.tgz#522901ebbb211af08835bc3bcdf765ab778094e3" + integrity sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.4.1" - "@jridgewell/trace-mapping" "^0.3.15" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.4.1" - jest-regex-util "^29.2.0" - jest-util "^29.4.1" + jest-haste-map "^29.6.2" + jest-regex-util "^29.4.3" + jest-util "^29.6.2" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - write-file-atomic "^5.0.0" + write-file-atomic "^4.0.2" "@jest/types@^29.4.1": version "29.4.1" @@ -1229,6 +1243,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" + integrity sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw== + dependencies: + "@jest/schemas" "^29.6.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -1277,7 +1303,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -1285,6 +1311,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@rollup/plugin-alias@^3.1.1": version "3.1.9" resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz#a5d267548fe48441f34be8323fb64d1d4a1b3fdf" @@ -1354,6 +1388,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.21.tgz#763b05a4b472c93a8db29b2c3e359d55b29ce272" integrity sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g== +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + "@sinonjs/commons@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" @@ -1528,11 +1567,6 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prettier@^2.1.5": - version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -1660,15 +1694,15 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -babel-jest@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.4.1.tgz#01fa167e27470b35c2d4a1b841d9586b1764da19" - integrity sha512-xBZa/pLSsF/1sNpkgsiT3CmY7zV1kAsZ9OxxtrFqYucnOuRftXAfcJqcDVyOPeN4lttWTwhLdu0T9f8uvoPEUg== +babel-jest@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.2.tgz#cada0a59e07f5acaeb11cbae7e3ba92aec9c1126" + integrity sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A== dependencies: - "@jest/transform" "^29.4.1" + "@jest/transform" "^29.6.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.4.0" + babel-preset-jest "^29.5.0" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -1684,10 +1718,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.4.0: - version "29.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.0.tgz#3fd3dfcedf645932df6d0c9fc3d9a704dd860248" - integrity sha512-a/sZRLQJEmsmejQ2rPEUe35nO1+C9dc9O1gplH1SXmJxveQSRUYdBk8yGZG/VOUuZs1u2aHZJusEGoRMbhhwCg== +babel-plugin-jest-hoist@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" + integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -1757,12 +1791,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.4.0: - version "29.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.4.0.tgz#c2b03c548b02dea0a18ae21d5759c136f9251ee4" - integrity sha512-fUB9vZflUSM3dO/6M2TCAepTzvA4VkOvl67PjErcrQMGt9Eve7uazaeyCZ2th3UtI7ljpiBJES0F7A1vBRsLZA== +babel-preset-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" + integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== dependencies: - babel-plugin-jest-hoist "^29.4.0" + babel-plugin-jest-hoist "^29.5.0" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -2131,10 +2165,10 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== deepmerge@^4.2.2: version "4.3.0" @@ -2164,6 +2198,11 @@ diff-sequences@^29.3.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -2370,7 +2409,7 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.0.0, expect@^29.4.1: +expect@^29.0.0: version "29.4.1" resolved "https://registry.yarnpkg.com/expect/-/expect-29.4.1.tgz#58cfeea9cbf479b64ed081fd1e074ac8beb5a1fe" integrity sha512-OKrGESHOaMxK3b6zxIq9SOW8kEXztKff/Dvg88j4xIJxur1hspEbedVkR3GpHe5LO+WB2Qw7OWN0RMTdp6as5A== @@ -2381,6 +2420,18 @@ expect@^29.0.0, expect@^29.4.1: jest-message-util "^29.4.1" jest-util "^29.4.1" +expect@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.2.tgz#7b08e83eba18ddc4a2cf62b5f2d1918f5cd84521" + integrity sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA== + dependencies: + "@jest/expect-utils" "^29.6.2" + "@types/node" "*" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.6.2" + jest-message-util "^29.6.2" + jest-util "^29.6.2" + fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -2942,82 +2993,83 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^29.4.0: - version "29.4.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.4.0.tgz#ac2498bcd394228f7eddcadcf928b3583bf2779d" - integrity sha512-rnI1oPxgFghoz32Y8eZsGJMjW54UlqT17ycQeCEktcxxwqqKdlj9afl8LNeO0Pbu+h2JQHThQP0BzS67eTRx4w== +jest-changed-files@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== dependencies: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.4.1.tgz#ff1b63eb04c3b111cefea9489e8dbadd23ce49bd" - integrity sha512-v02NuL5crMNY4CGPHBEflLzl4v91NFb85a+dH9a1pUNx6Xjggrd8l9pPy4LZ1VYNRXlb+f65+7O/MSIbLir6pA== +jest-circus@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.2.tgz#1e6ffca60151ac66cad63fce34f443f6b5bb4258" + integrity sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw== dependencies: - "@jest/environment" "^29.4.1" - "@jest/expect" "^29.4.1" - "@jest/test-result" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/environment" "^29.6.2" + "@jest/expect" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - dedent "^0.7.0" + dedent "^1.0.0" is-generator-fn "^2.0.0" - jest-each "^29.4.1" - jest-matcher-utils "^29.4.1" - jest-message-util "^29.4.1" - jest-runtime "^29.4.1" - jest-snapshot "^29.4.1" - jest-util "^29.4.1" + jest-each "^29.6.2" + jest-matcher-utils "^29.6.2" + jest-message-util "^29.6.2" + jest-runtime "^29.6.2" + jest-snapshot "^29.6.2" + jest-util "^29.6.2" p-limit "^3.1.0" - pretty-format "^29.4.1" + pretty-format "^29.6.2" + pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.4.1.tgz#7abef96944f300feb9b76f68b1eb2d68774fe553" - integrity sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ== +jest-cli@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.2.tgz#edb381763398d1a292cd1b636a98bfa5644b8fda" + integrity sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q== dependencies: - "@jest/core" "^29.4.1" - "@jest/test-result" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/core" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/types" "^29.6.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.4.1" - jest-util "^29.4.1" - jest-validate "^29.4.1" + jest-config "^29.6.2" + jest-util "^29.6.2" + jest-validate "^29.6.2" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.4.1.tgz#e62670c6c980ec21d75941806ec4d0c0c6402728" - integrity sha512-g7p3q4NuXiM4hrS4XFATTkd+2z0Ml2RhFmFPM8c3WyKwVDNszbl4E7cV7WIx1YZeqqCtqbtTtZhGZWJlJqngzg== +jest-config@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.2.tgz#c68723f06b31ca5e63030686e604727d406cd7c3" + integrity sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.4.1" - "@jest/types" "^29.4.1" - babel-jest "^29.4.1" + "@jest/test-sequencer" "^29.6.2" + "@jest/types" "^29.6.1" + babel-jest "^29.6.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.4.1" - jest-environment-node "^29.4.1" - jest-get-type "^29.2.0" - jest-regex-util "^29.2.0" - jest-resolve "^29.4.1" - jest-runner "^29.4.1" - jest-util "^29.4.1" - jest-validate "^29.4.1" + jest-circus "^29.6.2" + jest-environment-node "^29.6.2" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.2" + jest-runner "^29.6.2" + jest-util "^29.6.2" + jest-validate "^29.6.2" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.4.1" + pretty-format "^29.6.2" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -3031,67 +3083,82 @@ jest-diff@^29.4.1: jest-get-type "^29.2.0" pretty-format "^29.4.1" -jest-docblock@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" - integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== +jest-diff@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.2.tgz#c36001e5543e82a0805051d3ceac32e6825c1c46" + integrity sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA== dependencies: - detect-newline "^3.0.0" + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.6.2" -jest-each@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.4.1.tgz#05ce9979e7486dbd0f5d41895f49ccfdd0afce01" - integrity sha512-QlYFiX3llJMWUV0BtWht/esGEz9w+0i7BHwODKCze7YzZzizgExB9MOfiivF/vVT0GSQ8wXLhvHXh3x2fVD4QQ== +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== dependencies: - "@jest/types" "^29.4.1" - chalk "^4.0.0" - jest-get-type "^29.2.0" - jest-util "^29.4.1" - pretty-format "^29.4.1" + detect-newline "^3.0.0" -jest-environment-node@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.4.1.tgz#22550b7d0f8f0b16228639c9f88ca04bbf3c1974" - integrity sha512-x/H2kdVgxSkxWAIlIh9MfMuBa0hZySmfsC5lCsWmWr6tZySP44ediRKDUiNggX/eHLH7Cd5ZN10Rw+XF5tXsqg== +jest-each@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.2.tgz#c9e4b340bcbe838c73adf46b76817b15712d02ce" + integrity sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw== dependencies: - "@jest/environment" "^29.4.1" - "@jest/fake-timers" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/types" "^29.6.1" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.6.2" + pretty-format "^29.6.2" + +jest-environment-node@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.2.tgz#a9ea2cabff39b08eca14ccb32c8ceb924c8bb1ad" + integrity sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ== + dependencies: + "@jest/environment" "^29.6.2" + "@jest/fake-timers" "^29.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" - jest-mock "^29.4.1" - jest-util "^29.4.1" + jest-mock "^29.6.2" + jest-util "^29.6.2" jest-get-type@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== -jest-haste-map@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.4.1.tgz#b0579dc82d94b40ed9041af56ad25c2f80bedaeb" - integrity sha512-imTjcgfVVTvg02khXL11NNLTx9ZaofbAWhilrMg/G8dIkp+HYCswhxf0xxJwBkfhWb3e8dwbjuWburvxmcr58w== +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + +jest-haste-map@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.2.tgz#298c25ea5255cfad8b723179d4295cf3a50a70d1" + integrity sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA== dependencies: - "@jest/types" "^29.4.1" + "@jest/types" "^29.6.1" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^29.2.0" - jest-util "^29.4.1" - jest-worker "^29.4.1" + jest-regex-util "^29.4.3" + jest-util "^29.6.2" + jest-worker "^29.6.2" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.4.1.tgz#632186c546e084da2b490b7496fee1a1c9929637" - integrity sha512-akpZv7TPyGMnH2RimOCgy+hPmWZf55EyFUvymQ4LMsQP8xSPlZumCPtXGoDhFNhUE2039RApZkTQDKU79p/FiQ== +jest-leak-detector@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.2.tgz#e2b307fee78cab091c37858a98c7e1d73cdf5b38" + integrity sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ== dependencies: - jest-get-type "^29.2.0" - pretty-format "^29.4.1" + jest-get-type "^29.4.3" + pretty-format "^29.6.2" jest-matcher-utils@^29.4.1: version "29.4.1" @@ -3103,6 +3170,16 @@ jest-matcher-utils@^29.4.1: jest-get-type "^29.2.0" pretty-format "^29.4.1" +jest-matcher-utils@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz#39de0be2baca7a64eacb27291f0bd834fea3a535" + integrity sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ== + dependencies: + chalk "^4.0.0" + jest-diff "^29.6.2" + jest-get-type "^29.4.3" + pretty-format "^29.6.2" + jest-message-util@^29.4.1: version "29.4.1" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.1.tgz#522623aa1df9a36ebfdffb06495c7d9d19e8a845" @@ -3118,133 +3195,143 @@ jest-message-util@^29.4.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.4.1.tgz#a218a2abf45c99c501d4665207748a6b9e29afbd" - integrity sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ== +jest-message-util@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.2.tgz#af7adc2209c552f3f5ae31e77cf0a261f23dc2bb" + integrity sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ== dependencies: - "@jest/types" "^29.4.1" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.6.2" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.2.tgz#ef9c9b4d38c34a2ad61010a021866dad41ce5e00" + integrity sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg== + dependencies: + "@jest/types" "^29.6.1" "@types/node" "*" - jest-util "^29.4.1" + jest-util "^29.6.2" jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" - integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== -jest-resolve-dependencies@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.1.tgz#02420a2e055da105e5fca8218c471d8b9553c904" - integrity sha512-Y3QG3M1ncAMxfjbYgtqNXC5B595zmB6e//p/qpA/58JkQXu/IpLDoLeOa8YoYfsSglBKQQzNUqtfGJJT/qLmJg== +jest-resolve-dependencies@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.2.tgz#36435269b6672c256bcc85fb384872c134cc4cf2" + integrity sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w== dependencies: - jest-regex-util "^29.2.0" - jest-snapshot "^29.4.1" + jest-regex-util "^29.4.3" + jest-snapshot "^29.6.2" -jest-resolve@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.4.1.tgz#4c6bf71a07b8f0b79c5fdf4f2a2cf47317694c5e" - integrity sha512-j/ZFNV2lm9IJ2wmlq1uYK0Y/1PiyDq9g4HEGsNTNr3viRbJdV+8Lf1SXIiLZXFvyiisu0qUyIXGBnw+OKWkJwQ== +jest-resolve@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.2.tgz#f18405fe4b50159b7b6d85e81f6a524d22afb838" + integrity sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.4.1" + jest-haste-map "^29.6.2" jest-pnp-resolver "^1.2.2" - jest-util "^29.4.1" - jest-validate "^29.4.1" + jest-util "^29.6.2" + jest-validate "^29.6.2" resolve "^1.20.0" resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.4.1.tgz#57460d9ebb0eea2e27eeddca1816cf8537469661" - integrity sha512-8d6XXXi7GtHmsHrnaqBKWxjKb166Eyj/ksSaUYdcBK09VbjPwIgWov1VwSmtupCIz8q1Xv4Qkzt/BTo3ZqiCeg== +jest-runner@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.2.tgz#89e8e32a8fef24781a7c4c49cd1cb6358ac7fc01" + integrity sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w== dependencies: - "@jest/console" "^29.4.1" - "@jest/environment" "^29.4.1" - "@jest/test-result" "^29.4.1" - "@jest/transform" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/console" "^29.6.2" + "@jest/environment" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.2.0" - jest-environment-node "^29.4.1" - jest-haste-map "^29.4.1" - jest-leak-detector "^29.4.1" - jest-message-util "^29.4.1" - jest-resolve "^29.4.1" - jest-runtime "^29.4.1" - jest-util "^29.4.1" - jest-watcher "^29.4.1" - jest-worker "^29.4.1" + jest-docblock "^29.4.3" + jest-environment-node "^29.6.2" + jest-haste-map "^29.6.2" + jest-leak-detector "^29.6.2" + jest-message-util "^29.6.2" + jest-resolve "^29.6.2" + jest-runtime "^29.6.2" + jest-util "^29.6.2" + jest-watcher "^29.6.2" + jest-worker "^29.6.2" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.4.1.tgz#9a50f9c69d3a391690897c01b0bfa8dc5dd45808" - integrity sha512-UXTMU9uKu2GjYwTtoAw5rn4STxWw/nadOfW7v1sx6LaJYa3V/iymdCLQM6xy3+7C6mY8GfX22vKpgxY171UIoA== - dependencies: - "@jest/environment" "^29.4.1" - "@jest/fake-timers" "^29.4.1" - "@jest/globals" "^29.4.1" - "@jest/source-map" "^29.2.0" - "@jest/test-result" "^29.4.1" - "@jest/transform" "^29.4.1" - "@jest/types" "^29.4.1" +jest-runtime@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.2.tgz#692f25e387f982e89ab83270e684a9786248e545" + integrity sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg== + dependencies: + "@jest/environment" "^29.6.2" + "@jest/fake-timers" "^29.6.2" + "@jest/globals" "^29.6.2" + "@jest/source-map" "^29.6.0" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.4.1" - jest-message-util "^29.4.1" - jest-mock "^29.4.1" - jest-regex-util "^29.2.0" - jest-resolve "^29.4.1" - jest-snapshot "^29.4.1" - jest-util "^29.4.1" - semver "^7.3.5" + jest-haste-map "^29.6.2" + jest-message-util "^29.6.2" + jest-mock "^29.6.2" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.2" + jest-snapshot "^29.6.2" + jest-util "^29.6.2" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.4.1.tgz#5692210b3690c94f19317913d4082b123bd83dd9" - integrity sha512-l4iV8EjGgQWVz3ee/LR9sULDk2pCkqb71bjvlqn+qp90lFwpnulHj4ZBT8nm1hA1C5wowXLc7MGnw321u0tsYA== +jest-snapshot@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.2.tgz#9b431b561a83f2bdfe041e1cab8a6becdb01af9c" + integrity sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.4.1" - "@jest/transform" "^29.4.1" - "@jest/types" "^29.4.1" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" + "@jest/expect-utils" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.4.1" + expect "^29.6.2" graceful-fs "^4.2.9" - jest-diff "^29.4.1" - jest-get-type "^29.2.0" - jest-haste-map "^29.4.1" - jest-matcher-utils "^29.4.1" - jest-message-util "^29.4.1" - jest-util "^29.4.1" + jest-diff "^29.6.2" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.6.2" + jest-message-util "^29.6.2" + jest-util "^29.6.2" natural-compare "^1.4.0" - pretty-format "^29.4.1" - semver "^7.3.5" + pretty-format "^29.6.2" + semver "^7.5.3" jest-util@^29.4.1: version "29.4.1" @@ -3258,30 +3345,42 @@ jest-util@^29.4.1: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.4.1.tgz#0d5174510415083ec329d4f981bf6779211f17e9" - integrity sha512-qNZXcZQdIQx4SfUB/atWnI4/I2HUvhz8ajOSYUu40CSmf9U5emil8EDHgE7M+3j9/pavtk3knlZBDsgFvv/SWw== +jest-util@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.2.tgz#8a052df8fff2eebe446769fd88814521a517664d" + integrity sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w== dependencies: - "@jest/types" "^29.4.1" + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.2.tgz#25d972af35b2415b83b1373baf1a47bb266c1082" + integrity sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg== + dependencies: + "@jest/types" "^29.6.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.2.0" + jest-get-type "^29.4.3" leven "^3.1.0" - pretty-format "^29.4.1" + pretty-format "^29.6.2" -jest-watcher@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.4.1.tgz#6e3e2486918bd778849d4d6e67fd77b814f3e6ed" - integrity sha512-vFOzflGFs27nU6h8dpnVRER3O2rFtL+VMEwnG0H3KLHcllLsU8y9DchSh0AL/Rg5nN1/wSiQ+P4ByMGpuybaVw== +jest-watcher@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.2.tgz#77c224674f0620d9f6643c4cfca186d8893ca088" + integrity sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA== dependencies: - "@jest/test-result" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/test-result" "^29.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.13.1" - jest-util "^29.4.1" + jest-util "^29.6.2" string-length "^4.0.1" jest-worker@^26.2.1: @@ -3293,25 +3392,25 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.4.1.tgz#7cb4a99a38975679600305650f86f4807460aab1" - integrity sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ== +jest-worker@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.2.tgz#682fbc4b6856ad0aa122a5403c6d048b83f3fb44" + integrity sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ== dependencies: "@types/node" "*" - jest-util "^29.4.1" + jest-util "^29.6.2" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.4.1.tgz#bb34baca8e05901b49c02c62f1183a6182ea1785" - integrity sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg== +jest@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.6.2.tgz#3bd55b9fd46a161b2edbdf5f1d1bd0d1eab76c42" + integrity sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg== dependencies: - "@jest/core" "^29.4.1" - "@jest/types" "^29.4.1" + "@jest/core" "^29.6.2" + "@jest/types" "^29.6.1" import-local "^3.0.2" - jest-cli "^29.4.1" + jest-cli "^29.6.2" js-tokens@^4.0.0: version "4.0.0" @@ -4098,6 +4197,15 @@ pretty-format@^29.0.0, pretty-format@^29.4.1: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.2.tgz#3d5829261a8a4d89d8b9769064b29c50ed486a47" + integrity sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg== + dependencies: + "@jest/schemas" "^29.6.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + promise.series@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" @@ -4111,6 +4219,11 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +pure-rand@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" + integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -4324,10 +4437,10 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.5: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== +semver@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" @@ -4806,10 +4919,10 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.0.tgz#54303f117e109bf3d540261125c8ea5a7320fab0" - integrity sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w== +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7"