From 64afea64176f0a87770905d1477dd61360c11599 Mon Sep 17 00:00:00 2001 From: Clark Winkelmann Date: Tue, 9 Mar 2021 22:49:43 +0100 Subject: [PATCH] Update javascript dependencies --- js/dist/admin.js | 2 +- js/dist/admin.js.map | 2 +- js/package-lock.json | 1599 +++++++++++++++++++++++------------------- 3 files changed, 868 insertions(+), 735 deletions(-) diff --git a/js/dist/admin.js b/js/dist/admin.js index bc824c6..44ee965 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -1,2 +1,2 @@ -module.exports=function(t){var n={};function i(a){if(n[a])return n[a].exports;var e=n[a]={i:a,l:!1,exports:{}};return t[a].call(e.exports,e,e.exports,i),e.l=!0,e.exports}return i.m=t,i.c=n,i.d=function(t,n,a){i.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:a})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,n){if(1&n&&(t=i(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(i.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var e in t)i.d(a,e,function(n){return t[n]}.bind(null,e));return a},i.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(n,"a",n),n},i.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},i.p="",i(i.s=14)}([function(t,n){t.exports=flarum.core.compat.app},function(t,n){t.exports=flarum.core.compat["components/Button"]},function(t,n){t.exports=flarum.core.compat["components/Select"]},function(t,n){t.exports=flarum.core.compat.Model},function(t,n){t.exports=flarum.core.compat["utils/extractText"]},function(t,n){t.exports=flarum.core.compat["components/Switch"]},function(t,n){t.exports=flarum.core.compat["components/Dropdown"]},function(t,n){t.exports=flarum.core.compat["components/LoadingModal"]},function(t,n){t.exports=flarum.core.compat["components/ExtensionPage"]},function(t,n){t.exports=flarum.core.compat["components/LoadingIndicator"]},function(t,n){t.exports=flarum.core.compat["components/Alert"]},function(t,n){t.exports=flarum.core.compat["utils/ItemList"]},function(t,n){t.exports=flarum.core.compat["helpers/icon"]},function(t,n){t.exports=flarum.core.compat["components/LinkButton"]},function(t,n,i){"use strict";i.r(n);var a=i(0),e=i.n(a);function o(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function r(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function s(t,n,i){return n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,t}var l=i(3),c=i.n(l),u=function(t){function n(){for(var n,i=arguments.length,a=new Array(i),e=0;e$&").split("").map((function(t){return t.toLowerCase()===i?m("span.FoF-Linguist-Highlight",t):t}))},I=function(){function t(){}var n=t.prototype;return n.oninit=function(t){var n=this;this.stringKey=t.attrs.stringKey,this.locale=t.attrs.locale,this.localeKey=this.locale?this.locale.key:null,this.originalString=this.localeKey&&this.stringKey.locales().hasOwnProperty(this.localeKey)?this.stringKey.locales()[this.localeKey]:null,this.string=e.a.store.all("fof-linguist-string").find((function(t){return t.key()===n.stringKey.key()&&t.locale()===n.localeKey})),this.value=this.string?this.string.value():"",this.dirty=!1,this.processing=!1;var i=Object.keys(this.stringKey.locales()).some((function(t){return-1!==n.stringKey.locales()[t].indexOf("\n")}));this.inputType="input",(i||-1!==this.value.indexOf("\n"))&&(this.inputType="textarea")},n.view=function(t){var n=this,i=this.originalString?this.originalString:"("+e.a.translator.trans("fof-linguist.admin.placeholder."+(this.localeKey?"not-translated":"all-locales"))+")";return m(".FoF-Linguist-Locale",[m("label.FoF-Linguist-Label",this.localeName()),m(".FoF-Linguist-Field",{className:(this.value?"FoF-Linguist-Field--with-value":"")+(this.originalString?" FoF-Linguist-Field--with-original-string":""),title:i},[m(".FoF-Linguist-Field-Wrap",[m(this.inputType,{className:"FormControl FoF-Linguist-Input",value:this.value,oninput:function(t){n.value=t.target.value,n.dirty=!0,n.value||n.string||(n.dirty=!1)},disabled:this.processing}),m(".FoF-Linguist-Placeholder",[m("span.FoF-Linguist-Placeholder-Hint",e.a.translator.trans("fof-linguist.admin.placeholder.hint"))," ",m("span",this.originalString?_(i,t.attrs.highlight):i)])])]),m(".FoF-Linguist-Controls",this.actions(t.attrs.onchange).toArray())])},n.localeName=function(){return this.locale?[this.locale.name+" (",m("code",this.locale.key),")"]:e.a.translator.trans("fof-linguist.admin.locales.all")},n.actions=function(t){var n=this,i=new S.a;return i.add("apply",F.a.component({type:"button",className:"Button Button--primary",loading:this.processing,disabled:!this.dirty,onclick:function(){n.saveString(t)}},e.a.translator.trans("fof-linguist.admin.buttons.apply"))),i.add("reset",F.a.component({type:"button",className:"Button",loading:this.processing,disabled:!this.dirty&&!this.string,onclick:function(){n.deleteString(t)}},e.a.translator.trans("fof-linguist.admin.buttons.reset"))),this.originalString&&i.add("copy-original",F.a.component({type:"button",className:"Button",loading:this.processing,onclick:function(){n.value=n.originalString,n.dirty=!0}},e.a.translator.trans("fof-linguist.admin.buttons.copy-original"))),i},n.saveString=function(t){var n=this;this.value?(this.string||(this.string=e.a.store.createRecord("fof-linguist-string",{attributes:{key:this.stringKey.key(),locale:this.localeKey,value:""}})),this.string.data.attributes.value=this.value,this.string.locale()||delete this.string.data.attributes.locale,this.processing=!0,this.string.save(this.string.data.attributes).then((function(){n.processing=!1,n.dirty=!1,t(),m.redraw()})).catch((function(t){throw n.processing=!1,t}))):this.deleteString(t)},n.deleteString=function(t){var n=this;this.string?(this.processing=!0,this.string.delete().then((function(){n.processing=!1,n.dirty=!1,n.string=null,n.value="",t(),m.redraw()})).catch((function(t){throw n.processing=!1,t}))):(this.value="",this.dirty=!1)},t}(),K=function(){function t(){}return t.prototype.view=function(t){var n=t.attrs,i=n.stringKey,a=n.highlight,e=n.onchange;return m(".FoF-Linguist-Key",[m(".FoF-Linguist-Key-Code",m("code",_(i.key(),a))),m(".FoF-Linguist-Locales",[].concat(P().map((function(t){return m(I,{key:t.key,locale:t,stringKey:i,highlight:a,onchange:e})})),[m(I,{key:"all",locale:null,stringKey:i,highlight:a,onchange:e})]))])},t}(),A=function(t){var n=e.a.translator.translations["fof-linguist.admin.known-namespace."+t];return n||t},j=function(t){var n=e.a.translator.translations["fof-linguist.admin.known-frontend."+t];return n||t},M=function(t,n){return n.reduce((function(n,i){return"start"===n?i:"or"===t?n||i:n&&i}),"start")},q=function(){function t(){}var n=t.prototype;return n.oninit=function(t){this.numberOfResultsToShow=20,this.filters=y({search:"",withOwnTranslations:!1,missingTranslationsNegation:"without",missingTranslationsType:"any",missingTranslationsOperation:"or",missingTranslationsInLocales:[],forExtension:null,frontend:null},t.attrs.initialBrowseFilters||{}),this.results=[],this.applyFilters()},n.view=function(t){var n=this,i=this.results.slice(0,this.numberOfResultsToShow);return[m("div","1"===e.a.data.settings["fof.linguist.should-clear-cache"]?O.a.component({dismissible:!1,controls:[F.a.component({className:"Button Button--link",onclick:function(){e.a.modal.show(B.a),e.a.request({method:"DELETE",url:e.a.forum.attribute("apiUrl")+"/cache"}).then((function(){return window.location.reload()}))}},e.a.translator.trans("fof-linguist.admin.clear-cache.button"))]},e.a.translator.trans("fof-linguist.admin.clear-cache.text")):null),m(".FoF-Linguist-Filters",[m("input.FormControl",{value:this.filters.search,oninput:function(t){n.filters.search=t.target.value,n.applyFilters()},placeholder:e.a.translator.trans("fof-linguist.admin.filters.search")}),F.a.component({className:"Button"+(this.filters.withOwnTranslations?" FoF-Linguist-Filter--Selected":""),icon:"far fa-"+(this.filters.withOwnTranslations?"check-square":"square"),onclick:function(){n.filters.withOwnTranslations=!n.filters.withOwnTranslations,n.applyFilters()}},e.a.translator.trans("fof-linguist.admin.filters.with-own-translations")),w.a.component({buttonClassName:"Button"+(this.filters.forExtension?" FoF-Linguist-Filter--Selected":""),label:e.a.translator.trans("fof-linguist.admin.filters.for-extension")},t.attrs.namespaces.map((function(t){return F.a.component({className:"Button",icon:"far fa-"+(n.filters.forExtension===t.namespace?"dot-circle":"circle"),onclick:function(){n.filters.forExtension===t.namespace?n.filters.forExtension=null:n.filters.forExtension=t.namespace,n.applyFilters()}},t.extension?t.extension.extra["flarum-extension"].title:A(t.namespace))}))),w.a.component({buttonClassName:"Button"+(this.filters.frontend?" FoF-Linguist-Filter--Selected":""),label:e.a.translator.trans("fof-linguist.admin.filters.frontend")},["_all_except_admin"].concat(t.attrs.frontends).map((function(t){return F.a.component({className:"Button",icon:"far fa-"+(n.filters.frontend===t?"dot-circle":"circle"),onclick:function(){n.filters.frontend===t?n.filters.frontend=null:n.filters.frontend=t,n.applyFilters()}},"_all_except_admin"===t?e.a.translator.trans("fof-linguist.admin.filters.frontend-all-except-admin"):j(t))}))),w.a.component({buttonClassName:"Button"+(this.filters.missingTranslationsInLocales.length?" FoF-Linguist-Filter--Selected":""),label:e.a.translator.trans("fof-linguist.admin.filters.missing")},[m(".FoF-Linguist-Missing-Filter",{onclick:function(t){t.stopPropagation()}},[k.a.component({value:this.filters.missingTranslationsNegation,onchange:function(t){n.filters.missingTranslationsNegation=t,n.filters.missingTranslationsInLocales.length&&n.applyFilters()},options:{without:e.a.translator.trans("fof-linguist.admin.filters.negation-options.without"),with:e.a.translator.trans("fof-linguist.admin.filters.negation-options.with")}}),k.a.component({value:this.filters.missingTranslationsType,onchange:function(t){n.filters.missingTranslationsType=t,n.filters.missingTranslationsInLocales.length&&n.applyFilters()},options:{any:e.a.translator.trans("fof-linguist.admin.filters.type-options.any"),original:e.a.translator.trans("fof-linguist.admin.filters.type-options.original"),own:e.a.translator.trans("fof-linguist.admin.filters.type-options.own")}}),m("p",e.a.translator.trans("fof-linguist.admin.filters.missing-middle-label")),k.a.component({value:this.filters.missingTranslationsOperation,onchange:function(t){n.filters.missingTranslationsOperation=t,n.filters.missingTranslationsInLocales.length&&n.applyFilters()},options:{or:e.a.translator.trans("fof-linguist.admin.filters.operation-options.or"),and:e.a.translator.trans("fof-linguist.admin.filters.operation-options.and")}})])].concat(P().map((function(t){return F.a.component({className:"Button",icon:"far fa-"+(-1!==n.filters.missingTranslationsInLocales.indexOf(t.key)?"check-square":"square"),onclick:function(){-1!==n.filters.missingTranslationsInLocales.indexOf(t.key)?n.filters.missingTranslationsInLocales=n.filters.missingTranslationsInLocales.filter((function(n){return n!==t.key})):n.filters.missingTranslationsInLocales.push(t.key),n.applyFilters()}},t.name+" ("+t.key+")")})))),w.a.component({buttonClassName:"Button",label:e.a.translator.trans("fof-linguist.admin.filters.mass-edit")},[F.a.component({icon:"far fa-clone",className:"Button",onclick:function(){var t=e.a.store.all("fof-linguist-string").filter((function(t){var n=e.a.store.getById("fof-linguist-string-key",t.key());return n&&n.locales()[t.locale()]===t.value()}));if(confirm(E()(e.a.translator.trans("fof-linguist.admin.buttons.delete-redundant-confirm",{count:t.length+""})))){if(0===t.length)return;e.a.modal.show(B.a),Promise.all(t.map((function(t){return t.delete()}))).then((function(){window.location.reload()}))}}},e.a.translator.trans("fof-linguist.admin.buttons.delete-redundant")),F.a.component({icon:"fas fa-trash",className:"Button",onclick:function(){var t=e.a.store.all("fof-linguist-string");if(confirm(E()(e.a.translator.trans("fof-linguist.admin.buttons.delete-all-confirm",{count:t.length+""})))){if(0===t.length)return;e.a.modal.show(B.a),Promise.all(t.map((function(t){return t.delete()}))).then((function(){window.location.reload()}))}}},e.a.translator.trans("fof-linguist.admin.buttons.delete-all"))])]),m("div",i.map((function(t){return m(K,{key:t.id(),stringKey:t,highlight:n.filters.search,onchange:function(){e.a.data.settings["fof.linguist.should-clear-cache"]="1"}})}))),m(".FoF-Linguist-Results",[e.a.translator.trans("fof-linguist.admin.filters.results",{shown:i.length+"",total:this.results.length+""})," ",this.results.length>i.length?F.a.component({className:"Button",onclick:function(){n.numberOfResultsToShow+=20}},e.a.translator.trans("fof-linguist.admin.buttons.load-more")):null])]},n.applyFilters=function(){var t=this;this.numberOfResultsToShow=20;var n=e.a.store.all("fof-linguist-string").map((function(t){return t.key()})),i={};P().forEach((function(t){i[t.key]=e.a.store.all("fof-linguist-string").filter((function(n){return n.locale()===t.key})).map((function(t){return t.key()}))}));var a="";this.filters.search&&(a=this.filters.search.toLowerCase()),this.results=e.a.store.all("fof-linguist-string-key").filter((function(e){if(t.filters.withOwnTranslations&&-1===n.indexOf(e.key()))return!1;if(t.filters.missingTranslationsInLocales.length){var o=t.filters.missingTranslationsOperation;"without"===t.filters.missingTranslationsNegation&&(o="or"===o?"and":"or");var r=M(o,t.filters.missingTranslationsInLocales.map((function(t){return e.locales().hasOwnProperty(t)}))),s=M(o,t.filters.missingTranslationsInLocales.map((function(t){return-1!==i[t].indexOf(e.key())}))),l=!1;switch(t.filters.missingTranslationsType){case"any":l=r||s;break;case"original":l=r;break;case"own":l=s}if("without"===t.filters.missingTranslationsNegation&&(l=!l),!l)return!1}if(t.filters.forExtension&&0!==e.key().indexOf(t.filters.forExtension+"."))return!1;if(t.filters.frontend){var c=e.key().split(".");if("_all_except_admin"===t.filters.frontend){if(c.length>=2&&"admin"===c[1])return!1}else if(c.length<2||c[1]!==t.filters.frontend)return!1}if(a){if(-1!==e.key().toLowerCase().indexOf(a))return!0;var u=e.locales();for(var f in u)if(u.hasOwnProperty(f)&&-1!==u[f].toLowerCase().indexOf(a))return!0;return!1}return!0})),m.redraw()},t}(),R=i(12),U=i.n(R),G=function(){function t(){}var n=t.prototype;return n.oninit=function(){this.columns="locale",this.showAllFrontends=!1,this.totalPercent=!0,this.locale=[];var t=P().find((function(t){return"en"!==t.key}));t&&(this.locale=t.key)},n.view=function(t){var n=this,i=t.attrs.frontends.slice(0,2);this.showAllFrontends&&(i=t.attrs.frontends);var a=t.attrs.browseWithFilters;return[m(".FoF-Linguist-Filters",[m(".ButtonGroup",[F.a.component({className:"Button"+(this.totalPercent?" active":""),onclick:function(){n.totalPercent=!0}},e.a.translator.trans("fof-linguist.admin.coverage.total-options.percent")),F.a.component({className:"Button"+(this.totalPercent?" ":" active"),onclick:function(){n.totalPercent=!1}},e.a.translator.trans("fof-linguist.admin.coverage.total-options.count"))]),m(".ButtonGroup",[F.a.component({className:"Button"+("locale"===this.columns?" active":""),onclick:function(){n.columns="locale"}},e.a.translator.trans("fof-linguist.admin.coverage.column-options.locale")),F.a.component({className:"Button"+("namespace"===this.columns?" active":""),onclick:function(){n.columns="namespace",n.showAllFrontends=!1}},e.a.translator.trans("fof-linguist.admin.coverage.column-options.namespace"))]),"namespace"===this.columns?m(".ButtonGroup",P().map((function(t){return F.a.component({className:"Button"+(n.locale===t.key?" active":""),onclick:function(){n.locale!==t.key&&(n.locale=t.key)}},t.name+" ("+t.key+")")}))):null]),m("table.FoF-Linguist-Coverage",[m("thead",m("tr",[m("th",e.a.translator.trans("fof-linguist.admin.coverage.columns.namespace")),"locale"===this.columns?P().map((function(t){return m("th",t.name+" ("+t.key+")")})):[this.showAllFrontends?i.map((function(t){return m("th",j(t))})):[m("th",e.a.translator.trans("fof-linguist.admin.coverage.columns.all-except-admin")),m("th",j("admin")),m("th",F.a.component({className:"Button",onclick:function(){n.showAllFrontends=!0}},e.a.translator.trans("fof-linguist.admin.coverage.columns.all-frontends")))]]])),m("tbody",["locale"===this.columns?m("tr",[m("td",[m("span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon"),m("span.FoF-Linguist-Coverage-Extension-Title",e.a.translator.trans("fof-linguist.admin.coverage.all-namespaces"))]),P().map((function(t){return m("td",n.localeCoverage(a,t.key))}))]):null,t.attrs.namespaces.map((function(t){return m("tr",[m("td",t.extension?[m("span.FoF-Linguist-Coverage-Extension-Icon",{style:t.extension.icon},t.extension.icon?U()(t.extension.icon.name):""),m("span.FoF-Linguist-Coverage-Extension-Title",t.extension.extra["flarum-extension"].title)]:[m("span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon"),m("span.FoF-Linguist-Coverage-Extension-Title",A(t.namespace))]),"locale"===n.columns?P().map((function(i){return m("td",n.localeCoverage(a,i.key,t.namespace))})):[n.showAllFrontends?i.map((function(i){return m("td",n.prefixCoverage(a,t.namespace,i))})):[m("td",n.prefixCoverage(a,t.namespace,"_all_except_admin")),m("td",n.prefixCoverage(a,t.namespace,"admin"))]]])}))])])]},n.prefixCoverage=function(t,n,i){return this.locale?this.localeCoverage(t,this.locale,n,i):null},n.localeCoverage=function(t,n,i,a){var o=e.a.store.all("fof-linguist-string-key").filter((function(t){if(!i)return!0;var n=t.key().split(".");if(n[0]!==i)return!1;if("_all_except_admin"===a){if(n.length>=2&&"admin"===n[1])return!1}else if(a&&(n.length<2||n[1]!==a))return!1;return!0}));if(0===o.length)return"-";var r=0,s=0;o.forEach((function(t){e.a.store.all("fof-linguist-string").find((function(i){return i.key()===t.key()&&i.locale()===n}))?r++:t.locales().hasOwnProperty(n)&&s++}));var l,c,u=Math.round((r+s)/o.length*100);return 100===u?l="full":u<5&&(l="low"),c=this.totalPercent?e.a.translator.trans("fof-linguist.admin.coverage.count.percent",{percent:u+""}):e.a.translator.trans("fof-linguist.admin.coverage.count.total",{translated:r+s+"",total:o.length}),m(".FoF-Linguist-Coverage-Progress-Wrap",[m(".FoF-Linguist-Progress",{className:l?"FoF-Linguist-Progress--"+l:""},[m(".FoF-Linguist-Progress-Bar",{style:{width:Math.max(u,5)+"%"}}),m(".FoF-Linguist-Progress-Label",c),m(".FoF-Linguist-Progress-More",e.a.translator.trans("fof-linguist.admin.coverage.count.details",{total:o.length,original:s+"",custom:r+""}))]),F.a.component({icon:"fas fa-filter",className:"Button Button--icon",onclick:function(){var e={missingTranslationsInLocales:[n]};i&&(e.forExtension=i),a&&(e.frontend=a),t(e)},title:e.a.translator.trans("fof-linguist.admin.coverage.apply-missing-filter")})])},t}(),W=i(5),D=i.n(W),$=i(13),H=i.n($),z=function(){function t(){}var n=t.prototype;return n.oninit=function(){this.locale="en",this.namespace=null,this.includeOriginals=!1,this.includeAll=!1,this.loading=!1,this.output="",this.fetchOutput()},n.view=function(t){var n=this,i={};P().forEach((function(t){i[t.key]=t.name+" ("+t.key+")"})),i.all=e.a.translator.trans("fof-linguist.admin.export.locale-all");var a={_all:e.a.translator.trans("fof-linguist.admin.export.namespace-all")};return t.attrs.namespaces.forEach((function(t){t.extension?a[t.namespace]=t.extension.extra["flarum-extension"].title:a[t.namespace]=A(t.namespace)})),[m("h2",e.a.translator.trans("fof-linguist.admin.export.title")),m(".Form-group",m(".Alert",e.a.translator.trans("fof-linguist.admin.export.warning"))),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.export.locale")),k.a.component({options:i,value:this.locale,onchange:function(t){n.locale=t,n.fetchOutput()}})]),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.export.namespace")),k.a.component({options:a,value:null===this.namespace?"_all":this.namespace,onchange:function(t){n.namespace="_all"===t?null:t,n.fetchOutput()}})]),m(".Form-group",[D.a.component({state:this.includeOriginals,onchange:function(t){n.includeOriginals=t,n.fetchOutput()}},e.a.translator.trans("fof-linguist.admin.export.include-originals"))]),m(".Form-group",[D.a.component({state:this.includeAll,onchange:function(t){n.includeAll=t,n.fetchOutput()}},e.a.translator.trans("fof-linguist.admin.export.include-all"))]),m(".Form-group",[m("label",[e.a.translator.trans("fof-linguist.admin.export.output")," ",H.a.component({className:"Button Button--primary",href:this.exportUrl(),external:!0,download:(this.namespace||this.locale)+".yml"},e.a.translator.trans("fof-linguist.admin.export.download"))]),m("textarea.FormControl.FoF-Export-Textarea",{readonly:!0,value:this.output,rows:10,placeholder:this.loading?e.a.translator.trans("fof-linguist.admin.export.output-loading"):e.a.translator.trans("fof-linguist.admin.export.output-empty")})])]},n.exportUrl=function(){return e.a.forum.attribute("apiUrl")+"/fof/linguist/export?"+m.buildQueryString({locale:this.locale,namespace:this.namespace,includeOriginals:this.includeOriginals?"1":"0",includeAll:this.includeAll?"1":"0"})},n.fetchOutput=function(){var t=this;this.loading=!0,this.output="",e.a.request({method:"GET",url:this.exportUrl(),extract:function(t){return JSON.stringify(t)}}).then((function(n){t.loading=!1,t.output=n,m.redraw()})).catch((function(n){throw t.loading=!1,m.redraw(),n}))},t}(),J=function(){function t(){}var n=t.prototype;return n.oninit=function(){this.locale="en",this.overrideExisting=!0,this.input="",this.loading=!1},n.view=function(){var t=this,n={};return P().forEach((function(t){n[t.key]=t.name+" ("+t.key+")"})),n.all=e.a.translator.trans("fof-linguist.admin.import.locale-all"),[m("h2",e.a.translator.trans("fof-linguist.admin.import.title")),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.import.input")),m("textarea.FormControl",{value:this.input,oninput:function(n){t.input=n.target.value},rows:10,placeholder:e.a.translator.trans("fof-linguist.admin.import.input-placeholder")})]),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.import.locale")),k.a.component({options:n,value:this.locale,onchange:function(n){t.locale=n,t.fetchOutput()}})]),m(".Form-group",[D.a.component({state:this.overrideExisting,onchange:function(n){t.overrideExisting=n}},e.a.translator.trans("fof-linguist.admin.import.override-existing"))]),m(".Form-group",F.a.component({className:"Button Button--primary",onclick:function(){t.loading=!0,e.a.request({method:"POST",url:e.a.forum.attribute("apiUrl")+"/fof/linguist/import",body:{input:t.input,locale:t.locale,ignoreExisting:!t.overrideExisting}}).then((function(n){t.loading=!1,m.redraw(),confirm(E()(e.a.translator.trans(t.overrideExisting?"fof-linguist.admin.import.results":"fof-linguist.admin.import.results-with-ignore",{imported:n.imported+"",ignored:n.ignored+"",identical:n.identical+""})))&&window.location.reload()})).catch((function(n){throw t.loading=!1,m.redraw(),n}))},disabled:this.loading||!this.input,loading:this.loading},e.a.translator.trans("fof-linguist.admin.import.submit")))]},t}(),Q=function(t){function n(){return t.apply(this,arguments)||this}r(n,t);var i=n.prototype;return i.oninit=function(n){var i=this;t.prototype.oninit.call(this,n),this.tab="strings",this.ready=!1,this.namespaces=[],this.frontends=["forum","admin","lib","ref","api"],this.initialBrowseFilters={},Promise.all([e.a.request({method:"GET",url:e.a.forum.attribute("apiUrl")+"/fof/linguist/strings"}).then((function(t){e.a.store.pushPayload(t)})),e.a.request({method:"GET",url:e.a.forum.attribute("apiUrl")+"/fof/linguist/string-keys"}).then((function(t){var n=e.a.store.pushPayload(t),a=[];n.forEach((function(t){var n=t.key().split("."),e=n[0];if(-1===["core","validation"].indexOf(e)&&-1===a.indexOf(e)&&a.push(e),n.length>1&&"validation"!==e){var o=n[1];-1===i.frontends.indexOf(o)&&i.frontends.push(o)}})),a.sort(),i.namespaces=[{namespace:"core"},{namespace:"validation"}].concat(a.map((function(t){var n=e.a.data.extensions[t];return n||(n=Object.values(e.a.data.extensions).find((function(n){var i=n.name.replace("/","-");return t===i}))),{namespace:t,extension:n}})))}))]).then((function(){i.ready=!0,m.redraw()}))},i.content=function(){return m(".ExtensionPage-settings",m(".container",[this.contentTab()]))},i.infoItems=function(){var n=this,i=t.prototype.infoItems.call(this);return i.add("linguist-tabs",m("ul.FoF-Linguist-Tabs",[m("li",m("a",{className:"strings"===this.tab?"active":"",onclick:function(){n.tab="strings"}},e.a.translator.trans("fof-linguist.admin.tabs.strings"))),m("li",m("a",{className:"coverage"===this.tab?"active":"",onclick:function(){n.tab="coverage"}},e.a.translator.trans("fof-linguist.admin.tabs.coverage"))),m("li",m("a",{className:"export"===this.tab?"active":"",onclick:function(){n.tab="export"}},e.a.translator.trans("fof-linguist.admin.tabs.export"))),m("li",m("a",{className:"import"===this.tab?"active":"",onclick:function(){n.tab="import"}},e.a.translator.trans("fof-linguist.admin.tabs.import")))]),100),i},i.contentTab=function(){var t=this;if(!this.ready)return d.a.component();switch(this.tab){case"strings":return m(q,{namespaces:this.namespaces,frontends:this.frontends,initialBrowseFilters:this.initialBrowseFilters});case"coverage":return m(G,{namespaces:this.namespaces,frontends:this.frontends,browseWithFilters:function(n){t.initialBrowseFilters=n,t.tab="strings"}});case"export":return m(z,{namespaces:this.namespaces});case"import":return m(J)}return null},n}(p.a);e.a.initializers.add("fof-linguist",(function(t){t.store.models["fof-linguist-string-key"]=u,t.store.models["fof-linguist-string"]=f,t.extensionData.for("fof-linguist").registerPage(Q)}))}]); +module.exports=function(t){var n={};function i(a){if(n[a])return n[a].exports;var e=n[a]={i:a,l:!1,exports:{}};return t[a].call(e.exports,e,e.exports,i),e.l=!0,e.exports}return i.m=t,i.c=n,i.d=function(t,n,a){i.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:a})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,n){if(1&n&&(t=i(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(i.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var e in t)i.d(a,e,function(n){return t[n]}.bind(null,e));return a},i.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(n,"a",n),n},i.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},i.p="",i(i.s=14)}([function(t,n){t.exports=flarum.core.compat.app},function(t,n){t.exports=flarum.core.compat["components/Button"]},function(t,n){t.exports=flarum.core.compat["components/Select"]},function(t,n){t.exports=flarum.core.compat.Model},function(t,n){t.exports=flarum.core.compat["utils/extractText"]},function(t,n){t.exports=flarum.core.compat["components/Switch"]},function(t,n){t.exports=flarum.core.compat["components/Dropdown"]},function(t,n){t.exports=flarum.core.compat["components/LoadingModal"]},function(t,n){t.exports=flarum.core.compat["components/ExtensionPage"]},function(t,n){t.exports=flarum.core.compat["components/LoadingIndicator"]},function(t,n){t.exports=flarum.core.compat["components/Alert"]},function(t,n){t.exports=flarum.core.compat["utils/ItemList"]},function(t,n){t.exports=flarum.core.compat["helpers/icon"]},function(t,n){t.exports=flarum.core.compat["components/LinkButton"]},function(t,n,i){"use strict";i.r(n);var a=i(0),e=i.n(a);function o(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function r(t,n){return(r=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function s(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,r(t,n)}function l(t,n,i){return n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,t}var c=i(3),u=i.n(c),f=function(t){function n(){for(var n,i=arguments.length,a=new Array(i),e=0;e$&").split("").map((function(t){return t.toLowerCase()===i?m("span.FoF-Linguist-Highlight",t):t}))},K=function(){function t(){}var n=t.prototype;return n.oninit=function(t){var n=this;this.stringKey=t.attrs.stringKey,this.locale=t.attrs.locale,this.localeKey=this.locale?this.locale.key:null,this.originalString=this.localeKey&&this.stringKey.locales().hasOwnProperty(this.localeKey)?this.stringKey.locales()[this.localeKey]:null,this.string=e.a.store.all("fof-linguist-string").find((function(t){return t.key()===n.stringKey.key()&&t.locale()===n.localeKey})),this.value=this.string?this.string.value():"",this.dirty=!1,this.processing=!1;var i=Object.keys(this.stringKey.locales()).some((function(t){return-1!==n.stringKey.locales()[t].indexOf("\n")}));this.inputType="input",(i||-1!==this.value.indexOf("\n"))&&(this.inputType="textarea")},n.view=function(t){var n=this,i=this.originalString?this.originalString:"("+e.a.translator.trans("fof-linguist.admin.placeholder."+(this.localeKey?"not-translated":"all-locales"))+")";return m(".FoF-Linguist-Locale",[m("label.FoF-Linguist-Label",this.localeName()),m(".FoF-Linguist-Field",{className:(this.value?"FoF-Linguist-Field--with-value":"")+(this.originalString?" FoF-Linguist-Field--with-original-string":""),title:i},[m(".FoF-Linguist-Field-Wrap",[m(this.inputType,{className:"FormControl FoF-Linguist-Input",value:this.value,oninput:function(t){n.value=t.target.value,n.dirty=!0,n.value||n.string||(n.dirty=!1)},disabled:this.processing}),m(".FoF-Linguist-Placeholder",[m("span.FoF-Linguist-Placeholder-Hint",e.a.translator.trans("fof-linguist.admin.placeholder.hint"))," ",m("span",this.originalString?I(i,t.attrs.highlight):i)])])]),m(".FoF-Linguist-Controls",this.actions(t.attrs.onchange).toArray())])},n.localeName=function(){return this.locale?[this.locale.name+" (",m("code",this.locale.key),")"]:e.a.translator.trans("fof-linguist.admin.locales.all")},n.actions=function(t){var n=this,i=new _.a;return i.add("apply",x.a.component({type:"button",className:"Button Button--primary",loading:this.processing,disabled:!this.dirty,onclick:function(){n.saveString(t)}},e.a.translator.trans("fof-linguist.admin.buttons.apply"))),i.add("reset",x.a.component({type:"button",className:"Button",loading:this.processing,disabled:!this.dirty&&!this.string,onclick:function(){n.deleteString(t)}},e.a.translator.trans("fof-linguist.admin.buttons.reset"))),this.originalString&&i.add("copy-original",x.a.component({type:"button",className:"Button",loading:this.processing,onclick:function(){n.value=n.originalString,n.dirty=!0}},e.a.translator.trans("fof-linguist.admin.buttons.copy-original"))),i},n.saveString=function(t){var n=this;this.value?(this.string||(this.string=e.a.store.createRecord("fof-linguist-string",{attributes:{key:this.stringKey.key(),locale:this.localeKey,value:""}})),this.string.data.attributes.value=this.value,this.string.locale()||delete this.string.data.attributes.locale,this.processing=!0,this.string.save(this.string.data.attributes).then((function(){n.processing=!1,n.dirty=!1,t(),m.redraw()})).catch((function(t){throw n.processing=!1,t}))):this.deleteString(t)},n.deleteString=function(t){var n=this;this.string?(this.processing=!0,this.string.delete().then((function(){n.processing=!1,n.dirty=!1,n.string=null,n.value="",t(),m.redraw()})).catch((function(t){throw n.processing=!1,t}))):(this.value="",this.dirty=!1)},t}(),A=function(){function t(){}return t.prototype.view=function(t){var n=t.attrs,i=n.stringKey,a=n.highlight,e=n.onchange;return m(".FoF-Linguist-Key",[m(".FoF-Linguist-Key-Code",m("code",I(i.key(),a))),m(".FoF-Linguist-Locales",[].concat(C().map((function(t){return m(K,{key:t.key,locale:t,stringKey:i,highlight:a,onchange:e})})),[m(K,{key:"all",locale:null,stringKey:i,highlight:a,onchange:e})]))])},t}(),j=function(t){var n=e.a.translator.translations["fof-linguist.admin.known-namespace."+t];return n||t},M=function(t){var n=e.a.translator.translations["fof-linguist.admin.known-frontend."+t];return n||t},q=function(t,n){return n.reduce((function(n,i){return"start"===n?i:"or"===t?n||i:n&&i}),"start")},R=function(){function t(){}var n=t.prototype;return n.oninit=function(t){this.numberOfResultsToShow=20,this.filters=v({search:"",withOwnTranslations:!1,missingTranslationsNegation:"without",missingTranslationsType:"any",missingTranslationsOperation:"or",missingTranslationsInLocales:[],forExtension:null,frontend:null},t.attrs.initialBrowseFilters||{}),this.results=[],this.applyFilters()},n.view=function(t){var n=this,i=this.results.slice(0,this.numberOfResultsToShow);return[m("div","1"===e.a.data.settings["fof.linguist.should-clear-cache"]?T.a.component({dismissible:!1,controls:[x.a.component({className:"Button Button--link",onclick:function(){e.a.modal.show(N.a),e.a.request({method:"DELETE",url:e.a.forum.attribute("apiUrl")+"/cache"}).then((function(){return window.location.reload()}))}},e.a.translator.trans("fof-linguist.admin.clear-cache.button"))]},e.a.translator.trans("fof-linguist.admin.clear-cache.text")):null),m(".FoF-Linguist-Filters",[m("input.FormControl",{value:this.filters.search,oninput:function(t){n.filters.search=t.target.value,n.applyFilters()},placeholder:e.a.translator.trans("fof-linguist.admin.filters.search")}),x.a.component({className:"Button"+(this.filters.withOwnTranslations?" FoF-Linguist-Filter--Selected":""),icon:"far fa-"+(this.filters.withOwnTranslations?"check-square":"square"),onclick:function(){n.filters.withOwnTranslations=!n.filters.withOwnTranslations,n.applyFilters()}},e.a.translator.trans("fof-linguist.admin.filters.with-own-translations")),w.a.component({buttonClassName:"Button"+(this.filters.forExtension?" FoF-Linguist-Filter--Selected":""),label:e.a.translator.trans("fof-linguist.admin.filters.for-extension")},t.attrs.namespaces.map((function(t){return x.a.component({className:"Button",icon:"far fa-"+(n.filters.forExtension===t.namespace?"dot-circle":"circle"),onclick:function(){n.filters.forExtension===t.namespace?n.filters.forExtension=null:n.filters.forExtension=t.namespace,n.applyFilters()}},t.extension?t.extension.extra["flarum-extension"].title:j(t.namespace))}))),w.a.component({buttonClassName:"Button"+(this.filters.frontend?" FoF-Linguist-Filter--Selected":""),label:e.a.translator.trans("fof-linguist.admin.filters.frontend")},["_all_except_admin"].concat(t.attrs.frontends).map((function(t){return x.a.component({className:"Button",icon:"far fa-"+(n.filters.frontend===t?"dot-circle":"circle"),onclick:function(){n.filters.frontend===t?n.filters.frontend=null:n.filters.frontend=t,n.applyFilters()}},"_all_except_admin"===t?e.a.translator.trans("fof-linguist.admin.filters.frontend-all-except-admin"):M(t))}))),w.a.component({buttonClassName:"Button"+(this.filters.missingTranslationsInLocales.length?" FoF-Linguist-Filter--Selected":""),label:e.a.translator.trans("fof-linguist.admin.filters.missing")},[m(".FoF-Linguist-Missing-Filter",{onclick:function(t){t.stopPropagation()}},[L.a.component({value:this.filters.missingTranslationsNegation,onchange:function(t){n.filters.missingTranslationsNegation=t,n.filters.missingTranslationsInLocales.length&&n.applyFilters()},options:{without:e.a.translator.trans("fof-linguist.admin.filters.negation-options.without"),with:e.a.translator.trans("fof-linguist.admin.filters.negation-options.with")}}),L.a.component({value:this.filters.missingTranslationsType,onchange:function(t){n.filters.missingTranslationsType=t,n.filters.missingTranslationsInLocales.length&&n.applyFilters()},options:{any:e.a.translator.trans("fof-linguist.admin.filters.type-options.any"),original:e.a.translator.trans("fof-linguist.admin.filters.type-options.original"),own:e.a.translator.trans("fof-linguist.admin.filters.type-options.own")}}),m("p",e.a.translator.trans("fof-linguist.admin.filters.missing-middle-label")),L.a.component({value:this.filters.missingTranslationsOperation,onchange:function(t){n.filters.missingTranslationsOperation=t,n.filters.missingTranslationsInLocales.length&&n.applyFilters()},options:{or:e.a.translator.trans("fof-linguist.admin.filters.operation-options.or"),and:e.a.translator.trans("fof-linguist.admin.filters.operation-options.and")}})])].concat(C().map((function(t){return x.a.component({className:"Button",icon:"far fa-"+(-1!==n.filters.missingTranslationsInLocales.indexOf(t.key)?"check-square":"square"),onclick:function(){-1!==n.filters.missingTranslationsInLocales.indexOf(t.key)?n.filters.missingTranslationsInLocales=n.filters.missingTranslationsInLocales.filter((function(n){return n!==t.key})):n.filters.missingTranslationsInLocales.push(t.key),n.applyFilters()}},t.name+" ("+t.key+")")})))),w.a.component({buttonClassName:"Button",label:e.a.translator.trans("fof-linguist.admin.filters.mass-edit")},[x.a.component({icon:"far fa-clone",className:"Button",onclick:function(){var t=e.a.store.all("fof-linguist-string").filter((function(t){var n=e.a.store.getById("fof-linguist-string-key",t.key());return n&&n.locales()[t.locale()]===t.value()}));if(confirm(P()(e.a.translator.trans("fof-linguist.admin.buttons.delete-redundant-confirm",{count:t.length+""})))){if(0===t.length)return;e.a.modal.show(N.a),Promise.all(t.map((function(t){return t.delete()}))).then((function(){window.location.reload()}))}}},e.a.translator.trans("fof-linguist.admin.buttons.delete-redundant")),x.a.component({icon:"fas fa-trash",className:"Button",onclick:function(){var t=e.a.store.all("fof-linguist-string");if(confirm(P()(e.a.translator.trans("fof-linguist.admin.buttons.delete-all-confirm",{count:t.length+""})))){if(0===t.length)return;e.a.modal.show(N.a),Promise.all(t.map((function(t){return t.delete()}))).then((function(){window.location.reload()}))}}},e.a.translator.trans("fof-linguist.admin.buttons.delete-all"))])]),m("div",i.map((function(t){return m(A,{key:t.id(),stringKey:t,highlight:n.filters.search,onchange:function(){e.a.data.settings["fof.linguist.should-clear-cache"]="1"}})}))),m(".FoF-Linguist-Results",[e.a.translator.trans("fof-linguist.admin.filters.results",{shown:i.length+"",total:this.results.length+""})," ",this.results.length>i.length?x.a.component({className:"Button",onclick:function(){n.numberOfResultsToShow+=20}},e.a.translator.trans("fof-linguist.admin.buttons.load-more")):null])]},n.applyFilters=function(){var t=this;this.numberOfResultsToShow=20;var n=e.a.store.all("fof-linguist-string").map((function(t){return t.key()})),i={};C().forEach((function(t){i[t.key]=e.a.store.all("fof-linguist-string").filter((function(n){return n.locale()===t.key})).map((function(t){return t.key()}))}));var a="";this.filters.search&&(a=this.filters.search.toLowerCase()),this.results=e.a.store.all("fof-linguist-string-key").filter((function(e){if(t.filters.withOwnTranslations&&-1===n.indexOf(e.key()))return!1;if(t.filters.missingTranslationsInLocales.length){var o=t.filters.missingTranslationsOperation;"without"===t.filters.missingTranslationsNegation&&(o="or"===o?"and":"or");var r=q(o,t.filters.missingTranslationsInLocales.map((function(t){return e.locales().hasOwnProperty(t)}))),s=q(o,t.filters.missingTranslationsInLocales.map((function(t){return-1!==i[t].indexOf(e.key())}))),l=!1;switch(t.filters.missingTranslationsType){case"any":l=r||s;break;case"original":l=r;break;case"own":l=s}if("without"===t.filters.missingTranslationsNegation&&(l=!l),!l)return!1}if(t.filters.forExtension&&0!==e.key().indexOf(t.filters.forExtension+"."))return!1;if(t.filters.frontend){var c=e.key().split(".");if("_all_except_admin"===t.filters.frontend){if(c.length>=2&&"admin"===c[1])return!1}else if(c.length<2||c[1]!==t.filters.frontend)return!1}if(a){if(-1!==e.key().toLowerCase().indexOf(a))return!0;var u=e.locales();for(var f in u)if(u.hasOwnProperty(f)&&-1!==u[f].toLowerCase().indexOf(a))return!0;return!1}return!0})),m.redraw()},t}(),U=i(12),G=i.n(U),W=function(){function t(){}var n=t.prototype;return n.oninit=function(){this.columns="locale",this.showAllFrontends=!1,this.totalPercent=!0,this.locale=[];var t=C().find((function(t){return"en"!==t.key}));t&&(this.locale=t.key)},n.view=function(t){var n=this,i=t.attrs.frontends.slice(0,2);this.showAllFrontends&&(i=t.attrs.frontends);var a=t.attrs.browseWithFilters;return[m(".FoF-Linguist-Filters",[m(".ButtonGroup",[x.a.component({className:"Button"+(this.totalPercent?" active":""),onclick:function(){n.totalPercent=!0}},e.a.translator.trans("fof-linguist.admin.coverage.total-options.percent")),x.a.component({className:"Button"+(this.totalPercent?" ":" active"),onclick:function(){n.totalPercent=!1}},e.a.translator.trans("fof-linguist.admin.coverage.total-options.count"))]),m(".ButtonGroup",[x.a.component({className:"Button"+("locale"===this.columns?" active":""),onclick:function(){n.columns="locale"}},e.a.translator.trans("fof-linguist.admin.coverage.column-options.locale")),x.a.component({className:"Button"+("namespace"===this.columns?" active":""),onclick:function(){n.columns="namespace",n.showAllFrontends=!1}},e.a.translator.trans("fof-linguist.admin.coverage.column-options.namespace"))]),"namespace"===this.columns?m(".ButtonGroup",C().map((function(t){return x.a.component({className:"Button"+(n.locale===t.key?" active":""),onclick:function(){n.locale!==t.key&&(n.locale=t.key)}},t.name+" ("+t.key+")")}))):null]),m("table.FoF-Linguist-Coverage",[m("thead",m("tr",[m("th",e.a.translator.trans("fof-linguist.admin.coverage.columns.namespace")),"locale"===this.columns?C().map((function(t){return m("th",t.name+" ("+t.key+")")})):[this.showAllFrontends?i.map((function(t){return m("th",M(t))})):[m("th",e.a.translator.trans("fof-linguist.admin.coverage.columns.all-except-admin")),m("th",M("admin")),m("th",x.a.component({className:"Button",onclick:function(){n.showAllFrontends=!0}},e.a.translator.trans("fof-linguist.admin.coverage.columns.all-frontends")))]]])),m("tbody",["locale"===this.columns?m("tr",[m("td",[m("span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon"),m("span.FoF-Linguist-Coverage-Extension-Title",e.a.translator.trans("fof-linguist.admin.coverage.all-namespaces"))]),C().map((function(t){return m("td",n.localeCoverage(a,t.key))}))]):null,t.attrs.namespaces.map((function(t){return m("tr",[m("td",t.extension?[m("span.FoF-Linguist-Coverage-Extension-Icon",{style:t.extension.icon},t.extension.icon?G()(t.extension.icon.name):""),m("span.FoF-Linguist-Coverage-Extension-Title",t.extension.extra["flarum-extension"].title)]:[m("span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon"),m("span.FoF-Linguist-Coverage-Extension-Title",j(t.namespace))]),"locale"===n.columns?C().map((function(i){return m("td",n.localeCoverage(a,i.key,t.namespace))})):[n.showAllFrontends?i.map((function(i){return m("td",n.prefixCoverage(a,t.namespace,i))})):[m("td",n.prefixCoverage(a,t.namespace,"_all_except_admin")),m("td",n.prefixCoverage(a,t.namespace,"admin"))]]])}))])])]},n.prefixCoverage=function(t,n,i){return this.locale?this.localeCoverage(t,this.locale,n,i):null},n.localeCoverage=function(t,n,i,a){var o=e.a.store.all("fof-linguist-string-key").filter((function(t){if(!i)return!0;var n=t.key().split(".");if(n[0]!==i)return!1;if("_all_except_admin"===a){if(n.length>=2&&"admin"===n[1])return!1}else if(a&&(n.length<2||n[1]!==a))return!1;return!0}));if(0===o.length)return"-";var r=0,s=0;o.forEach((function(t){e.a.store.all("fof-linguist-string").find((function(i){return i.key()===t.key()&&i.locale()===n}))?r++:t.locales().hasOwnProperty(n)&&s++}));var l,c,u=Math.round((r+s)/o.length*100);return 100===u?l="full":u<5&&(l="low"),c=this.totalPercent?e.a.translator.trans("fof-linguist.admin.coverage.count.percent",{percent:u+""}):e.a.translator.trans("fof-linguist.admin.coverage.count.total",{translated:r+s+"",total:o.length}),m(".FoF-Linguist-Coverage-Progress-Wrap",[m(".FoF-Linguist-Progress",{className:l?"FoF-Linguist-Progress--"+l:""},[m(".FoF-Linguist-Progress-Bar",{style:{width:Math.max(u,5)+"%"}}),m(".FoF-Linguist-Progress-Label",c),m(".FoF-Linguist-Progress-More",e.a.translator.trans("fof-linguist.admin.coverage.count.details",{total:o.length,original:s+"",custom:r+""}))]),x.a.component({icon:"fas fa-filter",className:"Button Button--icon",onclick:function(){var e={missingTranslationsInLocales:[n]};i&&(e.forExtension=i),a&&(e.frontend=a),t(e)},title:e.a.translator.trans("fof-linguist.admin.coverage.apply-missing-filter")})])},t}(),D=i(5),$=i.n(D),H=i(13),z=i.n(H),J=function(){function t(){}var n=t.prototype;return n.oninit=function(){this.locale="en",this.namespace=null,this.includeOriginals=!1,this.includeAll=!1,this.loading=!1,this.output="",this.fetchOutput()},n.view=function(t){var n=this,i={};C().forEach((function(t){i[t.key]=t.name+" ("+t.key+")"})),i.all=e.a.translator.trans("fof-linguist.admin.export.locale-all");var a={_all:e.a.translator.trans("fof-linguist.admin.export.namespace-all")};return t.attrs.namespaces.forEach((function(t){t.extension?a[t.namespace]=t.extension.extra["flarum-extension"].title:a[t.namespace]=j(t.namespace)})),[m("h2",e.a.translator.trans("fof-linguist.admin.export.title")),m(".Form-group",m(".Alert",e.a.translator.trans("fof-linguist.admin.export.warning"))),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.export.locale")),L.a.component({options:i,value:this.locale,onchange:function(t){n.locale=t,n.fetchOutput()}})]),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.export.namespace")),L.a.component({options:a,value:null===this.namespace?"_all":this.namespace,onchange:function(t){n.namespace="_all"===t?null:t,n.fetchOutput()}})]),m(".Form-group",[$.a.component({state:this.includeOriginals,onchange:function(t){n.includeOriginals=t,n.fetchOutput()}},e.a.translator.trans("fof-linguist.admin.export.include-originals"))]),m(".Form-group",[$.a.component({state:this.includeAll,onchange:function(t){n.includeAll=t,n.fetchOutput()}},e.a.translator.trans("fof-linguist.admin.export.include-all"))]),m(".Form-group",[m("label",[e.a.translator.trans("fof-linguist.admin.export.output")," ",z.a.component({className:"Button Button--primary",href:this.exportUrl(),external:!0,download:(this.namespace||this.locale)+".yml"},e.a.translator.trans("fof-linguist.admin.export.download"))]),m("textarea.FormControl.FoF-Export-Textarea",{readonly:!0,value:this.output,rows:10,placeholder:this.loading?e.a.translator.trans("fof-linguist.admin.export.output-loading"):e.a.translator.trans("fof-linguist.admin.export.output-empty")})])]},n.exportUrl=function(){return e.a.forum.attribute("apiUrl")+"/fof/linguist/export?"+m.buildQueryString({locale:this.locale,namespace:this.namespace,includeOriginals:this.includeOriginals?"1":"0",includeAll:this.includeAll?"1":"0"})},n.fetchOutput=function(){var t=this;this.loading=!0,this.output="",e.a.request({method:"GET",url:this.exportUrl(),extract:function(t){return JSON.stringify(t)}}).then((function(n){t.loading=!1,t.output=n,m.redraw()})).catch((function(n){throw t.loading=!1,m.redraw(),n}))},t}(),Q=function(){function t(){}var n=t.prototype;return n.oninit=function(){this.locale="en",this.overrideExisting=!0,this.input="",this.loading=!1},n.view=function(){var t=this,n={};return C().forEach((function(t){n[t.key]=t.name+" ("+t.key+")"})),n.all=e.a.translator.trans("fof-linguist.admin.import.locale-all"),[m("h2",e.a.translator.trans("fof-linguist.admin.import.title")),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.import.input")),m("textarea.FormControl",{value:this.input,oninput:function(n){t.input=n.target.value},rows:10,placeholder:e.a.translator.trans("fof-linguist.admin.import.input-placeholder")})]),m(".Form-group",[m("label",e.a.translator.trans("fof-linguist.admin.import.locale")),L.a.component({options:n,value:this.locale,onchange:function(n){t.locale=n,t.fetchOutput()}})]),m(".Form-group",[$.a.component({state:this.overrideExisting,onchange:function(n){t.overrideExisting=n}},e.a.translator.trans("fof-linguist.admin.import.override-existing"))]),m(".Form-group",x.a.component({className:"Button Button--primary",onclick:function(){t.loading=!0,e.a.request({method:"POST",url:e.a.forum.attribute("apiUrl")+"/fof/linguist/import",body:{input:t.input,locale:t.locale,ignoreExisting:!t.overrideExisting}}).then((function(n){t.loading=!1,m.redraw(),confirm(P()(e.a.translator.trans(t.overrideExisting?"fof-linguist.admin.import.results":"fof-linguist.admin.import.results-with-ignore",{imported:n.imported+"",ignored:n.ignored+"",identical:n.identical+""})))&&window.location.reload()})).catch((function(n){throw t.loading=!1,m.redraw(),n}))},disabled:this.loading||!this.input,loading:this.loading},e.a.translator.trans("fof-linguist.admin.import.submit")))]},t}(),V=function(t){function n(){return t.apply(this,arguments)||this}s(n,t);var i=n.prototype;return i.oninit=function(n){var i=this;t.prototype.oninit.call(this,n),this.tab="strings",this.ready=!1,this.namespaces=[],this.frontends=["forum","admin","lib","ref","api"],this.initialBrowseFilters={},Promise.all([e.a.request({method:"GET",url:e.a.forum.attribute("apiUrl")+"/fof/linguist/strings"}).then((function(t){e.a.store.pushPayload(t)})),e.a.request({method:"GET",url:e.a.forum.attribute("apiUrl")+"/fof/linguist/string-keys"}).then((function(t){var n=e.a.store.pushPayload(t),a=[];n.forEach((function(t){var n=t.key().split("."),e=n[0];if(-1===["core","validation"].indexOf(e)&&-1===a.indexOf(e)&&a.push(e),n.length>1&&"validation"!==e){var o=n[1];-1===i.frontends.indexOf(o)&&i.frontends.push(o)}})),a.sort(),i.namespaces=[{namespace:"core"},{namespace:"validation"}].concat(a.map((function(t){var n=e.a.data.extensions[t];return n||(n=Object.values(e.a.data.extensions).find((function(n){var i=n.name.replace("/","-");return t===i}))),{namespace:t,extension:n}})))}))]).then((function(){i.ready=!0,m.redraw()}))},i.content=function(){return m(".ExtensionPage-settings",m(".container",[this.contentTab()]))},i.infoItems=function(){var n=this,i=t.prototype.infoItems.call(this);return i.add("linguist-tabs",m("ul.FoF-Linguist-Tabs",[m("li",m("a",{className:"strings"===this.tab?"active":"",onclick:function(){n.tab="strings"}},e.a.translator.trans("fof-linguist.admin.tabs.strings"))),m("li",m("a",{className:"coverage"===this.tab?"active":"",onclick:function(){n.tab="coverage"}},e.a.translator.trans("fof-linguist.admin.tabs.coverage"))),m("li",m("a",{className:"export"===this.tab?"active":"",onclick:function(){n.tab="export"}},e.a.translator.trans("fof-linguist.admin.tabs.export"))),m("li",m("a",{className:"import"===this.tab?"active":"",onclick:function(){n.tab="import"}},e.a.translator.trans("fof-linguist.admin.tabs.import")))]),100),i},i.contentTab=function(){var t=this;if(!this.ready)return y.a.component();switch(this.tab){case"strings":return m(R,{namespaces:this.namespaces,frontends:this.frontends,initialBrowseFilters:this.initialBrowseFilters});case"coverage":return m(W,{namespaces:this.namespaces,frontends:this.frontends,browseWithFilters:function(n){t.initialBrowseFilters=n,t.tab="strings"}});case"export":return m(J,{namespaces:this.namespaces});case"import":return m(Q)}return null},n}(h.a);e.a.initializers.add("fof-linguist",(function(t){t.store.models["fof-linguist-string-key"]=f,t.store.models["fof-linguist-string"]=g,t.extensionData.for("fof-linguist").registerPage(V)}))}]); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 21d6c65..51602b0 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@fof/linguist/webpack/bootstrap","webpack://@fof/linguist/external \"flarum.core.compat['app']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Button']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Select']\"","webpack://@fof/linguist/external \"flarum.core.compat['Model']\"","webpack://@fof/linguist/external \"flarum.core.compat['utils/extractText']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Switch']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Dropdown']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/LoadingModal']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/ExtensionPage']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/LoadingIndicator']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Alert']\"","webpack://@fof/linguist/external \"flarum.core.compat['utils/ItemList']\"","webpack://@fof/linguist/external \"flarum.core.compat['helpers/icon']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/LinkButton']\"","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@fof/linguist/./src/admin/models/StringKey.js","webpack://@fof/linguist/./src/admin/models/TextString.js","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/linguist/./src/admin/utils/localesAsArray.js","webpack://@fof/linguist/./src/admin/utils/highlightMithril.js","webpack://@fof/linguist/./src/admin/components/StringLocale.js","webpack://@fof/linguist/./src/admin/components/StringKey.js","webpack://@fof/linguist/./src/admin/utils/namespaceLabel.js","webpack://@fof/linguist/./src/admin/utils/frontendLabel.js","webpack://@fof/linguist/./src/admin/utils/booleanCheck.js","webpack://@fof/linguist/./src/admin/pages/StringsPage.js","webpack://@fof/linguist/./src/admin/pages/CoveragePage.js","webpack://@fof/linguist/./src/admin/pages/ExportPage.js","webpack://@fof/linguist/./src/admin/pages/ImportPage.js","webpack://@fof/linguist/./src/admin/pages/LinguistPage.js","webpack://@fof/linguist/./src/admin/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_assertThisInitialized","self","ReferenceError","_inheritsLoose","subClass","superClass","constructor","__proto__","_defineProperty","obj","configurable","writable","StringKey","Model","attribute","TextString","apiEndpoint","this","exists","data","id","_extends","assign","target","arguments","length","source","apply","locales","app","push","string","highlight","lowercaseHighliht","toLowerCase","regex","RegExp","replace","HIGHLIGHT_DELIMITER","split","map","text","StringLocale","oninit","vnode","stringKey","attrs","locale","localeKey","originalString","store","all","find","dirty","processing","originalHasNewLine","keys","some","indexOf","inputType","view","placeholderText","translator","trans","localeName","className","title","oninput","event","disabled","highlightMithril","actions","onchange","toArray","items","ItemList","add","Button","component","type","loading","onclick","saveString","deleteString","createRecord","attributes","save","then","redraw","err","localesAsArray","namespace","translation","translations","frontend","operation","booleans","reduce","a","b","StringsPage","numberOfResultsToShow","filters","search","withOwnTranslations","missingTranslationsNegation","missingTranslationsType","missingTranslationsOperation","missingTranslationsInLocales","forExtension","initialBrowseFilters","results","applyFilters","slice","settings","Alert","dismissible","controls","modal","show","LoadingModal","request","method","url","forum","window","location","reload","placeholder","icon","Dropdown","buttonClassName","label","namespaces","extension","extra","namespaceLabel","frontends","frontendLabel","stopPropagation","Select","options","without","with","any","original","own","or","and","filter","strings","getById","confirm","extractText","count","Promise","shown","total","keysWithCustomTranslations","keysWithCustomTranslationsIn","forEach","lowercaseSearch","hasOriginalTranslation","booleanCheck","hasOwnTranslation","matchesType","parts","CoveragePage","columns","showAllFrontends","totalPercent","firstNonEnglishLocale","visibleFrontends","browseWithFilters","localeCoverage","style","prefixCoverage","stringKeys","customCount","originalCount","specialStyle","percent","Math","round","translated","width","max","custom","ExportPage","includeOriginals","includeAll","output","fetchOutput","localeOptions","namespaceOptions","_all","Switch","state","LinkButton","href","exportUrl","external","download","readonly","rows","buildQueryString","extract","raw","JSON","stringify","error","overrideExisting","input","body","ignoreExisting","imported","ignored","identical","LinguistPage","tab","ready","result","pushPayload","sort","extensions","values","packageNameWithDash","content","contentTab","infoItems","LoadingIndicator","ImportPage","ExtensionPage","initializers","models","extensionData","registerPage"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","module.exports = flarum.core.compat['app'];","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['components/Select'];","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['utils/extractText'];","module.exports = flarum.core.compat['components/Switch'];","module.exports = flarum.core.compat['components/Dropdown'];","module.exports = flarum.core.compat['components/LoadingModal'];","module.exports = flarum.core.compat['components/ExtensionPage'];","module.exports = flarum.core.compat['components/LoadingIndicator'];","module.exports = flarum.core.compat['components/Alert'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['components/LinkButton'];","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import Model from 'flarum/Model';\n\nexport default class StringKey extends Model {\n key = Model.attribute('key');\n locales = Model.attribute('locales');\n}\n","import Model from 'flarum/Model';\n\nexport default class TextString extends Model {\n key = Model.attribute('key');\n locale = Model.attribute('locale');\n value = Model.attribute('value');\n\n apiEndpoint() {\n return '/fof/linguist/strings' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import app from 'flarum/app';\n\nexport default function () {\n let locales = [];\n\n for (let key in app.data.locales) {\n if (!app.data.locales.hasOwnProperty(key)) {\n continue;\n }\n\n locales.push({\n key,\n name: app.data.locales[key],\n });\n }\n\n return locales;\n}\n","/* global m */\n\nconst HIGHLIGHT_DELIMITER = '';\n\n// Takes a string and highlight a keyword with a span with mithril template\n// The output will be an array if a keyword is given\nexport default function (string, highlight) {\n if (!highlight) {\n return string;\n }\n\n const lowercaseHighliht = highlight.toLowerCase();\n\n // Regex to match the highlighted work in a case-insensitive manner\n const regex = new RegExp(lowercaseHighliht.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'i');\n\n return string\n .replace(regex, HIGHLIGHT_DELIMITER + '$&' + HIGHLIGHT_DELIMITER)\n .split(HIGHLIGHT_DELIMITER)\n .map(text => {\n if (text.toLowerCase() === lowercaseHighliht) {\n return m('span.FoF-Linguist-Highlight', text);\n }\n\n return text;\n });\n}\n","import app from 'flarum/app';\nimport ItemList from 'flarum/utils/ItemList';\nimport Button from 'flarum/components/Button';\nimport highlightMithril from '../utils/highlightMithril';\n\n/* global m */\n\nexport default class StringLocale {\n oninit(vnode) {\n this.stringKey = vnode.attrs.stringKey;\n this.locale = vnode.attrs.locale;\n this.localeKey = this.locale ? this.locale.key : null;\n this.originalString = this.localeKey && this.stringKey.locales().hasOwnProperty(this.localeKey) ? this.stringKey.locales()[this.localeKey] : null;\n\n this.string = app.store.all('fof-linguist-string').find(\n string => string.key() === this.stringKey.key() && string.locale() === this.localeKey\n );\n\n this.value = this.string ? this.string.value() : '';\n this.dirty = false;\n this.processing = false;\n\n // We check whether any original translation in any language has a newline\n // By not hard-coding to English, this should work pretty well even if the fallback locale is modified,\n // or if a text happens to not be available in the fallback language\n const originalHasNewLine = Object.keys(this.stringKey.locales()).some(key => this.stringKey.locales()[key].indexOf('\\n') !== -1);\n\n this.inputType = 'input';\n\n // We will enable multi-line editing if the original has a newline, or if the current custom value already has one\n if (originalHasNewLine || this.value.indexOf('\\n') !== -1) {\n this.inputType = 'textarea';\n }\n }\n\n view(vnode) {\n const placeholderText = this.originalString ? this.originalString : '(' + app.translator.trans('fof-linguist.admin.placeholder.' + (this.localeKey ? 'not-translated' : 'all-locales')) + ')';\n\n return m('.FoF-Linguist-Locale', [\n m('label.FoF-Linguist-Label', this.localeName()),\n m('.FoF-Linguist-Field', {\n className: (this.value ? 'FoF-Linguist-Field--with-value' : '') + (this.originalString ? ' FoF-Linguist-Field--with-original-string' : ''),\n title: placeholderText,\n }, [\n m('.FoF-Linguist-Field-Wrap', [\n m(this.inputType, {\n className: 'FormControl FoF-Linguist-Input',\n value: this.value,\n oninput: event => {\n this.value = event.target.value;\n this.dirty = true;\n\n // Remove dirty state if the user erased his text without saving\n if (!this.value && !this.string) {\n this.dirty = false;\n }\n },\n disabled: this.processing,\n }),\n m('.FoF-Linguist-Placeholder', [\n m('span.FoF-Linguist-Placeholder-Hint', app.translator.trans('fof-linguist.admin.placeholder.hint')),\n ' ',\n m('span', this.originalString ? highlightMithril(placeholderText, vnode.attrs.highlight) : placeholderText),\n ]),\n ]),\n ]),\n m('.FoF-Linguist-Controls', this.actions(vnode.attrs.onchange).toArray()),\n ]);\n }\n\n localeName() {\n if (this.locale) {\n return [this.locale.name + ' (', m('code', this.locale.key), ')'];\n } else {\n return app.translator.trans('fof-linguist.admin.locales.all');\n }\n }\n\n actions(onchange) {\n const items = new ItemList();\n\n items.add('apply', Button.component({\n type: 'button',\n className: 'Button Button--primary',\n loading: this.processing,\n disabled: !this.dirty,\n onclick: () => {\n this.saveString(onchange);\n },\n }, app.translator.trans('fof-linguist.admin.buttons.apply')));\n\n items.add('reset', Button.component({\n type: 'button',\n className: 'Button',\n loading: this.processing,\n disabled: !this.dirty && !this.string,\n onclick: () => {\n this.deleteString(onchange);\n },\n }, app.translator.trans('fof-linguist.admin.buttons.reset')));\n\n if (this.originalString) {\n items.add('copy-original', Button.component({\n type: 'button',\n className: 'Button',\n loading: this.processing,\n onclick: () => {\n this.value = this.originalString;\n this.dirty = true;\n },\n }, app.translator.trans('fof-linguist.admin.buttons.copy-original')));\n }\n\n return items;\n }\n\n saveString(onchange) {\n if (!this.value) {\n this.deleteString(onchange);\n\n return;\n }\n\n if (!this.string) {\n this.string = app.store.createRecord('fof-linguist-string', {\n attributes: {\n key: this.stringKey.key(),\n locale: this.localeKey,\n value: '',\n },\n });\n }\n\n this.string.data.attributes.value = this.value;\n\n if (!this.string.locale()) delete this.string.data.attributes.locale;\n\n this.processing = true;\n\n this.string.save(this.string.data.attributes).then(() => {\n this.processing = false;\n this.dirty = false;\n\n onchange();\n\n m.redraw();\n }).catch(err => {\n this.processing = false;\n\n throw err;\n });\n }\n\n deleteString(onchange) {\n if (this.string) {\n this.processing = true;\n\n this.string.delete().then(() => {\n this.processing = false;\n this.dirty = false;\n\n this.string = null;\n this.value = '';\n\n onchange();\n\n m.redraw();\n }).catch(err => {\n this.processing = false;\n\n throw err;\n });\n } else {\n this.value = '';\n this.dirty = false;\n }\n }\n}\n","import StringLocale from '../components/StringLocale';\nimport localesAsArray from '../utils/localesAsArray';\nimport highlightMithril from '../utils/highlightMithril';\n\n/* global m */\n\nexport default class StringKey {\n view(vnode) {\n const {\n stringKey,\n highlight,\n onchange,\n } = vnode.attrs;\n\n return m('.FoF-Linguist-Key', [\n m('.FoF-Linguist-Key-Code', m('code', highlightMithril(stringKey.key(), highlight))),\n m('.FoF-Linguist-Locales', [\n ...localesAsArray().map(locale => m(StringLocale, {\n key: locale.key,\n locale,\n stringKey,\n highlight,\n onchange,\n })),\n m(StringLocale, {\n key: 'all',\n locale: null,\n stringKey,\n highlight,\n onchange,\n }),\n ]),\n ]);\n }\n}\n","import app from 'flarum/app';\n\nexport default function (namespace) {\n const translation = app.translator.translations['fof-linguist.admin.known-namespace.' + namespace];\n\n if (translation) {\n return translation;\n }\n\n return namespace;\n}\n","import app from 'flarum/app';\n\nexport default function (frontend) {\n const translation = app.translator.translations['fof-linguist.admin.known-frontend.' + frontend];\n\n if (translation) {\n return translation;\n }\n\n return frontend;\n}\n","export default function (operation, booleans) {\n return booleans.reduce((a, b) => {\n if (a === 'start') {\n return b;\n }\n\n if (operation === 'or') {\n return a || b;\n }\n\n return a && b;\n }, 'start');\n}\n","import app from 'flarum/app';\nimport Button from 'flarum/components/Button';\nimport Dropdown from 'flarum/components/Dropdown';\nimport Select from 'flarum/components/Select';\nimport Alert from 'flarum/components/Alert';\nimport LoadingModal from 'flarum/components/LoadingModal';\nimport extractText from 'flarum/utils/extractText';\nimport localesAsArray from '../utils/localesAsArray';\nimport StringKey from '../components/StringKey';\nimport namespaceLabel from '../utils/namespaceLabel';\nimport frontendLabel from '../utils/frontendLabel';\nimport booleanCheck from '../utils/booleanCheck';\n\n/* global m */\n\nconst RESULTS_PER_PAGE = 20;\n\nexport default class StringsPage {\n oninit(vnode) {\n this.numberOfResultsToShow = RESULTS_PER_PAGE;\n\n this.filters = Object.assign({\n search: '',\n withOwnTranslations: false,\n missingTranslationsNegation: 'without',\n missingTranslationsType: 'any',\n missingTranslationsOperation: 'or',\n missingTranslationsInLocales: [],\n forExtension: null,\n frontend: null,\n }, vnode.attrs.initialBrowseFilters || {});\n\n this.results = [];\n\n this.applyFilters();\n }\n\n view(vnode) {\n const keys = this.results.slice(0, this.numberOfResultsToShow);\n\n return [\n // Additional divs are used to reduce Mithril redraws as much as possible when the conditional components appear\n m('div', app.data.settings['fof.linguist.should-clear-cache'] === '1' ? Alert.component({\n dismissible: false,\n controls: [Button.component({\n className: 'Button Button--link',\n onclick() {\n // Same logic as in core StatusWidget\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + '/cache',\n }).then(() => window.location.reload());\n },\n }, app.translator.trans('fof-linguist.admin.clear-cache.button'))],\n }, app.translator.trans('fof-linguist.admin.clear-cache.text')) : null),\n m('.FoF-Linguist-Filters', [\n m('input.FormControl', {\n value: this.filters.search,\n oninput: event => {\n this.filters.search = event.target.value;\n this.applyFilters();\n },\n placeholder: app.translator.trans('fof-linguist.admin.filters.search'),\n }),\n Button.component({\n className: 'Button' + (this.filters.withOwnTranslations ? ' FoF-Linguist-Filter--Selected' : ''),\n icon: `far fa-${this.filters.withOwnTranslations ? 'check-square' : 'square'}`,\n onclick: () => {\n this.filters.withOwnTranslations = !this.filters.withOwnTranslations;\n this.applyFilters();\n },\n }, app.translator.trans('fof-linguist.admin.filters.with-own-translations')),\n Dropdown.component({\n buttonClassName: 'Button' + (this.filters.forExtension ? ' FoF-Linguist-Filter--Selected' : ''),\n label: app.translator.trans('fof-linguist.admin.filters.for-extension'),\n }, vnode.attrs.namespaces.map(\n namespace => Button.component({\n className: 'Button',\n icon: `far fa-${this.filters.forExtension === namespace.namespace ? 'dot-circle' : 'circle'}`,\n onclick: () => {\n if (this.filters.forExtension === namespace.namespace) {\n this.filters.forExtension = null;\n } else {\n this.filters.forExtension = namespace.namespace;\n }\n\n this.applyFilters();\n },\n }, namespace.extension ? namespace.extension.extra['flarum-extension'].title : namespaceLabel(namespace.namespace))\n )),\n Dropdown.component({\n buttonClassName: 'Button' + (this.filters.frontend ? ' FoF-Linguist-Filter--Selected' : ''),\n label: app.translator.trans('fof-linguist.admin.filters.frontend'),\n }, [\n '_all_except_admin',\n ...vnode.attrs.frontends,\n ].map(\n frontend => Button.component({\n className: 'Button',\n icon: `far fa-${this.filters.frontend === frontend ? 'dot-circle' : 'circle'}`,\n onclick: () => {\n if (this.filters.frontend === frontend) {\n this.filters.frontend = null;\n } else {\n this.filters.frontend = frontend;\n }\n\n this.applyFilters();\n },\n }, frontend === '_all_except_admin' ? app.translator.trans('fof-linguist.admin.filters.frontend-all-except-admin') : frontendLabel(frontend))\n )),\n Dropdown.component({\n buttonClassName: 'Button' + (this.filters.missingTranslationsInLocales.length ? ' FoF-Linguist-Filter--Selected' : ''),\n label: app.translator.trans('fof-linguist.admin.filters.missing'),\n }, [\n m('.FoF-Linguist-Missing-Filter', {\n onclick(event) {\n // Prevent closing the dropdown\n event.stopPropagation();\n },\n }, [\n Select.component({\n value: this.filters.missingTranslationsNegation,\n onchange: value => {\n this.filters.missingTranslationsNegation = value;\n\n if (this.filters.missingTranslationsInLocales.length) {\n this.applyFilters();\n }\n },\n options: {\n without: app.translator.trans('fof-linguist.admin.filters.negation-options.without'),\n with: app.translator.trans('fof-linguist.admin.filters.negation-options.with'),\n },\n }),\n Select.component({\n value: this.filters.missingTranslationsType,\n onchange: value => {\n this.filters.missingTranslationsType = value;\n\n if (this.filters.missingTranslationsInLocales.length) {\n this.applyFilters();\n }\n },\n options: {\n any: app.translator.trans('fof-linguist.admin.filters.type-options.any'),\n original: app.translator.trans('fof-linguist.admin.filters.type-options.original'),\n own: app.translator.trans('fof-linguist.admin.filters.type-options.own'),\n },\n }),\n m('p', app.translator.trans('fof-linguist.admin.filters.missing-middle-label')),\n Select.component({\n value: this.filters.missingTranslationsOperation,\n onchange: value => {\n this.filters.missingTranslationsOperation = value;\n\n if (this.filters.missingTranslationsInLocales.length) {\n this.applyFilters();\n }\n },\n options: {\n or: app.translator.trans('fof-linguist.admin.filters.operation-options.or'),\n and: app.translator.trans('fof-linguist.admin.filters.operation-options.and'),\n },\n }),\n ]),\n ...localesAsArray().map(\n locale => Button.component({\n className: 'Button',\n icon: `far fa-${this.filters.missingTranslationsInLocales.indexOf(locale.key) !== -1 ? 'check-square' : 'square'}`,\n onclick: () => {\n if (this.filters.missingTranslationsInLocales.indexOf(locale.key) !== -1) {\n this.filters.missingTranslationsInLocales = this.filters.missingTranslationsInLocales.filter(key => key !== locale.key);\n } else {\n this.filters.missingTranslationsInLocales.push(locale.key);\n }\n\n this.applyFilters();\n },\n }, locale.name + ' (' + locale.key + ')')\n ),\n ]),\n Dropdown.component({\n buttonClassName: 'Button',\n label: app.translator.trans('fof-linguist.admin.filters.mass-edit'),\n }, [\n Button.component({\n icon: 'far fa-clone',\n className: 'Button',\n onclick: () => {\n const strings = app.store.all('fof-linguist-string').filter(string => {\n const key = app.store.getById('fof-linguist-string-key', string.key());\n\n return key && key.locales()[string.locale()] === string.value();\n });\n\n if (confirm(extractText(app.translator.trans('fof-linguist.admin.buttons.delete-redundant-confirm', {\n count: strings.length + '',\n })))) {\n if (strings.length === 0) {\n return;\n }\n\n app.modal.show(LoadingModal);\n\n Promise.all(strings.map(string => string.delete())).then(() => {\n window.location.reload();\n });\n }\n },\n }, app.translator.trans('fof-linguist.admin.buttons.delete-redundant')),\n Button.component({\n icon: 'fas fa-trash',\n className: 'Button',\n onclick: () => {\n const strings = app.store.all('fof-linguist-string');\n\n if (confirm(extractText(app.translator.trans('fof-linguist.admin.buttons.delete-all-confirm', {\n count: strings.length + '',\n })))) {\n if (strings.length === 0) {\n return;\n }\n\n app.modal.show(LoadingModal);\n\n Promise.all(strings.map(string => string.delete())).then(() => {\n window.location.reload();\n });\n }\n },\n }, app.translator.trans('fof-linguist.admin.buttons.delete-all')),\n ]),\n ]),\n m('div', keys.map(stringKey => m(StringKey, {\n key: stringKey.id(),\n stringKey,\n highlight: this.filters.search,\n onchange: () => {\n // We use the setting and not a local variable because we need to preserve state\n // if we navigate away and back to the Linguist page without refreshing the admin panel\n app.data.settings['fof.linguist.should-clear-cache'] = '1';\n },\n }))),\n m('.FoF-Linguist-Results', [\n app.translator.trans('fof-linguist.admin.filters.results', {\n shown: keys.length + '', // cast to string otherwise number isn't displayed\n total: this.results.length + '',\n }),\n ' ',\n (this.results.length > keys.length ? Button.component({\n className: 'Button',\n onclick: () => {\n this.numberOfResultsToShow += RESULTS_PER_PAGE;\n },\n }, app.translator.trans('fof-linguist.admin.buttons.load-more')) : null),\n ]),\n ];\n }\n\n applyFilters() {\n this.numberOfResultsToShow = RESULTS_PER_PAGE;\n\n const keysWithCustomTranslations = app.store.all('fof-linguist-string').map(string => string.key());\n\n const keysWithCustomTranslationsIn = {};\n localesAsArray().forEach(locale => {\n keysWithCustomTranslationsIn[locale.key] = app.store.all('fof-linguist-string')\n .filter(string => string.locale() === locale.key)\n .map(string => string.key());\n });\n\n let lowercaseSearch = '';\n\n if (this.filters.search) {\n lowercaseSearch = this.filters.search.toLowerCase();\n }\n\n this.results = app.store.all('fof-linguist-string-key').filter(key => {\n if (this.filters.withOwnTranslations && keysWithCustomTranslations.indexOf(key.key()) === -1) {\n return false;\n }\n\n if (this.filters.missingTranslationsInLocales.length) {\n let operation = this.filters.missingTranslationsOperation;\n\n // Because the whole operation is reversed at the end based on with or without,\n // we actually need to make the opposite boolean computation on the \"has\" variables\n if (this.filters.missingTranslationsNegation === 'without') {\n operation = operation === 'or' ? 'and' : 'or';\n }\n\n const hasOriginalTranslation = booleanCheck(operation, this.filters.missingTranslationsInLocales.map(locale => {\n return key.locales().hasOwnProperty(locale);\n }));\n const hasOwnTranslation = booleanCheck(operation, this.filters.missingTranslationsInLocales.map(locale => {\n return keysWithCustomTranslationsIn[locale].indexOf(key.key()) !== -1;\n }));\n\n let matchesType = false;\n\n switch (this.filters.missingTranslationsType) {\n case 'any':\n matchesType = hasOriginalTranslation || hasOwnTranslation;\n break;\n case 'original':\n matchesType = hasOriginalTranslation;\n break;\n case 'own':\n matchesType = hasOwnTranslation;\n break;\n }\n\n if (this.filters.missingTranslationsNegation === 'without') {\n matchesType = !matchesType;\n }\n\n if (!matchesType) {\n return false;\n }\n }\n\n if (this.filters.forExtension) {\n if (key.key().indexOf(this.filters.forExtension + '.') !== 0) {\n return false;\n }\n }\n\n if (this.filters.frontend) {\n const parts = key.key().split('.');\n\n if (this.filters.frontend === '_all_except_admin') {\n // We will keep everything that isn't admin, including if it's a single level deep\n if (parts.length >= 2 && parts[1] === 'admin') {\n return false;\n }\n } else {\n // Keep only parts with 2 levels or more where second level matches frontend\n if (parts.length < 2 || parts[1] !== this.filters.frontend) {\n return false;\n }\n }\n }\n\n if (lowercaseSearch) {\n if (key.key().toLowerCase().indexOf(lowercaseSearch) !== -1) {\n return true;\n }\n\n const locales = key.locales();\n\n for (let locale in locales) {\n if (locales.hasOwnProperty(locale) && locales[locale].toLowerCase().indexOf(lowercaseSearch) !== -1) {\n return true;\n }\n }\n\n return false;\n }\n\n return true;\n });\n\n m.redraw();\n }\n}\n","import app from 'flarum/app';\nimport Button from 'flarum/components/Button';\nimport icon from 'flarum/helpers/icon';\nimport localesAsArray from '../utils/localesAsArray';\nimport namespaceLabel from '../utils/namespaceLabel';\nimport frontendLabel from '../utils/frontendLabel';\n\n/* global m */\n\nexport default class CoveragePage {\n oninit() {\n this.columns = 'locale';\n this.showAllFrontends = false;\n this.totalPercent = true;\n this.locale = [];\n\n const firstNonEnglishLocale = localesAsArray().find(locale => locale.key !== 'en');\n\n if (firstNonEnglishLocale) {\n this.locale = firstNonEnglishLocale.key;\n }\n }\n\n view(vnode) {\n let visibleFrontends = vnode.attrs.frontends.slice(0, 2);\n\n if (this.showAllFrontends) {\n visibleFrontends = vnode.attrs.frontends;\n }\n\n const {browseWithFilters} = vnode.attrs;\n\n return [\n m('.FoF-Linguist-Filters', [\n m('.ButtonGroup', [\n Button.component({\n className: 'Button' + (this.totalPercent ? ' active' : ''),\n onclick: () => {\n this.totalPercent = true;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.total-options.percent')),\n Button.component({\n className: 'Button' + (this.totalPercent ? ' ' : ' active'),\n onclick: () => {\n this.totalPercent = false;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.total-options.count')),\n ]),\n m('.ButtonGroup', [\n Button.component({\n className: 'Button' + (this.columns === 'locale' ? ' active' : ''),\n onclick: () => {\n this.columns = 'locale';\n },\n }, app.translator.trans('fof-linguist.admin.coverage.column-options.locale')),\n Button.component({\n className: 'Button' + (this.columns === 'namespace' ? ' active' : ''),\n onclick: () => {\n this.columns = 'namespace';\n this.showAllFrontends = false;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.column-options.namespace')),\n ]),\n this.columns === 'namespace' ? m('.ButtonGroup', localesAsArray().map(\n locale => Button.component({\n className: 'Button' + (this.locale === locale.key ? ' active' : ''),\n onclick: () => {\n if (this.locale !== locale.key) {\n this.locale = locale.key;\n }\n },\n }, locale.name + ' (' + locale.key + ')')\n )) : null,\n ]),\n m('table.FoF-Linguist-Coverage', [\n m('thead', m('tr', [\n m('th', app.translator.trans('fof-linguist.admin.coverage.columns.namespace')),\n this.columns === 'locale' ? localesAsArray().map(locale => m('th', locale.name + ' (' + locale.key + ')')) : [\n this.showAllFrontends ? visibleFrontends.map(frontend => m('th', frontendLabel(frontend))) : [\n m('th', app.translator.trans('fof-linguist.admin.coverage.columns.all-except-admin')),\n m('th', frontendLabel('admin')),\n m('th', Button.component({\n className: 'Button',\n onclick: () => {\n this.showAllFrontends = true;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.columns.all-frontends'))),\n ],\n ],\n ])),\n m('tbody', [\n this.columns === 'locale' ? m('tr', [\n m('td', [\n m('span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon'),\n m('span.FoF-Linguist-Coverage-Extension-Title', app.translator.trans('fof-linguist.admin.coverage.all-namespaces')),\n ]),\n localesAsArray().map(locale => m('td', this.localeCoverage(browseWithFilters, locale.key))),\n ]) : null,\n vnode.attrs.namespaces.map(namespace => {\n return m('tr', [\n m('td', namespace.extension ? [\n m('span.FoF-Linguist-Coverage-Extension-Icon', {\n style: namespace.extension.icon,\n }, namespace.extension.icon ? icon(namespace.extension.icon.name) : ''),\n m('span.FoF-Linguist-Coverage-Extension-Title', namespace.extension.extra['flarum-extension'].title),\n ] : [\n m('span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon'),\n m('span.FoF-Linguist-Coverage-Extension-Title', namespaceLabel(namespace.namespace)),\n ]),\n this.columns === 'locale' ? localesAsArray().map(locale => m('td', this.localeCoverage(browseWithFilters, locale.key, namespace.namespace))) : [\n this.showAllFrontends ?\n visibleFrontends.map(frontend => m('td', this.prefixCoverage(browseWithFilters, namespace.namespace, frontend))) : [\n m('td', this.prefixCoverage(browseWithFilters, namespace.namespace, '_all_except_admin')),\n m('td', this.prefixCoverage(browseWithFilters, namespace.namespace, 'admin')),\n ],\n ],\n ]);\n }),\n ]),\n ]),\n ];\n }\n\n prefixCoverage(browseWithFilters, namespace, frontend) {\n if (!this.locale) {\n return null;\n }\n\n return this.localeCoverage(browseWithFilters, this.locale, namespace, frontend);\n }\n\n localeCoverage(browseWithFilters, locale, namespace, frontend) {\n const stringKeys = app.store.all('fof-linguist-string-key').filter(key => {\n if (!namespace) {\n return true;\n }\n\n const parts = key.key().split('.');\n\n if (parts[0] !== namespace) {\n return false;\n }\n\n if (frontend === '_all_except_admin') {\n if (parts.length >= 2 && parts[1] === 'admin') {\n return false;\n }\n } else if (frontend && (parts.length < 2 || parts[1] !== frontend)) {\n return false;\n }\n\n return true;\n });\n\n if (stringKeys.length === 0) {\n return '-';\n }\n\n let customCount = 0;\n let originalCount = 0;\n\n stringKeys.forEach(stringKey => {\n const customString = app.store.all('fof-linguist-string').find(\n string => string.key() === stringKey.key() && string.locale() === locale\n );\n\n if (customString) {\n customCount++;\n } else if (stringKey.locales().hasOwnProperty(locale)) {\n originalCount++;\n }\n });\n\n const percent = Math.round(((customCount + originalCount) / stringKeys.length) * 100);\n\n let specialStyle;\n\n if (percent === 100) {\n specialStyle = 'full';\n } else if (percent < 5) {\n specialStyle = 'low';\n }\n\n let label;\n\n if (this.totalPercent) {\n label = app.translator.trans('fof-linguist.admin.coverage.count.percent', {\n percent: percent + '', // Keeps zero as string\n });\n } else {\n label = app.translator.trans('fof-linguist.admin.coverage.count.total', {\n translated: (customCount + originalCount) + '', // Keeps zero as string\n total: stringKeys.length,\n });\n }\n\n return m('.FoF-Linguist-Coverage-Progress-Wrap', [\n m('.FoF-Linguist-Progress', {\n className: specialStyle ? 'FoF-Linguist-Progress--' + specialStyle : '',\n }, [\n m('.FoF-Linguist-Progress-Bar', {\n style: {\n width: Math.max(percent, 5) + '%', // Always show the progress bar even if very close to 0\n },\n }),\n m('.FoF-Linguist-Progress-Label', label),\n m('.FoF-Linguist-Progress-More', app.translator.trans('fof-linguist.admin.coverage.count.details', {\n total: stringKeys.length,\n original: originalCount + '', // Cast to string to preserve zero\n custom: customCount + '',\n })),\n ]),\n Button.component({\n icon: 'fas fa-filter',\n className: 'Button Button--icon',\n onclick: () => {\n const options = {\n missingTranslationsInLocales: [locale],\n };\n\n if (namespace) {\n options.forExtension = namespace;\n }\n\n if (frontend) {\n options.frontend = frontend;\n }\n\n browseWithFilters(options);\n },\n title: app.translator.trans('fof-linguist.admin.coverage.apply-missing-filter'),\n }),\n ]);\n }\n}\n","import app from 'flarum/app';\nimport Select from 'flarum/components/Select';\nimport Switch from 'flarum/components/Switch';\nimport LinkButton from 'flarum/components/LinkButton';\nimport localesAsArray from '../utils/localesAsArray';\nimport namespaceLabel from '../utils/namespaceLabel';\n\n/* global m */\n\nexport default class ExportPage {\n oninit() {\n this.locale = 'en';\n this.namespace = null;\n this.includeOriginals = false;\n this.includeAll = false;\n this.loading = false;\n this.output = '';\n\n this.fetchOutput();\n }\n\n view(vnode) {\n const localeOptions = {};\n\n localesAsArray().forEach(locale => {\n localeOptions[locale.key] = locale.name + ' (' + locale.key + ')';\n });\n\n localeOptions.all = app.translator.trans('fof-linguist.admin.export.locale-all')\n\n const namespaceOptions = {\n _all: app.translator.trans('fof-linguist.admin.export.namespace-all'),\n };\n\n vnode.attrs.namespaces.forEach(namespace => {\n if (namespace.extension) {\n namespaceOptions[namespace.namespace] = namespace.extension.extra['flarum-extension'].title;\n } else {\n namespaceOptions[namespace.namespace] = namespaceLabel(namespace.namespace);\n\n }\n });\n\n return [\n m('h2', app.translator.trans('fof-linguist.admin.export.title')),\n m('.Form-group', m('.Alert', app.translator.trans('fof-linguist.admin.export.warning'))),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.export.locale')),\n Select.component({\n options: localeOptions,\n value: this.locale,\n onchange: value => {\n this.locale = value;\n\n this.fetchOutput();\n },\n }),\n ]),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.export.namespace')),\n Select.component({\n options: namespaceOptions,\n value: this.namespace === null ? '_all' : this.namespace,\n onchange: value => {\n this.namespace = value === '_all' ? null : value;\n\n this.fetchOutput();\n },\n }),\n ]),\n m('.Form-group', [\n Switch.component({\n state: this.includeOriginals,\n onchange: value => {\n this.includeOriginals = value;\n\n this.fetchOutput();\n }\n }, app.translator.trans('fof-linguist.admin.export.include-originals')),\n ]),\n m('.Form-group', [\n Switch.component({\n state: this.includeAll,\n onchange: value => {\n this.includeAll = value;\n\n this.fetchOutput();\n }\n }, app.translator.trans('fof-linguist.admin.export.include-all')),\n ]),\n m('.Form-group', [\n m('label', [\n app.translator.trans('fof-linguist.admin.export.output'),\n ' ',\n LinkButton.component({\n className: 'Button Button--primary',\n href: this.exportUrl(),\n external: true,\n // If a namespace is selected, we use it as filename (language pack convention)\n // otherwise we use the locale as filename (extension convention)\n download: (this.namespace || this.locale) + '.yml',\n }, app.translator.trans('fof-linguist.admin.export.download')),\n ]),\n m('textarea.FormControl.FoF-Export-Textarea', {\n readonly: true,\n value: this.output,\n rows: 10,\n placeholder: this.loading ? app.translator.trans('fof-linguist.admin.export.output-loading') : app.translator.trans('fof-linguist.admin.export.output-empty'),\n }),\n ]),\n ];\n }\n\n exportUrl() {\n return app.forum.attribute('apiUrl') + '/fof/linguist/export?' + m.buildQueryString({\n locale: this.locale,\n namespace: this.namespace,\n includeOriginals: this.includeOriginals ? '1' : '0',\n includeAll: this.includeAll ? '1' : '0',\n });\n }\n\n fetchOutput() {\n this.loading = true;\n this.output = '';\n\n app.request({\n method: 'GET',\n url: this.exportUrl(),\n // Flarum doesn't support a raw to have the raw text response\n // So we'll encode the response with JSON so Flarum can parse if afterwards\n extract: raw => JSON.stringify(raw),\n }).then(output => {\n this.loading = false;\n this.output = output;\n m.redraw();\n }).catch(error => {\n this.loading = false;\n m.redraw();\n throw error;\n });\n }\n}\n","import app from 'flarum/app';\nimport Button from 'flarum/components/Button';\nimport Select from 'flarum/components/Select';\nimport Switch from 'flarum/components/Switch';\nimport extractText from 'flarum/utils/extractText';\nimport localesAsArray from '../utils/localesAsArray';\n\n/* global m */\n\nexport default class ExportPage {\n oninit() {\n this.locale = 'en';\n this.overrideExisting = true;\n this.input = '';\n this.loading = false;\n }\n\n view() {\n const localeOptions = {};\n\n localesAsArray().forEach(locale => {\n localeOptions[locale.key] = locale.name + ' (' + locale.key + ')';\n });\n\n localeOptions.all = app.translator.trans('fof-linguist.admin.import.locale-all')\n\n return [\n m('h2', app.translator.trans('fof-linguist.admin.import.title')),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.import.input')),\n m('textarea.FormControl', {\n value: this.input,\n oninput: event => {\n this.input = event.target.value;\n },\n rows: 10,\n placeholder: app.translator.trans('fof-linguist.admin.import.input-placeholder'),\n }),\n ]),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.import.locale')),\n Select.component({\n options: localeOptions,\n value: this.locale,\n onchange: value => {\n this.locale = value;\n\n this.fetchOutput();\n },\n }),\n ]),\n m('.Form-group', [\n Switch.component({\n state: this.overrideExisting,\n onchange: value => {\n this.overrideExisting = value;\n }\n }, app.translator.trans('fof-linguist.admin.import.override-existing')),\n ]),\n m('.Form-group', Button.component({\n className: 'Button Button--primary',\n onclick: () => {\n this.loading = true;\n\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/fof/linguist/import',\n body: {\n input: this.input,\n locale: this.locale,\n ignoreExisting: !this.overrideExisting,\n },\n }).then(data => {\n this.loading = false;\n m.redraw();\n\n if (confirm(extractText(app.translator.trans(this.overrideExisting ? 'fof-linguist.admin.import.results' : 'fof-linguist.admin.import.results-with-ignore', {\n imported: data.imported + '', // Cast to string to preserve zeros\n ignored: data.ignored + '',\n identical: data.identical + '',\n })))) {\n window.location.reload();\n }\n }).catch(error => {\n this.loading = false;\n m.redraw();\n throw error;\n });\n },\n disabled: this.loading || !this.input,\n loading: this.loading,\n }, app.translator.trans('fof-linguist.admin.import.submit'))),\n ];\n }\n}\n","import app from 'flarum/app';\nimport ExtensionPage from 'flarum/components/ExtensionPage';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport StringsPage from './StringsPage';\nimport CoveragePage from './CoveragePage';\nimport ExportPage from './ExportPage';\nimport ImportPage from './ImportPage';\n\n/* global m */\n\nexport default class LinguistPage extends ExtensionPage {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.tab = 'strings';\n this.ready = false;\n this.namespaces = []; // First level of translation keys. Usually an extension ID, but also core and validation\n this.frontends = [\n 'forum',\n 'admin',\n 'lib',\n 'ref',\n 'api',\n ]; // Second level of translation keys: forum, admin, ...\n this.initialBrowseFilters = {};\n\n Promise.all([\n app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/fof/linguist/strings',\n }).then(result => {\n app.store.pushPayload(result);\n }),\n app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/fof/linguist/string-keys',\n }).then(result => {\n const keys = app.store.pushPayload(result);\n\n const namespaces = [];\n\n keys.forEach(key => {\n const parts = key.key().split('.');\n\n const namespace = parts[0];\n\n if (['core', 'validation'].indexOf(namespace) === -1 && namespaces.indexOf(namespace) === -1) {\n namespaces.push(namespace);\n }\n\n if (parts.length > 1 && namespace !== 'validation') {\n const frontend = parts[1];\n\n if (this.frontends.indexOf(frontend) === -1) {\n this.frontends.push(frontend);\n }\n }\n });\n\n namespaces.sort();\n\n this.namespaces = [\n {\n namespace: 'core',\n },\n {\n namespace: 'validation',\n },\n ...namespaces.map(namespace => {\n // First we look if the namespace matches an extension ID, that's the most common naming\n let extension = app.data.extensions[namespace];\n\n // If that's unsuccessful, we'll look if the full package name was used as namespace\n if (!extension) {\n extension = Object.values(app.data.extensions).find(extension => {\n const packageNameWithDash = extension.name.replace('/', '-');\n\n return namespace === packageNameWithDash;\n });\n }\n\n return {\n namespace,\n extension,\n };\n }),\n ];\n }),\n ]).then(() => {\n this.ready = true;\n m.redraw();\n });\n }\n\n content() {\n return m('.ExtensionPage-settings', m('.container', [\n this.contentTab(),\n ]));\n }\n\n infoItems() {\n const items = super.infoItems();\n\n items.add('linguist-tabs', m('ul.FoF-Linguist-Tabs', [\n m('li', m('a', {\n className: this.tab === 'strings' ? 'active' : '',\n onclick: () => {\n this.tab = 'strings';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.strings'))),\n m('li', m('a', {\n className: this.tab === 'coverage' ? 'active' : '',\n onclick: () => {\n this.tab = 'coverage';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.coverage'))),\n m('li', m('a', {\n className: this.tab === 'export' ? 'active' : '',\n onclick: () => {\n this.tab = 'export';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.export'))),\n m('li', m('a', {\n className: this.tab === 'import' ? 'active' : '',\n onclick: () => {\n this.tab = 'import';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.import'))),\n ]), 100);\n\n return items;\n }\n\n contentTab() {\n if (!this.ready) {\n return LoadingIndicator.component();\n }\n\n switch (this.tab) {\n case 'strings':\n return m(StringsPage, {\n namespaces: this.namespaces,\n frontends: this.frontends,\n initialBrowseFilters: this.initialBrowseFilters,\n });\n case 'coverage':\n return m(CoveragePage, {\n namespaces: this.namespaces,\n frontends: this.frontends,\n browseWithFilters: filters => {\n this.initialBrowseFilters = filters;\n this.tab = 'strings';\n },\n });\n case 'export':\n return m(ExportPage, {\n namespaces: this.namespaces,\n });\n case 'import':\n return m(ImportPage);\n }\n\n return null;\n }\n}\n","import app from 'flarum/app';\nimport StringKey from './models/StringKey';\nimport TextString from './models/TextString';\nimport LinguistPage from './pages/LinguistPage';\n\napp.initializers.add('fof-linguist', app => {\n app.store.models['fof-linguist-string-key'] = StringKey;\n app.store.models['fof-linguist-string'] = TextString;\n\n app.extensionData.for('fof-linguist').registerPage(LinguistPage);\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@fof/linguist/webpack/bootstrap","webpack://@fof/linguist/external \"flarum.core.compat['app']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Button']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Select']\"","webpack://@fof/linguist/external \"flarum.core.compat['Model']\"","webpack://@fof/linguist/external \"flarum.core.compat['utils/extractText']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Switch']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Dropdown']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/LoadingModal']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/ExtensionPage']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/LoadingIndicator']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/Alert']\"","webpack://@fof/linguist/external \"flarum.core.compat['utils/ItemList']\"","webpack://@fof/linguist/external \"flarum.core.compat['helpers/icon']\"","webpack://@fof/linguist/external \"flarum.core.compat['components/LinkButton']\"","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@fof/linguist/./src/admin/models/StringKey.js","webpack://@fof/linguist/./src/admin/models/TextString.js","webpack://@fof/linguist/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/linguist/./src/admin/utils/localesAsArray.js","webpack://@fof/linguist/./src/admin/utils/highlightMithril.js","webpack://@fof/linguist/./src/admin/components/StringLocale.js","webpack://@fof/linguist/./src/admin/components/StringKey.js","webpack://@fof/linguist/./src/admin/utils/namespaceLabel.js","webpack://@fof/linguist/./src/admin/utils/frontendLabel.js","webpack://@fof/linguist/./src/admin/utils/booleanCheck.js","webpack://@fof/linguist/./src/admin/pages/StringsPage.js","webpack://@fof/linguist/./src/admin/pages/CoveragePage.js","webpack://@fof/linguist/./src/admin/pages/ExportPage.js","webpack://@fof/linguist/./src/admin/pages/ImportPage.js","webpack://@fof/linguist/./src/admin/pages/LinguistPage.js","webpack://@fof/linguist/./src/admin/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","constructor","_defineProperty","obj","configurable","writable","StringKey","Model","attribute","TextString","apiEndpoint","this","exists","data","id","_extends","assign","target","arguments","length","source","apply","locales","app","push","string","highlight","lowercaseHighliht","toLowerCase","regex","RegExp","replace","HIGHLIGHT_DELIMITER","split","map","text","StringLocale","oninit","vnode","stringKey","attrs","locale","localeKey","originalString","store","all","find","dirty","processing","originalHasNewLine","keys","some","indexOf","inputType","view","placeholderText","translator","trans","localeName","className","title","oninput","event","disabled","highlightMithril","actions","onchange","toArray","items","ItemList","add","Button","component","type","loading","onclick","saveString","deleteString","createRecord","attributes","save","then","redraw","err","localesAsArray","namespace","translation","translations","frontend","operation","booleans","reduce","a","b","StringsPage","numberOfResultsToShow","filters","search","withOwnTranslations","missingTranslationsNegation","missingTranslationsType","missingTranslationsOperation","missingTranslationsInLocales","forExtension","initialBrowseFilters","results","applyFilters","slice","settings","Alert","dismissible","controls","modal","show","LoadingModal","request","method","url","forum","window","location","reload","placeholder","icon","Dropdown","buttonClassName","label","namespaces","extension","extra","namespaceLabel","frontends","frontendLabel","stopPropagation","Select","options","without","with","any","original","own","or","and","filter","strings","getById","confirm","extractText","count","Promise","shown","total","keysWithCustomTranslations","keysWithCustomTranslationsIn","forEach","lowercaseSearch","hasOriginalTranslation","booleanCheck","hasOwnTranslation","matchesType","parts","CoveragePage","columns","showAllFrontends","totalPercent","firstNonEnglishLocale","visibleFrontends","browseWithFilters","localeCoverage","style","prefixCoverage","stringKeys","customCount","originalCount","specialStyle","percent","Math","round","translated","width","max","custom","ExportPage","includeOriginals","includeAll","output","fetchOutput","localeOptions","namespaceOptions","_all","Switch","state","LinkButton","href","exportUrl","external","download","readonly","rows","buildQueryString","extract","raw","JSON","stringify","error","overrideExisting","input","body","ignoreExisting","imported","ignored","identical","LinguistPage","tab","ready","result","pushPayload","sort","extensions","values","packageNameWithDash","content","contentTab","infoItems","LoadingIndicator","ImportPage","ExtensionPage","initializers","models","extensionData","registerPage"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","module.exports = flarum.core.compat['app'];","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['components/Select'];","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['utils/extractText'];","module.exports = flarum.core.compat['components/Switch'];","module.exports = flarum.core.compat['components/Dropdown'];","module.exports = flarum.core.compat['components/LoadingModal'];","module.exports = flarum.core.compat['components/ExtensionPage'];","module.exports = flarum.core.compat['components/LoadingIndicator'];","module.exports = flarum.core.compat['components/Alert'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['components/LinkButton'];","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import Model from 'flarum/Model';\n\nexport default class StringKey extends Model {\n key = Model.attribute('key');\n locales = Model.attribute('locales');\n}\n","import Model from 'flarum/Model';\n\nexport default class TextString extends Model {\n key = Model.attribute('key');\n locale = Model.attribute('locale');\n value = Model.attribute('value');\n\n apiEndpoint() {\n return '/fof/linguist/strings' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import app from 'flarum/app';\n\nexport default function () {\n let locales = [];\n\n for (let key in app.data.locales) {\n if (!app.data.locales.hasOwnProperty(key)) {\n continue;\n }\n\n locales.push({\n key,\n name: app.data.locales[key],\n });\n }\n\n return locales;\n}\n","/* global m */\n\nconst HIGHLIGHT_DELIMITER = '';\n\n// Takes a string and highlight a keyword with a span with mithril template\n// The output will be an array if a keyword is given\nexport default function (string, highlight) {\n if (!highlight) {\n return string;\n }\n\n const lowercaseHighliht = highlight.toLowerCase();\n\n // Regex to match the highlighted work in a case-insensitive manner\n const regex = new RegExp(lowercaseHighliht.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'i');\n\n return string\n .replace(regex, HIGHLIGHT_DELIMITER + '$&' + HIGHLIGHT_DELIMITER)\n .split(HIGHLIGHT_DELIMITER)\n .map(text => {\n if (text.toLowerCase() === lowercaseHighliht) {\n return m('span.FoF-Linguist-Highlight', text);\n }\n\n return text;\n });\n}\n","import app from 'flarum/app';\nimport ItemList from 'flarum/utils/ItemList';\nimport Button from 'flarum/components/Button';\nimport highlightMithril from '../utils/highlightMithril';\n\n/* global m */\n\nexport default class StringLocale {\n oninit(vnode) {\n this.stringKey = vnode.attrs.stringKey;\n this.locale = vnode.attrs.locale;\n this.localeKey = this.locale ? this.locale.key : null;\n this.originalString = this.localeKey && this.stringKey.locales().hasOwnProperty(this.localeKey) ? this.stringKey.locales()[this.localeKey] : null;\n\n this.string = app.store.all('fof-linguist-string').find(\n string => string.key() === this.stringKey.key() && string.locale() === this.localeKey\n );\n\n this.value = this.string ? this.string.value() : '';\n this.dirty = false;\n this.processing = false;\n\n // We check whether any original translation in any language has a newline\n // By not hard-coding to English, this should work pretty well even if the fallback locale is modified,\n // or if a text happens to not be available in the fallback language\n const originalHasNewLine = Object.keys(this.stringKey.locales()).some(key => this.stringKey.locales()[key].indexOf('\\n') !== -1);\n\n this.inputType = 'input';\n\n // We will enable multi-line editing if the original has a newline, or if the current custom value already has one\n if (originalHasNewLine || this.value.indexOf('\\n') !== -1) {\n this.inputType = 'textarea';\n }\n }\n\n view(vnode) {\n const placeholderText = this.originalString ? this.originalString : '(' + app.translator.trans('fof-linguist.admin.placeholder.' + (this.localeKey ? 'not-translated' : 'all-locales')) + ')';\n\n return m('.FoF-Linguist-Locale', [\n m('label.FoF-Linguist-Label', this.localeName()),\n m('.FoF-Linguist-Field', {\n className: (this.value ? 'FoF-Linguist-Field--with-value' : '') + (this.originalString ? ' FoF-Linguist-Field--with-original-string' : ''),\n title: placeholderText,\n }, [\n m('.FoF-Linguist-Field-Wrap', [\n m(this.inputType, {\n className: 'FormControl FoF-Linguist-Input',\n value: this.value,\n oninput: event => {\n this.value = event.target.value;\n this.dirty = true;\n\n // Remove dirty state if the user erased his text without saving\n if (!this.value && !this.string) {\n this.dirty = false;\n }\n },\n disabled: this.processing,\n }),\n m('.FoF-Linguist-Placeholder', [\n m('span.FoF-Linguist-Placeholder-Hint', app.translator.trans('fof-linguist.admin.placeholder.hint')),\n ' ',\n m('span', this.originalString ? highlightMithril(placeholderText, vnode.attrs.highlight) : placeholderText),\n ]),\n ]),\n ]),\n m('.FoF-Linguist-Controls', this.actions(vnode.attrs.onchange).toArray()),\n ]);\n }\n\n localeName() {\n if (this.locale) {\n return [this.locale.name + ' (', m('code', this.locale.key), ')'];\n } else {\n return app.translator.trans('fof-linguist.admin.locales.all');\n }\n }\n\n actions(onchange) {\n const items = new ItemList();\n\n items.add('apply', Button.component({\n type: 'button',\n className: 'Button Button--primary',\n loading: this.processing,\n disabled: !this.dirty,\n onclick: () => {\n this.saveString(onchange);\n },\n }, app.translator.trans('fof-linguist.admin.buttons.apply')));\n\n items.add('reset', Button.component({\n type: 'button',\n className: 'Button',\n loading: this.processing,\n disabled: !this.dirty && !this.string,\n onclick: () => {\n this.deleteString(onchange);\n },\n }, app.translator.trans('fof-linguist.admin.buttons.reset')));\n\n if (this.originalString) {\n items.add('copy-original', Button.component({\n type: 'button',\n className: 'Button',\n loading: this.processing,\n onclick: () => {\n this.value = this.originalString;\n this.dirty = true;\n },\n }, app.translator.trans('fof-linguist.admin.buttons.copy-original')));\n }\n\n return items;\n }\n\n saveString(onchange) {\n if (!this.value) {\n this.deleteString(onchange);\n\n return;\n }\n\n if (!this.string) {\n this.string = app.store.createRecord('fof-linguist-string', {\n attributes: {\n key: this.stringKey.key(),\n locale: this.localeKey,\n value: '',\n },\n });\n }\n\n this.string.data.attributes.value = this.value;\n\n if (!this.string.locale()) delete this.string.data.attributes.locale;\n\n this.processing = true;\n\n this.string.save(this.string.data.attributes).then(() => {\n this.processing = false;\n this.dirty = false;\n\n onchange();\n\n m.redraw();\n }).catch(err => {\n this.processing = false;\n\n throw err;\n });\n }\n\n deleteString(onchange) {\n if (this.string) {\n this.processing = true;\n\n this.string.delete().then(() => {\n this.processing = false;\n this.dirty = false;\n\n this.string = null;\n this.value = '';\n\n onchange();\n\n m.redraw();\n }).catch(err => {\n this.processing = false;\n\n throw err;\n });\n } else {\n this.value = '';\n this.dirty = false;\n }\n }\n}\n","import StringLocale from '../components/StringLocale';\nimport localesAsArray from '../utils/localesAsArray';\nimport highlightMithril from '../utils/highlightMithril';\n\n/* global m */\n\nexport default class StringKey {\n view(vnode) {\n const {\n stringKey,\n highlight,\n onchange,\n } = vnode.attrs;\n\n return m('.FoF-Linguist-Key', [\n m('.FoF-Linguist-Key-Code', m('code', highlightMithril(stringKey.key(), highlight))),\n m('.FoF-Linguist-Locales', [\n ...localesAsArray().map(locale => m(StringLocale, {\n key: locale.key,\n locale,\n stringKey,\n highlight,\n onchange,\n })),\n m(StringLocale, {\n key: 'all',\n locale: null,\n stringKey,\n highlight,\n onchange,\n }),\n ]),\n ]);\n }\n}\n","import app from 'flarum/app';\n\nexport default function (namespace) {\n const translation = app.translator.translations['fof-linguist.admin.known-namespace.' + namespace];\n\n if (translation) {\n return translation;\n }\n\n return namespace;\n}\n","import app from 'flarum/app';\n\nexport default function (frontend) {\n const translation = app.translator.translations['fof-linguist.admin.known-frontend.' + frontend];\n\n if (translation) {\n return translation;\n }\n\n return frontend;\n}\n","export default function (operation, booleans) {\n return booleans.reduce((a, b) => {\n if (a === 'start') {\n return b;\n }\n\n if (operation === 'or') {\n return a || b;\n }\n\n return a && b;\n }, 'start');\n}\n","import app from 'flarum/app';\nimport Button from 'flarum/components/Button';\nimport Dropdown from 'flarum/components/Dropdown';\nimport Select from 'flarum/components/Select';\nimport Alert from 'flarum/components/Alert';\nimport LoadingModal from 'flarum/components/LoadingModal';\nimport extractText from 'flarum/utils/extractText';\nimport localesAsArray from '../utils/localesAsArray';\nimport StringKey from '../components/StringKey';\nimport namespaceLabel from '../utils/namespaceLabel';\nimport frontendLabel from '../utils/frontendLabel';\nimport booleanCheck from '../utils/booleanCheck';\n\n/* global m */\n\nconst RESULTS_PER_PAGE = 20;\n\nexport default class StringsPage {\n oninit(vnode) {\n this.numberOfResultsToShow = RESULTS_PER_PAGE;\n\n this.filters = Object.assign({\n search: '',\n withOwnTranslations: false,\n missingTranslationsNegation: 'without',\n missingTranslationsType: 'any',\n missingTranslationsOperation: 'or',\n missingTranslationsInLocales: [],\n forExtension: null,\n frontend: null,\n }, vnode.attrs.initialBrowseFilters || {});\n\n this.results = [];\n\n this.applyFilters();\n }\n\n view(vnode) {\n const keys = this.results.slice(0, this.numberOfResultsToShow);\n\n return [\n // Additional divs are used to reduce Mithril redraws as much as possible when the conditional components appear\n m('div', app.data.settings['fof.linguist.should-clear-cache'] === '1' ? Alert.component({\n dismissible: false,\n controls: [Button.component({\n className: 'Button Button--link',\n onclick() {\n // Same logic as in core StatusWidget\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + '/cache',\n }).then(() => window.location.reload());\n },\n }, app.translator.trans('fof-linguist.admin.clear-cache.button'))],\n }, app.translator.trans('fof-linguist.admin.clear-cache.text')) : null),\n m('.FoF-Linguist-Filters', [\n m('input.FormControl', {\n value: this.filters.search,\n oninput: event => {\n this.filters.search = event.target.value;\n this.applyFilters();\n },\n placeholder: app.translator.trans('fof-linguist.admin.filters.search'),\n }),\n Button.component({\n className: 'Button' + (this.filters.withOwnTranslations ? ' FoF-Linguist-Filter--Selected' : ''),\n icon: `far fa-${this.filters.withOwnTranslations ? 'check-square' : 'square'}`,\n onclick: () => {\n this.filters.withOwnTranslations = !this.filters.withOwnTranslations;\n this.applyFilters();\n },\n }, app.translator.trans('fof-linguist.admin.filters.with-own-translations')),\n Dropdown.component({\n buttonClassName: 'Button' + (this.filters.forExtension ? ' FoF-Linguist-Filter--Selected' : ''),\n label: app.translator.trans('fof-linguist.admin.filters.for-extension'),\n }, vnode.attrs.namespaces.map(\n namespace => Button.component({\n className: 'Button',\n icon: `far fa-${this.filters.forExtension === namespace.namespace ? 'dot-circle' : 'circle'}`,\n onclick: () => {\n if (this.filters.forExtension === namespace.namespace) {\n this.filters.forExtension = null;\n } else {\n this.filters.forExtension = namespace.namespace;\n }\n\n this.applyFilters();\n },\n }, namespace.extension ? namespace.extension.extra['flarum-extension'].title : namespaceLabel(namespace.namespace))\n )),\n Dropdown.component({\n buttonClassName: 'Button' + (this.filters.frontend ? ' FoF-Linguist-Filter--Selected' : ''),\n label: app.translator.trans('fof-linguist.admin.filters.frontend'),\n }, [\n '_all_except_admin',\n ...vnode.attrs.frontends,\n ].map(\n frontend => Button.component({\n className: 'Button',\n icon: `far fa-${this.filters.frontend === frontend ? 'dot-circle' : 'circle'}`,\n onclick: () => {\n if (this.filters.frontend === frontend) {\n this.filters.frontend = null;\n } else {\n this.filters.frontend = frontend;\n }\n\n this.applyFilters();\n },\n }, frontend === '_all_except_admin' ? app.translator.trans('fof-linguist.admin.filters.frontend-all-except-admin') : frontendLabel(frontend))\n )),\n Dropdown.component({\n buttonClassName: 'Button' + (this.filters.missingTranslationsInLocales.length ? ' FoF-Linguist-Filter--Selected' : ''),\n label: app.translator.trans('fof-linguist.admin.filters.missing'),\n }, [\n m('.FoF-Linguist-Missing-Filter', {\n onclick(event) {\n // Prevent closing the dropdown\n event.stopPropagation();\n },\n }, [\n Select.component({\n value: this.filters.missingTranslationsNegation,\n onchange: value => {\n this.filters.missingTranslationsNegation = value;\n\n if (this.filters.missingTranslationsInLocales.length) {\n this.applyFilters();\n }\n },\n options: {\n without: app.translator.trans('fof-linguist.admin.filters.negation-options.without'),\n with: app.translator.trans('fof-linguist.admin.filters.negation-options.with'),\n },\n }),\n Select.component({\n value: this.filters.missingTranslationsType,\n onchange: value => {\n this.filters.missingTranslationsType = value;\n\n if (this.filters.missingTranslationsInLocales.length) {\n this.applyFilters();\n }\n },\n options: {\n any: app.translator.trans('fof-linguist.admin.filters.type-options.any'),\n original: app.translator.trans('fof-linguist.admin.filters.type-options.original'),\n own: app.translator.trans('fof-linguist.admin.filters.type-options.own'),\n },\n }),\n m('p', app.translator.trans('fof-linguist.admin.filters.missing-middle-label')),\n Select.component({\n value: this.filters.missingTranslationsOperation,\n onchange: value => {\n this.filters.missingTranslationsOperation = value;\n\n if (this.filters.missingTranslationsInLocales.length) {\n this.applyFilters();\n }\n },\n options: {\n or: app.translator.trans('fof-linguist.admin.filters.operation-options.or'),\n and: app.translator.trans('fof-linguist.admin.filters.operation-options.and'),\n },\n }),\n ]),\n ...localesAsArray().map(\n locale => Button.component({\n className: 'Button',\n icon: `far fa-${this.filters.missingTranslationsInLocales.indexOf(locale.key) !== -1 ? 'check-square' : 'square'}`,\n onclick: () => {\n if (this.filters.missingTranslationsInLocales.indexOf(locale.key) !== -1) {\n this.filters.missingTranslationsInLocales = this.filters.missingTranslationsInLocales.filter(key => key !== locale.key);\n } else {\n this.filters.missingTranslationsInLocales.push(locale.key);\n }\n\n this.applyFilters();\n },\n }, locale.name + ' (' + locale.key + ')')\n ),\n ]),\n Dropdown.component({\n buttonClassName: 'Button',\n label: app.translator.trans('fof-linguist.admin.filters.mass-edit'),\n }, [\n Button.component({\n icon: 'far fa-clone',\n className: 'Button',\n onclick: () => {\n const strings = app.store.all('fof-linguist-string').filter(string => {\n const key = app.store.getById('fof-linguist-string-key', string.key());\n\n return key && key.locales()[string.locale()] === string.value();\n });\n\n if (confirm(extractText(app.translator.trans('fof-linguist.admin.buttons.delete-redundant-confirm', {\n count: strings.length + '',\n })))) {\n if (strings.length === 0) {\n return;\n }\n\n app.modal.show(LoadingModal);\n\n Promise.all(strings.map(string => string.delete())).then(() => {\n window.location.reload();\n });\n }\n },\n }, app.translator.trans('fof-linguist.admin.buttons.delete-redundant')),\n Button.component({\n icon: 'fas fa-trash',\n className: 'Button',\n onclick: () => {\n const strings = app.store.all('fof-linguist-string');\n\n if (confirm(extractText(app.translator.trans('fof-linguist.admin.buttons.delete-all-confirm', {\n count: strings.length + '',\n })))) {\n if (strings.length === 0) {\n return;\n }\n\n app.modal.show(LoadingModal);\n\n Promise.all(strings.map(string => string.delete())).then(() => {\n window.location.reload();\n });\n }\n },\n }, app.translator.trans('fof-linguist.admin.buttons.delete-all')),\n ]),\n ]),\n m('div', keys.map(stringKey => m(StringKey, {\n key: stringKey.id(),\n stringKey,\n highlight: this.filters.search,\n onchange: () => {\n // We use the setting and not a local variable because we need to preserve state\n // if we navigate away and back to the Linguist page without refreshing the admin panel\n app.data.settings['fof.linguist.should-clear-cache'] = '1';\n },\n }))),\n m('.FoF-Linguist-Results', [\n app.translator.trans('fof-linguist.admin.filters.results', {\n shown: keys.length + '', // cast to string otherwise number isn't displayed\n total: this.results.length + '',\n }),\n ' ',\n (this.results.length > keys.length ? Button.component({\n className: 'Button',\n onclick: () => {\n this.numberOfResultsToShow += RESULTS_PER_PAGE;\n },\n }, app.translator.trans('fof-linguist.admin.buttons.load-more')) : null),\n ]),\n ];\n }\n\n applyFilters() {\n this.numberOfResultsToShow = RESULTS_PER_PAGE;\n\n const keysWithCustomTranslations = app.store.all('fof-linguist-string').map(string => string.key());\n\n const keysWithCustomTranslationsIn = {};\n localesAsArray().forEach(locale => {\n keysWithCustomTranslationsIn[locale.key] = app.store.all('fof-linguist-string')\n .filter(string => string.locale() === locale.key)\n .map(string => string.key());\n });\n\n let lowercaseSearch = '';\n\n if (this.filters.search) {\n lowercaseSearch = this.filters.search.toLowerCase();\n }\n\n this.results = app.store.all('fof-linguist-string-key').filter(key => {\n if (this.filters.withOwnTranslations && keysWithCustomTranslations.indexOf(key.key()) === -1) {\n return false;\n }\n\n if (this.filters.missingTranslationsInLocales.length) {\n let operation = this.filters.missingTranslationsOperation;\n\n // Because the whole operation is reversed at the end based on with or without,\n // we actually need to make the opposite boolean computation on the \"has\" variables\n if (this.filters.missingTranslationsNegation === 'without') {\n operation = operation === 'or' ? 'and' : 'or';\n }\n\n const hasOriginalTranslation = booleanCheck(operation, this.filters.missingTranslationsInLocales.map(locale => {\n return key.locales().hasOwnProperty(locale);\n }));\n const hasOwnTranslation = booleanCheck(operation, this.filters.missingTranslationsInLocales.map(locale => {\n return keysWithCustomTranslationsIn[locale].indexOf(key.key()) !== -1;\n }));\n\n let matchesType = false;\n\n switch (this.filters.missingTranslationsType) {\n case 'any':\n matchesType = hasOriginalTranslation || hasOwnTranslation;\n break;\n case 'original':\n matchesType = hasOriginalTranslation;\n break;\n case 'own':\n matchesType = hasOwnTranslation;\n break;\n }\n\n if (this.filters.missingTranslationsNegation === 'without') {\n matchesType = !matchesType;\n }\n\n if (!matchesType) {\n return false;\n }\n }\n\n if (this.filters.forExtension) {\n if (key.key().indexOf(this.filters.forExtension + '.') !== 0) {\n return false;\n }\n }\n\n if (this.filters.frontend) {\n const parts = key.key().split('.');\n\n if (this.filters.frontend === '_all_except_admin') {\n // We will keep everything that isn't admin, including if it's a single level deep\n if (parts.length >= 2 && parts[1] === 'admin') {\n return false;\n }\n } else {\n // Keep only parts with 2 levels or more where second level matches frontend\n if (parts.length < 2 || parts[1] !== this.filters.frontend) {\n return false;\n }\n }\n }\n\n if (lowercaseSearch) {\n if (key.key().toLowerCase().indexOf(lowercaseSearch) !== -1) {\n return true;\n }\n\n const locales = key.locales();\n\n for (let locale in locales) {\n if (locales.hasOwnProperty(locale) && locales[locale].toLowerCase().indexOf(lowercaseSearch) !== -1) {\n return true;\n }\n }\n\n return false;\n }\n\n return true;\n });\n\n m.redraw();\n }\n}\n","import app from 'flarum/app';\nimport Button from 'flarum/components/Button';\nimport icon from 'flarum/helpers/icon';\nimport localesAsArray from '../utils/localesAsArray';\nimport namespaceLabel from '../utils/namespaceLabel';\nimport frontendLabel from '../utils/frontendLabel';\n\n/* global m */\n\nexport default class CoveragePage {\n oninit() {\n this.columns = 'locale';\n this.showAllFrontends = false;\n this.totalPercent = true;\n this.locale = [];\n\n const firstNonEnglishLocale = localesAsArray().find(locale => locale.key !== 'en');\n\n if (firstNonEnglishLocale) {\n this.locale = firstNonEnglishLocale.key;\n }\n }\n\n view(vnode) {\n let visibleFrontends = vnode.attrs.frontends.slice(0, 2);\n\n if (this.showAllFrontends) {\n visibleFrontends = vnode.attrs.frontends;\n }\n\n const {browseWithFilters} = vnode.attrs;\n\n return [\n m('.FoF-Linguist-Filters', [\n m('.ButtonGroup', [\n Button.component({\n className: 'Button' + (this.totalPercent ? ' active' : ''),\n onclick: () => {\n this.totalPercent = true;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.total-options.percent')),\n Button.component({\n className: 'Button' + (this.totalPercent ? ' ' : ' active'),\n onclick: () => {\n this.totalPercent = false;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.total-options.count')),\n ]),\n m('.ButtonGroup', [\n Button.component({\n className: 'Button' + (this.columns === 'locale' ? ' active' : ''),\n onclick: () => {\n this.columns = 'locale';\n },\n }, app.translator.trans('fof-linguist.admin.coverage.column-options.locale')),\n Button.component({\n className: 'Button' + (this.columns === 'namespace' ? ' active' : ''),\n onclick: () => {\n this.columns = 'namespace';\n this.showAllFrontends = false;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.column-options.namespace')),\n ]),\n this.columns === 'namespace' ? m('.ButtonGroup', localesAsArray().map(\n locale => Button.component({\n className: 'Button' + (this.locale === locale.key ? ' active' : ''),\n onclick: () => {\n if (this.locale !== locale.key) {\n this.locale = locale.key;\n }\n },\n }, locale.name + ' (' + locale.key + ')')\n )) : null,\n ]),\n m('table.FoF-Linguist-Coverage', [\n m('thead', m('tr', [\n m('th', app.translator.trans('fof-linguist.admin.coverage.columns.namespace')),\n this.columns === 'locale' ? localesAsArray().map(locale => m('th', locale.name + ' (' + locale.key + ')')) : [\n this.showAllFrontends ? visibleFrontends.map(frontend => m('th', frontendLabel(frontend))) : [\n m('th', app.translator.trans('fof-linguist.admin.coverage.columns.all-except-admin')),\n m('th', frontendLabel('admin')),\n m('th', Button.component({\n className: 'Button',\n onclick: () => {\n this.showAllFrontends = true;\n },\n }, app.translator.trans('fof-linguist.admin.coverage.columns.all-frontends'))),\n ],\n ],\n ])),\n m('tbody', [\n this.columns === 'locale' ? m('tr', [\n m('td', [\n m('span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon'),\n m('span.FoF-Linguist-Coverage-Extension-Title', app.translator.trans('fof-linguist.admin.coverage.all-namespaces')),\n ]),\n localesAsArray().map(locale => m('td', this.localeCoverage(browseWithFilters, locale.key))),\n ]) : null,\n vnode.attrs.namespaces.map(namespace => {\n return m('tr', [\n m('td', namespace.extension ? [\n m('span.FoF-Linguist-Coverage-Extension-Icon', {\n style: namespace.extension.icon,\n }, namespace.extension.icon ? icon(namespace.extension.icon.name) : ''),\n m('span.FoF-Linguist-Coverage-Extension-Title', namespace.extension.extra['flarum-extension'].title),\n ] : [\n m('span.FoF-Linguist-Coverage-Extension-Icon.FoF-Linguist-Coverage-Namespace-Icon'),\n m('span.FoF-Linguist-Coverage-Extension-Title', namespaceLabel(namespace.namespace)),\n ]),\n this.columns === 'locale' ? localesAsArray().map(locale => m('td', this.localeCoverage(browseWithFilters, locale.key, namespace.namespace))) : [\n this.showAllFrontends ?\n visibleFrontends.map(frontend => m('td', this.prefixCoverage(browseWithFilters, namespace.namespace, frontend))) : [\n m('td', this.prefixCoverage(browseWithFilters, namespace.namespace, '_all_except_admin')),\n m('td', this.prefixCoverage(browseWithFilters, namespace.namespace, 'admin')),\n ],\n ],\n ]);\n }),\n ]),\n ]),\n ];\n }\n\n prefixCoverage(browseWithFilters, namespace, frontend) {\n if (!this.locale) {\n return null;\n }\n\n return this.localeCoverage(browseWithFilters, this.locale, namespace, frontend);\n }\n\n localeCoverage(browseWithFilters, locale, namespace, frontend) {\n const stringKeys = app.store.all('fof-linguist-string-key').filter(key => {\n if (!namespace) {\n return true;\n }\n\n const parts = key.key().split('.');\n\n if (parts[0] !== namespace) {\n return false;\n }\n\n if (frontend === '_all_except_admin') {\n if (parts.length >= 2 && parts[1] === 'admin') {\n return false;\n }\n } else if (frontend && (parts.length < 2 || parts[1] !== frontend)) {\n return false;\n }\n\n return true;\n });\n\n if (stringKeys.length === 0) {\n return '-';\n }\n\n let customCount = 0;\n let originalCount = 0;\n\n stringKeys.forEach(stringKey => {\n const customString = app.store.all('fof-linguist-string').find(\n string => string.key() === stringKey.key() && string.locale() === locale\n );\n\n if (customString) {\n customCount++;\n } else if (stringKey.locales().hasOwnProperty(locale)) {\n originalCount++;\n }\n });\n\n const percent = Math.round(((customCount + originalCount) / stringKeys.length) * 100);\n\n let specialStyle;\n\n if (percent === 100) {\n specialStyle = 'full';\n } else if (percent < 5) {\n specialStyle = 'low';\n }\n\n let label;\n\n if (this.totalPercent) {\n label = app.translator.trans('fof-linguist.admin.coverage.count.percent', {\n percent: percent + '', // Keeps zero as string\n });\n } else {\n label = app.translator.trans('fof-linguist.admin.coverage.count.total', {\n translated: (customCount + originalCount) + '', // Keeps zero as string\n total: stringKeys.length,\n });\n }\n\n return m('.FoF-Linguist-Coverage-Progress-Wrap', [\n m('.FoF-Linguist-Progress', {\n className: specialStyle ? 'FoF-Linguist-Progress--' + specialStyle : '',\n }, [\n m('.FoF-Linguist-Progress-Bar', {\n style: {\n width: Math.max(percent, 5) + '%', // Always show the progress bar even if very close to 0\n },\n }),\n m('.FoF-Linguist-Progress-Label', label),\n m('.FoF-Linguist-Progress-More', app.translator.trans('fof-linguist.admin.coverage.count.details', {\n total: stringKeys.length,\n original: originalCount + '', // Cast to string to preserve zero\n custom: customCount + '',\n })),\n ]),\n Button.component({\n icon: 'fas fa-filter',\n className: 'Button Button--icon',\n onclick: () => {\n const options = {\n missingTranslationsInLocales: [locale],\n };\n\n if (namespace) {\n options.forExtension = namespace;\n }\n\n if (frontend) {\n options.frontend = frontend;\n }\n\n browseWithFilters(options);\n },\n title: app.translator.trans('fof-linguist.admin.coverage.apply-missing-filter'),\n }),\n ]);\n }\n}\n","import app from 'flarum/app';\nimport Select from 'flarum/components/Select';\nimport Switch from 'flarum/components/Switch';\nimport LinkButton from 'flarum/components/LinkButton';\nimport localesAsArray from '../utils/localesAsArray';\nimport namespaceLabel from '../utils/namespaceLabel';\n\n/* global m */\n\nexport default class ExportPage {\n oninit() {\n this.locale = 'en';\n this.namespace = null;\n this.includeOriginals = false;\n this.includeAll = false;\n this.loading = false;\n this.output = '';\n\n this.fetchOutput();\n }\n\n view(vnode) {\n const localeOptions = {};\n\n localesAsArray().forEach(locale => {\n localeOptions[locale.key] = locale.name + ' (' + locale.key + ')';\n });\n\n localeOptions.all = app.translator.trans('fof-linguist.admin.export.locale-all')\n\n const namespaceOptions = {\n _all: app.translator.trans('fof-linguist.admin.export.namespace-all'),\n };\n\n vnode.attrs.namespaces.forEach(namespace => {\n if (namespace.extension) {\n namespaceOptions[namespace.namespace] = namespace.extension.extra['flarum-extension'].title;\n } else {\n namespaceOptions[namespace.namespace] = namespaceLabel(namespace.namespace);\n\n }\n });\n\n return [\n m('h2', app.translator.trans('fof-linguist.admin.export.title')),\n m('.Form-group', m('.Alert', app.translator.trans('fof-linguist.admin.export.warning'))),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.export.locale')),\n Select.component({\n options: localeOptions,\n value: this.locale,\n onchange: value => {\n this.locale = value;\n\n this.fetchOutput();\n },\n }),\n ]),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.export.namespace')),\n Select.component({\n options: namespaceOptions,\n value: this.namespace === null ? '_all' : this.namespace,\n onchange: value => {\n this.namespace = value === '_all' ? null : value;\n\n this.fetchOutput();\n },\n }),\n ]),\n m('.Form-group', [\n Switch.component({\n state: this.includeOriginals,\n onchange: value => {\n this.includeOriginals = value;\n\n this.fetchOutput();\n }\n }, app.translator.trans('fof-linguist.admin.export.include-originals')),\n ]),\n m('.Form-group', [\n Switch.component({\n state: this.includeAll,\n onchange: value => {\n this.includeAll = value;\n\n this.fetchOutput();\n }\n }, app.translator.trans('fof-linguist.admin.export.include-all')),\n ]),\n m('.Form-group', [\n m('label', [\n app.translator.trans('fof-linguist.admin.export.output'),\n ' ',\n LinkButton.component({\n className: 'Button Button--primary',\n href: this.exportUrl(),\n external: true,\n // If a namespace is selected, we use it as filename (language pack convention)\n // otherwise we use the locale as filename (extension convention)\n download: (this.namespace || this.locale) + '.yml',\n }, app.translator.trans('fof-linguist.admin.export.download')),\n ]),\n m('textarea.FormControl.FoF-Export-Textarea', {\n readonly: true,\n value: this.output,\n rows: 10,\n placeholder: this.loading ? app.translator.trans('fof-linguist.admin.export.output-loading') : app.translator.trans('fof-linguist.admin.export.output-empty'),\n }),\n ]),\n ];\n }\n\n exportUrl() {\n return app.forum.attribute('apiUrl') + '/fof/linguist/export?' + m.buildQueryString({\n locale: this.locale,\n namespace: this.namespace,\n includeOriginals: this.includeOriginals ? '1' : '0',\n includeAll: this.includeAll ? '1' : '0',\n });\n }\n\n fetchOutput() {\n this.loading = true;\n this.output = '';\n\n app.request({\n method: 'GET',\n url: this.exportUrl(),\n // Flarum doesn't support a raw to have the raw text response\n // So we'll encode the response with JSON so Flarum can parse if afterwards\n extract: raw => JSON.stringify(raw),\n }).then(output => {\n this.loading = false;\n this.output = output;\n m.redraw();\n }).catch(error => {\n this.loading = false;\n m.redraw();\n throw error;\n });\n }\n}\n","import app from 'flarum/app';\nimport Button from 'flarum/components/Button';\nimport Select from 'flarum/components/Select';\nimport Switch from 'flarum/components/Switch';\nimport extractText from 'flarum/utils/extractText';\nimport localesAsArray from '../utils/localesAsArray';\n\n/* global m */\n\nexport default class ExportPage {\n oninit() {\n this.locale = 'en';\n this.overrideExisting = true;\n this.input = '';\n this.loading = false;\n }\n\n view() {\n const localeOptions = {};\n\n localesAsArray().forEach(locale => {\n localeOptions[locale.key] = locale.name + ' (' + locale.key + ')';\n });\n\n localeOptions.all = app.translator.trans('fof-linguist.admin.import.locale-all')\n\n return [\n m('h2', app.translator.trans('fof-linguist.admin.import.title')),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.import.input')),\n m('textarea.FormControl', {\n value: this.input,\n oninput: event => {\n this.input = event.target.value;\n },\n rows: 10,\n placeholder: app.translator.trans('fof-linguist.admin.import.input-placeholder'),\n }),\n ]),\n m('.Form-group', [\n m('label', app.translator.trans('fof-linguist.admin.import.locale')),\n Select.component({\n options: localeOptions,\n value: this.locale,\n onchange: value => {\n this.locale = value;\n\n this.fetchOutput();\n },\n }),\n ]),\n m('.Form-group', [\n Switch.component({\n state: this.overrideExisting,\n onchange: value => {\n this.overrideExisting = value;\n }\n }, app.translator.trans('fof-linguist.admin.import.override-existing')),\n ]),\n m('.Form-group', Button.component({\n className: 'Button Button--primary',\n onclick: () => {\n this.loading = true;\n\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/fof/linguist/import',\n body: {\n input: this.input,\n locale: this.locale,\n ignoreExisting: !this.overrideExisting,\n },\n }).then(data => {\n this.loading = false;\n m.redraw();\n\n if (confirm(extractText(app.translator.trans(this.overrideExisting ? 'fof-linguist.admin.import.results' : 'fof-linguist.admin.import.results-with-ignore', {\n imported: data.imported + '', // Cast to string to preserve zeros\n ignored: data.ignored + '',\n identical: data.identical + '',\n })))) {\n window.location.reload();\n }\n }).catch(error => {\n this.loading = false;\n m.redraw();\n throw error;\n });\n },\n disabled: this.loading || !this.input,\n loading: this.loading,\n }, app.translator.trans('fof-linguist.admin.import.submit'))),\n ];\n }\n}\n","import app from 'flarum/app';\nimport ExtensionPage from 'flarum/components/ExtensionPage';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport StringsPage from './StringsPage';\nimport CoveragePage from './CoveragePage';\nimport ExportPage from './ExportPage';\nimport ImportPage from './ImportPage';\n\n/* global m */\n\nexport default class LinguistPage extends ExtensionPage {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.tab = 'strings';\n this.ready = false;\n this.namespaces = []; // First level of translation keys. Usually an extension ID, but also core and validation\n this.frontends = [\n 'forum',\n 'admin',\n 'lib',\n 'ref',\n 'api',\n ]; // Second level of translation keys: forum, admin, ...\n this.initialBrowseFilters = {};\n\n Promise.all([\n app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/fof/linguist/strings',\n }).then(result => {\n app.store.pushPayload(result);\n }),\n app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/fof/linguist/string-keys',\n }).then(result => {\n const keys = app.store.pushPayload(result);\n\n const namespaces = [];\n\n keys.forEach(key => {\n const parts = key.key().split('.');\n\n const namespace = parts[0];\n\n if (['core', 'validation'].indexOf(namespace) === -1 && namespaces.indexOf(namespace) === -1) {\n namespaces.push(namespace);\n }\n\n if (parts.length > 1 && namespace !== 'validation') {\n const frontend = parts[1];\n\n if (this.frontends.indexOf(frontend) === -1) {\n this.frontends.push(frontend);\n }\n }\n });\n\n namespaces.sort();\n\n this.namespaces = [\n {\n namespace: 'core',\n },\n {\n namespace: 'validation',\n },\n ...namespaces.map(namespace => {\n // First we look if the namespace matches an extension ID, that's the most common naming\n let extension = app.data.extensions[namespace];\n\n // If that's unsuccessful, we'll look if the full package name was used as namespace\n if (!extension) {\n extension = Object.values(app.data.extensions).find(extension => {\n const packageNameWithDash = extension.name.replace('/', '-');\n\n return namespace === packageNameWithDash;\n });\n }\n\n return {\n namespace,\n extension,\n };\n }),\n ];\n }),\n ]).then(() => {\n this.ready = true;\n m.redraw();\n });\n }\n\n content() {\n return m('.ExtensionPage-settings', m('.container', [\n this.contentTab(),\n ]));\n }\n\n infoItems() {\n const items = super.infoItems();\n\n items.add('linguist-tabs', m('ul.FoF-Linguist-Tabs', [\n m('li', m('a', {\n className: this.tab === 'strings' ? 'active' : '',\n onclick: () => {\n this.tab = 'strings';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.strings'))),\n m('li', m('a', {\n className: this.tab === 'coverage' ? 'active' : '',\n onclick: () => {\n this.tab = 'coverage';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.coverage'))),\n m('li', m('a', {\n className: this.tab === 'export' ? 'active' : '',\n onclick: () => {\n this.tab = 'export';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.export'))),\n m('li', m('a', {\n className: this.tab === 'import' ? 'active' : '',\n onclick: () => {\n this.tab = 'import';\n },\n }, app.translator.trans('fof-linguist.admin.tabs.import'))),\n ]), 100);\n\n return items;\n }\n\n contentTab() {\n if (!this.ready) {\n return LoadingIndicator.component();\n }\n\n switch (this.tab) {\n case 'strings':\n return m(StringsPage, {\n namespaces: this.namespaces,\n frontends: this.frontends,\n initialBrowseFilters: this.initialBrowseFilters,\n });\n case 'coverage':\n return m(CoveragePage, {\n namespaces: this.namespaces,\n frontends: this.frontends,\n browseWithFilters: filters => {\n this.initialBrowseFilters = filters;\n this.tab = 'strings';\n },\n });\n case 'export':\n return m(ExportPage, {\n namespaces: this.namespaces,\n });\n case 'import':\n return m(ImportPage);\n }\n\n return null;\n }\n}\n","import app from 'flarum/app';\nimport StringKey from './models/StringKey';\nimport TextString from './models/TextString';\nimport LinguistPage from './pages/LinguistPage';\n\napp.initializers.add('fof-linguist', app => {\n app.store.models['fof-linguist-string-key'] = StringKey;\n app.store.models['fof-linguist-string'] = TextString;\n\n app.extensionData.for('fof-linguist').registerPage(LinguistPage);\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/package-lock.json b/js/package-lock.json index 68ae7e9..80d8c7f 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -4,244 +4,222 @@ "lockfileVersion": 1, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.12.13" } }, "@babel/compat-data": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", - "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==" + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", + "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==" }, "@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", + "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@babel/generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", - "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", "requires": { - "@babel/types": "^7.12.1", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", - "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", - "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.12.1", - "@babel/types": "^7.12.1" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-compilation-targets": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", - "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", "requires": { - "@babel/compat-data": "^7.12.1", - "@babel/helper-validator-option": "^7.12.1", - "browserslist": "^4.12.0", - "semver": "^5.5.0" + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.10.tgz", + "integrity": "sha512-YV7r2YxdTUaw84EwNkyrRke/TJHR/UXGiyvACRqvdVJ2/syV2rQuJNnaRLSuYiop8cMRXOgseTGoJCWX0q2fFg==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", - "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" } }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "requires": { - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", - "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", + "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.13.0" } }, "@babel/helper-module-imports": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", - "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.13" } }, "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", + "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "requires": { - "lodash": "^4.17.19" - } + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" }, "@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-replace-supers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", - "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", + "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1" + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.13" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -253,177 +231,179 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.13" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" }, "@babel/helper-validator-option": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", - "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==" + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" }, "@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helpers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", - "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", - "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==" + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.10.tgz", + "integrity": "sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", - "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", - "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", - "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", + "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -435,11 +415,11 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-dynamic-import": { @@ -467,11 +447,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -523,271 +503,253 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", - "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "requires": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-assign": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.1.tgz", - "integrity": "sha512-geUHn4XwHznRAFiuROTy0Hr7bKbpijJCmr1Svt/VNGhpxmp0OrdxURNpWbOAf94nUbL+xj6gbxRVPHWIbRpRoA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz", + "integrity": "sha512-4QxDMc0lAOkIBSfCrnSGbAJ+4epDBF2XXwcLXuBcG1xl9u7LrktNVD4+LwhL47XuKVPQ7R25e/WdcV+h97HyZA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", - "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz", + "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz", - "integrity": "sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz", + "integrity": "sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw==", "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.12.17" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz", - "integrity": "sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz", + "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", - "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", - "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/plugin-transform-react-jsx": "^7.12.17" } }, "@babel/plugin-transform-react-pure-annotations": { @@ -800,162 +762,165 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", - "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz", + "integrity": "sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA==", "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "semver": "^6.3.0" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", - "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", - "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/preset-env": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", - "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", - "requires": { - "@babel/compat-data": "^7.12.1", - "@babel/helper-compilation-targets": "^7.12.1", - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.1", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", + "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", + "requires": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.8", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.1", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.1", - "core-js-compat": "^3.6.2", - "semver": "^5.5.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" } }, "@babel/preset-modules": { @@ -971,67 +936,65 @@ } }, "@babel/preset-react": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz", - "integrity": "sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-react-display-name": "^7.12.1", - "@babel/plugin-transform-react-jsx": "^7.12.1", - "@babel/plugin-transform-react-jsx-development": "^7.12.1", - "@babel/plugin-transform-react-jsx-self": "^7.12.1", - "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz", + "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-transform-react-display-name": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.12.13", + "@babel/plugin-transform-react-jsx-development": "^7.12.12", "@babel/plugin-transform-react-pure-annotations": "^7.12.1" } }, "@babel/runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", - "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/traverse": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", - "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", - "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" }, "@webassemblyjs/ast": { "version": "1.9.0", @@ -1286,9 +1249,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -1333,14 +1296,13 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "requires": { - "find-cache-dir": "^2.1.0", + "find-cache-dir": "^3.3.1", "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", + "make-dir": "^3.1.0", "schema-utils": "^2.6.5" } }, @@ -1352,6 +1314,33 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-polyfill-corejs2": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", + "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "requires": { + "@babel/compat-data": "^7.13.0", + "@babel/helper-define-polyfill-provider": "^0.1.5", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", + "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1408,9 +1397,9 @@ } }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "big.js": { "version": "5.2.2", @@ -1418,9 +1407,9 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "optional": true }, "bluebird": { @@ -1429,9 +1418,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" }, "brace-expansion": { "version": "1.1.11", @@ -1509,19 +1498,12 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } } }, "browserify-sign": { @@ -1566,14 +1548,15 @@ } }, "browserslist": { - "version": "4.14.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.6.tgz", - "integrity": "sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "requires": { - "caniuse-lite": "^1.0.30001154", - "electron-to-chromium": "^1.3.585", + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.65" + "node-releases": "^1.1.70" } }, "buffer": { @@ -1640,12 +1623,12 @@ } }, "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "requires": { "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" + "get-intrinsic": "^1.0.2" } }, "camelcase": { @@ -1654,9 +1637,9 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { - "version": "1.0.30001154", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001154.tgz", - "integrity": "sha512-y9DvdSti8NnYB9Be92ddMZQrcOe04kcQtcxtBx4NkB04+qZ+JUWotnXBJTmxlKudhxNTQ3RRknMwNU2YQl/Org==" + "version": "1.0.30001197", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001197.tgz", + "integrity": "sha512-8aE+sqBqtXz4G8g35Eg/XEaFr2N7rd/VQ6eABGBmNtcB8cN6qNJhMi6oSFy4UWWZgqgL3filHT8Nha4meu3tsw==" }, "chalk": { "version": "2.4.2", @@ -1669,14 +1652,14 @@ } }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "optional": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -1794,6 +1777,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1862,11 +1850,11 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", + "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", "requires": { - "browserslist": "^4.8.5", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -1892,9 +1880,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -1933,6 +1921,13 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "crypto-browserify": { @@ -1959,9 +1954,9 @@ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { "ms": "2.1.2" } @@ -2046,9 +2041,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -2069,28 +2064,28 @@ } }, "electron-to-chromium": { - "version": "1.3.586", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.586.tgz", - "integrity": "sha512-or8FCbQCRlPZHkOoqBULOI9hzTiStVIQqDLgAPt8pzY+swTrW+89vsqd24Zn+Iv4guAJLxRBD6OR5AmbpabGDA==" + "version": "1.3.684", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.684.tgz", + "integrity": "sha512-GV/vz2EmmtRSvfGSQ5A0Lucic//IRSDijgL15IgzbBEEnp4rfbxeUSZSlBfmsj7BQvE4sBdgfsvPzLCnp6L21w==" }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -2113,9 +2108,9 @@ } }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "requires": { "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", @@ -2134,9 +2129,9 @@ } }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "requires": { "prr": "~1.0.1" } @@ -2186,9 +2181,9 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "evp_bytestokey": { "version": "1.0.3", @@ -2367,21 +2362,22 @@ } }, "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "requires": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "findup-sync": { @@ -2459,9 +2455,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, "function-bind": { @@ -2480,9 +2476,9 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2508,9 +2504,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "optional": true, "requires": { "is-glob": "^4.0.1" @@ -2554,9 +2550,9 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, "has": { "version": "1.0.3", @@ -2572,9 +2568,9 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-value": { "version": "1.0.0", @@ -2681,6 +2677,46 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } } }, "imurmurhash": { @@ -2750,9 +2786,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-core-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", - "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "requires": { "has": "^1.0.3" } @@ -2887,9 +2923,9 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "requires": { "minimist": "^1.2.5" } @@ -2925,18 +2961,22 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, "lru-cache": { "version": "5.1.1", @@ -2947,12 +2987,11 @@ } }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" } }, "map-cache": { @@ -3017,9 +3056,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -3174,9 +3213,9 @@ } }, "node-releases": { - "version": "1.1.65", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.65.tgz", - "integrity": "sha512-YpzJOe2WFIW0V4ZkJQd/DGR/zdVwc/pI4Nl1CZrBO19FdRcSTmsuhdttw9rsTzzJLrNcSloLiBbEYx1C4f6gpA==" + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" }, "normalize-path": { "version": "3.0.0", @@ -3271,11 +3310,11 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -3332,9 +3371,9 @@ "optional": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -3375,11 +3414,11 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, "posix-character-classes": { @@ -3421,9 +3460,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -3566,9 +3605,9 @@ "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", "requires": { "jsesc": "~0.5.0" }, @@ -3607,11 +3646,11 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "resolve": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", - "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { - "is-core-module": "^2.0.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -3713,9 +3752,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "serialize-javascript": { "version": "4.0.0", @@ -3927,9 +3966,9 @@ } }, "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" }, "split-string": { "version": "3.1.0", @@ -4073,6 +4112,63 @@ "worker-farm": "^1.7.0" }, "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -4083,6 +4179,11 @@ "ajv-keywords": "^3.1.0" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4264,9 +4365,9 @@ "optional": true }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } @@ -4318,9 +4419,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, "vm-browserify": { "version": "1.1.2", @@ -4328,20 +4429,20 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "requires": { "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" } }, "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "optional": true, "requires": { "chokidar": "^2.1.8" @@ -4444,9 +4545,9 @@ } }, "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -4456,7 +4557,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", + "enhanced-resolve": "^4.5.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -4571,9 +4672,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" }, "yallist": { "version": "3.1.1", @@ -4595,6 +4696,38 @@ "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^13.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } } }, "yargs-parser": {