diff --git a/extensions/package-manager/js/dist-typings/models/ExternalExtension.d.ts b/extensions/package-manager/js/dist-typings/models/ExternalExtension.d.ts index dda4a0de7..81f8bddf0 100644 --- a/extensions/package-manager/js/dist-typings/models/ExternalExtension.d.ts +++ b/extensions/package-manager/js/dist-typings/models/ExternalExtension.d.ts @@ -21,6 +21,6 @@ export default class ExternalExtension extends Model { downloads: () => number; readonly installed = false; isSupported(): boolean; - isStable(): boolean; + isProductionReady(): boolean; toLocalExtension(): Extension; } diff --git a/extensions/package-manager/js/dist-typings/utils/versions.d.ts b/extensions/package-manager/js/dist-typings/utils/versions.d.ts new file mode 100644 index 000000000..08c35ab83 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/utils/versions.d.ts @@ -0,0 +1,9 @@ +export declare enum VersionStability { + Stable = "stable", + Alpha = "alpha", + Beta = "beta", + RC = "rc", + Dev = "dev" +} +export declare function isProductionReady(version: string): boolean; +export declare function stability(version: string): VersionStability; diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index e4dc62fc8..cd5813d08 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -1,2 +1,2 @@ -(()=>{var e={151:function(e){e.exports=function(){"use strict";var e,t,a=1e3,n=6e4,s=36e5,r=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,i=31536e6,l=2628e6,m=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,u={years:i,months:l,days:r,hours:s,minutes:n,seconds:a,milliseconds:1,weeks:6048e5},c=function(e){return e instanceof b},d=function(e,t,a){return new b(e,a,t.$l)},g=function(e){return t.p(e)+"s"},p=function(e){return e<0},h=function(e){return p(e)?Math.ceil(e):Math.floor(e)},f=function(e){return Math.abs(e)},x=function(e,t){return e?p(e)?{negative:!0,format:""+f(e)+t}:{negative:!1,format:""+e+t}:{negative:!1,format:""}},b=function(){function p(e,t,a){var n=this;if(this.$d={},this.$l=a,void 0===e&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(e*u[g(t)],this);if("number"==typeof e)return this.$ms=e,this.parseFromMilliseconds(),this;if("object"==typeof e)return Object.keys(e).forEach((function(t){n.$d[g(t)]=e[t]})),this.calMilliseconds(),this;if("string"==typeof e){var s=e.match(m);if(s){var r=s.slice(2).map((function(e){return null!=e?Number(e):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var f=p.prototype;return f.calMilliseconds=function(){var e=this;this.$ms=Object.keys(this.$d).reduce((function(t,a){return t+(e.$d[a]||0)*u[a]}),0)},f.parseFromMilliseconds=function(){var e=this.$ms;this.$d.years=h(e/i),e%=i,this.$d.months=h(e/l),e%=l,this.$d.days=h(e/r),e%=r,this.$d.hours=h(e/s),e%=s,this.$d.minutes=h(e/n),e%=n,this.$d.seconds=h(e/a),e%=a,this.$d.milliseconds=e},f.toISOString=function(){var e=x(this.$d.years,"Y"),t=x(this.$d.months,"M"),a=+this.$d.days||0;this.$d.weeks&&(a+=7*this.$d.weeks);var n=x(a,"D"),s=x(this.$d.hours,"H"),r=x(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var i=x(o,"S"),l=e.negative||t.negative||n.negative||s.negative||r.negative||i.negative,m=s.format||r.format||i.format?"T":"",u=(l?"-":"")+"P"+e.format+t.format+n.format+m+s.format+r.format+i.format;return"P"===u||"-P"===u?"P0D":u},f.toJSON=function(){return this.toISOString()},f.format=function(e){var a=e||"YYYY-MM-DDTHH:mm:ss",n={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return a.replace(o,(function(e,t){return t||String(n[e])}))},f.as=function(e){return this.$ms/u[g(e)]},f.get=function(e){var t=this.$ms,a=g(e);return"milliseconds"===a?t%=1e3:t="weeks"===a?h(t/u[a]):this.$d[a],t||0},f.add=function(e,t,a){var n;return n=t?e*u[g(t)]:c(e)?e.$ms:d(e,this).$ms,d(this.$ms+n*(a?-1:1),this)},f.subtract=function(e,t){return this.add(e,t,!0)},f.locale=function(e){var t=this.clone();return t.$l=e,t},f.clone=function(){return d(this.$ms,this)},f.humanize=function(t){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},f.valueOf=function(){return this.asMilliseconds()},f.milliseconds=function(){return this.get("milliseconds")},f.asMilliseconds=function(){return this.as("milliseconds")},f.seconds=function(){return this.get("seconds")},f.asSeconds=function(){return this.as("seconds")},f.minutes=function(){return this.get("minutes")},f.asMinutes=function(){return this.as("minutes")},f.hours=function(){return this.get("hours")},f.asHours=function(){return this.as("hours")},f.days=function(){return this.get("days")},f.asDays=function(){return this.as("days")},f.weeks=function(){return this.get("weeks")},f.asWeeks=function(){return this.as("weeks")},f.months=function(){return this.get("months")},f.asMonths=function(){return this.as("months")},f.years=function(){return this.get("years")},f.asYears=function(){return this.as("years")},p}(),v=function(e,t,a){return e.add(t.years()*a,"y").add(t.months()*a,"M").add(t.days()*a,"d").add(t.hours()*a,"h").add(t.minutes()*a,"m").add(t.seconds()*a,"s").add(t.milliseconds()*a,"ms")};return function(a,n,s){e=s,t=s().$utils(),s.duration=function(e,t){var a=s.locale();return d(e,{$l:a},t)},s.isDuration=c;var r=n.prototype.add,o=n.prototype.subtract;n.prototype.add=function(e,t){return c(e)?v(this,e,1):r.bind(this)(e,t)},n.prototype.subtract=function(e,t){return c(e)?v(this,e,-1):o.bind(this)(e,t)}}}()}},t={};function a(n){var s=t[n];if(void 0!==s)return s.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";a.r(n),a.d(n,{extend:()=>He});const e=flarum.reg.get("core","common/extend"),t=flarum.reg.get("core","admin/app");var s=a.n(t);const r=flarum.reg.get("core","admin/components/ExtensionPage");var o=a.n(r);const i=flarum.reg.get("core","common/components/Button");var l=a.n(i);const u=flarum.reg.get("core","admin/components/LoadingModal");var c=a.n(u);const d=flarum.reg.get("core","admin/utils/isExtensionEnabled");var g=a.n(d);function p(){s().modal.close(),m.route.set(s().route("extension",{id:"flarum-extension-manager"})),s().extensionManager.queue.load({},!0),setTimeout((()=>{var e;null==(e=document.getElementById("ExtensionManager-queueSection"))||e.scrollIntoView({block:"nearest"})}),200)}function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t,a){return n=function(e,t){if("object"!=h(e)||!e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var n=a.call(e,"string");if("object"!=h(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t),(t="symbol"==h(n)?n:n+"")in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e;var n}window.jumpToQueue=p,flarum.reg.add("flarum-extension-manager","admin/utils/jumpToQueue",p);class x{constructor(){f(this,"polling",null),f(this,"tasks",null),f(this,"limit",20),f(this,"offset",0),f(this,"total",0),f(this,"loading",!1)}load(e,t){var a;return void 0===t&&(t=!1),this.loading=!0,e={page:{limit:this.limit,offset:this.offset,...null==(a=e)?void 0:a.page},...e},s().store.find("extension-manager-tasks",e||{}).then((e=>{var a;return this.tasks=e,this.total=(null==(a=e.payload.meta)||null==(a=a.page)?void 0:a.total)||0,m.redraw(),(null==e?void 0:e.find((e=>"pending"===e.status()||"running"===e.status())))?this.pollQueue(t):t?(s().extensionManager.control.setLoading(null),window.location.reload()):s().extensionManager.control.isLoading()&&s().extensionManager.control.setLoading(null),this.loading=!1,e}))}isLoading(){return this.loading}getItems(){return this.tasks}getTotalItems(){return this.total}getTotalPages(){return Math.ceil(this.total/this.limit)}pageNumber(){return Math.ceil(this.offset/this.limit)}getPerPage(){return this.limit}hasPrev(){return 0!==this.pageNumber()}hasNext(){return this.offset+this.limit{this.load({},e)}),6e3)}hasPending(){var e;return!(null==(e=this.tasks)||!e.find((e=>"pending"===e.status()||"running"===e.status())))}}function b(e){s().extensionManager.control.setLoading(null);const t=e.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(t.code))throw e;switch(s().alerts.clear(),t.code){case"composer_command_failure":t.guessed_cause?(s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.guessed_cause.".concat(t.guessed_cause))),s().modal.close()):s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.composer_command_failure"));break;case"extension_already_installed":s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.extension_already_installed")),s().modal.close();break;case"extension_not_installed":s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.extension_not_installed")),s().modal.close()}}flarum.reg.add("flarum-extension-manager","admin/states/QueueState",x);const v=flarum.reg.get("core","common/utils/extractText");var y=a.n(v);class _{get lastUpdateRun(){const e=JSON.parse(s().data.settings["flarum-extension-manager.last_update_run"]);return e.limitedPackages=()=>[...e.major.limitedPackages,...e.minor.limitedPackages,...e.global.limitedPackages],e}constructor(){f(this,"loading",null),f(this,"packageUpdates",{}),f(this,"lastUpdateCheck",void 0),f(this,"extensionUpdates",void 0),f(this,"coreUpdate",null),this.lastUpdateCheck=JSON.parse(s().data.settings["flarum-extension-manager.last_update_check"]),this.extensionUpdates=this.formatExtensionUpdates(this.lastUpdateCheck),this.coreUpdate=this.formatCoreUpdate(this.lastUpdateCheck)}isLoading(e){return void 0===e&&(e=null),e&&this.loading===e||!e&&null!==this.loading}hasOperationRunning(){return this.isLoading()||s().extensionManager.queue.hasPending()}setLoading(e){this.loading=e}requirePackage(e){s().extensionManager.control.setLoading("extension-install"),s().modal.show(c()),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/extensions"),body:{data:e}}).then((e=>{if(e.processing)p();else{const t=e.id;s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.extensions.successful_install",{extension:t})),window.location.href="".concat(s().forum.attribute("adminUrl"),"#/extension/").concat(t),window.location.reload()}})).catch(b).finally((()=>{s().modal.close(),m.redraw()}))}checkForUpdates(){this.setLoading("check"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/check-for-updates")}).then((e=>{e.processing?p():(this.lastUpdateCheck=e,this.extensionUpdates=this.formatExtensionUpdates(e),this.coreUpdate=this.formatCoreUpdate(e),this.setLoading(null),m.redraw())})).catch(b).finally((()=>{m.redraw()}))}updateCoreMinor(){confirm(y()(s().translator.trans("flarum-extension-manager.admin.minor_update_confirmation.content")))&&(s().modal.show(c()),this.setLoading("minor-update"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/minor-update")}).then((e=>{null!=e&&e.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.update_successful")),window.location.reload())})).catch(b).finally((()=>{s().modal.close(),m.redraw()})))}updateExtension(e,t){s().modal.show(c()),this.setLoading("extension-update"),s().request({method:"PATCH",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/extensions/").concat(e.id),body:{data:{updateMode:t}}}).then((t=>{null!=t&&t.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.extensions.successful_update",{extension:e.extra["flarum-extension"].title})),window.location.reload())})).catch(b).finally((()=>{s().modal.close(),m.redraw()}))}updateGlobally(){s().modal.show(c()),this.setLoading("global-update"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/global-update")}).then((e=>{null!=e&&e.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.updater.global_update_successful")),window.location.reload())})).catch(b).finally((()=>{s().modal.close(),m.redraw()}))}formatExtensionUpdates(e){var t;return this.packageUpdates={},null==e||null==(t=e.updates)||null==(t=t.installed)||t.filter((e=>{const t=e.name.replace("/","-").replace(/(flarum-ext-)|(flarum-)/,""),a=s().data.extensions[t],n=["semver-safe-update","update-possible"].includes(e["latest-status"]);return a&&n&&(this.packageUpdates[a.id]=e),a&&n})),Object.values(s().data.extensions).filter((e=>this.packageUpdates[e.id]))}formatCoreUpdate(e){var t;const a=null==e||null==(t=e.updates)||null==(t=t.installed)?void 0:t.filter((e=>"flarum/core"===e.name)).pop();return a?{package:a,extension:{id:"flarum-core",name:"flarum/core",version:s().data.settings.version,icon:{name:"",backgroundImage:"url(".concat(s().data.resources[0].attributes.baseUrl,"/assets/extensions/flarum-extension-manager/flarum.svg")},extra:{"flarum-extension":{title:y()(s().translator.trans("flarum-extension-manager.admin.updater.flarum"))}},links:{}}}:null}majorUpdate(e){let{dryRun:t}=e;s().extensionManager.control.setLoading(t?"major-update-dry-run":"major-update"),s().modal.show(c());const a=this.lastUpdateRun.major;s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/major-update"),body:{data:{dryRun:t}}}).then((e=>{null!=e&&e.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.update_successful")),window.location.reload())})).catch(b).catch((e=>{var t;s().modal.close(),a.status="failure",a.incompatibleExtensions=null==(t=e.response)||null==(t=t.errors)||null==(t=t.pop())?void 0:t.incompatible_extensions})).finally((()=>{m.redraw()}))}}flarum.reg.add("flarum-extension-manager","admin/states/ControlSectionState",_);const k=flarum.reg.get("core","common/states/PaginatedListState");var N=a.n(k);class M extends(N()){get type(){return"external-extensions"}constructor(){super({sort:"-downloads"},1,12)}sortMap(){return{"-createdAt":{sort:"-createdAt",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.sort.latest",{},!0)},"-downloads":{sort:"-downloads",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.sort.top",{},!0)}}}}flarum.reg.add("flarum-extension-manager","admin/states/ExtensionListState",M);class w{constructor(){f(this,"queue",new x),f(this,"control",new _),f(this,"extensions",new M)}}flarum.reg.add("flarum-extension-manager","admin/states/ExtensionManagerState",w);const E=flarum.reg.get("core","common/extenders");var S=a.n(E);const B=flarum.reg.get("core","common/Component");var U=a.n(B);const C=flarum.reg.get("core","common/components/LoadingIndicator");var q=a.n(C);const P=flarum.reg.get("core","common/components/Tooltip");var T=a.n(P);const j=flarum.reg.get("core","common/components/Icon");var F=a.n(j);const $=flarum.reg.get("core","common/utils/ItemList");var L=a.n($);const I=flarum.reg.get("core","common/components/Link");var A=a.n(I);const D=flarum.reg.get("core","common/components/Pagination");var O=a.n(D);const Y=flarum.reg.get("core","common/utils/classList");var W=a.n(Y);class R extends(U()){view(e){const{className:t,type:a,...n}=this.attrs;return m("span",Object.assign({className:W()(["Label","Label--".concat(this.attrs.type),t])},n),e.children)}}flarum.reg.add("flarum-extension-manager","admin/components/Label",R);const G=flarum.reg.get("core","common/components/Modal");var V=a.n(G);class H extends(V()){className(){return"Modal--large QuickModal"}title(){return s().translator.trans("flarum-extension-manager.admin.sections.queue.operations.".concat(this.attrs.task.operation()))}content(){return m("div",{className:"Modal-body"},m("div",{className:"TaskOutputModal-data"},"failure"===this.attrs.task.status()&&m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.guessed_cause")),m("div",{className:"FormControl TaskOutputModal-data-guessed-cause"},this.attrs.task.guessedCause()&&s().translator.trans("flarum-extension-manager.admin.exceptions.guessed_cause."+this.attrs.task.guessedCause())||s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.cause_unknown"))),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.command")),m("div",{className:"FormControl TaskOutputModal-data-command"},m("code",null,"$ composer ",this.attrs.task.command()))),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.output")),m("div",{className:"FormControl TaskOutputModal-data-output"},m("code",null,m("pre",null,this.attrs.task.output()))))))}}flarum.reg.add("flarum-extension-manager","admin/components/TaskOutputModal",H);var z=a(151),Q=a.n(z);function J(e,t){dayjs.extend(Q());const a=dayjs(t).diff(e);return dayjs.duration(a).humanize()}flarum.reg.add("flarum-extension-manager","admin/utils/humanDuration",J);class Z extends(U()){oninit(e){super.oninit(e),s().extensionManager.queue.load()}view(){return m("section",{id:"ExtensionManager-queueSection",className:"ExtensionPage-settings ExtensionManager-queueSection"},m("div",{className:"ExtensionPage-permissions-header ExtensionManager-queueSection-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},s().translator.trans("flarum-extension-manager.admin.sections.queue.title")),m(l(),{className:"Button Button--icon",icon:"fas fa-sync-alt",onclick:()=>s().extensionManager.queue.load(),"aria-label":s().translator.trans("flarum-extension-manager.admin.sections.queue.refresh"),disabled:s().extensionManager.control.isLoading()}))),m("div",{className:"container"},this.queueTable()))}columns(){const e=new(L());return e.add("operation",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.operation")),content:e=>m("div",{className:"ExtensionManager-queueTable-operation"},m("span",{className:"ExtensionManager-queueTable-operation-icon"},this.operationIcon(e.operation())),m("span",{className:"ExtensionManager-queueTable-operation-name"},s().translator.trans("flarum-extension-manager.admin.sections.queue.operations.".concat(e.operation()))))},80),e.add("package",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.package")),content:e=>{var t;const a=s().data.extensions[null==(t=e.package())?void 0:t.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return a?m(A(),{className:"ExtensionManager-queueTable-package",href:s().route("extension",{id:a.id})},m("div",{className:"ExtensionManager-queueTable-package-icon ExtensionIcon",style:a.icon},!!a.icon&&m(F(),{name:a.icon.name})),m("div",{className:"ExtensionManager-queueTable-package-details"},m("span",{className:"ExtensionManager-queueTable-package-title"},a.extra["flarum-extension"].title),m("span",{className:"ExtensionManager-queueTable-package-name"},e.package()))):e.package()}},75),e.add("status",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.status")),content:e=>m("[",null,m(R,{className:"ExtensionManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[e.status()]},s().translator.trans("flarum-extension-manager.admin.sections.queue.statuses.".concat(e.status()))),["pending","running"].includes(e.status())&&m(q(),{size:"small",display:"inline"}))},70),e.add("elapsedTime",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.elapsed_time")),content:e=>e.startedAt()&&e.finishedAt()?m(T(),{text:"".concat(dayjs(e.startedAt()).format("LL LTS")," ").concat(dayjs(e.finishedAt()).format("LL LTS"))},m("span",null,J(e.startedAt(),e.finishedAt()))):s().translator.trans("flarum-extension-manager.admin.sections.queue.task_just_started")},65),e.add("memoryUsed",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.peak_memory_used")),content:e=>m("span",null,e.peakMemoryUsed())},60),e.add("details",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.details")),content:e=>m(l(),{className:"Button Button--icon Table-controls-item",icon:"fas fa-file-alt","aria-label":s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.details"),onclick:()=>s().modal.show(H,{task:e}),disabled:["pending","running"].includes(e.status())}),className:"Table-controls"},55),e}queueTable(){const e=s().extensionManager.queue.getItems();if(!e)return m(q(),null);if(e&&!e.length)return m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("flarum-extension-manager.admin.sections.queue.none"));const t=this.columns();return m("[",null,m("div",{className:W()("Table-container",{"loading-container":e&&s().extensionManager.queue.isLoading()})},m("table",{className:"Table ExtensionManager-queueTable"},m("thead",null,m("tr",null,t.toArray().map(((e,t)=>m("th",{key:t},e.label))))),m("tbody",null,e.map(((e,a)=>m("tr",{key:a},t.toArray().map(((t,a)=>{const{label:n,content:s,...r}=t;return m("td",Object.assign({key:a},r),s(e))}))))))),e&&s().extensionManager.queue.isLoading()&&m(q(),{size:"large"})),m(O(),{total:s().extensionManager.queue.getTotalItems(),currentPage:s().extensionManager.queue.pageNumber()+1,perPage:s().extensionManager.queue.getPerPage(),onChange:e=>s().extensionManager.queue.goto(e)}))}operationIcon(e){return m(F(),{name:{update_check:"fas fa-sync-alt",update_major:"fas fa-play",update_minor:"fas fa-play",update_global:"fas fa-play",extension_install:"fas fa-download",extension_remove:"fas fa-times",extension_update:"fas fa-arrow-alt-circle-up",why_not:"fas fa-exclamation-circle"}[e]})}}flarum.reg.add("flarum-extension-manager","admin/components/QueueSection",Z);const K=flarum.reg.get("core","common/components/Alert");var X=a.n(K);const ee=flarum.reg.get("core","common/utils/Stream");var te=a.n(ee);class ae extends(U()){constructor(){super(...arguments),f(this,"packageName",void 0)}oninit(e){super.oninit(e),this.packageName=te()("")}view(){return m("div",{className:"Form-group ExtensionManager-installer"},m("label",{htmlFor:"install-extension"},s().translator.trans("flarum-extension-manager.admin.extensions.install")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.extensions.install_help",{link:m("a",{href:"https://flarum.org/extensions"},"flarum.org"),semantic_link:m("a",{href:"https://devhints.io/semver"}),code:m("code",null)})),m("div",{className:"FormControl-container"},m("input",{className:"FormControl",id:"install-extension",placeholder:"vendor/package-name",bidi:this.packageName}),m(l(),{className:"Button",icon:"fas fa-download",onclick:this.onsubmit.bind(this),loading:s().extensionManager.control.isLoading("extension-install"),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.extensions.proceed"))))}data(){return{package:this.packageName()}}onsubmit(){s().extensionManager.control.requirePackage(this.data())}}flarum.reg.add("flarum-extension-manager","admin/components/Installer",ae);const ne=flarum.reg.get("core","common/helpers/humanTime");var se=a.n(ne);class re extends(V()){constructor(){super(...arguments),f(this,"loading",!0),f(this,"whyNot",null)}className(){return"Modal--large WhyNotModal"}title(){return s().translator.trans("flarum-extension-manager.admin.why_not_modal.title")}oncreate(e){super.oncreate(e),this.requestWhyNot()}content(){return m("div",{className:"Modal-body"},this.loading?m(q(),null):m("pre",{className:"WhyNotModal-contents"},this.whyNot))}requestWhyNot(){s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/why-not"),body:{data:{package:this.attrs.package}}}).then((e=>{this.loading=!1,this.whyNot=e.data.reason,m.redraw()})).catch(b)}}flarum.reg.add("flarum-extension-manager","admin/components/WhyNotModal",re);const oe=flarum.reg.get("core","common/components/Badge");var ie=a.n(oe);const le=flarum.reg.get("core","common/utils/formatAmount");var me=a.n(le);const ue=flarum.reg.get("core","common/Model");var ce=a.n(ue);class de extends(ce()){constructor(){super(...arguments),f(this,"extensionId",ce().attribute("extensionId")),f(this,"name",ce().attribute("name")),f(this,"title",ce().attribute("title")),f(this,"description",ce().attribute("description")),f(this,"iconUrl",ce().attribute("iconUrl")),f(this,"icon",ce().attribute("icon")),f(this,"highestVersion",ce().attribute("highestVersion")),f(this,"httpUri",ce().attribute("httpUri")),f(this,"discussUri",ce().attribute("discussUri")),f(this,"vendor",ce().attribute("vendor")),f(this,"isPremium",ce().attribute("isPremium")),f(this,"isLocale",ce().attribute("isLocale")),f(this,"locale",ce().attribute("locale")),f(this,"latestFlarumVersionSupported",ce().attribute("latestFlarumVersionSupported")),f(this,"downloads",ce().attribute("downloads")),f(this,"installed",!1)}isSupported(){const e=s().data.settings.version,t=this.latestFlarumVersionSupported();return e.split("-")[1]===t.split("-")[1]&&e.split(".")[0]===t.split(".")[0]}isStable(){const e=this.highestVersion().split("-");return 1===e.length||"stable"===e[1].split(".")[0]}toLocalExtension(){return{id:this.extensionId(),name:this.name(),version:this.highestVersion(),description:this.description(),icon:this.icon()||{name:"fas fa-box-open",backgroundColor:"#117187",color:"#fff"},links:{discuss:this.discussUri(),website:this.httpUri()},extra:{"flarum-extension":{title:this.title()}}}}}flarum.reg.add("flarum-extension-manager","admin/models/ExternalExtension",de);const ge=flarum.reg.get("core","common/components/Dropdown");var pe=a.n(ge);const he=flarum.reg.get("core","common/components/LinkButton");var fe=a.n(he);class xe extends(U()){getExtension(){return this.attrs.extension instanceof de?this.attrs.extension.toLocalExtension():this.attrs.extension}view(){const e=this.getExtension(),{isCore:t,isDanger:a}=this.attrs;return m("div",{className:W()("ExtensionCard",{"ExtensionCard--core":t,"ExtensionCard--danger":a})},m("div",{className:"ExtensionCard-header"},this.icon(),m(T(),{text:e.name},m("h4",null,e.extra["flarum-extension"].title)),this.attrs.extension instanceof de&&m("div",{className:"ExtensionCard-badges"},this.badges().toArray()),m("div",{className:"ExtensionCard-actions"},this.actionItems().toArray())),m("div",{className:"ExtensionCard-body"},m("p",null,e.description)),m("div",{className:"ExtensionCard-footer"},m("div",{className:"ExtensionCard-meta"},this.metaItems().toArray())))}icon(){var e,t;const a=this.getExtension();this.attrs.extension instanceof de&&a.id in s().data.extensions&&(a.icon=s().data.extensions[a.id].icon);const n=a.icon||{};return(null==(e=a.icon)||!e.name)&&this.attrs.extension instanceof de&&!(a.id in s().data.extensions)&&this.attrs.extension.iconUrl()&&(n.backgroundImage="url(".concat(this.attrs.extension.iconUrl(),")")),m("span",{className:"ExtensionIcon",style:a.icon},null!=(t=a.icon)&&t.name?m(F(),{name:a.icon.name}):null)}badges(){const e=new(L()),t=this.attrs.extension;return t.isSupported()?e.add("compatible",m(ie(),{icon:"fas fa-check",type:"success",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.compatible"),className:"Badge--flat Badge--square"})):e.add("incompatible",m(ie(),{icon:"fas fa-times",type:"danger",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.incompatible"),className:"Badge--flat Badge--square"})),t.isPremium()&&e.add("premium",m(ie(),{icon:"fas fa-dollar-sign",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.premium"),className:"ExtensionCard-badge--premium Badge--flat Badge--square"})),t.isStable()||e.add("unstable",m(ie(),{icon:"fas fa-flask",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.unstable"),className:"Badge--flat Badge--square Badge--danger"})),"fof"===t.name().split("/")[0]&&e.add("fof",m(ie(),{icon:"fas fa-users",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.fof"),className:"Badge--flat Badge--square"})),"flarum"===t.name().split("/")[0]&&e.add("flarum",m(ie(),{icon:"fab fa-flarum",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.flarum"),className:"ExtensionCard-badge--flarum Badge--flat Badge--square"})),e}metaItems(){var e;const t=new(L()),{updates:a,isCore:n}=this.attrs,r=a?null!=(e=a["latest-minor"])?e:a["latest-major"]&&!n?a["latest-major"]:null:null;return this.attrs.extension instanceof de?t.add("downloads",m("span",null,m(F(),{name:"fas fa-circle-down"}),s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.downloads",{count:this.attrs.extension.downloads(),formattedCount:me()(this.attrs.extension.downloads())}))):t.add("version",m("div",{className:"ExtensionCard-version"},m("span",{className:"ExtensionCard-version-current"},this.version(a.version)),r?m("[",null,m(F(),{name:"fas fa-arrow-right"}),m(R,{className:"ExtensionCard-version-latest",type:a["latest-minor"]?"success":"warning"},this.version(r))):null)),this.attrs.extension instanceof de&&(t.add("version",m("div",{className:"ExtensionCard-version"},"v",this.version(this.attrs.extension.highestVersion()))),t.add("link",m(fe(),{className:"Button Button--ua-reset Button--link Button--icon",href:this.attrs.extension.httpUri(),target:"_blank",icon:"fas fa-external-link-alt",external:!0}))),t}actionItems(){const e=new(L()),{updates:t,extension:a,onClickUpdate:n,whyNotWarning:r}=this.attrs;return a instanceof de?a.extensionId()in s().data.extensions?e.add("installed",m(l(),{className:"Button Button--icon Button--flat Button--success",icon:"fas fa-check-circle",disabled:!0})):e.add("install",m(l(),{className:"Button Button--icon Button--flat",icon:"fas fa-cloud-arrow-down",onclick:()=>{s().extensionManager.control.requirePackage({package:a.name()})}})):(n&&"function"==typeof n?e.add("update",m(T(),{text:s().translator.trans("flarum-extension-manager.admin.extensions.update")},m(l(),{icon:"fas fa-cloud-arrow-down",className:"Button Button--icon Button--flat",onclick:n,"aria-label":s().translator.trans("flarum-extension-manager.admin.extensions.update")}))):n&&e.add("update",m(pe(),{buttonClassName:"Button Button--icon Button--flat",icon:"fas fa-ellipsis",label:s().translator.trans("flarum-extension-manager.admin.extensions.update")},m(l(),{icon:"fas fa-cloud-arrow-down",onclick:n.soft},s().translator.trans("flarum-extension-manager.admin.extensions.update_soft_label")),m(l(),{icon:"fas fa-rotate",onclick:n.hard,disabled:!t["direct-dependency"]},s().translator.trans("flarum-extension-manager.admin.extensions.update_hard_label")))),r&&e.add("whyNot",m(T(),{text:s().translator.trans("flarum-extension-manager.admin.extensions.check_why_it_failed_updating")},m(l(),{icon:"fas fa-exclamation-circle",className:"Button Button--icon Button--flat Button--danger",onclick:()=>s().modal.show(re,{package:a.name}),"aria-label":s().translator.trans("flarum-extension-manager.admin.extensions.check_why_it_failed_updating")})))),e}version(e){return"v"===e.charAt(0)?e.substring(1):e}}flarum.reg.add("flarum-extension-manager","admin/components/ExtensionCard",xe);class be extends(U()){constructor(){super(...arguments),f(this,"updateState",void 0)}oninit(e){super.oninit(e),this.updateState=this.attrs.updateState}view(){return m("div",{className:W()("Form-group Form-group--danger ExtensionManager-majorUpdate",{"ExtensionManager-majorUpdate--failed":"failure"===this.updateState.status,"ExtensionManager-majorUpdate--incompatibleExtensions":this.updateState.incompatibleExtensions.length})},m("img",{alt:"flarum logo",src:s().forum.attribute("baseUrl")+"/assets/extensions/flarum-extension-manager/flarum.svg"}),m("label",null,s().translator.trans("flarum-extension-manager.admin.major_updater.title",{version:this.attrs.coreUpdate["latest-major"]})),m("p",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.major_updater.description")),m("div",{className:"ExtensionManager-updaterControls"},m(T(),{text:s().translator.trans("flarum-extension-manager.admin.major_updater.dry_run_help")},m(l(),{className:"Button",icon:"fas fa-vial",onclick:this.update.bind(this,!0),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.major_updater.dry_run"))),m(l(),{className:"Button Button--danger",icon:"fas fa-play",onclick:this.update.bind(this,!1),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.major_updater.update"))),this.updateState.incompatibleExtensions.length?m("div",{className:"ExtensionManager-majorUpdate-incompatibleExtensions ExtensionManager-extensions-grid"},this.updateState.incompatibleExtensions.map((e=>m(xe,{extension:s().data.extensions[e.replace("flarum-","").replace("flarum-ext-","").replace("/","-")],updates:{},onClickUpdate:null,isDanger:!0})))):null,"failure"===this.updateState.status?m(X(),{type:"error",className:"ExtensionManager-majorUpdate-failure",dismissible:!1,controls:[m(l(),{className:"Button Button--text ExtensionManager-majorUpdate-failure-details",icon:"fas fa-question-circle",onclick:()=>s().modal.show(re,{package:"flarum/core"})},s().translator.trans("flarum-extension-manager.admin.major_updater.failure.why"))]},m("p",{className:"ExtensionManager-majorUpdate-failure-desc"},s().translator.trans("flarum-extension-manager.admin.major_updater.failure.desc"))):null)}update(e){s().extensionManager.control.majorUpdate({dryRun:e})}}flarum.reg.add("flarum-extension-manager","admin/components/MajorUpdater",be);const ve=flarum.reg.get("core","common/components/InfoTile");var ye=a.n(ve);class _e extends(U()){view(){const e=s().extensionManager.control.coreUpdate;return[m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.updater.updater_title")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.updater.updater_help")),this.lastUpdateCheckView(),m("div",{className:"ExtensionManager-updaterControls"},this.controlItems().toArray()),this.availableUpdatesView()),e&&e.package["latest-major"]?m(be,{coreUpdate:e.package,updateState:s().extensionManager.control.lastUpdateRun.major}):null]}lastUpdateCheckView(){var e;return(null==(e=s().extensionManager.control.lastUpdateCheck)?void 0:e.checkedAt)&&m("p",{className:"ExtensionManager-lastUpdatedAt"},m("span",{className:"ExtensionManager-lastUpdatedAt-label"},s().translator.trans("flarum-extension-manager.admin.updater.last_update_checked_at")),m("span",{className:"ExtensionManager-lastUpdatedAt-value"},se()(s().extensionManager.control.lastUpdateCheck.checkedAt)))||null}availableUpdatesView(){const e=s().extensionManager.control;if(s().extensionManager.control.isLoading("check")||s().extensionManager.control.isLoading("global-update"))return m("div",{className:"ExtensionManager-extensions"},m(q(),null));const t=e.coreUpdate&&e.coreUpdate.package["latest-minor"];return e.extensionUpdates.length||t?m("div",{className:"ExtensionManager-extensions"},m("div",{className:"ExtensionManager-extensions-grid"},t?m(xe,{extension:e.coreUpdate.extension,updates:e.coreUpdate.package,isCore:!0,onClickUpdate:()=>e.updateCoreMinor(),whyNotWarning:e.lastUpdateRun.limitedPackages().includes("flarum/core")}):null,e.extensionUpdates.map((t=>m(xe,{extension:t,updates:e.packageUpdates[t.id],onClickUpdate:{soft:()=>e.updateExtension(t,"soft"),hard:()=>e.updateExtension(t,"hard")},whyNotWarning:e.lastUpdateRun.limitedPackages().includes(t.name)}))))):m("div",{className:"ExtensionManager-extensions ExtensionManager-extensions--empty"},m(ye(),{icon:"fas fa-plug-circle-check"},s().translator.trans("flarum-extension-manager.admin.updater.up_to_date")))}controlItems(){const e=new(L());return e.add("updateCheck",m(l(),{className:"Button",icon:"fas fa-sync-alt",onclick:()=>s().extensionManager.control.checkForUpdates(),loading:s().extensionManager.control.isLoading("check"),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.updater.check_for_updates")),100),e.add("globalUpdate",m(l(),{className:"Button",icon:"fas fa-play",onclick:()=>s().extensionManager.control.updateGlobally(),loading:s().extensionManager.control.isLoading("global-update"),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.updater.run_global_update"))),e}}flarum.reg.add("flarum-extension-manager","admin/components/Updater",_e);const ke=flarum.reg.get("core","common/components/Form");var Ne=a.n(ke);class Me extends(U()){oninit(e){super.oninit(e)}view(){return m("div",{className:"ExtensionPage-settings ExtensionManager-controlSection"},m("div",{className:"container"},s().data["flarum-extension-manager.writable_dirs"]?m(Ne(),null,m(ae,null),m(_e,null)):m("div",{className:"Form-group"},m(X(),{type:"warning",dismissible:!1},s().translator.trans("flarum-extension-manager.admin.file_permissions")))))}}flarum.reg.add("flarum-extension-manager","admin/components/ControlSection",Me);const we=flarum.reg.get("core","common/components/FormGroup");var Ee=a.n(we);class Se extends(U()){constructor(){super(...arguments),f(this,"settings",{}),f(this,"initialSettings",null),f(this,"loading",!1),f(this,"type",void 0)}oninit(e){super.oninit(e),this.submit(!0)}className(){return""}view(){return m("div",{className:W()("FormSection",this.className())},m("label",null,this.title()),this.content(),m("div",{className:"Form-group Form-controls"},this.submitButton()))}submitButton(){return[m(l(),{className:"Button Button--primary",loading:this.loading,onclick:()=>this.submit(!1),disabled:!this.isDirty()},s().translator.trans("core.admin.settings.submit_button"))]}customSettingComponents(){return Ee().prototype.customFieldComponents()}setting(e){var t;return null!=(t=this.settings[e])?t:this.settings[e]=te()()}submit(e){this.loading=!0;const t={};Object.keys(this.settings).forEach((e=>{t[e]=this.settings[e]()})),s().request({method:"POST",url:s().forum.attribute("apiUrl")+"/extension-manager/composer",body:{type:this.type,data:e?null:t}}).then((e=>{let{data:t}=e;Object.keys(t).forEach((e=>{this.settings[e]=te()(t[e])})),this.initialSettings=Array.isArray(t)?{}:t})).finally((()=>{this.loading=!1,m.redraw()}))}isDirty(){return JSON.stringify(this.initialSettings)!==JSON.stringify(this.settings)}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureJson",Se);const Be=flarum.reg.get("core","common/components/Select");var Ue=a.n(Be);class Ce extends(V()){constructor(){super(...arguments),f(this,"name",void 0),f(this,"repository",void 0)}oninit(e){super.oninit(e),this.name=te()(this.attrs.name||""),this.repository=te()(this.attrs.repository||{type:"composer",url:""})}className(){return"RepositoryModal Modal--small"}title(){const e=this.attrs.repository?"edit":"add";return s().translator.trans("flarum-extension-manager.admin.composer.".concat(e,"_repository_label"))}content(){const e={composer:s().translator.trans("flarum-extension-manager.admin.composer.repositories.types.composer"),vcs:s().translator.trans("flarum-extension-manager.admin.composer.repositories.types.vcs"),path:s().translator.trans("flarum-extension-manager.admin.composer.repositories.types.path")};return m("div",{className:"Modal-body"},m(Ne(),null,m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.name_label")),m("input",{className:"FormControl",bidi:this.name})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.type_label")),m(Ue(),{options:e,value:this.repository().type,onchange:e=>this.repository({...this.repository(),type:e})})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.url")),m("input",{className:"FormControl",onchange:e=>this.repository({...this.repository(),url:e.target.value}),value:this.repository().url})),m("div",{className:"Form-group"},m(l(),{className:"Button Button--primary",onclick:this.submit.bind(this)},s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.submit_button")))))}submit(){this.attrs.onsubmit(this.repository(),this.name()),this.hide()}}flarum.reg.add("flarum-extension-manager","admin/components/RepositoryModal",Ce);class qe extends Se{constructor(){super(...arguments),f(this,"type","composer")}title(){return s().translator.trans("flarum-extension-manager.admin.composer.title")}className(){return"ConfigureComposer"}content(){return m("div",{className:"Form ExtensionManager-SettingsGroups-content"},this.attrs.buildSettingComponent.call(this,{setting:"minimum-stability",label:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.label"),help:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.help"),type:"select",options:{stable:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.stable"),RC:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.rc"),beta:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.beta"),alpha:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.alpha"),dev:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.dev")}}),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.label")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.composer.repositories.help")),m("div",{className:"ConfigureComposer-repositories"},Object.keys(this.setting("repositories")()||{}).map((e=>{const t=this.setting("repositories")()[e];return m("div",{className:"ButtonGroup ButtonGroup--full"},m(l(),{className:"Button",icon:{composer:"fas fa-cubes",vcs:"fas fa-code-branch",path:"fas fa-folder"}[t.type],onclick:()=>s().modal.show(Ce,{name:e,repository:t,onsubmit:(t,a)=>{const n=this.setting("repositories")();delete n[e],this.setting("repositories")(n),this.onchange(t,a)}})},e," (",t.type,")"),m(l(),{className:"Button Button--icon",icon:"fas fa-trash","aria-label":s().translator.trans("flarum-extension-manager.admin.composer.delete_repository_label"),onclick:()=>{if(confirm(y()(s().translator.trans("flarum-extension-manager.admin.composer.delete_repository_confirmation")))){const t={...this.setting("repositories")()};delete t[e],this.setting("repositories")(t)}}}))})))))}submitButton(){const e=super.submitButton();return e.push(m(l(),{className:"Button",onclick:()=>s().modal.show(Ce,{onsubmit:this.onchange.bind(this)})},s().translator.trans("flarum-extension-manager.admin.composer.add_repository_label"))),e}onchange(e,t){this.setting("repositories")({...this.setting("repositories")(),[t]:e})}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureComposer",qe);class Pe extends(V()){constructor(){super(...arguments),f(this,"type",void 0),f(this,"host",void 0),f(this,"token",void 0)}oninit(e){super.oninit(e),this.type=te()(this.attrs.type||"bearer"),this.host=te()(this.attrs.host||""),this.token=te()(this.attrs.token||"")}className(){return"AuthMethodModal Modal--small"}title(){const e=this.attrs.host?"edit":"add";return s().translator.trans("flarum-extension-manager.admin.auth_config.".concat(e,"_label"))}content(){const e={"github-oauth":s().translator.trans("flarum-extension-manager.admin.auth_config.types.github-oauth"),"gitlab-oauth":s().translator.trans("flarum-extension-manager.admin.auth_config.types.gitlab-oauth"),"gitlab-token":s().translator.trans("flarum-extension-manager.admin.auth_config.types.gitlab-token"),bearer:s().translator.trans("flarum-extension-manager.admin.auth_config.types.bearer")};return m("div",{className:"Modal-body"},m(Ne(),null,m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.type_label")),m(Ue(),{options:e,value:this.type(),onchange:this.type})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.host_label")),m("input",{className:"FormControl",bidi:this.host,placeholder:s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.host_placeholder")})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.token_label")),m("textarea",{className:"FormControl",oninput:e=>this.token(e.target.value),rows:"6",placeholder:this.token().startsWith("unchanged:")?y()(s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.unchanged_token_placeholder")):""},this.token().startsWith("unchanged:")?"":this.token())),m("div",{className:"Form-group"},m(l(),{className:"Button Button--primary",onclick:this.submit.bind(this)},s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.submit_button")))))}submit(){this.attrs.onsubmit(this.type(),this.host(),this.token()),this.hide()}}flarum.reg.add("flarum-extension-manager","admin/components/AuthMethodModal",Pe);class Te extends Se{constructor(){super(...arguments),f(this,"type","auth")}title(){return s().translator.trans("flarum-extension-manager.admin.auth_config.title")}className(){return"ConfigureAuth"}content(){const e=Object.keys(this.settings),t=e.length&&e.every((e=>{const t=this.settings[e]();return Array.isArray(t)?t.length:Object.keys(t).length}));return m("div",{className:"ExtensionManager-SettingsGroups-content"},t?e.map((e=>{const t=this.settings[e]();return m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.types.".concat(e))),m("div",{className:"ConfigureAuth-hosts"},Object.keys(t).map((a=>{const n=t[a];return m("div",{className:"ButtonGroup ButtonGroup--full"},m(l(),{className:"Button",icon:"fas fa-key",onclick:()=>s().modal.show(Pe,{type:e,host:a,token:n,onsubmit:this.onchange.bind(this,a)})},a),m(l(),{className:"Button Button--icon",icon:"fas fa-trash","aria-label":s().translator.trans("flarum-extension-manager.admin.auth_config.delete_label"),onclick:()=>{if(confirm(y()(s().translator.trans("flarum-extension-manager.admin.auth_config.delete_confirmation")))){const t={...this.setting(e)()};delete t[a],Object.keys(t).length?this.setting(e)(t):delete this.settings[e]}}}))}))))})):m("span",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.auth_config.no_auth_methods_configured")))}submitButton(){const e=super.submitButton();return e.push(m(l(),{className:"Button",loading:this.loading,onclick:()=>s().modal.show(Pe,{onsubmit:this.onchange.bind(this,null)})},s().translator.trans("flarum-extension-manager.admin.auth_config.add_label"))),e}onchange(e,t,a,n){const s={...this.setting(t)()};e&&delete s[e],s[a]=n,this.setting(t)(s)}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureAuth",Te);const je=flarum.reg.get("core","common/components/Input");var Fe=a.n(je);const $e=flarum.reg.get("core","common/helpers/listItems");var Le=a.n($e);const Ie=flarum.reg.get("core","common/utils/throttleDebounce");class Ae extends(U()){constructor(){super(...arguments),f(this,"search",te()("")),f(this,"warningsDismissed",te()(!1)),f(this,"applySearch",(0,Ie.throttle)(1200,(e=>{const t=s().extensionManager.extensions.getParams();s().extensionManager.extensions.refreshParams({...t,filter:{...t.filter,q:e}},1)})))}oninit(e){super.oninit(e),s().extensionManager.extensions.goto(1),this.warningsDismissed("true"===localStorage.getItem("flarum-extension-manager.warningsDismissed"))}load(e){void 0===e&&(e=1),s().extensionManager.extensions.goto(e)}view(){return m("div",{className:"ExtensionPage-settings ExtensionManager-DiscoverSection"},m("div",{className:"container"},m(Ne(),null,m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.discover.title")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.sections.discover.description"),this.warningsDismissed()&&m(l(),{className:"Button Button--text Button--warning Button--more",icon:"fas fa-exclamation-triangle",onclick:()=>this.setWarningDismissed(!1)}))),!this.warningsDismissed()&&m("div",{className:"ExtensionManager-warnings Form-group"},m(X(),{className:"ExtensionManager-primaryWarning",type:"warning",dismissible:!0,ondismiss:()=>this.setWarningDismissed(!0)},m("ul",null,Le()(this.warningItems().toArray())))),m("div",{className:"Tabs"},m("div",{className:"Tabs-nav"},this.tabItems().toArray()),m("div",{className:"Tabs-content"},m("hr",{className:"Tabs-divider"}),m("div",{className:"ExtensionManager-DiscoverSection-toolbar"},m("div",{className:"ExtensionManager-DiscoverSection-toolbar-primary"},this.toolbarPrimaryItems().toArray()),m("div",{className:"ExtensionManager-DiscoverSection-toolbar-secondary"},this.toolbarSecondaryItems().toArray())),this.extensionList(),m("div",{className:"ExtensionManager-DiscoverSection-footer"},this.footerItems().toArray()))))))}tabFilters(){return{"":{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.discover"),active:()=>{var e;return!(null!=(e=s().extensionManager.extensions.getParams().filter)&&e.type)}},extension:{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.extensions"),active:()=>{var e;return"extension"===(null==(e=s().extensionManager.extensions.getParams().filter)?void 0:e.type)}},locale:{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.languages"),active:()=>{var e;return"locale"===(null==(e=s().extensionManager.extensions.getParams().filter)?void 0:e.type)}},theme:{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.themes"),active:()=>{var e;return"theme"===(null==(e=s().extensionManager.extensions.getParams().filter)?void 0:e.type)}}}}tabItems(){const e=new(L()),t=this.tabFilters();return Object.keys(t).forEach((a=>{const n=t[a];e.add(a,m(l(),{className:"Button Button--link",active:n.active(),onclick:()=>{s().extensionManager.extensions.changeFilter("type",a)}},n.label))})),e}warningItems(){const e=new(L());return e.add("accessWarning",s().translator.trans("flarum-extension-manager.admin.settings.access_warning")),s().data.debugEnabled&&e.add("devModeWarning",s().translator.trans("flarum-extension-manager.admin.settings.debug_mode_warning")),e}toolbarPrimaryItems(){const e=new(L());return e.add("search",m(Fe(),{value:this.search(),onchange:e=>{this.search(e),this.applySearch(e)},inputAttrs:{className:"FormControl-alt"},clearable:!0,placeholder:s().translator.trans("flarum-extension-manager.admin.sections.discover.search"),prefixIcon:"fas fa-search"})),e}toolbarSecondaryItems(){var e,t;const a=new(L()),n=s().extensionManager.extensions.sortMap(),r=Object.keys(n).reduce(((e,t)=>{const a=n[t];return e[t]="string"!=typeof a?a.label:a,e}),{});a.add("sort",m(pe(),{buttonClassName:"Button",label:r[s().extensionManager.extensions.getParams().sort]||Object.keys(n).map((e=>r[e]))[0],accessibleToggleLabel:s().translator.trans("flarum-extension-manager.admin.sections.discover.sort.toggle_dropdown_accessible_label")},Object.keys(r).map((e=>{const t=r[e],a=s().extensionManager.extensions.getParams().sort===e;return m(l(),{icon:!a||"fas fa-check",onclick:()=>s().extensionManager.extensions.changeSort(e),active:a},t)}))));const o=(null!=(e=null==(t=s().extensionManager.extensions.getParams().filter)||null==(t=t.is)?void 0:t[0])?e:null)||"all";return a.add("party",m(pe(),{buttonClassName:"Button",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.party_filter."+o),accessibleToggleLabel:s().translator.trans("flarum-extension-manager.admin.sections.discover.party_filter.toggle_dropdown_accessible_label")},["all","premium"].map((e=>m(l(),{icon:o!==e||"fas fa-check",onclick:()=>{s().extensionManager.extensions.changeFilter("is","all"===e?void 0:[e])},active:o===e},s().translator.trans("flarum-extension-manager.admin.sections.discover.party_filter."+e)))))),a}extensionList(){return!s().extensionManager.extensions.hasItems()&&s().extensionManager.extensions.isLoading()?m(q(),{display:"block"}):s().extensionManager.extensions.hasItems()?m("div",{className:W()("ExtensionManager-DiscoverSection-list",{"loading-container":s().extensionManager.extensions.isLoading()})},m("div",{className:"ExtensionManager-DiscoverSection-list-inner"},s().extensionManager.extensions.getPages().map((e=>e.items.map((e=>m(xe,{extension:e,key:e.name()})))))),s().extensionManager.extensions.hasItems()&&s().extensionManager.extensions.isLoading()&&m(q(),{size:"large"})):m("div",{className:"ExtensionManager-DiscoverSection-list ExtensionManager-DiscoverSection-list--empty"},m(ye(),{icon:"fas fa-plug-circle-exclamation"},s().translator.trans("flarum-extension-manager.admin.sections.discover.empty_results")))}footerItems(){const e=new(L());return e.add("pagination",m(O(),{total:s().extensionManager.extensions.totalItems,perPage:s().extensionManager.extensions.pageSize,currentPage:s().extensionManager.extensions.getLocation().page,onChange:e=>{s().extensionManager.extensions.getLocation().page!==e&&this.load(e)}})),e.add("premiumTermsLink",m(fe(),{className:"Button Button--link",href:"https://flarum.org/terms/premium-extensions",external:!0,target:"_blank",icon:"fas fa-circle-info"},s().translator.trans("flarum-extension-manager.admin.sections.discover.premium_extension_terms"))),e}setWarningDismissed(e){this.warningsDismissed(e),localStorage.setItem("flarum-extension-manager.warningsDismissed",e?"true":"false")}}flarum.reg.add("flarum-extension-manager","admin/components/DiscoverSection",Ae);class De extends(o()){content(){const e=s().registry.getSettings(this.extension.id);return m("div",{className:"ExtensionPage-settings"},m("div",{className:"container"},e?[m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.settings.title")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.sections.settings.description"))),m("div",{className:"FormSectionGroup ExtensionManager-SettingsGroups"},m("div",{className:"FormSection"},m("label",null,s().translator.trans("flarum-extension-manager.admin.settings.title")),m("div",{className:"Form"},e.map(this.buildSettingComponent.bind(this))),m("div",{className:"Form-group Form--controls"},this.submitButton())),m(qe,{buildSettingComponent:this.buildSettingComponent}),m(Te,{buildSettingComponent:this.buildSettingComponent}))]:m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("core.admin.extension.no_settings"))))}sections(e){const t=super.sections(e);return t.add("discover",m(Ae,null),15),t.add("control",m(Me,null),10),t.setPriority("content",8),"0"!==s().data.settings["flarum-extension-manager.queue_jobs"]&&s().data.settings["flarum-extension-manager.queue_jobs"]&&t.add("queue",m(Z,null),5),t.remove("permissions"),t}onsaved(){super.onsaved(),m.redraw()}}flarum.reg.add("flarum-extension-manager","admin/components/SettingsPage",De);const Oe=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],Ye=["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],We=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],Re=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],Ge=(e,t,a)=>{let n=e;return"string"==typeof t||Array.isArray(t)?n=e.toLocaleString(t,a):!0!==t&&void 0===a||(n=e.toLocaleString(void 0,a)),n};class Ve extends(ce()){status(){return ce().attribute("status").call(this)}operation(){return ce().attribute("operation").call(this)}command(){return ce().attribute("command").call(this)}package(){return ce().attribute("package").call(this)}output(){return ce().attribute("output").call(this)}guessedCause(){return ce().attribute("guessedCause").call(this)}createdAt(){return ce().attribute("createdAt",ce().transformDate).call(this)}startedAt(){return ce().attribute("startedAt",ce().transformDate).call(this)}finishedAt(){return ce().attribute("finishedAt",ce().transformDate).call(this)}peakMemoryUsed(){return function(e,t){if(!Number.isFinite(e))throw new TypeError("Expected a finite number, got ".concat(typeof e,": ").concat(e));const a=(t={bits:!1,binary:!1,space:!0,...t}).bits?t.binary?Re:We:t.binary?Ye:Oe,n=t.space?" ":"";if(t.signed&&0===e)return" 0".concat(n).concat(a[0]);const s=e<0,r=s?"-":t.signed?"+":"";let o;if(s&&(e=-e),void 0!==t.minimumFractionDigits&&(o={minimumFractionDigits:t.minimumFractionDigits}),void 0!==t.maximumFractionDigits&&(o={maximumFractionDigits:t.maximumFractionDigits,...o}),e<1)return r+Ge(e,t.locale,o)+n+a[0];const i=Math.min(Math.floor(t.binary?Math.log(e)/Math.log(1024):Math.log10(e)/3),a.length-1);return e/=(t.binary?1024:1e3)**i,o||(e=e.toPrecision(3)),r+Ge(Number(e),t.locale,o)+n+a[i]}(1024*ce().attribute("peakMemoryUsed").call(this))}}flarum.reg.add("flarum-extension-manager","admin/models/Task",Ve);const He=[(new(S().Store)).add("extension-manager-tasks",Ve).add("external-extensions",de),(new(S().Admin)).setting((()=>({setting:"flarum-extension-manager.queue_jobs",label:s().translator.trans("flarum-extension-manager.admin.settings.queue_jobs"),help:m.trust(y()(s().translator.trans("flarum-extension-manager.admin.settings.queue_jobs_help",{basic_impl_link:"https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting",adv_impl_link:"https://discuss.flarum.org/d/21873-redis-sessions-cache-queues",php_version:"".concat(s().data.phpVersion,""),folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),type:"boolean",disabled:s().data["flarum-extension-manager.using_sync_queue"]}))).setting((()=>({setting:"flarum-extension-manager.task_retention_days",label:s().translator.trans("flarum-extension-manager.admin.settings.task_retention_days"),help:s().translator.trans("flarum-extension-manager.admin.settings.task_retention_days_help"),type:"number"}))).page(De).generalIndexItems("settings",(()=>[{id:"minimum-stability",label:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.label",{},!0),help:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.help",{},!0)},{id:"repositories",label:s().translator.trans("flarum-extension-manager.admin.composer.repositories.label",{},!0),help:s().translator.trans("flarum-extension-manager.admin.composer.repositories.help",{},!0)},{id:"composer-auth",label:s().translator.trans("flarum-extension-manager.admin.auth_config.title",{},!0)},{id:"updates",label:s().translator.trans("flarum-extension-manager.admin.updater.updater_title",{},!0),help:s().translator.trans("flarum-extension-manager.admin.updater.updater_help",{},!0)}]))];s().initializers.add("flarum-extension-manager",(t=>{t.extensionManager=new w,t.data["flarum-extension-manager.using_sync_queue"]&&(t.data.settings["flarum-extension-manager.queue_jobs"]="0"),(0,e.extend)(o().prototype,"topItems",(function(e){"flarum-extension-manager"===this.extension.id||g()(this.extension.id)||e.add("remove",m(l(),{className:"Button Button--danger",icon:"fas fa-times",onclick:()=>{t.modal.show(c()),t.request({url:"".concat(t.forum.attribute("apiUrl"),"/extension-manager/extensions/").concat(this.extension.id),method:"DELETE"}).then((e=>{null!=e&&e.processing?p():(t.alerts.show({type:"success"},t.translator.trans("flarum-extension-manager.admin.extensions.successful_remove")),window.location=t.forum.attribute("adminUrl"))})).finally((()=>{t.modal.close()}))}},t.translator.trans("flarum-extension-manager.admin.extensions.remove")))}))}))})(),module.exports=n})(); +(()=>{var e={151:function(e){e.exports=function(){"use strict";var e,t,a=1e3,n=6e4,s=36e5,r=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,i=31536e6,l=2628e6,m=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,u={years:i,months:l,days:r,hours:s,minutes:n,seconds:a,milliseconds:1,weeks:6048e5},c=function(e){return e instanceof b},d=function(e,t,a){return new b(e,a,t.$l)},g=function(e){return t.p(e)+"s"},p=function(e){return e<0},h=function(e){return p(e)?Math.ceil(e):Math.floor(e)},f=function(e){return Math.abs(e)},x=function(e,t){return e?p(e)?{negative:!0,format:""+f(e)+t}:{negative:!1,format:""+e+t}:{negative:!1,format:""}},b=function(){function p(e,t,a){var n=this;if(this.$d={},this.$l=a,void 0===e&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(e*u[g(t)],this);if("number"==typeof e)return this.$ms=e,this.parseFromMilliseconds(),this;if("object"==typeof e)return Object.keys(e).forEach((function(t){n.$d[g(t)]=e[t]})),this.calMilliseconds(),this;if("string"==typeof e){var s=e.match(m);if(s){var r=s.slice(2).map((function(e){return null!=e?Number(e):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var f=p.prototype;return f.calMilliseconds=function(){var e=this;this.$ms=Object.keys(this.$d).reduce((function(t,a){return t+(e.$d[a]||0)*u[a]}),0)},f.parseFromMilliseconds=function(){var e=this.$ms;this.$d.years=h(e/i),e%=i,this.$d.months=h(e/l),e%=l,this.$d.days=h(e/r),e%=r,this.$d.hours=h(e/s),e%=s,this.$d.minutes=h(e/n),e%=n,this.$d.seconds=h(e/a),e%=a,this.$d.milliseconds=e},f.toISOString=function(){var e=x(this.$d.years,"Y"),t=x(this.$d.months,"M"),a=+this.$d.days||0;this.$d.weeks&&(a+=7*this.$d.weeks);var n=x(a,"D"),s=x(this.$d.hours,"H"),r=x(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var i=x(o,"S"),l=e.negative||t.negative||n.negative||s.negative||r.negative||i.negative,m=s.format||r.format||i.format?"T":"",u=(l?"-":"")+"P"+e.format+t.format+n.format+m+s.format+r.format+i.format;return"P"===u||"-P"===u?"P0D":u},f.toJSON=function(){return this.toISOString()},f.format=function(e){var a=e||"YYYY-MM-DDTHH:mm:ss",n={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return a.replace(o,(function(e,t){return t||String(n[e])}))},f.as=function(e){return this.$ms/u[g(e)]},f.get=function(e){var t=this.$ms,a=g(e);return"milliseconds"===a?t%=1e3:t="weeks"===a?h(t/u[a]):this.$d[a],t||0},f.add=function(e,t,a){var n;return n=t?e*u[g(t)]:c(e)?e.$ms:d(e,this).$ms,d(this.$ms+n*(a?-1:1),this)},f.subtract=function(e,t){return this.add(e,t,!0)},f.locale=function(e){var t=this.clone();return t.$l=e,t},f.clone=function(){return d(this.$ms,this)},f.humanize=function(t){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},f.valueOf=function(){return this.asMilliseconds()},f.milliseconds=function(){return this.get("milliseconds")},f.asMilliseconds=function(){return this.as("milliseconds")},f.seconds=function(){return this.get("seconds")},f.asSeconds=function(){return this.as("seconds")},f.minutes=function(){return this.get("minutes")},f.asMinutes=function(){return this.as("minutes")},f.hours=function(){return this.get("hours")},f.asHours=function(){return this.as("hours")},f.days=function(){return this.get("days")},f.asDays=function(){return this.as("days")},f.weeks=function(){return this.get("weeks")},f.asWeeks=function(){return this.as("weeks")},f.months=function(){return this.get("months")},f.asMonths=function(){return this.as("months")},f.years=function(){return this.get("years")},f.asYears=function(){return this.as("years")},p}(),v=function(e,t,a){return e.add(t.years()*a,"y").add(t.months()*a,"M").add(t.days()*a,"d").add(t.hours()*a,"h").add(t.minutes()*a,"m").add(t.seconds()*a,"s").add(t.milliseconds()*a,"ms")};return function(a,n,s){e=s,t=s().$utils(),s.duration=function(e,t){var a=s.locale();return d(e,{$l:a},t)},s.isDuration=c;var r=n.prototype.add,o=n.prototype.subtract;n.prototype.add=function(e,t){return c(e)?v(this,e,1):r.bind(this)(e,t)},n.prototype.subtract=function(e,t){return c(e)?v(this,e,-1):o.bind(this)(e,t)}}}()}},t={};function a(n){var s=t[n];if(void 0!==s)return s.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";a.r(n),a.d(n,{extend:()=>Je});const e=flarum.reg.get("core","common/extend"),t=flarum.reg.get("core","admin/app");var s=a.n(t);const r=flarum.reg.get("core","admin/components/ExtensionPage");var o=a.n(r);const i=flarum.reg.get("core","common/components/Button");var l=a.n(i);const u=flarum.reg.get("core","admin/components/LoadingModal");var c=a.n(u);const d=flarum.reg.get("core","admin/utils/isExtensionEnabled");var g=a.n(d);function p(){s().modal.close(),m.route.set(s().route("extension",{id:"flarum-extension-manager"})),s().extensionManager.queue.load({},!0),setTimeout((()=>{var e;null==(e=document.getElementById("ExtensionManager-queueSection"))||e.scrollIntoView({block:"nearest"})}),200)}function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t,a){return n=function(e,t){if("object"!=h(e)||!e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var n=a.call(e,"string");if("object"!=h(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t),(t="symbol"==h(n)?n:n+"")in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e;var n}window.jumpToQueue=p,flarum.reg.add("flarum-extension-manager","admin/utils/jumpToQueue",p);class x{constructor(){f(this,"polling",null),f(this,"tasks",null),f(this,"limit",20),f(this,"offset",0),f(this,"total",0),f(this,"loading",!1)}load(e,t){var a;return void 0===t&&(t=!1),this.loading=!0,e={page:{limit:this.limit,offset:this.offset,...null==(a=e)?void 0:a.page},...e},s().store.find("extension-manager-tasks",e||{}).then((e=>{var a;return this.tasks=e,this.total=(null==(a=e.payload.meta)||null==(a=a.page)?void 0:a.total)||0,m.redraw(),(null==e?void 0:e.find((e=>"pending"===e.status()||"running"===e.status())))?this.pollQueue(t):t?(s().extensionManager.control.setLoading(null),window.location.reload()):s().extensionManager.control.isLoading()&&s().extensionManager.control.setLoading(null),this.loading=!1,e}))}isLoading(){return this.loading}getItems(){return this.tasks}getTotalItems(){return this.total}getTotalPages(){return Math.ceil(this.total/this.limit)}pageNumber(){return Math.ceil(this.offset/this.limit)}getPerPage(){return this.limit}hasPrev(){return 0!==this.pageNumber()}hasNext(){return this.offset+this.limit{this.load({},e)}),6e3)}hasPending(){var e;return!(null==(e=this.tasks)||!e.find((e=>"pending"===e.status()||"running"===e.status())))}}function b(e){s().extensionManager.control.setLoading(null);const t=e.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(t.code))throw e;switch(s().alerts.clear(),t.code){case"composer_command_failure":t.guessed_cause?(s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.guessed_cause.".concat(t.guessed_cause))),s().modal.close()):s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.composer_command_failure"));break;case"extension_already_installed":s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.extension_already_installed")),s().modal.close();break;case"extension_not_installed":s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.extension_not_installed")),s().modal.close()}}flarum.reg.add("flarum-extension-manager","admin/states/QueueState",x);const v=flarum.reg.get("core","common/utils/extractText");var y=a.n(v);class _{get lastUpdateRun(){const e=JSON.parse(s().data.settings["flarum-extension-manager.last_update_run"]);return e.limitedPackages=()=>[...e.major.limitedPackages,...e.minor.limitedPackages,...e.global.limitedPackages],e}constructor(){f(this,"loading",null),f(this,"packageUpdates",{}),f(this,"lastUpdateCheck",void 0),f(this,"extensionUpdates",void 0),f(this,"coreUpdate",null),this.lastUpdateCheck=JSON.parse(s().data.settings["flarum-extension-manager.last_update_check"]),this.extensionUpdates=this.formatExtensionUpdates(this.lastUpdateCheck),this.coreUpdate=this.formatCoreUpdate(this.lastUpdateCheck)}isLoading(e){return void 0===e&&(e=null),e&&this.loading===e||!e&&null!==this.loading}hasOperationRunning(){return this.isLoading()||s().extensionManager.queue.hasPending()}setLoading(e){this.loading=e}requirePackage(e){s().extensionManager.control.setLoading("extension-install"),s().modal.show(c()),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/extensions"),body:{data:e}}).then((e=>{if(e.processing)p();else{const t=e.id;s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.extensions.successful_install",{extension:t})),window.location.href="".concat(s().forum.attribute("adminUrl"),"#/extension/").concat(t),window.location.reload()}})).catch(b).finally((()=>{s().modal.close(),m.redraw()}))}checkForUpdates(){this.setLoading("check"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/check-for-updates")}).then((e=>{e.processing?p():(this.lastUpdateCheck=e,this.extensionUpdates=this.formatExtensionUpdates(e),this.coreUpdate=this.formatCoreUpdate(e),this.setLoading(null),m.redraw())})).catch(b).finally((()=>{m.redraw()}))}updateCoreMinor(){confirm(y()(s().translator.trans("flarum-extension-manager.admin.minor_update_confirmation.content")))&&(s().modal.show(c()),this.setLoading("minor-update"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/minor-update")}).then((e=>{null!=e&&e.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.update_successful")),window.location.reload())})).catch(b).finally((()=>{s().modal.close(),m.redraw()})))}updateExtension(e,t){s().modal.show(c()),this.setLoading("extension-update"),s().request({method:"PATCH",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/extensions/").concat(e.id),body:{data:{updateMode:t}}}).then((t=>{null!=t&&t.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.extensions.successful_update",{extension:e.extra["flarum-extension"].title})),window.location.reload())})).catch(b).finally((()=>{s().modal.close(),m.redraw()}))}updateGlobally(){s().modal.show(c()),this.setLoading("global-update"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/global-update")}).then((e=>{null!=e&&e.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.updater.global_update_successful")),window.location.reload())})).catch(b).finally((()=>{s().modal.close(),m.redraw()}))}formatExtensionUpdates(e){var t;return this.packageUpdates={},null==e||null==(t=e.updates)||null==(t=t.installed)||t.filter((e=>{const t=e.name.replace("/","-").replace(/(flarum-ext-)|(flarum-)/,""),a=s().data.extensions[t],n=["semver-safe-update","update-possible"].includes(e["latest-status"]);return a&&n&&(this.packageUpdates[a.id]=e),a&&n})),Object.values(s().data.extensions).filter((e=>this.packageUpdates[e.id]))}formatCoreUpdate(e){var t;const a=null==e||null==(t=e.updates)||null==(t=t.installed)?void 0:t.filter((e=>"flarum/core"===e.name)).pop();return a?{package:a,extension:{id:"flarum-core",name:"flarum/core",version:s().data.settings.version,icon:{name:"",backgroundImage:"url(".concat(s().data.resources[0].attributes.baseUrl,"/assets/extensions/flarum-extension-manager/flarum.svg")},extra:{"flarum-extension":{title:y()(s().translator.trans("flarum-extension-manager.admin.updater.flarum"))}},links:{}}}:null}majorUpdate(e){let{dryRun:t}=e;s().extensionManager.control.setLoading(t?"major-update-dry-run":"major-update"),s().modal.show(c());const a=this.lastUpdateRun.major;s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/major-update"),body:{data:{dryRun:t}}}).then((e=>{null!=e&&e.processing?p():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.update_successful")),window.location.reload())})).catch(b).catch((e=>{var t;s().modal.close(),a.status="failure",a.incompatibleExtensions=null==(t=e.response)||null==(t=t.errors)||null==(t=t.pop())?void 0:t.incompatible_extensions})).finally((()=>{m.redraw()}))}}flarum.reg.add("flarum-extension-manager","admin/states/ControlSectionState",_);const k=flarum.reg.get("core","common/states/PaginatedListState");var N=a.n(k);class M extends(N()){get type(){return"external-extensions"}constructor(){super({sort:"-downloads"},1,12)}sortMap(){return{"-createdAt":{sort:"-createdAt",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.sort.latest",{},!0)},"-downloads":{sort:"-downloads",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.sort.top",{},!0)}}}}flarum.reg.add("flarum-extension-manager","admin/states/ExtensionListState",M);class w{constructor(){f(this,"queue",new x),f(this,"control",new _),f(this,"extensions",new M)}}flarum.reg.add("flarum-extension-manager","admin/states/ExtensionManagerState",w);const E=flarum.reg.get("core","common/extenders");var S=a.n(E);const B=flarum.reg.get("core","common/Component");var U=a.n(B);const C=flarum.reg.get("core","common/components/LoadingIndicator");var q=a.n(C);const P=flarum.reg.get("core","common/components/Tooltip");var T=a.n(P);const j=flarum.reg.get("core","common/components/Icon");var F=a.n(j);const $=flarum.reg.get("core","common/utils/ItemList");var L=a.n($);const I=flarum.reg.get("core","common/components/Link");var A=a.n(I);const D=flarum.reg.get("core","common/components/Pagination");var O=a.n(D);const R=flarum.reg.get("core","common/utils/classList");var Y=a.n(R);class W extends(U()){view(e){const{className:t,type:a,...n}=this.attrs;return m("span",Object.assign({className:Y()(["Label","Label--".concat(this.attrs.type),t])},n),e.children)}}flarum.reg.add("flarum-extension-manager","admin/components/Label",W);const G=flarum.reg.get("core","common/components/Modal");var V=a.n(G);class H extends(V()){className(){return"Modal--large QuickModal"}title(){return s().translator.trans("flarum-extension-manager.admin.sections.queue.operations.".concat(this.attrs.task.operation()))}content(){return m("div",{className:"Modal-body"},m("div",{className:"TaskOutputModal-data"},"failure"===this.attrs.task.status()&&m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.guessed_cause")),m("div",{className:"FormControl TaskOutputModal-data-guessed-cause"},this.attrs.task.guessedCause()&&s().translator.trans("flarum-extension-manager.admin.exceptions.guessed_cause."+this.attrs.task.guessedCause())||s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.cause_unknown"))),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.command")),m("div",{className:"FormControl TaskOutputModal-data-command"},m("code",null,"$ composer ",this.attrs.task.command()))),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.output")),m("div",{className:"FormControl TaskOutputModal-data-output"},m("code",null,m("pre",null,this.attrs.task.output()))))))}}flarum.reg.add("flarum-extension-manager","admin/components/TaskOutputModal",H);var z=a(151),Q=a.n(z);function J(e,t){dayjs.extend(Q());const a=dayjs(t).diff(e);return dayjs.duration(a).humanize()}flarum.reg.add("flarum-extension-manager","admin/utils/humanDuration",J);class Z extends(U()){oninit(e){super.oninit(e),s().extensionManager.queue.load()}view(){return m("section",{id:"ExtensionManager-queueSection",className:"ExtensionPage-settings ExtensionManager-queueSection"},m("div",{className:"ExtensionPage-permissions-header ExtensionManager-queueSection-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},s().translator.trans("flarum-extension-manager.admin.sections.queue.title")),m(l(),{className:"Button Button--icon",icon:"fas fa-sync-alt",onclick:()=>s().extensionManager.queue.load(),"aria-label":s().translator.trans("flarum-extension-manager.admin.sections.queue.refresh"),disabled:s().extensionManager.control.isLoading()}))),m("div",{className:"container"},this.queueTable()))}columns(){const e=new(L());return e.add("operation",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.operation")),content:e=>m("div",{className:"ExtensionManager-queueTable-operation"},m("span",{className:"ExtensionManager-queueTable-operation-icon"},this.operationIcon(e.operation())),m("span",{className:"ExtensionManager-queueTable-operation-name"},s().translator.trans("flarum-extension-manager.admin.sections.queue.operations.".concat(e.operation()))))},80),e.add("package",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.package")),content:e=>{var t;const a=s().data.extensions[null==(t=e.package())?void 0:t.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return a?m(A(),{className:"ExtensionManager-queueTable-package",href:s().route("extension",{id:a.id})},m("div",{className:"ExtensionManager-queueTable-package-icon ExtensionIcon",style:a.icon},!!a.icon&&m(F(),{name:a.icon.name})),m("div",{className:"ExtensionManager-queueTable-package-details"},m("span",{className:"ExtensionManager-queueTable-package-title"},a.extra["flarum-extension"].title),m("span",{className:"ExtensionManager-queueTable-package-name"},e.package()))):e.package()}},75),e.add("status",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.status")),content:e=>m("[",null,m(W,{className:"ExtensionManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[e.status()]},s().translator.trans("flarum-extension-manager.admin.sections.queue.statuses.".concat(e.status()))),["pending","running"].includes(e.status())&&m(q(),{size:"small",display:"inline"}))},70),e.add("elapsedTime",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.elapsed_time")),content:e=>e.startedAt()&&e.finishedAt()?m(T(),{text:"".concat(dayjs(e.startedAt()).format("LL LTS")," ").concat(dayjs(e.finishedAt()).format("LL LTS"))},m("span",null,J(e.startedAt(),e.finishedAt()))):s().translator.trans("flarum-extension-manager.admin.sections.queue.task_just_started")},65),e.add("memoryUsed",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.peak_memory_used")),content:e=>m("span",null,e.peakMemoryUsed())},60),e.add("details",{label:y()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.details")),content:e=>m(l(),{className:"Button Button--icon Table-controls-item",icon:"fas fa-file-alt","aria-label":s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.details"),onclick:()=>s().modal.show(H,{task:e}),disabled:["pending","running"].includes(e.status())}),className:"Table-controls"},55),e}queueTable(){const e=s().extensionManager.queue.getItems();if(!e)return m(q(),null);if(e&&!e.length)return m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("flarum-extension-manager.admin.sections.queue.none"));const t=this.columns();return m("[",null,m("div",{className:Y()("Table-container",{"loading-container":e&&s().extensionManager.queue.isLoading()})},m("table",{className:"Table ExtensionManager-queueTable"},m("thead",null,m("tr",null,t.toArray().map(((e,t)=>m("th",{key:t},e.label))))),m("tbody",null,e.map(((e,a)=>m("tr",{key:a},t.toArray().map(((t,a)=>{const{label:n,content:s,...r}=t;return m("td",Object.assign({key:a},r),s(e))}))))))),e&&s().extensionManager.queue.isLoading()&&m(q(),{size:"large"})),m(O(),{total:s().extensionManager.queue.getTotalItems(),currentPage:s().extensionManager.queue.pageNumber()+1,perPage:s().extensionManager.queue.getPerPage(),onChange:e=>s().extensionManager.queue.goto(e)}))}operationIcon(e){return m(F(),{name:{update_check:"fas fa-sync-alt",update_major:"fas fa-play",update_minor:"fas fa-play",update_global:"fas fa-play",extension_install:"fas fa-download",extension_remove:"fas fa-times",extension_update:"fas fa-arrow-alt-circle-up",why_not:"fas fa-exclamation-circle"}[e]})}}flarum.reg.add("flarum-extension-manager","admin/components/QueueSection",Z);const K=flarum.reg.get("core","common/components/Alert");var X=a.n(K);const ee=flarum.reg.get("core","common/utils/Stream");var te=a.n(ee);class ae extends(U()){constructor(){super(...arguments),f(this,"packageName",void 0)}oninit(e){super.oninit(e),this.packageName=te()("")}view(){return m("div",{className:"Form-group ExtensionManager-installer"},m("label",{htmlFor:"install-extension"},s().translator.trans("flarum-extension-manager.admin.extensions.install")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.extensions.install_help",{link:m("a",{href:"https://flarum.org/extensions"},"flarum.org"),semantic_link:m("a",{href:"https://devhints.io/semver"}),code:m("code",null)})),m("div",{className:"FormControl-container"},m("input",{className:"FormControl",id:"install-extension",placeholder:"vendor/package-name",bidi:this.packageName}),m(l(),{className:"Button",icon:"fas fa-download",onclick:this.onsubmit.bind(this),loading:s().extensionManager.control.isLoading("extension-install"),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.extensions.proceed"))))}data(){return{package:this.packageName()}}onsubmit(){s().extensionManager.control.requirePackage(this.data())}}flarum.reg.add("flarum-extension-manager","admin/components/Installer",ae);const ne=flarum.reg.get("core","common/helpers/humanTime");var se=a.n(ne);class re extends(V()){constructor(){super(...arguments),f(this,"loading",!0),f(this,"whyNot",null)}className(){return"Modal--large WhyNotModal"}title(){return s().translator.trans("flarum-extension-manager.admin.why_not_modal.title")}oncreate(e){super.oncreate(e),this.requestWhyNot()}content(){return m("div",{className:"Modal-body"},this.loading?m(q(),null):m("pre",{className:"WhyNotModal-contents"},this.whyNot))}requestWhyNot(){s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/why-not"),body:{data:{package:this.attrs.package}}}).then((e=>{this.loading=!1,this.whyNot=e.data.reason,m.redraw()})).catch(b)}}flarum.reg.add("flarum-extension-manager","admin/components/WhyNotModal",re);const oe=flarum.reg.get("core","common/components/Badge");var ie=a.n(oe);const le=flarum.reg.get("core","common/utils/formatAmount");var me=a.n(le);const ue=flarum.reg.get("core","common/Model");var ce=a.n(ue);let de=function(e){return e.Stable="stable",e.Alpha="alpha",e.Beta="beta",e.RC="rc",e.Dev="dev",e}({});function ge(e){return[de.Stable,de.RC].includes(pe(e))}function pe(e){const t=e.split("-");if(1===t.length)return de.Stable;switch(t[1].split(".")[0].toLowerCase()){case"alpha":return de.Alpha;case"beta":return de.Beta;case"rc":return de.RC;default:return de.Dev}}flarum.reg.add("flarum-extension-manager","admin/utils/versions",{VersionStability:de,isProductionReady:ge,stability:pe});class he extends(ce()){constructor(){super(...arguments),f(this,"extensionId",ce().attribute("extensionId")),f(this,"name",ce().attribute("name")),f(this,"title",ce().attribute("title")),f(this,"description",ce().attribute("description")),f(this,"iconUrl",ce().attribute("iconUrl")),f(this,"icon",ce().attribute("icon")),f(this,"highestVersion",ce().attribute("highestVersion")),f(this,"httpUri",ce().attribute("httpUri")),f(this,"discussUri",ce().attribute("discussUri")),f(this,"vendor",ce().attribute("vendor")),f(this,"isPremium",ce().attribute("isPremium")),f(this,"isLocale",ce().attribute("isLocale")),f(this,"locale",ce().attribute("locale")),f(this,"latestFlarumVersionSupported",ce().attribute("latestFlarumVersionSupported")),f(this,"downloads",ce().attribute("downloads")),f(this,"installed",!1)}isSupported(){const e=s().data.settings.version,t=this.latestFlarumVersionSupported();return e.split("-")[1]===t.split("-")[1]&&e.split(".")[0]===t.split(".")[0]}isProductionReady(){return ge(this.highestVersion())}toLocalExtension(){return{id:this.extensionId(),name:this.name(),version:this.highestVersion(),description:this.description(),icon:this.icon()||{name:"fas fa-box-open",backgroundColor:"#117187",color:"#fff"},links:{discuss:this.discussUri(),website:this.httpUri()},extra:{"flarum-extension":{title:this.title()}}}}}flarum.reg.add("flarum-extension-manager","admin/models/ExternalExtension",he);const fe=flarum.reg.get("core","common/components/Dropdown");var xe=a.n(fe);const be=flarum.reg.get("core","common/components/LinkButton");var ve=a.n(be);class ye extends(U()){getExtension(){return this.attrs.extension instanceof he?this.attrs.extension.toLocalExtension():this.attrs.extension}view(){const e=this.getExtension(),{isCore:t,isDanger:a}=this.attrs;return m("div",{className:Y()("ExtensionCard",{"ExtensionCard--core":t,"ExtensionCard--danger":a})},m("div",{className:"ExtensionCard-header"},this.icon(),m(T(),{text:e.name},m("h4",null,e.extra["flarum-extension"].title)),this.attrs.extension instanceof he&&m("div",{className:"ExtensionCard-badges"},this.badges().toArray()),m("div",{className:"ExtensionCard-actions"},this.actionItems().toArray())),m("div",{className:"ExtensionCard-body"},m("p",null,e.description)),m("div",{className:"ExtensionCard-footer"},m("div",{className:"ExtensionCard-meta"},this.metaItems().toArray())))}icon(){var e,t;const a=this.getExtension();this.attrs.extension instanceof he&&a.id in s().data.extensions&&(a.icon=s().data.extensions[a.id].icon);const n=a.icon||{};return(null==(e=a.icon)||!e.name)&&this.attrs.extension instanceof he&&!(a.id in s().data.extensions)&&this.attrs.extension.iconUrl()&&(n.backgroundImage="url(".concat(this.attrs.extension.iconUrl(),")")),m("span",{className:"ExtensionIcon",style:a.icon},null!=(t=a.icon)&&t.name?m(F(),{name:a.icon.name}):null)}badges(){const e=new(L()),t=this.attrs.extension;return t.isSupported()?e.add("compatible",m(ie(),{icon:"fas fa-check",type:"success",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.compatible"),className:"Badge--flat Badge--square"})):e.add("incompatible",m(ie(),{icon:"fas fa-times",type:"danger",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.incompatible"),className:"Badge--flat Badge--square"})),t.isPremium()&&e.add("premium",m(ie(),{icon:"fas fa-dollar-sign",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.premium"),className:"ExtensionCard-badge--premium Badge--flat Badge--square"})),t.isProductionReady()||e.add("unstable",m(ie(),{icon:"fas fa-flask",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.unstable"),className:"Badge--flat Badge--square Badge--danger"})),"fof"===t.name().split("/")[0]&&e.add("fof",m(ie(),{icon:"fas fa-users",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.fof"),className:"Badge--flat Badge--square"})),"flarum"===t.name().split("/")[0]&&e.add("flarum",m(ie(),{icon:"fab fa-flarum",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.badges.flarum"),className:"ExtensionCard-badge--flarum Badge--flat Badge--square"})),e}metaItems(){var e;const t=new(L()),{updates:a,isCore:n}=this.attrs,r=a?null!=(e=a["latest-minor"])?e:a["latest-major"]&&!n?a["latest-major"]:null:null;return this.attrs.extension instanceof he?t.add("downloads",m("span",null,m(F(),{name:"fas fa-circle-down"}),s().translator.trans("flarum-extension-manager.admin.sections.discover.extension.downloads",{count:this.attrs.extension.downloads(),formattedCount:me()(this.attrs.extension.downloads())}))):t.add("version",m("div",{className:"ExtensionCard-version"},m("span",{className:"ExtensionCard-version-current"},this.version(a.version)),r?m("[",null,m(F(),{name:"fas fa-arrow-right"}),m(W,{className:"ExtensionCard-version-latest",type:a["latest-minor"]?"success":"warning"},this.version(r))):null)),this.attrs.extension instanceof he&&(t.add("version",m("div",{className:"ExtensionCard-version"},"v",this.version(this.attrs.extension.highestVersion()))),t.add("link",m(ve(),{className:"Button Button--ua-reset Button--link Button--icon",href:this.attrs.extension.httpUri(),target:"_blank",icon:"fas fa-external-link-alt",external:!0}))),t}actionItems(){const e=new(L()),{updates:t,extension:a,onClickUpdate:n,whyNotWarning:r}=this.attrs;return a instanceof he?a.extensionId()in s().data.extensions?e.add("installed",m(l(),{className:"Button Button--icon Button--flat Button--success",icon:"fas fa-check-circle",disabled:!0})):e.add("install",m(l(),{className:"Button Button--icon Button--flat",icon:"fas fa-cloud-arrow-down",onclick:()=>{s().extensionManager.control.requirePackage({package:a.name()})}})):(n&&"function"==typeof n?e.add("update",m(T(),{text:s().translator.trans("flarum-extension-manager.admin.extensions.update")},m(l(),{icon:"fas fa-cloud-arrow-down",className:"Button Button--icon Button--flat",onclick:n,"aria-label":s().translator.trans("flarum-extension-manager.admin.extensions.update")}))):n&&e.add("update",m(xe(),{buttonClassName:"Button Button--icon Button--flat",icon:"fas fa-ellipsis",label:s().translator.trans("flarum-extension-manager.admin.extensions.update")},m(l(),{icon:"fas fa-cloud-arrow-down",onclick:n.soft},s().translator.trans("flarum-extension-manager.admin.extensions.update_soft_label")),m(l(),{icon:"fas fa-rotate",onclick:n.hard,disabled:!t["direct-dependency"]},s().translator.trans("flarum-extension-manager.admin.extensions.update_hard_label")))),r&&e.add("whyNot",m(T(),{text:s().translator.trans("flarum-extension-manager.admin.extensions.check_why_it_failed_updating")},m(l(),{icon:"fas fa-exclamation-circle",className:"Button Button--icon Button--flat Button--danger",onclick:()=>s().modal.show(re,{package:a.name}),"aria-label":s().translator.trans("flarum-extension-manager.admin.extensions.check_why_it_failed_updating")})))),e}version(e){return"v"===e.charAt(0)?e.substring(1):e}}flarum.reg.add("flarum-extension-manager","admin/components/ExtensionCard",ye);class _e extends(U()){constructor(){super(...arguments),f(this,"updateState",void 0)}oninit(e){super.oninit(e),this.updateState=this.attrs.updateState}view(){return m("div",{className:Y()("Form-group Form-group--danger ExtensionManager-majorUpdate",{"ExtensionManager-majorUpdate--failed":"failure"===this.updateState.status,"ExtensionManager-majorUpdate--incompatibleExtensions":this.updateState.incompatibleExtensions.length})},m("img",{alt:"flarum logo",src:s().forum.attribute("baseUrl")+"/assets/extensions/flarum-extension-manager/flarum.svg"}),m("label",null,s().translator.trans("flarum-extension-manager.admin.major_updater.title",{version:this.attrs.coreUpdate["latest-major"]})),m("p",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.major_updater.description")),m("div",{className:"ExtensionManager-updaterControls"},m(T(),{text:s().translator.trans("flarum-extension-manager.admin.major_updater.dry_run_help")},m(l(),{className:"Button",icon:"fas fa-vial",onclick:this.update.bind(this,!0),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.major_updater.dry_run"))),m(l(),{className:"Button Button--danger",icon:"fas fa-play",onclick:this.update.bind(this,!1),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.major_updater.update"))),this.updateState.incompatibleExtensions.length?m("div",{className:"ExtensionManager-majorUpdate-incompatibleExtensions ExtensionManager-extensions-grid"},this.updateState.incompatibleExtensions.map((e=>m(ye,{extension:s().data.extensions[e.replace("flarum-","").replace("flarum-ext-","").replace("/","-")],updates:{},onClickUpdate:null,isDanger:!0})))):null,"failure"===this.updateState.status?m(X(),{type:"error",className:"ExtensionManager-majorUpdate-failure",dismissible:!1,controls:[m(l(),{className:"Button Button--text ExtensionManager-majorUpdate-failure-details",icon:"fas fa-question-circle",onclick:()=>s().modal.show(re,{package:"flarum/core"})},s().translator.trans("flarum-extension-manager.admin.major_updater.failure.why"))]},m("p",{className:"ExtensionManager-majorUpdate-failure-desc"},s().translator.trans("flarum-extension-manager.admin.major_updater.failure.desc"))):null)}update(e){s().extensionManager.control.majorUpdate({dryRun:e})}}flarum.reg.add("flarum-extension-manager","admin/components/MajorUpdater",_e);const ke=flarum.reg.get("core","common/components/InfoTile");var Ne=a.n(ke);class Me extends(U()){view(){const e=s().extensionManager.control.coreUpdate;return[m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.updater.updater_title")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.updater.updater_help")),this.lastUpdateCheckView(),m("div",{className:"ExtensionManager-updaterControls"},this.controlItems().toArray()),this.availableUpdatesView()),e&&e.package["latest-major"]&&ge(e.package["latest-major"])?m(_e,{coreUpdate:e.package,updateState:s().extensionManager.control.lastUpdateRun.major}):null]}lastUpdateCheckView(){var e;return(null==(e=s().extensionManager.control.lastUpdateCheck)?void 0:e.checkedAt)&&m("p",{className:"ExtensionManager-lastUpdatedAt"},m("span",{className:"ExtensionManager-lastUpdatedAt-label"},s().translator.trans("flarum-extension-manager.admin.updater.last_update_checked_at")),m("span",{className:"ExtensionManager-lastUpdatedAt-value"},se()(s().extensionManager.control.lastUpdateCheck.checkedAt)))||null}availableUpdatesView(){const e=s().extensionManager.control;if(s().extensionManager.control.isLoading("check")||s().extensionManager.control.isLoading("global-update"))return m("div",{className:"ExtensionManager-extensions"},m(q(),null));const t=e.coreUpdate&&e.coreUpdate.package["latest-minor"];return e.extensionUpdates.length||t?m("div",{className:"ExtensionManager-extensions"},m("div",{className:"ExtensionManager-extensions-grid"},t?m(ye,{extension:e.coreUpdate.extension,updates:e.coreUpdate.package,isCore:!0,onClickUpdate:()=>e.updateCoreMinor(),whyNotWarning:e.lastUpdateRun.limitedPackages().includes("flarum/core")}):null,e.extensionUpdates.map((t=>m(ye,{extension:t,updates:e.packageUpdates[t.id],onClickUpdate:{soft:()=>e.updateExtension(t,"soft"),hard:()=>e.updateExtension(t,"hard")},whyNotWarning:e.lastUpdateRun.limitedPackages().includes(t.name)}))))):m("div",{className:"ExtensionManager-extensions ExtensionManager-extensions--empty"},m(Ne(),{icon:"fas fa-plug-circle-check"},s().translator.trans("flarum-extension-manager.admin.updater.up_to_date")))}controlItems(){const e=new(L());return e.add("updateCheck",m(l(),{className:"Button",icon:"fas fa-sync-alt",onclick:()=>s().extensionManager.control.checkForUpdates(),loading:s().extensionManager.control.isLoading("check"),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.updater.check_for_updates")),100),e.add("globalUpdate",m(l(),{className:"Button",icon:"fas fa-play",onclick:()=>s().extensionManager.control.updateGlobally(),loading:s().extensionManager.control.isLoading("global-update"),disabled:s().extensionManager.control.hasOperationRunning()},s().translator.trans("flarum-extension-manager.admin.updater.run_global_update"))),e}}flarum.reg.add("flarum-extension-manager","admin/components/Updater",Me);const we=flarum.reg.get("core","common/components/Form");var Ee=a.n(we);class Se extends(U()){oninit(e){super.oninit(e)}view(){return m("div",{className:"ExtensionPage-settings ExtensionManager-controlSection"},m("div",{className:"container"},s().data["flarum-extension-manager.writable_dirs"]?m(Ee(),null,m(ae,null),m(Me,null)):m("div",{className:"Form-group"},m(X(),{type:"warning",dismissible:!1},s().translator.trans("flarum-extension-manager.admin.file_permissions")))))}}flarum.reg.add("flarum-extension-manager","admin/components/ControlSection",Se);const Be=flarum.reg.get("core","common/components/FormGroup");var Ue=a.n(Be);class Ce extends(U()){constructor(){super(...arguments),f(this,"settings",{}),f(this,"initialSettings",null),f(this,"loading",!1),f(this,"type",void 0)}oninit(e){super.oninit(e),this.submit(!0)}className(){return""}view(){return m("div",{className:Y()("FormSection",this.className())},m("label",null,this.title()),this.content(),m("div",{className:"Form-group Form-controls"},this.submitButton()))}submitButton(){return[m(l(),{className:"Button Button--primary",loading:this.loading,onclick:()=>this.submit(!1),disabled:!this.isDirty()},s().translator.trans("core.admin.settings.submit_button"))]}customSettingComponents(){return Ue().prototype.customFieldComponents()}setting(e){var t;return null!=(t=this.settings[e])?t:this.settings[e]=te()()}submit(e){this.loading=!0;const t={};Object.keys(this.settings).forEach((e=>{t[e]=this.settings[e]()})),s().request({method:"POST",url:s().forum.attribute("apiUrl")+"/extension-manager/composer",body:{type:this.type,data:e?null:t}}).then((e=>{let{data:t}=e;Object.keys(t).forEach((e=>{this.settings[e]=te()(t[e])})),this.initialSettings=Array.isArray(t)?{}:t})).finally((()=>{this.loading=!1,m.redraw()}))}isDirty(){return JSON.stringify(this.initialSettings)!==JSON.stringify(this.settings)}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureJson",Ce);const qe=flarum.reg.get("core","common/components/Select");var Pe=a.n(qe);class Te extends(V()){constructor(){super(...arguments),f(this,"name",void 0),f(this,"repository",void 0)}oninit(e){super.oninit(e),this.name=te()(this.attrs.name||""),this.repository=te()(this.attrs.repository||{type:"composer",url:""})}className(){return"RepositoryModal Modal--small"}title(){const e=this.attrs.repository?"edit":"add";return s().translator.trans("flarum-extension-manager.admin.composer.".concat(e,"_repository_label"))}content(){const e={composer:s().translator.trans("flarum-extension-manager.admin.composer.repositories.types.composer"),vcs:s().translator.trans("flarum-extension-manager.admin.composer.repositories.types.vcs"),path:s().translator.trans("flarum-extension-manager.admin.composer.repositories.types.path")};return m("div",{className:"Modal-body"},m(Ee(),null,m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.name_label")),m("input",{className:"FormControl",bidi:this.name})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.type_label")),m(Pe(),{options:e,value:this.repository().type,onchange:e=>this.repository({...this.repository(),type:e})})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.url")),m("input",{className:"FormControl",onchange:e=>this.repository({...this.repository(),url:e.target.value}),value:this.repository().url})),m("div",{className:"Form-group"},m(l(),{className:"Button Button--primary",onclick:this.submit.bind(this)},s().translator.trans("flarum-extension-manager.admin.composer.repositories.add_modal.submit_button")))))}submit(){this.attrs.onsubmit(this.repository(),this.name()),this.hide()}}flarum.reg.add("flarum-extension-manager","admin/components/RepositoryModal",Te);class je extends Ce{constructor(){super(...arguments),f(this,"type","composer")}title(){return s().translator.trans("flarum-extension-manager.admin.composer.title")}className(){return"ConfigureComposer"}content(){return m("div",{className:"Form ExtensionManager-SettingsGroups-content"},this.attrs.buildSettingComponent.call(this,{setting:"minimum-stability",label:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.label"),help:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.help"),type:"select",options:{stable:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.stable"),RC:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.rc"),beta:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.beta"),alpha:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.alpha"),dev:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.options.dev")}}),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.composer.repositories.label")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.composer.repositories.help")),m("div",{className:"ConfigureComposer-repositories"},Object.keys(this.setting("repositories")()||{}).map((e=>{const t=this.setting("repositories")()[e];return m("div",{className:"ButtonGroup ButtonGroup--full"},m(l(),{className:"Button",icon:{composer:"fas fa-cubes",vcs:"fas fa-code-branch",path:"fas fa-folder"}[t.type],onclick:()=>s().modal.show(Te,{name:e,repository:t,onsubmit:(t,a)=>{const n=this.setting("repositories")();delete n[e],this.setting("repositories")(n),this.onchange(t,a)}})},e," (",t.type,")"),m(l(),{className:"Button Button--icon",icon:"fas fa-trash","aria-label":s().translator.trans("flarum-extension-manager.admin.composer.delete_repository_label"),onclick:()=>{if(confirm(y()(s().translator.trans("flarum-extension-manager.admin.composer.delete_repository_confirmation")))){const t={...this.setting("repositories")()};delete t[e],this.setting("repositories")(t)}}}))})))))}submitButton(){const e=super.submitButton();return e.push(m(l(),{className:"Button",onclick:()=>s().modal.show(Te,{onsubmit:this.onchange.bind(this)})},s().translator.trans("flarum-extension-manager.admin.composer.add_repository_label"))),e}onchange(e,t){this.setting("repositories")({...this.setting("repositories")(),[t]:e})}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureComposer",je);class Fe extends(V()){constructor(){super(...arguments),f(this,"type",void 0),f(this,"host",void 0),f(this,"token",void 0)}oninit(e){super.oninit(e),this.type=te()(this.attrs.type||"bearer"),this.host=te()(this.attrs.host||""),this.token=te()(this.attrs.token||"")}className(){return"AuthMethodModal Modal--small"}title(){const e=this.attrs.host?"edit":"add";return s().translator.trans("flarum-extension-manager.admin.auth_config.".concat(e,"_label"))}content(){const e={"github-oauth":s().translator.trans("flarum-extension-manager.admin.auth_config.types.github-oauth"),"gitlab-oauth":s().translator.trans("flarum-extension-manager.admin.auth_config.types.gitlab-oauth"),"gitlab-token":s().translator.trans("flarum-extension-manager.admin.auth_config.types.gitlab-token"),bearer:s().translator.trans("flarum-extension-manager.admin.auth_config.types.bearer")};return m("div",{className:"Modal-body"},m(Ee(),null,m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.type_label")),m(Pe(),{options:e,value:this.type(),onchange:this.type})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.host_label")),m("input",{className:"FormControl",bidi:this.host,placeholder:s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.host_placeholder")})),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.token_label")),m("textarea",{className:"FormControl",oninput:e=>this.token(e.target.value),rows:"6",placeholder:this.token().startsWith("unchanged:")?y()(s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.unchanged_token_placeholder")):""},this.token().startsWith("unchanged:")?"":this.token())),m("div",{className:"Form-group"},m(l(),{className:"Button Button--primary",onclick:this.submit.bind(this)},s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.submit_button")))))}submit(){this.attrs.onsubmit(this.type(),this.host(),this.token()),this.hide()}}flarum.reg.add("flarum-extension-manager","admin/components/AuthMethodModal",Fe);class $e extends Ce{constructor(){super(...arguments),f(this,"type","auth")}title(){return s().translator.trans("flarum-extension-manager.admin.auth_config.title")}className(){return"ConfigureAuth"}content(){const e=Object.keys(this.settings),t=e.length&&e.every((e=>{const t=this.settings[e]();return Array.isArray(t)?t.length:Object.keys(t).length}));return m("div",{className:"ExtensionManager-SettingsGroups-content"},t?e.map((e=>{const t=this.settings[e]();return m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.types.".concat(e))),m("div",{className:"ConfigureAuth-hosts"},Object.keys(t).map((a=>{const n=t[a];return m("div",{className:"ButtonGroup ButtonGroup--full"},m(l(),{className:"Button",icon:"fas fa-key",onclick:()=>s().modal.show(Fe,{type:e,host:a,token:n,onsubmit:this.onchange.bind(this,a)})},a),m(l(),{className:"Button Button--icon",icon:"fas fa-trash","aria-label":s().translator.trans("flarum-extension-manager.admin.auth_config.delete_label"),onclick:()=>{if(confirm(y()(s().translator.trans("flarum-extension-manager.admin.auth_config.delete_confirmation")))){const t={...this.setting(e)()};delete t[a],Object.keys(t).length?this.setting(e)(t):delete this.settings[e]}}}))}))))})):m("span",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.auth_config.no_auth_methods_configured")))}submitButton(){const e=super.submitButton();return e.push(m(l(),{className:"Button",loading:this.loading,onclick:()=>s().modal.show(Fe,{onsubmit:this.onchange.bind(this,null)})},s().translator.trans("flarum-extension-manager.admin.auth_config.add_label"))),e}onchange(e,t,a,n){const s={...this.setting(t)()};e&&delete s[e],s[a]=n,this.setting(t)(s)}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureAuth",$e);const Le=flarum.reg.get("core","common/components/Input");var Ie=a.n(Le);const Ae=flarum.reg.get("core","common/helpers/listItems");var De=a.n(Ae);const Oe=flarum.reg.get("core","common/utils/throttleDebounce");class Re extends(U()){constructor(){super(...arguments),f(this,"search",te()("")),f(this,"warningsDismissed",te()(!1)),f(this,"applySearch",(0,Oe.throttle)(1200,(e=>{const t=s().extensionManager.extensions.getParams();s().extensionManager.extensions.refreshParams({...t,filter:{...t.filter,q:e}},1)})))}oninit(e){super.oninit(e),s().extensionManager.extensions.goto(1),this.warningsDismissed("true"===localStorage.getItem("flarum-extension-manager.warningsDismissed"))}load(e){void 0===e&&(e=1),s().extensionManager.extensions.goto(e)}view(){return m("div",{className:"ExtensionPage-settings ExtensionManager-DiscoverSection"},m("div",{className:"container"},m(Ee(),null,m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.discover.title")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.sections.discover.description"),this.warningsDismissed()&&m(l(),{className:"Button Button--text Button--warning Button--more",icon:"fas fa-exclamation-triangle",onclick:()=>this.setWarningDismissed(!1)}))),!this.warningsDismissed()&&m("div",{className:"ExtensionManager-warnings Form-group"},m(X(),{className:"ExtensionManager-primaryWarning",type:"warning",dismissible:!0,ondismiss:()=>this.setWarningDismissed(!0)},m("ul",null,De()(this.warningItems().toArray())))),m("div",{className:"Tabs"},m("div",{className:"Tabs-nav"},this.tabItems().toArray()),m("div",{className:"Tabs-content"},m("hr",{className:"Tabs-divider"}),m("div",{className:"ExtensionManager-DiscoverSection-toolbar"},m("div",{className:"ExtensionManager-DiscoverSection-toolbar-primary"},this.toolbarPrimaryItems().toArray()),m("div",{className:"ExtensionManager-DiscoverSection-toolbar-secondary"},this.toolbarSecondaryItems().toArray())),this.extensionList(),m("div",{className:"ExtensionManager-DiscoverSection-footer"},this.footerItems().toArray()))))))}tabFilters(){return{"":{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.discover"),active:()=>{var e;return!(null!=(e=s().extensionManager.extensions.getParams().filter)&&e.type)}},extension:{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.extensions"),active:()=>{var e;return"extension"===(null==(e=s().extensionManager.extensions.getParams().filter)?void 0:e.type)}},locale:{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.languages"),active:()=>{var e;return"locale"===(null==(e=s().extensionManager.extensions.getParams().filter)?void 0:e.type)}},theme:{label:s().translator.trans("flarum-extension-manager.admin.sections.discover.tabs.themes"),active:()=>{var e;return"theme"===(null==(e=s().extensionManager.extensions.getParams().filter)?void 0:e.type)}}}}tabItems(){const e=new(L()),t=this.tabFilters();return Object.keys(t).forEach((a=>{const n=t[a];e.add(a,m(l(),{className:"Button Button--link",active:n.active(),onclick:()=>{s().extensionManager.extensions.changeFilter("type",a)}},n.label))})),e}warningItems(){const e=new(L());return e.add("accessWarning",s().translator.trans("flarum-extension-manager.admin.settings.access_warning")),s().data.debugEnabled&&e.add("devModeWarning",s().translator.trans("flarum-extension-manager.admin.settings.debug_mode_warning")),e}toolbarPrimaryItems(){const e=new(L());return e.add("search",m(Ie(),{value:this.search(),onchange:e=>{this.search(e),this.applySearch(e)},inputAttrs:{className:"FormControl-alt"},clearable:!0,placeholder:s().translator.trans("flarum-extension-manager.admin.sections.discover.search"),prefixIcon:"fas fa-search"})),e}toolbarSecondaryItems(){var e,t;const a=new(L()),n=s().extensionManager.extensions.sortMap(),r=Object.keys(n).reduce(((e,t)=>{const a=n[t];return e[t]="string"!=typeof a?a.label:a,e}),{});a.add("sort",m(xe(),{buttonClassName:"Button",label:r[s().extensionManager.extensions.getParams().sort]||Object.keys(n).map((e=>r[e]))[0],accessibleToggleLabel:s().translator.trans("flarum-extension-manager.admin.sections.discover.sort.toggle_dropdown_accessible_label")},Object.keys(r).map((e=>{const t=r[e],a=s().extensionManager.extensions.getParams().sort===e;return m(l(),{icon:!a||"fas fa-check",onclick:()=>s().extensionManager.extensions.changeSort(e),active:a},t)}))));const o=(null!=(e=null==(t=s().extensionManager.extensions.getParams().filter)||null==(t=t.is)?void 0:t[0])?e:null)||"all";return a.add("party",m(xe(),{buttonClassName:"Button",label:s().translator.trans("flarum-extension-manager.admin.sections.discover.party_filter."+o),accessibleToggleLabel:s().translator.trans("flarum-extension-manager.admin.sections.discover.party_filter.toggle_dropdown_accessible_label")},["all","premium"].map((e=>m(l(),{icon:o!==e||"fas fa-check",onclick:()=>{s().extensionManager.extensions.changeFilter("is","all"===e?void 0:[e])},active:o===e},s().translator.trans("flarum-extension-manager.admin.sections.discover.party_filter."+e)))))),a}extensionList(){return!s().extensionManager.extensions.hasItems()&&s().extensionManager.extensions.isLoading()?m(q(),{display:"block"}):s().extensionManager.extensions.hasItems()?m("div",{className:Y()("ExtensionManager-DiscoverSection-list",{"loading-container":s().extensionManager.extensions.isLoading()})},m("div",{className:"ExtensionManager-DiscoverSection-list-inner"},s().extensionManager.extensions.getPages().map((e=>e.items.map((e=>m(ye,{extension:e,key:e.name()})))))),s().extensionManager.extensions.hasItems()&&s().extensionManager.extensions.isLoading()&&m(q(),{size:"large"})):m("div",{className:"ExtensionManager-DiscoverSection-list ExtensionManager-DiscoverSection-list--empty"},m(Ne(),{icon:"fas fa-plug-circle-exclamation"},s().translator.trans("flarum-extension-manager.admin.sections.discover.empty_results")))}footerItems(){const e=new(L());return e.add("pagination",m(O(),{total:s().extensionManager.extensions.totalItems,perPage:s().extensionManager.extensions.pageSize,currentPage:s().extensionManager.extensions.getLocation().page,onChange:e=>{s().extensionManager.extensions.getLocation().page!==e&&this.load(e)}})),e.add("premiumTermsLink",m(ve(),{className:"Button Button--link",href:"https://flarum.org/terms/premium-extensions",external:!0,target:"_blank",icon:"fas fa-circle-info"},s().translator.trans("flarum-extension-manager.admin.sections.discover.premium_extension_terms"))),e}setWarningDismissed(e){this.warningsDismissed(e),localStorage.setItem("flarum-extension-manager.warningsDismissed",e?"true":"false")}}flarum.reg.add("flarum-extension-manager","admin/components/DiscoverSection",Re);class Ye extends(o()){content(){const e=s().registry.getSettings(this.extension.id);return m("div",{className:"ExtensionPage-settings"},m("div",{className:"container"},e?[m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.settings.title")),m("div",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.sections.settings.description"))),m("div",{className:"FormSectionGroup ExtensionManager-SettingsGroups"},m("div",{className:"FormSection"},m("label",null,s().translator.trans("flarum-extension-manager.admin.settings.title")),m("div",{className:"Form"},e.map(this.buildSettingComponent.bind(this))),m("div",{className:"Form-group Form--controls"},this.submitButton())),m(je,{buildSettingComponent:this.buildSettingComponent}),m($e,{buildSettingComponent:this.buildSettingComponent}))]:m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("core.admin.extension.no_settings"))))}sections(e){const t=super.sections(e);return t.add("discover",m(Re,null),15),t.add("control",m(Se,null),10),t.setPriority("content",8),"0"!==s().data.settings["flarum-extension-manager.queue_jobs"]&&s().data.settings["flarum-extension-manager.queue_jobs"]&&t.add("queue",m(Z,null),5),t.remove("permissions"),t}onsaved(){super.onsaved(),m.redraw()}}flarum.reg.add("flarum-extension-manager","admin/components/SettingsPage",Ye);const We=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],Ge=["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],Ve=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],He=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],ze=(e,t,a)=>{let n=e;return"string"==typeof t||Array.isArray(t)?n=e.toLocaleString(t,a):!0!==t&&void 0===a||(n=e.toLocaleString(void 0,a)),n};class Qe extends(ce()){status(){return ce().attribute("status").call(this)}operation(){return ce().attribute("operation").call(this)}command(){return ce().attribute("command").call(this)}package(){return ce().attribute("package").call(this)}output(){return ce().attribute("output").call(this)}guessedCause(){return ce().attribute("guessedCause").call(this)}createdAt(){return ce().attribute("createdAt",ce().transformDate).call(this)}startedAt(){return ce().attribute("startedAt",ce().transformDate).call(this)}finishedAt(){return ce().attribute("finishedAt",ce().transformDate).call(this)}peakMemoryUsed(){return function(e,t){if(!Number.isFinite(e))throw new TypeError("Expected a finite number, got ".concat(typeof e,": ").concat(e));const a=(t={bits:!1,binary:!1,space:!0,...t}).bits?t.binary?He:Ve:t.binary?Ge:We,n=t.space?" ":"";if(t.signed&&0===e)return" 0".concat(n).concat(a[0]);const s=e<0,r=s?"-":t.signed?"+":"";let o;if(s&&(e=-e),void 0!==t.minimumFractionDigits&&(o={minimumFractionDigits:t.minimumFractionDigits}),void 0!==t.maximumFractionDigits&&(o={maximumFractionDigits:t.maximumFractionDigits,...o}),e<1)return r+ze(e,t.locale,o)+n+a[0];const i=Math.min(Math.floor(t.binary?Math.log(e)/Math.log(1024):Math.log10(e)/3),a.length-1);return e/=(t.binary?1024:1e3)**i,o||(e=e.toPrecision(3)),r+ze(Number(e),t.locale,o)+n+a[i]}(1024*ce().attribute("peakMemoryUsed").call(this))}}flarum.reg.add("flarum-extension-manager","admin/models/Task",Qe);const Je=[(new(S().Store)).add("extension-manager-tasks",Qe).add("external-extensions",he),(new(S().Admin)).setting((()=>({setting:"flarum-extension-manager.queue_jobs",label:s().translator.trans("flarum-extension-manager.admin.settings.queue_jobs"),help:m.trust(y()(s().translator.trans("flarum-extension-manager.admin.settings.queue_jobs_help",{basic_impl_link:"https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting",adv_impl_link:"https://discuss.flarum.org/d/21873-redis-sessions-cache-queues",php_version:"".concat(s().data.phpVersion,""),folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),type:"boolean",disabled:s().data["flarum-extension-manager.using_sync_queue"]}))).setting((()=>({setting:"flarum-extension-manager.task_retention_days",label:s().translator.trans("flarum-extension-manager.admin.settings.task_retention_days"),help:s().translator.trans("flarum-extension-manager.admin.settings.task_retention_days_help"),type:"number"}))).page(Ye).generalIndexItems("settings",(()=>[{id:"minimum-stability",label:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.label",{},!0),help:s().translator.trans("flarum-extension-manager.admin.composer.minimum_stability.help",{},!0)},{id:"repositories",label:s().translator.trans("flarum-extension-manager.admin.composer.repositories.label",{},!0),help:s().translator.trans("flarum-extension-manager.admin.composer.repositories.help",{},!0)},{id:"composer-auth",label:s().translator.trans("flarum-extension-manager.admin.auth_config.title",{},!0)},{id:"updates",label:s().translator.trans("flarum-extension-manager.admin.updater.updater_title",{},!0),help:s().translator.trans("flarum-extension-manager.admin.updater.updater_help",{},!0)}]))];s().initializers.add("flarum-extension-manager",(t=>{t.extensionManager=new w,t.data["flarum-extension-manager.using_sync_queue"]&&(t.data.settings["flarum-extension-manager.queue_jobs"]="0"),(0,e.extend)(o().prototype,"topItems",(function(e){"flarum-extension-manager"===this.extension.id||g()(this.extension.id)||e.add("remove",m(l(),{className:"Button Button--danger",icon:"fas fa-times",onclick:()=>{t.modal.show(c()),t.request({url:"".concat(t.forum.attribute("apiUrl"),"/extension-manager/extensions/").concat(this.extension.id),method:"DELETE"}).then((e=>{null!=e&&e.processing?p():(t.alerts.show({type:"success"},t.translator.trans("flarum-extension-manager.admin.extensions.successful_remove")),window.location=t.forum.attribute("adminUrl"))})).finally((()=>{t.modal.close()}))}},t.translator.trans("flarum-extension-manager.admin.extensions.remove")))}))}))})(),module.exports=n})(); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index fb69eceaf..4e2945a0f 100755 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@flarum/extension-manager/../../../node_modules/dayjs/plugin/duration.js","webpack://@flarum/extension-manager/webpack/bootstrap","webpack://@flarum/extension-manager/webpack/runtime/compat get default export","webpack://@flarum/extension-manager/webpack/runtime/define property getters","webpack://@flarum/extension-manager/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/extension-manager/webpack/runtime/make namespace object","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/app')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/components/ExtensionPage')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/components/LoadingModal')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/utils/isExtensionEnabled')\"","webpack://@flarum/extension-manager/./src/admin/utils/jumpToQueue.ts","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/extension-manager/./src/admin/states/QueueState.ts","webpack://@flarum/extension-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/extractText')\"","webpack://@flarum/extension-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/states/PaginatedListState')\"","webpack://@flarum/extension-manager/./src/admin/states/ExtensionListState.ts","webpack://@flarum/extension-manager/./src/admin/states/ExtensionManagerState.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/Component')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/LoadingIndicator')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Tooltip')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Icon')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/ItemList')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Link')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Pagination')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/classList')\"","webpack://@flarum/extension-manager/./src/admin/components/Label.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Modal')\"","webpack://@flarum/extension-manager/./src/admin/components/TaskOutputModal.tsx","webpack://@flarum/extension-manager/./src/admin/utils/humanDuration.ts","webpack://@flarum/extension-manager/./src/admin/components/QueueSection.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Alert')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/Stream')\"","webpack://@flarum/extension-manager/./src/admin/components/Installer.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/helpers/humanTime')\"","webpack://@flarum/extension-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/formatAmount')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/Model')\"","webpack://@flarum/extension-manager/./src/admin/models/ExternalExtension.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Dropdown')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/LinkButton')\"","webpack://@flarum/extension-manager/./src/admin/components/ExtensionCard.tsx","webpack://@flarum/extension-manager/./src/admin/components/MajorUpdater.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/InfoTile')\"","webpack://@flarum/extension-manager/./src/admin/components/Updater.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Form')\"","webpack://@flarum/extension-manager/./src/admin/components/ControlSection.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/FormGroup')\"","webpack://@flarum/extension-manager/./src/admin/components/ConfigureJson.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Select')\"","webpack://@flarum/extension-manager/./src/admin/components/RepositoryModal.tsx","webpack://@flarum/extension-manager/./src/admin/components/ConfigureComposer.tsx","webpack://@flarum/extension-manager/./src/admin/components/AuthMethodModal.tsx","webpack://@flarum/extension-manager/./src/admin/components/ConfigureAuth.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Input')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/helpers/listItems')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/throttleDebounce')\"","webpack://@flarum/extension-manager/./src/admin/components/DiscoverSection.tsx","webpack://@flarum/extension-manager/./src/admin/components/SettingsPage.tsx","webpack://@flarum/extension-manager/../../../node_modules/pretty-bytes/index.js","webpack://@flarum/extension-manager/./src/admin/models/Task.ts","webpack://@flarum/extension-manager/./src/admin/extend.tsx","webpack://@flarum/extension-manager/./src/admin/index.tsx"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/components/ExtensionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/components/LoadingModal');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/utils/isExtensionEnabled');","import app from 'flarum/admin/app';\n\n// @ts-ignore\nwindow.jumpToQueue = jumpToQueue;\nexport default function jumpToQueue() {\n app.modal.close();\n m.route.set(app.route('extension', {\n id: 'flarum-extension-manager'\n }));\n app.extensionManager.queue.load({}, true);\n setTimeout(() => {\n var _document$getElementB;\n (_document$getElementB = document.getElementById('ExtensionManager-queueSection')) == null || _document$getElementB.scrollIntoView({\n block: 'nearest'\n });\n }, 200);\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/jumpToQueue', jumpToQueue);","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nexport default class QueueState {\n constructor() {\n _defineProperty(this, \"polling\", null);\n _defineProperty(this, \"tasks\", null);\n _defineProperty(this, \"limit\", 20);\n _defineProperty(this, \"offset\", 0);\n _defineProperty(this, \"total\", 0);\n _defineProperty(this, \"loading\", false);\n }\n load(params, actionTaken) {\n var _params;\n if (actionTaken === void 0) {\n actionTaken = false;\n }\n this.loading = true;\n params = {\n page: {\n limit: this.limit,\n offset: this.offset,\n ...((_params = params) == null ? void 0 : _params.page)\n },\n ...params\n };\n return app.store.find('extension-manager-tasks', params || {}).then(data => {\n var _data$payload$meta;\n this.tasks = data;\n this.total = ((_data$payload$meta = data.payload.meta) == null || (_data$payload$meta = _data$payload$meta.page) == null ? void 0 : _data$payload$meta.total) || 0;\n m.redraw();\n\n // Check if there is a pending or running task\n const pendingTask = data == null ? void 0 : data.find(task => task.status() === 'pending' || task.status() === 'running');\n if (pendingTask) {\n this.pollQueue(actionTaken);\n } else if (actionTaken) {\n app.extensionManager.control.setLoading(null);\n\n // Refresh the page\n window.location.reload();\n } else if (app.extensionManager.control.isLoading()) {\n app.extensionManager.control.setLoading(null);\n }\n this.loading = false;\n return data;\n });\n }\n isLoading() {\n return this.loading;\n }\n getItems() {\n return this.tasks;\n }\n getTotalItems() {\n return this.total;\n }\n getTotalPages() {\n return Math.ceil(this.total / this.limit);\n }\n pageNumber() {\n return Math.ceil(this.offset / this.limit);\n }\n getPerPage() {\n return this.limit;\n }\n hasPrev() {\n return this.pageNumber() !== 0;\n }\n hasNext() {\n return this.offset + this.limit < this.total;\n }\n prev() {\n if (this.hasPrev()) {\n this.offset -= this.limit;\n this.load();\n }\n }\n next() {\n if (this.hasNext()) {\n this.offset += this.limit;\n this.load();\n }\n }\n goto(page) {\n this.offset = (page - 1) * this.limit;\n this.load();\n }\n pollQueue(actionTaken) {\n if (actionTaken === void 0) {\n actionTaken = false;\n }\n if (this.polling) {\n clearTimeout(this.polling);\n }\n this.polling = setTimeout(() => {\n this.load({}, actionTaken);\n }, 6000);\n }\n hasPending() {\n var _this$tasks;\n return !!((_this$tasks = this.tasks) != null && _this$tasks.find(task => task.status() === 'pending' || task.status() === 'running'));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/QueueState', QueueState);","import app from 'flarum/admin/app';\nexport default function (e) {\n app.extensionManager.control.setLoading(null);\n const error = e.response.errors[0];\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n app.alerts.clear();\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({\n type: 'error'\n }, app.translator.trans(\"flarum-extension-manager.admin.exceptions.guessed_cause.\".concat(error.guessed_cause)));\n app.modal.close();\n } else {\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n case 'extension_already_installed':\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n case 'extension_not_installed':\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/extractText');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport extractText from 'flarum/common/utils/extractText';\nexport default class ControlSectionState {\n get lastUpdateRun() {\n const lastUpdateRun = JSON.parse(app.data.settings['flarum-extension-manager.last_update_run']);\n lastUpdateRun.limitedPackages = () => [...lastUpdateRun.major.limitedPackages, ...lastUpdateRun.minor.limitedPackages, ...lastUpdateRun.global.limitedPackages];\n return lastUpdateRun;\n }\n constructor() {\n _defineProperty(this, \"loading\", null);\n _defineProperty(this, \"packageUpdates\", {});\n _defineProperty(this, \"lastUpdateCheck\", void 0);\n _defineProperty(this, \"extensionUpdates\", void 0);\n _defineProperty(this, \"coreUpdate\", null);\n this.lastUpdateCheck = JSON.parse(app.data.settings['flarum-extension-manager.last_update_check']);\n this.extensionUpdates = this.formatExtensionUpdates(this.lastUpdateCheck);\n this.coreUpdate = this.formatCoreUpdate(this.lastUpdateCheck);\n }\n isLoading(name) {\n if (name === void 0) {\n name = null;\n }\n return name && this.loading === name || !name && this.loading !== null;\n }\n hasOperationRunning() {\n return this.isLoading() || app.extensionManager.queue.hasPending();\n }\n setLoading(name) {\n this.loading = name;\n }\n requirePackage(data) {\n app.extensionManager.control.setLoading('extension-install');\n app.modal.show(LoadingModal);\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions\"),\n body: {\n data\n }\n }).then(response => {\n if (response.processing) {\n jumpToQueue();\n } else {\n const extensionId = response.id;\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_install', {\n extension: extensionId\n }));\n window.location.href = \"\".concat(app.forum.attribute('adminUrl'), \"#/extension/\").concat(extensionId);\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n checkForUpdates() {\n this.setLoading('check');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/check-for-updates\")\n }).then(response => {\n if (response.processing) {\n jumpToQueue();\n } else {\n this.lastUpdateCheck = response;\n this.extensionUpdates = this.formatExtensionUpdates(response);\n this.coreUpdate = this.formatCoreUpdate(response);\n this.setLoading(null);\n m.redraw();\n }\n }).catch(errorHandler).finally(() => {\n m.redraw();\n });\n }\n updateCoreMinor() {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.minor_update_confirmation.content')))) {\n app.modal.show(LoadingModal);\n this.setLoading('minor-update');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/minor-update\")\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n }\n updateExtension(extension, updateMode) {\n app.modal.show(LoadingModal);\n this.setLoading('extension-update');\n app.request({\n method: 'PATCH',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions/\").concat(extension.id),\n body: {\n data: {\n updateMode\n }\n }\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_update', {\n extension: extension.extra['flarum-extension'].title\n }));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.setLoading('global-update');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/global-update\")\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.updater.global_update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n formatExtensionUpdates(lastUpdateCheck) {\n var _lastUpdateCheck$upda;\n this.packageUpdates = {};\n lastUpdateCheck == null || (_lastUpdateCheck$upda = lastUpdateCheck.updates) == null || (_lastUpdateCheck$upda = _lastUpdateCheck$upda.installed) == null || _lastUpdateCheck$upda.filter(composerPackage => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n return extension && safeToUpdate;\n });\n return Object.values(app.data.extensions).filter(extension => this.packageUpdates[extension.id]);\n }\n formatCoreUpdate(lastUpdateCheck) {\n var _lastUpdateCheck$upda2;\n const core = lastUpdateCheck == null || (_lastUpdateCheck$upda2 = lastUpdateCheck.updates) == null || (_lastUpdateCheck$upda2 = _lastUpdateCheck$upda2.installed) == null ? void 0 : _lastUpdateCheck$upda2.filter(composerPackage => composerPackage.name === 'flarum/core').pop();\n if (!core) return null;\n return {\n package: core,\n extension: {\n id: 'flarum-core',\n name: 'flarum/core',\n version: app.data.settings.version,\n icon: {\n name: '',\n // @ts-ignore\n backgroundImage: \"url(\".concat(app.data.resources[0]['attributes']['baseUrl'], \"/assets/extensions/flarum-extension-manager/flarum.svg\")\n },\n extra: {\n 'flarum-extension': {\n title: extractText(app.translator.trans('flarum-extension-manager.admin.updater.flarum'))\n }\n },\n links: {}\n }\n };\n }\n majorUpdate(_ref) {\n let {\n dryRun\n } = _ref;\n app.extensionManager.control.setLoading(dryRun ? 'major-update-dry-run' : 'major-update');\n app.modal.show(LoadingModal);\n const updateState = this.lastUpdateRun.major;\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/major-update\"),\n body: {\n data: {\n dryRun\n }\n }\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).catch(e => {\n var _e$response;\n app.modal.close();\n updateState.status = 'failure';\n updateState.incompatibleExtensions = (_e$response = e.response) == null || (_e$response = _e$response.errors) == null || (_e$response = _e$response.pop()) == null ? void 0 : _e$response.incompatible_extensions;\n }).finally(() => {\n m.redraw();\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ControlSectionState', ControlSectionState);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/states/PaginatedListState');","import app from 'flarum/admin/app';\nimport PaginatedListState from 'flarum/common/states/PaginatedListState';\nexport default class ExtensionListState extends PaginatedListState {\n get type() {\n return 'external-extensions';\n }\n constructor() {\n super({\n sort: '-downloads'\n }, 1, 12);\n }\n sortMap() {\n return {\n '-createdAt': {\n sort: '-createdAt',\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.sort.latest', {}, true)\n },\n '-downloads': {\n sort: '-downloads',\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.sort.top', {}, true)\n }\n };\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ExtensionListState', ExtensionListState);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport QueueState from './QueueState';\nimport ControlSectionState from './ControlSectionState';\nimport ExtensionListState from './ExtensionListState';\nexport default class ExtensionManagerState {\n constructor() {\n _defineProperty(this, \"queue\", new QueueState());\n _defineProperty(this, \"control\", new ControlSectionState());\n _defineProperty(this, \"extensions\", new ExtensionListState());\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ExtensionManagerState', ExtensionManagerState);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Component');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/LoadingIndicator');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Tooltip');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Icon');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/ItemList');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Link');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Pagination');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/classList');","import Component from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nexport default class Label extends Component {\n view(vnode) {\n const {\n className,\n type,\n ...attrs\n } = this.attrs;\n return m(\"span\", Object.assign({\n className: classList(['Label', \"Label--\".concat(this.attrs.type), className])\n }, attrs), vnode.children);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Label', Label);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Modal');","import app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nexport default class TaskOutputModal extends Modal {\n className() {\n return 'Modal--large QuickModal';\n }\n title() {\n return app.translator.trans(\"flarum-extension-manager.admin.sections.queue.operations.\".concat(this.attrs.task.operation()));\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(\"div\", {\n className: \"TaskOutputModal-data\"\n }, this.attrs.task.status() === 'failure' && m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.guessed_cause')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-guessed-cause\"\n }, this.attrs.task.guessedCause() && app.translator.trans('flarum-extension-manager.admin.exceptions.guessed_cause.' + this.attrs.task.guessedCause()) || app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.cause_unknown'))), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.command')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-command\"\n }, m(\"code\", null, \"$ composer \", this.attrs.task.command()))), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.output')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-output\"\n }, m(\"code\", null, m(\"pre\", null, this.attrs.task.output()))))));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/TaskOutputModal', TaskOutputModal);","import duration from 'dayjs/plugin/duration';\nexport default function humanDuration(start, end) {\n dayjs.extend(duration);\n const durationTime = dayjs(end).diff(start);\n return dayjs.duration(durationTime).humanize();\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/humanDuration', humanDuration);","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Icon from 'flarum/common/components/Icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\nimport Link from 'flarum/common/components/Link';\nimport Pagination from 'flarum/common/components/Pagination';\nimport classList from 'flarum/common/utils/classList';\nimport Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nexport default class QueueSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n app.extensionManager.queue.load();\n }\n view() {\n return m(\"section\", {\n id: \"ExtensionManager-queueSection\",\n className: \"ExtensionPage-settings ExtensionManager-queueSection\"\n }, m(\"div\", {\n className: \"ExtensionPage-permissions-header ExtensionManager-queueSection-header\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"h2\", {\n className: \"ExtensionTitle\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.queue.title')), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-sync-alt\",\n onclick: () => app.extensionManager.queue.load(),\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.sections.queue.refresh'),\n disabled: app.extensionManager.control.isLoading()\n }))), m(\"div\", {\n className: \"container\"\n }, this.queueTable()));\n }\n columns() {\n const items = new ItemList();\n items.add('operation', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.operation')),\n content: task => m(\"div\", {\n className: \"ExtensionManager-queueTable-operation\"\n }, m(\"span\", {\n className: \"ExtensionManager-queueTable-operation-icon\"\n }, this.operationIcon(task.operation())), m(\"span\", {\n className: \"ExtensionManager-queueTable-operation-name\"\n }, app.translator.trans(\"flarum-extension-manager.admin.sections.queue.operations.\".concat(task.operation()))))\n }, 80);\n items.add('package', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.package')),\n content: task => {\n var _task$package;\n const extension = app.data.extensions[(_task$package = task.package()) == null ? void 0 : _task$package.replace(/(\\/flarum-|\\/flarum-ext-|\\/)/g, '-')];\n return extension ? m(Link, {\n className: \"ExtensionManager-queueTable-package\",\n href: app.route('extension', {\n id: extension.id\n })\n }, m(\"div\", {\n className: \"ExtensionManager-queueTable-package-icon ExtensionIcon\",\n style: extension.icon\n }, !!extension.icon && m(Icon, {\n name: extension.icon.name\n })), m(\"div\", {\n className: \"ExtensionManager-queueTable-package-details\"\n }, m(\"span\", {\n className: \"ExtensionManager-queueTable-package-title\"\n }, extension.extra['flarum-extension'].title), m(\"span\", {\n className: \"ExtensionManager-queueTable-package-name\"\n }, task.package()))) : task.package();\n }\n }, 75);\n items.add('status', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.status')),\n content: task => m('[', null, m(Label, {\n className: \"ExtensionManager-queueTable-status\",\n type: {\n running: 'neutral',\n failure: 'error',\n pending: 'warning',\n success: 'success'\n }[task.status()]\n }, app.translator.trans(\"flarum-extension-manager.admin.sections.queue.statuses.\".concat(task.status()))), ['pending', 'running'].includes(task.status()) && m(LoadingIndicator, {\n size: \"small\",\n display: \"inline\"\n }))\n }, 70);\n items.add('elapsedTime', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.elapsed_time')),\n content: task => !task.startedAt() || !task.finishedAt() ? app.translator.trans('flarum-extension-manager.admin.sections.queue.task_just_started') : m(Tooltip, {\n text: \"\".concat(dayjs(task.startedAt()).format('LL LTS'), \" \").concat(dayjs(task.finishedAt()).format('LL LTS'))\n }, m(\"span\", null, humanDuration(task.startedAt(), task.finishedAt())))\n }, 65);\n items.add('memoryUsed', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.peak_memory_used')),\n content: task => m(\"span\", null, task.peakMemoryUsed())\n }, 60);\n items.add('details', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.details')),\n content: task => m(Button, {\n className: \"Button Button--icon Table-controls-item\",\n icon: \"fas fa-file-alt\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.details')\n // @todo fix in core\n // @ts-ignore\n ,\n onclick: () => app.modal.show(TaskOutputModal, {\n task\n }),\n disabled: ['pending', 'running'].includes(task.status())\n }),\n className: 'Table-controls'\n }, 55);\n return items;\n }\n queueTable() {\n const tasks = app.extensionManager.queue.getItems();\n if (!tasks) {\n return m(LoadingIndicator, null);\n }\n if (tasks && !tasks.length) {\n return m(\"h3\", {\n className: \"ExtensionPage-subHeader\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.queue.none'));\n }\n const columns = this.columns();\n return m('[', null, m(\"div\", {\n className: classList('Table-container', {\n 'loading-container': tasks && app.extensionManager.queue.isLoading()\n })\n }, m(\"table\", {\n className: \"Table ExtensionManager-queueTable\"\n }, m(\"thead\", null, m(\"tr\", null, columns.toArray().map((item, index) => m(\"th\", {\n key: index\n }, item.label)))), m(\"tbody\", null, tasks.map((task, index) => m(\"tr\", {\n key: index\n }, columns.toArray().map((item, index) => {\n const {\n label,\n content,\n ...attrs\n } = item;\n return m(\"td\", Object.assign({\n key: index\n }, attrs), content(task));\n }))))), tasks && app.extensionManager.queue.isLoading() && m(LoadingIndicator, {\n size: \"large\"\n })), m(Pagination, {\n total: app.extensionManager.queue.getTotalItems(),\n currentPage: app.extensionManager.queue.pageNumber() + 1,\n perPage: app.extensionManager.queue.getPerPage(),\n onChange: page => app.extensionManager.queue.goto(page)\n }));\n }\n operationIcon(operation) {\n return m(Icon, {\n name: {\n update_check: 'fas fa-sync-alt',\n update_major: 'fas fa-play',\n update_minor: 'fas fa-play',\n update_global: 'fas fa-play',\n extension_install: 'fas fa-download',\n extension_remove: 'fas fa-times',\n extension_update: 'fas fa-arrow-alt-circle-up',\n why_not: 'fas fa-exclamation-circle'\n }[operation]\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/QueueSection', QueueSection);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Alert');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/Stream');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nexport default class Installer extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"packageName\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.packageName = Stream('');\n }\n view() {\n return m(\"div\", {\n className: \"Form-group ExtensionManager-installer\"\n }, m(\"label\", {\n htmlFor: \"install-extension\"\n }, app.translator.trans('flarum-extension-manager.admin.extensions.install')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.extensions.install_help', {\n link: m(\"a\", {\n href: \"https://flarum.org/extensions\"\n }, \"flarum.org\"),\n semantic_link: m(\"a\", {\n href: \"https://devhints.io/semver\"\n }),\n code: m(\"code\", null)\n })), m(\"div\", {\n className: \"FormControl-container\"\n }, m(\"input\", {\n className: \"FormControl\",\n id: \"install-extension\",\n placeholder: \"vendor/package-name\",\n bidi: this.packageName\n }), m(Button, {\n className: \"Button\",\n icon: \"fas fa-download\",\n onclick: this.onsubmit.bind(this),\n loading: app.extensionManager.control.isLoading('extension-install'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.extensions.proceed'))));\n }\n data() {\n return {\n package: this.packageName()\n };\n }\n onsubmit() {\n app.extensionManager.control.requirePackage(this.data());\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Installer', Installer);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/humanTime');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport errorHandler from '../utils/errorHandler';\nexport default class WhyNotModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"loading\", true);\n _defineProperty(this, \"whyNot\", null);\n }\n className() {\n return 'Modal--large WhyNotModal';\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.why_not_modal.title');\n }\n oncreate(vnode) {\n super.oncreate(vnode);\n this.requestWhyNot();\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, this.loading ? m(LoadingIndicator, null) : m(\"pre\", {\n className: \"WhyNotModal-contents\"\n }, this.whyNot));\n }\n requestWhyNot() {\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/why-not\"),\n body: {\n data: {\n package: this.attrs.package\n }\n }\n }).then(response => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n }).catch(errorHandler);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/WhyNotModal', WhyNotModal);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/formatAmount');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Model');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Model from 'flarum/common/Model';\nimport app from 'flarum/admin/app';\nexport default class ExternalExtension extends Model {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"extensionId\", Model.attribute('extensionId'));\n _defineProperty(this, \"name\", Model.attribute('name'));\n _defineProperty(this, \"title\", Model.attribute('title'));\n _defineProperty(this, \"description\", Model.attribute('description'));\n _defineProperty(this, \"iconUrl\", Model.attribute('iconUrl'));\n _defineProperty(this, \"icon\", Model.attribute('icon'));\n _defineProperty(this, \"highestVersion\", Model.attribute('highestVersion'));\n _defineProperty(this, \"httpUri\", Model.attribute('httpUri'));\n _defineProperty(this, \"discussUri\", Model.attribute('discussUri'));\n _defineProperty(this, \"vendor\", Model.attribute('vendor'));\n _defineProperty(this, \"isPremium\", Model.attribute('isPremium'));\n _defineProperty(this, \"isLocale\", Model.attribute('isLocale'));\n _defineProperty(this, \"locale\", Model.attribute('locale'));\n _defineProperty(this, \"latestFlarumVersionSupported\", Model.attribute('latestFlarumVersionSupported'));\n _defineProperty(this, \"downloads\", Model.attribute('downloads'));\n _defineProperty(this, \"installed\", false);\n }\n isSupported() {\n const currentVersion = app.data.settings.version;\n const latestCompatibleVersion = this.latestFlarumVersionSupported();\n\n // If stability is not the same, it's not compatible.\n if (currentVersion.split('-')[1] !== latestCompatibleVersion.split('-')[1]) {\n return false;\n }\n\n // Minor versions are compatible.\n return currentVersion.split('.')[0] === latestCompatibleVersion.split('.')[0];\n }\n isStable() {\n const split = this.highestVersion().split('-');\n if (split.length === 1) {\n return true;\n }\n const stability = split[1].split('.');\n return stability[0] === 'stable';\n }\n toLocalExtension() {\n return {\n id: this.extensionId(),\n name: this.name(),\n version: this.highestVersion(),\n description: this.description(),\n icon: this.icon() || {\n name: 'fas fa-box-open',\n backgroundColor: '#117187',\n color: '#fff'\n },\n links: {\n discuss: this.discussUri(),\n website: this.httpUri()\n },\n extra: {\n 'flarum-extension': {\n title: this.title()\n }\n }\n };\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/models/ExternalExtension', ExternalExtension);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Dropdown');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/LinkButton');","import Component from 'flarum/common/Component';\nimport Icon from 'flarum/common/components/Icon';\nimport Badge from 'flarum/common/components/Badge';\nimport app from 'flarum/admin/app';\nimport Button from 'flarum/common/components/Button';\nimport formatAmount from 'flarum/common/utils/formatAmount';\nimport ExternalExtension from '../models/ExternalExtension';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport classList from 'flarum/common/utils/classList';\nimport Label from './Label';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport WhyNotModal from './WhyNotModal';\nimport LinkButton from 'flarum/common/components/LinkButton';\nexport default class ExtensionCard extends Component {\n getExtension() {\n return this.attrs.extension instanceof ExternalExtension ? this.attrs.extension.toLocalExtension() : this.attrs.extension;\n }\n view() {\n const extension = this.getExtension();\n const {\n isCore,\n isDanger\n } = this.attrs;\n return m(\"div\", {\n className: classList('ExtensionCard', {\n 'ExtensionCard--core': isCore,\n 'ExtensionCard--danger': isDanger\n })\n }, m(\"div\", {\n className: \"ExtensionCard-header\"\n }, this.icon(), m(Tooltip, {\n text: extension.name\n }, m(\"h4\", null, extension.extra['flarum-extension'].title)), this.attrs.extension instanceof ExternalExtension && m(\"div\", {\n className: \"ExtensionCard-badges\"\n }, this.badges().toArray()), m(\"div\", {\n className: \"ExtensionCard-actions\"\n }, this.actionItems().toArray())), m(\"div\", {\n className: \"ExtensionCard-body\"\n }, m(\"p\", null, extension.description)), m(\"div\", {\n className: \"ExtensionCard-footer\"\n }, m(\"div\", {\n className: \"ExtensionCard-meta\"\n }, this.metaItems().toArray())));\n }\n icon() {\n var _extension$icon, _extension$icon2;\n const extension = this.getExtension();\n if (this.attrs.extension instanceof ExternalExtension && extension.id in app.data.extensions) {\n extension.icon = app.data.extensions[extension.id].icon;\n }\n const style = extension.icon || {};\n if (!((_extension$icon = extension.icon) != null && _extension$icon.name) && this.attrs.extension instanceof ExternalExtension && !(extension.id in app.data.extensions) && this.attrs.extension.iconUrl()) {\n style.backgroundImage = \"url(\".concat(this.attrs.extension.iconUrl(), \")\");\n }\n return m(\"span\", {\n className: \"ExtensionIcon\",\n style: extension.icon\n }, (_extension$icon2 = extension.icon) != null && _extension$icon2.name ? m(Icon, {\n name: extension.icon.name\n }) : null);\n }\n badges() {\n const items = new ItemList();\n const extension = this.attrs.extension;\n if (extension.isSupported()) {\n items.add('compatible', m(Badge, {\n icon: \"fas fa-check\",\n type: \"success\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.compatible'),\n className: \"Badge--flat Badge--square\"\n }));\n } else {\n items.add('incompatible', m(Badge, {\n icon: \"fas fa-times\",\n type: \"danger\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.incompatible'),\n className: \"Badge--flat Badge--square\"\n }));\n }\n if (extension.isPremium()) {\n items.add('premium', m(Badge, {\n icon: \"fas fa-dollar-sign\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.premium'),\n className: \"ExtensionCard-badge--premium Badge--flat Badge--square\"\n }));\n }\n if (!extension.isStable()) {\n items.add('unstable', m(Badge, {\n icon: \"fas fa-flask\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.unstable'),\n className: \"Badge--flat Badge--square Badge--danger\"\n }));\n }\n if (extension.name().split('/')[0] === 'fof') {\n items.add('fof', m(Badge, {\n icon: \"fas fa-users\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.fof'),\n className: \"Badge--flat Badge--square\"\n }));\n }\n if (extension.name().split('/')[0] === 'flarum') {\n items.add('flarum', m(Badge, {\n icon: \"fab fa-flarum\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.flarum'),\n className: \"ExtensionCard-badge--flarum Badge--flat Badge--square\"\n }));\n }\n return items;\n }\n metaItems() {\n var _updates$latestMinor;\n const items = new ItemList();\n const {\n updates,\n isCore\n } = this.attrs;\n const latestVersion = updates ? (_updates$latestMinor = updates['latest-minor']) != null ? _updates$latestMinor : updates['latest-major'] && !isCore ? updates['latest-major'] : null : null;\n if (this.attrs.extension instanceof ExternalExtension) {\n items.add('downloads', m(\"span\", null, m(Icon, {\n name: \"fas fa-circle-down\"\n }), app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.downloads', {\n count: this.attrs.extension.downloads(),\n formattedCount: formatAmount(this.attrs.extension.downloads())\n })));\n } else {\n items.add('version', m(\"div\", {\n className: \"ExtensionCard-version\"\n }, m(\"span\", {\n className: \"ExtensionCard-version-current\"\n }, this.version(updates['version'])), latestVersion ? m('[', null, m(Icon, {\n name: \"fas fa-arrow-right\"\n }), m(Label, {\n className: \"ExtensionCard-version-latest\",\n type: updates['latest-minor'] ? 'success' : 'warning'\n }, this.version(latestVersion))) : null));\n }\n if (this.attrs.extension instanceof ExternalExtension) {\n items.add('version', m(\"div\", {\n className: \"ExtensionCard-version\"\n }, \"v\", this.version(this.attrs.extension.highestVersion())));\n items.add('link', m(LinkButton, {\n className: \"Button Button--ua-reset Button--link Button--icon\",\n href: this.attrs.extension.httpUri(),\n target: \"_blank\",\n icon: \"fas fa-external-link-alt\",\n external: true\n }));\n }\n return items;\n }\n actionItems() {\n const items = new ItemList();\n const {\n updates,\n extension,\n onClickUpdate,\n whyNotWarning\n } = this.attrs;\n if (extension instanceof ExternalExtension) {\n if (!(extension.extensionId() in app.data.extensions)) {\n items.add('install', m(Button, {\n className: \"Button Button--icon Button--flat\",\n icon: \"fas fa-cloud-arrow-down\",\n onclick: () => {\n app.extensionManager.control.requirePackage({\n package: extension.name()\n });\n }\n }));\n } else {\n items.add('installed', m(Button, {\n className: \"Button Button--icon Button--flat Button--success\",\n icon: \"fas fa-check-circle\",\n disabled: true\n }));\n }\n } else {\n if (onClickUpdate && typeof onClickUpdate === 'function') {\n items.add('update', m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-cloud-arrow-down\",\n className: \"Button Button--icon Button--flat\",\n onclick: onClickUpdate,\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.extensions.update')\n })));\n } else if (onClickUpdate) {\n items.add('update', m(Dropdown, {\n buttonClassName: \"Button Button--icon Button--flat\",\n icon: \"fas fa-ellipsis\",\n label: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-cloud-arrow-down\",\n onclick: onClickUpdate.soft\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_soft_label')), m(Button, {\n icon: \"fas fa-rotate\",\n onclick: onClickUpdate.hard,\n disabled: !updates['direct-dependency']\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_hard_label'))));\n }\n if (whyNotWarning) items.add('whyNot', m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.extensions.check_why_it_failed_updating')\n }, m(Button, {\n icon: \"fas fa-exclamation-circle\",\n className: \"Button Button--icon Button--flat Button--danger\",\n onclick: () => app.modal.show(WhyNotModal, {\n package: extension.name\n }),\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.extensions.check_why_it_failed_updating')\n })));\n }\n return items;\n }\n version(v) {\n return v.charAt(0) === 'v' ? v.substring(1) : v;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ExtensionCard', ExtensionCard);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Alert from 'flarum/common/components/Alert';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionCard from './ExtensionCard';\nimport classList from 'flarum/common/utils/classList';\nexport default class MajorUpdater extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"updateState\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.updateState = this.attrs.updateState;\n }\n view() {\n return m(\"div\", {\n className: classList('Form-group Form-group--danger ExtensionManager-majorUpdate', {\n 'ExtensionManager-majorUpdate--failed': this.updateState.status === 'failure',\n 'ExtensionManager-majorUpdate--incompatibleExtensions': this.updateState.incompatibleExtensions.length\n })\n }, m(\"img\", {\n alt: \"flarum logo\",\n src: app.forum.attribute('baseUrl') + '/assets/extensions/flarum-extension-manager/flarum.svg'\n }), m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.major_updater.title', {\n version: this.attrs.coreUpdate['latest-major']\n })), m(\"p\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.description')), m(\"div\", {\n className: \"ExtensionManager-updaterControls\"\n }, m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.major_updater.dry_run_help')\n }, m(Button, {\n className: \"Button\",\n icon: \"fas fa-vial\",\n onclick: this.update.bind(this, true),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.dry_run'))), m(Button, {\n className: \"Button Button--danger\",\n icon: \"fas fa-play\",\n onclick: this.update.bind(this, false),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.update'))), this.updateState.incompatibleExtensions.length ? m(\"div\", {\n className: \"ExtensionManager-majorUpdate-incompatibleExtensions ExtensionManager-extensions-grid\"\n }, this.updateState.incompatibleExtensions.map(extension => m(ExtensionCard, {\n extension: app.data.extensions[extension.replace('flarum-', '').replace('flarum-ext-', '').replace('/', '-')],\n updates: {},\n onClickUpdate: null,\n isDanger: true\n }))) : null, this.updateState.status === 'failure' ? m(Alert, {\n type: \"error\",\n className: \"ExtensionManager-majorUpdate-failure\",\n dismissible: false,\n controls: [m(Button, {\n className: \"Button Button--text ExtensionManager-majorUpdate-failure-details\",\n icon: \"fas fa-question-circle\",\n onclick: () => app.modal.show(WhyNotModal, {\n package: 'flarum/core'\n })\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.failure.why'))]\n }, m(\"p\", {\n className: \"ExtensionManager-majorUpdate-failure-desc\"\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.failure.desc'))) : null);\n }\n update(dryRun) {\n app.extensionManager.control.majorUpdate({\n dryRun\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/MajorUpdater', MajorUpdater);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/InfoTile');","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport InfoTile from 'flarum/common/components/InfoTile';\nimport ExtensionCard from './ExtensionCard';\nexport default class Updater extends Component {\n view() {\n const core = app.extensionManager.control.coreUpdate;\n return [m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.updater.updater_title')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.updater_help')), this.lastUpdateCheckView(), m(\"div\", {\n className: \"ExtensionManager-updaterControls\"\n }, this.controlItems().toArray()), this.availableUpdatesView()), core && core.package['latest-major'] ? m(MajorUpdater, {\n coreUpdate: core.package,\n updateState: app.extensionManager.control.lastUpdateRun.major\n }) : null];\n }\n lastUpdateCheckView() {\n var _app$extensionManager;\n return ((_app$extensionManager = app.extensionManager.control.lastUpdateCheck) == null ? void 0 : _app$extensionManager.checkedAt) && m(\"p\", {\n className: \"ExtensionManager-lastUpdatedAt\"\n }, m(\"span\", {\n className: \"ExtensionManager-lastUpdatedAt-label\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.last_update_checked_at')), m(\"span\", {\n className: \"ExtensionManager-lastUpdatedAt-value\"\n }, humanTime(app.extensionManager.control.lastUpdateCheck.checkedAt))) || null;\n }\n availableUpdatesView() {\n const state = app.extensionManager.control;\n if (app.extensionManager.control.isLoading('check') || app.extensionManager.control.isLoading('global-update')) {\n return m(\"div\", {\n className: \"ExtensionManager-extensions\"\n }, m(LoadingIndicator, null));\n }\n const hasMinorCoreUpdate = state.coreUpdate && state.coreUpdate.package['latest-minor'];\n if (!(state.extensionUpdates.length || hasMinorCoreUpdate)) {\n return m(\"div\", {\n className: \"ExtensionManager-extensions ExtensionManager-extensions--empty\"\n }, m(InfoTile, {\n icon: \"fas fa-plug-circle-check\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.up_to_date')));\n }\n return m(\"div\", {\n className: \"ExtensionManager-extensions\"\n }, m(\"div\", {\n className: \"ExtensionManager-extensions-grid\"\n }, hasMinorCoreUpdate ? m(ExtensionCard, {\n extension: state.coreUpdate.extension,\n updates: state.coreUpdate.package,\n isCore: true,\n onClickUpdate: () => state.updateCoreMinor(),\n whyNotWarning: state.lastUpdateRun.limitedPackages().includes('flarum/core')\n }) : null, state.extensionUpdates.map(extension => m(ExtensionCard, {\n extension: extension,\n updates: state.packageUpdates[extension.id],\n onClickUpdate: {\n soft: () => state.updateExtension(extension, 'soft'),\n hard: () => state.updateExtension(extension, 'hard')\n },\n whyNotWarning: state.lastUpdateRun.limitedPackages().includes(extension.name)\n }))));\n }\n controlItems() {\n const items = new ItemList();\n items.add('updateCheck', m(Button, {\n className: \"Button\",\n icon: \"fas fa-sync-alt\",\n onclick: () => app.extensionManager.control.checkForUpdates(),\n loading: app.extensionManager.control.isLoading('check'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.updater.check_for_updates')), 100);\n items.add('globalUpdate', m(Button, {\n className: \"Button\",\n icon: \"fas fa-play\",\n onclick: () => app.extensionManager.control.updateGlobally(),\n loading: app.extensionManager.control.isLoading('global-update'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.updater.run_global_update')));\n return items;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Updater', Updater);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Form');","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Installer from './Installer';\nimport Updater from './Updater';\nimport Form from 'flarum/common/components/Form';\nexport default class ControlSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n }\n view() {\n return m(\"div\", {\n className: \"ExtensionPage-settings ExtensionManager-controlSection\"\n }, m(\"div\", {\n className: \"container\"\n }, app.data['flarum-extension-manager.writable_dirs'] ? m(Form, null, m(Installer, null), m(Updater, null)) : m(\"div\", {\n className: \"Form-group\"\n }, m(Alert, {\n type: \"warning\",\n dismissible: false\n }, app.translator.trans('flarum-extension-manager.admin.file_permissions')))));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ControlSection', ControlSection);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/FormGroup');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport FormGroup from 'flarum/common/components/FormGroup';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nexport default class ConfigureJson extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"settings\", {});\n _defineProperty(this, \"initialSettings\", null);\n _defineProperty(this, \"loading\", false);\n _defineProperty(this, \"type\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.submit(true);\n }\n className() {\n return '';\n }\n view() {\n return m(\"div\", {\n className: classList('FormSection', this.className())\n }, m(\"label\", null, this.title()), this.content(), m(\"div\", {\n className: \"Form-group Form-controls\"\n }, this.submitButton()));\n }\n submitButton() {\n return [m(Button, {\n className: \"Button Button--primary\",\n loading: this.loading,\n onclick: () => this.submit(false),\n disabled: !this.isDirty()\n }, app.translator.trans('core.admin.settings.submit_button'))];\n }\n customSettingComponents() {\n return FormGroup.prototype.customFieldComponents();\n }\n setting(key) {\n var _this$settings$key;\n return (_this$settings$key = this.settings[key]) != null ? _this$settings$key : this.settings[key] = Stream();\n }\n submit(readOnly) {\n this.loading = true;\n const configuration = {};\n Object.keys(this.settings).forEach(key => {\n configuration[key] = this.settings[key]();\n });\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/extension-manager/composer',\n body: {\n type: this.type,\n data: readOnly ? null : configuration\n }\n }).then(_ref => {\n let {\n data\n } = _ref;\n Object.keys(data).forEach(key => {\n this.settings[key] = Stream(data[key]);\n });\n this.initialSettings = Array.isArray(data) ? {} : data;\n }).finally(() => {\n this.loading = false;\n m.redraw();\n });\n }\n isDirty() {\n return JSON.stringify(this.initialSettings) !== JSON.stringify(this.settings);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureJson', ConfigureJson);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Select');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Modal from 'flarum/common/components/Modal';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport Form from 'flarum/common/components/Form';\nexport default class RepositoryModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"repository\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.name = Stream(this.attrs.name || '');\n this.repository = Stream(this.attrs.repository || {\n type: 'composer',\n url: ''\n });\n }\n className() {\n return 'RepositoryModal Modal--small';\n }\n title() {\n const context = this.attrs.repository ? 'edit' : 'add';\n return app.translator.trans(\"flarum-extension-manager.admin.composer.\".concat(context, \"_repository_label\"));\n }\n content() {\n const types = {\n composer: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.composer'),\n vcs: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.vcs'),\n path: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.path')\n };\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, null, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.name_label')), m(\"input\", {\n className: \"FormControl\",\n bidi: this.name\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.type_label')), m(Select, {\n options: types,\n value: this.repository().type,\n onchange: value => this.repository({\n ...this.repository(),\n type: value\n })\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.url')), m(\"input\", {\n className: \"FormControl\",\n onchange: e => this.repository({\n ...this.repository(),\n url: e.target.value\n }),\n value: this.repository().url\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(Button, {\n className: \"Button Button--primary\",\n onclick: this.submit.bind(this)\n }, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.submit_button')))));\n }\n submit() {\n this.attrs.onsubmit(this.repository(), this.name());\n this.hide();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/RepositoryModal', RepositoryModal);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport ConfigureJson from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport RepositoryModal from './RepositoryModal';\nexport default class ConfigureComposer extends ConfigureJson {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", 'composer');\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.composer.title');\n }\n className() {\n return 'ConfigureComposer';\n }\n content() {\n return m(\"div\", {\n className: \"Form ExtensionManager-SettingsGroups-content\"\n }, this.attrs.buildSettingComponent.call(this, {\n setting: 'minimum-stability',\n label: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.label'),\n help: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.help'),\n type: 'select',\n options: {\n stable: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.stable'),\n RC: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.rc'),\n beta: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.beta'),\n alpha: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.alpha'),\n dev: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.dev')\n }\n }), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.label')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.composer.repositories.help')), m(\"div\", {\n className: \"ConfigureComposer-repositories\"\n }, Object.keys(this.setting('repositories')() || {}).map(name => {\n const repository = this.setting('repositories')()[name];\n return m(\"div\", {\n className: \"ButtonGroup ButtonGroup--full\"\n }, m(Button, {\n className: \"Button\",\n icon: {\n composer: 'fas fa-cubes',\n vcs: 'fas fa-code-branch',\n path: 'fas fa-folder'\n }[repository.type],\n onclick: () => app.modal.show(RepositoryModal, {\n name,\n repository,\n onsubmit: (repository, newName) => {\n const repositories = this.setting('repositories')();\n delete repositories[name];\n this.setting('repositories')(repositories);\n this.onchange(repository, newName);\n }\n })\n }, name, \" (\", repository.type, \")\"), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-trash\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.composer.delete_repository_label'),\n onclick: () => {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.composer.delete_repository_confirmation')))) {\n const repositories = {\n ...this.setting('repositories')()\n };\n delete repositories[name];\n this.setting('repositories')(repositories);\n }\n }\n }));\n }))));\n }\n submitButton() {\n const items = super.submitButton();\n items.push(m(Button, {\n className: \"Button\",\n onclick: () => app.modal.show(RepositoryModal, {\n onsubmit: this.onchange.bind(this)\n })\n }, app.translator.trans('flarum-extension-manager.admin.composer.add_repository_label')));\n return items;\n }\n onchange(repository, name) {\n this.setting('repositories')({\n ...this.setting('repositories')(),\n [name]: repository\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureComposer', ConfigureComposer);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Modal from 'flarum/common/components/Modal';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport Form from 'flarum/common/components/Form';\nexport default class AuthMethodModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"host\", void 0);\n _defineProperty(this, \"token\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.type = Stream(this.attrs.type || 'bearer');\n this.host = Stream(this.attrs.host || '');\n this.token = Stream(this.attrs.token || '');\n }\n className() {\n return 'AuthMethodModal Modal--small';\n }\n title() {\n const context = this.attrs.host ? 'edit' : 'add';\n return app.translator.trans(\"flarum-extension-manager.admin.auth_config.\".concat(context, \"_label\"));\n }\n content() {\n const types = {\n 'github-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.github-oauth'),\n 'gitlab-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-oauth'),\n 'gitlab-token': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-token'),\n bearer: app.translator.trans('flarum-extension-manager.admin.auth_config.types.bearer')\n };\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, null, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.type_label')), m(Select, {\n options: types,\n value: this.type(),\n onchange: this.type\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.host_label')), m(\"input\", {\n className: \"FormControl\",\n bidi: this.host,\n placeholder: app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.host_placeholder')\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.token_label')), m(\"textarea\", {\n className: \"FormControl\",\n oninput: e => this.token(e.target.value),\n rows: \"6\",\n placeholder: this.token().startsWith('unchanged:') ? extractText(app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.unchanged_token_placeholder')) : ''\n }, this.token().startsWith('unchanged:') ? '' : this.token())), m(\"div\", {\n className: \"Form-group\"\n }, m(Button, {\n className: \"Button Button--primary\",\n onclick: this.submit.bind(this)\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.submit_button')))));\n }\n submit() {\n this.attrs.onsubmit(this.type(), this.host(), this.token());\n this.hide();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/AuthMethodModal', AuthMethodModal);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport ConfigureJson from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport AuthMethodModal from './AuthMethodModal';\nimport extractText from 'flarum/common/utils/extractText';\nexport default class ConfigureAuth extends ConfigureJson {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", 'auth');\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.auth_config.title');\n }\n className() {\n return 'ConfigureAuth';\n }\n content() {\n const authSettings = Object.keys(this.settings);\n const hasAuthSettings = authSettings.length && authSettings.every(type => {\n const data = this.settings[type]();\n return Array.isArray(data) ? data.length : Object.keys(data).length;\n });\n return m(\"div\", {\n className: \"ExtensionManager-SettingsGroups-content\"\n }, hasAuthSettings ? authSettings.map(type => {\n const hosts = this.settings[type]();\n return m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans(\"flarum-extension-manager.admin.auth_config.types.\".concat(type))), m(\"div\", {\n className: \"ConfigureAuth-hosts\"\n }, Object.keys(hosts).map(host => {\n const data = hosts[host];\n return m(\"div\", {\n className: \"ButtonGroup ButtonGroup--full\"\n }, m(Button, {\n className: \"Button\",\n icon: \"fas fa-key\",\n onclick: () => app.modal.show(AuthMethodModal, {\n type,\n host,\n token: data,\n onsubmit: this.onchange.bind(this, host)\n })\n }, host), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-trash\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.auth_config.delete_label'),\n onclick: () => {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.auth_config.delete_confirmation')))) {\n const newType = {\n ...this.setting(type)()\n };\n delete newType[host];\n if (Object.keys(newType).length) {\n this.setting(type)(newType);\n } else {\n delete this.settings[type];\n }\n }\n }\n }));\n })));\n }) : m(\"span\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.no_auth_methods_configured')));\n }\n submitButton() {\n const items = super.submitButton();\n items.push(m(Button, {\n className: \"Button\",\n loading: this.loading,\n onclick: () => app.modal.show(AuthMethodModal, {\n onsubmit: this.onchange.bind(this, null)\n })\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.add_label')));\n return items;\n }\n onchange(oldHost, type, host, token) {\n const data = {\n ...this.setting(type)()\n };\n if (oldHost) {\n delete data[oldHost];\n }\n data[host] = token;\n this.setting(type)(data);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureAuth', ConfigureAuth);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Input');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/listItems');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/throttleDebounce');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Form from 'flarum/common/components/Form';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Input from 'flarum/common/components/Input';\nimport Stream from 'flarum/common/utils/Stream';\nimport Alert from 'flarum/common/components/Alert';\nimport listItems from 'flarum/common/helpers/listItems';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport ExtensionCard from './ExtensionCard';\nimport Pagination from 'flarum/common/components/Pagination';\nimport InfoTile from 'flarum/common/components/InfoTile';\nimport classList from 'flarum/common/utils/classList';\nimport { throttle } from 'flarum/common/utils/throttleDebounce';\nexport default class DiscoverSection extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"search\", Stream(''));\n _defineProperty(this, \"warningsDismissed\", Stream(false));\n _defineProperty(this, \"applySearch\", throttle(1200, value => {\n const params = app.extensionManager.extensions.getParams();\n app.extensionManager.extensions.refreshParams({\n ...params,\n filter: {\n ...params.filter,\n q: value\n }\n }, 1);\n }));\n }\n oninit(vnode) {\n super.oninit(vnode);\n app.extensionManager.extensions.goto(1);\n this.warningsDismissed(localStorage.getItem('flarum-extension-manager.warningsDismissed') === 'true');\n }\n load(page) {\n if (page === void 0) {\n page = 1;\n }\n app.extensionManager.extensions.goto(page);\n }\n view() {\n return m(\"div\", {\n className: \"ExtensionPage-settings ExtensionManager-DiscoverSection\"\n }, m(\"div\", {\n className: \"container\"\n }, m(Form, null, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.discover.title')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.description'), this.warningsDismissed() && m(Button, {\n className: \"Button Button--text Button--warning Button--more\",\n icon: \"fas fa-exclamation-triangle\",\n onclick: () => this.setWarningDismissed(false)\n }))), !this.warningsDismissed() && m(\"div\", {\n className: \"ExtensionManager-warnings Form-group\"\n }, m(Alert, {\n className: \"ExtensionManager-primaryWarning\",\n type: \"warning\",\n dismissible: true,\n ondismiss: () => this.setWarningDismissed(true)\n }, m(\"ul\", null, listItems(this.warningItems().toArray())))), m(\"div\", {\n className: \"Tabs\"\n }, m(\"div\", {\n className: \"Tabs-nav\"\n }, this.tabItems().toArray()), m(\"div\", {\n className: \"Tabs-content\"\n }, m(\"hr\", {\n className: \"Tabs-divider\"\n }), m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-toolbar\"\n }, m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-toolbar-primary\"\n }, this.toolbarPrimaryItems().toArray()), m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-toolbar-secondary\"\n }, this.toolbarSecondaryItems().toArray())), this.extensionList(), m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-footer\"\n }, this.footerItems().toArray()))))));\n }\n tabFilters() {\n return {\n '': {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.discover'),\n active: () => {\n var _app$extensionManager;\n return !((_app$extensionManager = app.extensionManager.extensions.getParams().filter) != null && _app$extensionManager.type);\n }\n },\n extension: {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.extensions'),\n active: () => {\n var _app$extensionManager2;\n return ((_app$extensionManager2 = app.extensionManager.extensions.getParams().filter) == null ? void 0 : _app$extensionManager2.type) === 'extension';\n }\n },\n locale: {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.languages'),\n active: () => {\n var _app$extensionManager3;\n return ((_app$extensionManager3 = app.extensionManager.extensions.getParams().filter) == null ? void 0 : _app$extensionManager3.type) === 'locale';\n }\n },\n theme: {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.themes'),\n active: () => {\n var _app$extensionManager4;\n return ((_app$extensionManager4 = app.extensionManager.extensions.getParams().filter) == null ? void 0 : _app$extensionManager4.type) === 'theme';\n }\n }\n };\n }\n tabItems() {\n const items = new ItemList();\n const tabs = this.tabFilters();\n Object.keys(tabs).forEach(key => {\n const tab = tabs[key];\n items.add(key, m(Button, {\n className: \"Button Button--link\",\n active: tab.active(),\n onclick: () => {\n app.extensionManager.extensions.changeFilter('type', key);\n }\n }, tab.label));\n });\n return items;\n }\n warningItems() {\n const items = new ItemList();\n items.add('accessWarning', app.translator.trans('flarum-extension-manager.admin.settings.access_warning'));\n if (app.data.debugEnabled) {\n items.add('devModeWarning', app.translator.trans('flarum-extension-manager.admin.settings.debug_mode_warning'));\n }\n return items;\n }\n toolbarPrimaryItems() {\n const items = new ItemList();\n items.add('search', m(Input, {\n value: this.search(),\n onchange: value => {\n this.search(value);\n this.applySearch(value);\n },\n inputAttrs: {\n className: 'FormControl-alt'\n },\n clearable: true,\n placeholder: app.translator.trans('flarum-extension-manager.admin.sections.discover.search'),\n prefixIcon: \"fas fa-search\"\n }));\n return items;\n }\n toolbarSecondaryItems() {\n var _app$extensionManager5, _app$extensionManager6;\n const items = new ItemList();\n const sortMap = app.extensionManager.extensions.sortMap();\n const sortOptions = Object.keys(sortMap).reduce((acc, sortId) => {\n const sort = sortMap[sortId];\n acc[sortId] = typeof sort !== 'string' ? sort.label : sort;\n return acc;\n }, {});\n items.add('sort', m(Dropdown, {\n buttonClassName: \"Button\",\n label: sortOptions[app.extensionManager.extensions.getParams().sort] || Object.keys(sortMap).map(key => sortOptions[key])[0],\n accessibleToggleLabel: app.translator.trans('flarum-extension-manager.admin.sections.discover.sort.toggle_dropdown_accessible_label')\n }, Object.keys(sortOptions).map(value => {\n const label = sortOptions[value];\n const active = app.extensionManager.extensions.getParams().sort === value;\n return m(Button, {\n icon: active ? 'fas fa-check' : true,\n onclick: () => app.extensionManager.extensions.changeSort(value),\n active: active\n }, label);\n })));\n const is = (_app$extensionManager5 = (_app$extensionManager6 = app.extensionManager.extensions.getParams().filter) == null || (_app$extensionManager6 = _app$extensionManager6.is) == null ? void 0 : _app$extensionManager6[0]) != null ? _app$extensionManager5 : null;\n const activeType = is || 'all';\n items.add('party', m(Dropdown, {\n buttonClassName: \"Button\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.party_filter.' + activeType),\n accessibleToggleLabel: app.translator.trans('flarum-extension-manager.admin.sections.discover.party_filter.toggle_dropdown_accessible_label')\n }, ['all', 'premium'].map(party => m(Button, {\n icon: activeType === party ? 'fas fa-check' : true,\n onclick: () => {\n app.extensionManager.extensions.changeFilter('is', party === 'all' ? undefined : [party]);\n },\n active: activeType === party\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.party_filter.' + party)))));\n return items;\n }\n extensionList() {\n if (!app.extensionManager.extensions.hasItems() && app.extensionManager.extensions.isLoading()) {\n return m(LoadingIndicator, {\n display: \"block\"\n });\n }\n if (!app.extensionManager.extensions.hasItems()) {\n return m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-list ExtensionManager-DiscoverSection-list--empty\"\n }, m(InfoTile, {\n icon: \"fas fa-plug-circle-exclamation\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.empty_results')));\n }\n return m(\"div\", {\n className: classList('ExtensionManager-DiscoverSection-list', {\n 'loading-container': app.extensionManager.extensions.isLoading()\n })\n }, m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-list-inner\"\n }, app.extensionManager.extensions.getPages().map(page => page.items.map(extension => m(ExtensionCard, {\n extension: extension,\n key: extension.name()\n })))), app.extensionManager.extensions.hasItems() && app.extensionManager.extensions.isLoading() && m(LoadingIndicator, {\n size: \"large\"\n }));\n }\n footerItems() {\n const items = new ItemList();\n items.add('pagination', m(Pagination, {\n total: app.extensionManager.extensions.totalItems,\n perPage: app.extensionManager.extensions.pageSize,\n currentPage: app.extensionManager.extensions.getLocation().page,\n onChange: page => {\n const current = app.extensionManager.extensions.getLocation().page;\n if (current === page) {\n return;\n }\n this.load(page);\n }\n }));\n items.add('premiumTermsLink', m(LinkButton, {\n className: \"Button Button--link\",\n href: \"https://flarum.org/terms/premium-extensions\",\n external: true,\n target: \"_blank\",\n icon: \"fas fa-circle-info\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.premium_extension_terms')));\n return items;\n }\n setWarningDismissed(dismissed) {\n this.warningsDismissed(dismissed);\n localStorage.setItem('flarum-extension-manager.warningsDismissed', dismissed ? 'true' : 'false');\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/DiscoverSection', DiscoverSection);","import app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport QueueSection from './QueueSection';\nimport ControlSection from './ControlSection';\nimport ConfigureComposer from './ConfigureComposer';\nimport ConfigureAuth from './ConfigureAuth';\nimport DiscoverSection from './DiscoverSection';\nexport default class SettingsPage extends ExtensionPage {\n content() {\n const settings = app.registry.getSettings(this.extension.id);\n return m(\"div\", {\n className: \"ExtensionPage-settings\"\n }, m(\"div\", {\n className: \"container\"\n }, settings ? [m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.settings.title')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.settings.description'))), m(\"div\", {\n className: \"FormSectionGroup ExtensionManager-SettingsGroups\"\n }, m(\"div\", {\n className: \"FormSection\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.settings.title')), m(\"div\", {\n className: \"Form\"\n }, settings.map(this.buildSettingComponent.bind(this))), m(\"div\", {\n className: \"Form-group Form--controls\"\n }, this.submitButton())), m(ConfigureComposer, {\n buildSettingComponent: this.buildSettingComponent\n }), m(ConfigureAuth, {\n buildSettingComponent: this.buildSettingComponent\n }))] : m(\"h3\", {\n className: \"ExtensionPage-subHeader\"\n }, app.translator.trans('core.admin.extension.no_settings'))));\n }\n sections(vnode) {\n const items = super.sections(vnode);\n items.add('discover', m(DiscoverSection, null), 15);\n items.add('control', m(ControlSection, null), 10);\n items.setPriority('content', 8);\n if (app.data.settings['flarum-extension-manager.queue_jobs'] !== '0' && app.data.settings['flarum-extension-manager.queue_jobs']) {\n items.add('queue', m(QueueSection, null), 5);\n }\n items.remove('permissions');\n return items;\n }\n onsaved() {\n super.onsaved();\n m.redraw();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/SettingsPage', SettingsPage);","const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'KiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nexport default function prettyBytes(number, options) {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\tspace: true,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tconst separator = options.space ? ' ' : '';\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0${separator}${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + separator + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\tnumber /= (options.binary ? 1024 : 1000) ** exponent;\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + separator + unit;\n}\n","import Model from 'flarum/common/Model';\nimport prettyBytes from 'pretty-bytes';\nexport default class Task extends Model {\n status() {\n return Model.attribute('status').call(this);\n }\n operation() {\n return Model.attribute('operation').call(this);\n }\n command() {\n return Model.attribute('command').call(this);\n }\n package() {\n return Model.attribute('package').call(this);\n }\n output() {\n return Model.attribute('output').call(this);\n }\n guessedCause() {\n return Model.attribute('guessedCause').call(this);\n }\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n startedAt() {\n return Model.attribute('startedAt', Model.transformDate).call(this);\n }\n finishedAt() {\n return Model.attribute('finishedAt', Model.transformDate).call(this);\n }\n peakMemoryUsed() {\n return prettyBytes(Model.attribute('peakMemoryUsed').call(this) * 1024);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/models/Task', Task);","import Extend from 'flarum/common/extenders';\nimport app from 'flarum/admin/app';\nimport extractText from 'flarum/common/utils/extractText';\nimport SettingsPage from './components/SettingsPage';\nimport Task from './models/Task';\nimport ExternalExtension from './models/ExternalExtension';\nexport default [new Extend.Store() //\n.add('extension-manager-tasks', Task).add('external-extensions', ExternalExtension), new Extend.Admin().setting(() => ({\n setting: 'flarum-extension-manager.queue_jobs',\n label: app.translator.trans('flarum-extension-manager.admin.settings.queue_jobs'),\n help: m.trust(extractText(app.translator.trans('flarum-extension-manager.admin.settings.queue_jobs_help', {\n basic_impl_link: 'https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting',\n adv_impl_link: 'https://discuss.flarum.org/d/21873-redis-sessions-cache-queues',\n php_version: \"\".concat(app.data.phpVersion, \"\"),\n folder_perms_link: 'https://docs.flarum.org/install#folder-ownership'\n }))),\n type: 'boolean',\n disabled: app.data['flarum-extension-manager.using_sync_queue']\n})).setting(() => ({\n setting: 'flarum-extension-manager.task_retention_days',\n label: app.translator.trans('flarum-extension-manager.admin.settings.task_retention_days'),\n help: app.translator.trans('flarum-extension-manager.admin.settings.task_retention_days_help'),\n type: 'number'\n})).page(SettingsPage).generalIndexItems('settings', () => [{\n id: 'minimum-stability',\n label: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.label', {}, true),\n help: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.help', {}, true)\n}, {\n id: 'repositories',\n label: app.translator.trans('flarum-extension-manager.admin.composer.repositories.label', {}, true),\n help: app.translator.trans('flarum-extension-manager.admin.composer.repositories.help', {}, true)\n}, {\n id: 'composer-auth',\n label: app.translator.trans('flarum-extension-manager.admin.auth_config.title', {}, true)\n}, {\n id: 'updates',\n label: app.translator.trans('flarum-extension-manager.admin.updater.updater_title', {}, true),\n help: app.translator.trans('flarum-extension-manager.admin.updater.updater_help', {}, true)\n}])];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport jumpToQueue from './utils/jumpToQueue';\nimport ExtensionManagerState from './states/ExtensionManagerState';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-extension-manager', app => {\n app.extensionManager = new ExtensionManagerState();\n if (app.data['flarum-extension-manager.using_sync_queue']) {\n app.data.settings['flarum-extension-manager.queue_jobs'] = '0';\n }\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-extension-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n items.add('remove', m(Button, {\n className: \"Button Button--danger\",\n icon: \"fas fa-times\",\n onclick: () => {\n app.modal.show(LoadingModal);\n app.request({\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions/\").concat(this.extension.id),\n method: 'DELETE'\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }\n }).finally(() => {\n app.modal.close();\n });\n }\n }, app.translator.trans('flarum-extension-manager.admin.extensions.remove')));\n });\n});"],"names":["module","exports","t","s","n","i","e","r","o","u","d","a","h","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","g","f","$l","m","p","l","$","Math","ceil","floor","y","abs","v","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","round","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","valueOf","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","$utils","duration","isDuration","bind","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","getter","__esModule","definition","key","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","value","flarum","reg","jumpToQueue","close","route","set","id","queue","load","setTimeout","_document$getElementB","document","getElementById","scrollIntoView","block","_typeof","iterator","constructor","_defineProperty","toPrimitive","TypeError","configurable","writable","window","QueueState","params","actionTaken","_params","loading","page","limit","offset","find","then","data","_data$payload$meta","tasks","total","payload","meta","redraw","task","status","pollQueue","control","setLoading","location","reload","isLoading","getItems","getTotalItems","getTotalPages","pageNumber","getPerPage","hasPrev","hasNext","prev","next","goto","polling","clearTimeout","hasPending","_this$tasks","error","response","errors","includes","code","clear","guessed_cause","show","type","trans","concat","ControlSectionState","lastUpdateRun","JSON","parse","settings","limitedPackages","major","minor","global","lastUpdateCheck","extensionUpdates","formatExtensionUpdates","coreUpdate","formatCoreUpdate","name","hasOperationRunning","requirePackage","method","url","attribute","body","processing","extensionId","extension","href","catch","errorHandler","finally","checkForUpdates","updateCoreMinor","confirm","updateExtension","updateMode","extra","title","updateGlobally","_lastUpdateCheck$upda","packageUpdates","updates","installed","filter","composerPackage","extensions","safeToUpdate","values","_lastUpdateCheck$upda2","core","pop","package","version","icon","backgroundImage","resources","links","majorUpdate","_ref","dryRun","updateState","_e$response","incompatibleExtensions","incompatible_extensions","ExtensionListState","super","sort","sortMap","label","ExtensionManagerState","Label","view","vnode","className","attrs","assign","children","TaskOutputModal","operation","content","guessedCause","command","output","humanDuration","start","end","dayjs","extend","durationTime","diff","QueueSection","oninit","onclick","disabled","queueTable","columns","items","operationIcon","_task$package","style","running","failure","pending","success","size","display","startedAt","finishedAt","text","peakMemoryUsed","length","toArray","item","index","currentPage","perPage","onChange","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","Installer","arguments","packageName","htmlFor","link","semantic_link","placeholder","bidi","onsubmit","WhyNotModal","oncreate","requestWhyNot","whyNot","reason","ExternalExtension","isSupported","currentVersion","latestCompatibleVersion","latestFlarumVersionSupported","split","isStable","highestVersion","toLocalExtension","description","backgroundColor","color","discuss","discussUri","website","httpUri","ExtensionCard","getExtension","isCore","isDanger","badges","actionItems","metaItems","_extension$icon","_extension$icon2","iconUrl","isPremium","_updates$latestMinor","latestVersion","count","downloads","formattedCount","target","external","onClickUpdate","whyNotWarning","buttonClassName","soft","hard","charAt","substring","MajorUpdater","alt","src","update","dismissible","controls","Updater","lastUpdateCheckView","controlItems","availableUpdatesView","_app$extensionManager","checkedAt","state","hasMinorCoreUpdate","ControlSection","ConfigureJson","submit","submitButton","isDirty","customSettingComponents","customFieldComponents","setting","_this$settings$key","readOnly","configuration","initialSettings","Array","isArray","stringify","RepositoryModal","repository","context","types","composer","vcs","path","options","onchange","hide","ConfigureComposer","buildSettingComponent","help","stable","RC","beta","alpha","dev","newName","repositories","push","AuthMethodModal","host","token","bearer","oninput","rows","startsWith","ConfigureAuth","authSettings","hasAuthSettings","every","hosts","newType","oldHost","DiscoverSection","throttle","getParams","refreshParams","q","warningsDismissed","localStorage","getItem","setWarningDismissed","ondismiss","warningItems","tabItems","toolbarPrimaryItems","toolbarSecondaryItems","extensionList","footerItems","tabFilters","active","_app$extensionManager2","_app$extensionManager3","theme","_app$extensionManager4","tabs","tab","changeFilter","debugEnabled","search","applySearch","inputAttrs","clearable","prefixIcon","_app$extensionManager5","_app$extensionManager6","sortOptions","acc","sortId","accessibleToggleLabel","changeSort","activeType","is","party","hasItems","getPages","totalItems","pageSize","getLocation","dismissed","setItem","SettingsPage","getSettings","sections","setPriority","remove","onsaved","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","result","Task","createdAt","isFinite","UNITS","bits","binary","space","separator","signed","isNegative","prefix","localeOptions","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","toPrecision","prettyBytes","trust","basic_impl_link","adv_impl_link","php_version","phpVersion","folder_perms_link","generalIndexItems","app","extensionManager","modal","request","forum","alerts","translator"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@flarum/extension-manager/../../../node_modules/dayjs/plugin/duration.js","webpack://@flarum/extension-manager/webpack/bootstrap","webpack://@flarum/extension-manager/webpack/runtime/compat get default export","webpack://@flarum/extension-manager/webpack/runtime/define property getters","webpack://@flarum/extension-manager/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/extension-manager/webpack/runtime/make namespace object","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/app')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/components/ExtensionPage')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/components/LoadingModal')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/utils/isExtensionEnabled')\"","webpack://@flarum/extension-manager/./src/admin/utils/jumpToQueue.ts","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/extension-manager/../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/extension-manager/./src/admin/states/QueueState.ts","webpack://@flarum/extension-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/extractText')\"","webpack://@flarum/extension-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/states/PaginatedListState')\"","webpack://@flarum/extension-manager/./src/admin/states/ExtensionListState.ts","webpack://@flarum/extension-manager/./src/admin/states/ExtensionManagerState.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/Component')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/LoadingIndicator')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Tooltip')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Icon')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/ItemList')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Link')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Pagination')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/classList')\"","webpack://@flarum/extension-manager/./src/admin/components/Label.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Modal')\"","webpack://@flarum/extension-manager/./src/admin/components/TaskOutputModal.tsx","webpack://@flarum/extension-manager/./src/admin/utils/humanDuration.ts","webpack://@flarum/extension-manager/./src/admin/components/QueueSection.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Alert')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/Stream')\"","webpack://@flarum/extension-manager/./src/admin/components/Installer.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/helpers/humanTime')\"","webpack://@flarum/extension-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/formatAmount')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/Model')\"","webpack://@flarum/extension-manager/./src/admin/utils/versions.ts","webpack://@flarum/extension-manager/./src/admin/models/ExternalExtension.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Dropdown')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/LinkButton')\"","webpack://@flarum/extension-manager/./src/admin/components/ExtensionCard.tsx","webpack://@flarum/extension-manager/./src/admin/components/MajorUpdater.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/InfoTile')\"","webpack://@flarum/extension-manager/./src/admin/components/Updater.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Form')\"","webpack://@flarum/extension-manager/./src/admin/components/ControlSection.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/FormGroup')\"","webpack://@flarum/extension-manager/./src/admin/components/ConfigureJson.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Select')\"","webpack://@flarum/extension-manager/./src/admin/components/RepositoryModal.tsx","webpack://@flarum/extension-manager/./src/admin/components/ConfigureComposer.tsx","webpack://@flarum/extension-manager/./src/admin/components/AuthMethodModal.tsx","webpack://@flarum/extension-manager/./src/admin/components/ConfigureAuth.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Input')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/helpers/listItems')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/throttleDebounce')\"","webpack://@flarum/extension-manager/./src/admin/components/DiscoverSection.tsx","webpack://@flarum/extension-manager/./src/admin/components/SettingsPage.tsx","webpack://@flarum/extension-manager/../../../node_modules/pretty-bytes/index.js","webpack://@flarum/extension-manager/./src/admin/models/Task.ts","webpack://@flarum/extension-manager/./src/admin/extend.tsx","webpack://@flarum/extension-manager/./src/admin/index.tsx"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/components/ExtensionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/components/LoadingModal');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/utils/isExtensionEnabled');","import app from 'flarum/admin/app';\n\n// @ts-ignore\nwindow.jumpToQueue = jumpToQueue;\nexport default function jumpToQueue() {\n app.modal.close();\n m.route.set(app.route('extension', {\n id: 'flarum-extension-manager'\n }));\n app.extensionManager.queue.load({}, true);\n setTimeout(() => {\n var _document$getElementB;\n (_document$getElementB = document.getElementById('ExtensionManager-queueSection')) == null || _document$getElementB.scrollIntoView({\n block: 'nearest'\n });\n }, 200);\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/jumpToQueue', jumpToQueue);","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nexport default class QueueState {\n constructor() {\n _defineProperty(this, \"polling\", null);\n _defineProperty(this, \"tasks\", null);\n _defineProperty(this, \"limit\", 20);\n _defineProperty(this, \"offset\", 0);\n _defineProperty(this, \"total\", 0);\n _defineProperty(this, \"loading\", false);\n }\n load(params, actionTaken) {\n var _params;\n if (actionTaken === void 0) {\n actionTaken = false;\n }\n this.loading = true;\n params = {\n page: {\n limit: this.limit,\n offset: this.offset,\n ...((_params = params) == null ? void 0 : _params.page)\n },\n ...params\n };\n return app.store.find('extension-manager-tasks', params || {}).then(data => {\n var _data$payload$meta;\n this.tasks = data;\n this.total = ((_data$payload$meta = data.payload.meta) == null || (_data$payload$meta = _data$payload$meta.page) == null ? void 0 : _data$payload$meta.total) || 0;\n m.redraw();\n\n // Check if there is a pending or running task\n const pendingTask = data == null ? void 0 : data.find(task => task.status() === 'pending' || task.status() === 'running');\n if (pendingTask) {\n this.pollQueue(actionTaken);\n } else if (actionTaken) {\n app.extensionManager.control.setLoading(null);\n\n // Refresh the page\n window.location.reload();\n } else if (app.extensionManager.control.isLoading()) {\n app.extensionManager.control.setLoading(null);\n }\n this.loading = false;\n return data;\n });\n }\n isLoading() {\n return this.loading;\n }\n getItems() {\n return this.tasks;\n }\n getTotalItems() {\n return this.total;\n }\n getTotalPages() {\n return Math.ceil(this.total / this.limit);\n }\n pageNumber() {\n return Math.ceil(this.offset / this.limit);\n }\n getPerPage() {\n return this.limit;\n }\n hasPrev() {\n return this.pageNumber() !== 0;\n }\n hasNext() {\n return this.offset + this.limit < this.total;\n }\n prev() {\n if (this.hasPrev()) {\n this.offset -= this.limit;\n this.load();\n }\n }\n next() {\n if (this.hasNext()) {\n this.offset += this.limit;\n this.load();\n }\n }\n goto(page) {\n this.offset = (page - 1) * this.limit;\n this.load();\n }\n pollQueue(actionTaken) {\n if (actionTaken === void 0) {\n actionTaken = false;\n }\n if (this.polling) {\n clearTimeout(this.polling);\n }\n this.polling = setTimeout(() => {\n this.load({}, actionTaken);\n }, 6000);\n }\n hasPending() {\n var _this$tasks;\n return !!((_this$tasks = this.tasks) != null && _this$tasks.find(task => task.status() === 'pending' || task.status() === 'running'));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/QueueState', QueueState);","import app from 'flarum/admin/app';\nexport default function (e) {\n app.extensionManager.control.setLoading(null);\n const error = e.response.errors[0];\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n app.alerts.clear();\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({\n type: 'error'\n }, app.translator.trans(\"flarum-extension-manager.admin.exceptions.guessed_cause.\".concat(error.guessed_cause)));\n app.modal.close();\n } else {\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n case 'extension_already_installed':\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n case 'extension_not_installed':\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/extractText');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport extractText from 'flarum/common/utils/extractText';\nexport default class ControlSectionState {\n get lastUpdateRun() {\n const lastUpdateRun = JSON.parse(app.data.settings['flarum-extension-manager.last_update_run']);\n lastUpdateRun.limitedPackages = () => [...lastUpdateRun.major.limitedPackages, ...lastUpdateRun.minor.limitedPackages, ...lastUpdateRun.global.limitedPackages];\n return lastUpdateRun;\n }\n constructor() {\n _defineProperty(this, \"loading\", null);\n _defineProperty(this, \"packageUpdates\", {});\n _defineProperty(this, \"lastUpdateCheck\", void 0);\n _defineProperty(this, \"extensionUpdates\", void 0);\n _defineProperty(this, \"coreUpdate\", null);\n this.lastUpdateCheck = JSON.parse(app.data.settings['flarum-extension-manager.last_update_check']);\n this.extensionUpdates = this.formatExtensionUpdates(this.lastUpdateCheck);\n this.coreUpdate = this.formatCoreUpdate(this.lastUpdateCheck);\n }\n isLoading(name) {\n if (name === void 0) {\n name = null;\n }\n return name && this.loading === name || !name && this.loading !== null;\n }\n hasOperationRunning() {\n return this.isLoading() || app.extensionManager.queue.hasPending();\n }\n setLoading(name) {\n this.loading = name;\n }\n requirePackage(data) {\n app.extensionManager.control.setLoading('extension-install');\n app.modal.show(LoadingModal);\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions\"),\n body: {\n data\n }\n }).then(response => {\n if (response.processing) {\n jumpToQueue();\n } else {\n const extensionId = response.id;\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_install', {\n extension: extensionId\n }));\n window.location.href = \"\".concat(app.forum.attribute('adminUrl'), \"#/extension/\").concat(extensionId);\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n checkForUpdates() {\n this.setLoading('check');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/check-for-updates\")\n }).then(response => {\n if (response.processing) {\n jumpToQueue();\n } else {\n this.lastUpdateCheck = response;\n this.extensionUpdates = this.formatExtensionUpdates(response);\n this.coreUpdate = this.formatCoreUpdate(response);\n this.setLoading(null);\n m.redraw();\n }\n }).catch(errorHandler).finally(() => {\n m.redraw();\n });\n }\n updateCoreMinor() {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.minor_update_confirmation.content')))) {\n app.modal.show(LoadingModal);\n this.setLoading('minor-update');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/minor-update\")\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n }\n updateExtension(extension, updateMode) {\n app.modal.show(LoadingModal);\n this.setLoading('extension-update');\n app.request({\n method: 'PATCH',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions/\").concat(extension.id),\n body: {\n data: {\n updateMode\n }\n }\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_update', {\n extension: extension.extra['flarum-extension'].title\n }));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.setLoading('global-update');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/global-update\")\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.updater.global_update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n formatExtensionUpdates(lastUpdateCheck) {\n var _lastUpdateCheck$upda;\n this.packageUpdates = {};\n lastUpdateCheck == null || (_lastUpdateCheck$upda = lastUpdateCheck.updates) == null || (_lastUpdateCheck$upda = _lastUpdateCheck$upda.installed) == null || _lastUpdateCheck$upda.filter(composerPackage => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n return extension && safeToUpdate;\n });\n return Object.values(app.data.extensions).filter(extension => this.packageUpdates[extension.id]);\n }\n formatCoreUpdate(lastUpdateCheck) {\n var _lastUpdateCheck$upda2;\n const core = lastUpdateCheck == null || (_lastUpdateCheck$upda2 = lastUpdateCheck.updates) == null || (_lastUpdateCheck$upda2 = _lastUpdateCheck$upda2.installed) == null ? void 0 : _lastUpdateCheck$upda2.filter(composerPackage => composerPackage.name === 'flarum/core').pop();\n if (!core) return null;\n return {\n package: core,\n extension: {\n id: 'flarum-core',\n name: 'flarum/core',\n version: app.data.settings.version,\n icon: {\n name: '',\n // @ts-ignore\n backgroundImage: \"url(\".concat(app.data.resources[0]['attributes']['baseUrl'], \"/assets/extensions/flarum-extension-manager/flarum.svg\")\n },\n extra: {\n 'flarum-extension': {\n title: extractText(app.translator.trans('flarum-extension-manager.admin.updater.flarum'))\n }\n },\n links: {}\n }\n };\n }\n majorUpdate(_ref) {\n let {\n dryRun\n } = _ref;\n app.extensionManager.control.setLoading(dryRun ? 'major-update-dry-run' : 'major-update');\n app.modal.show(LoadingModal);\n const updateState = this.lastUpdateRun.major;\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/major-update\"),\n body: {\n data: {\n dryRun\n }\n }\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).catch(e => {\n var _e$response;\n app.modal.close();\n updateState.status = 'failure';\n updateState.incompatibleExtensions = (_e$response = e.response) == null || (_e$response = _e$response.errors) == null || (_e$response = _e$response.pop()) == null ? void 0 : _e$response.incompatible_extensions;\n }).finally(() => {\n m.redraw();\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ControlSectionState', ControlSectionState);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/states/PaginatedListState');","import app from 'flarum/admin/app';\nimport PaginatedListState from 'flarum/common/states/PaginatedListState';\nexport default class ExtensionListState extends PaginatedListState {\n get type() {\n return 'external-extensions';\n }\n constructor() {\n super({\n sort: '-downloads'\n }, 1, 12);\n }\n sortMap() {\n return {\n '-createdAt': {\n sort: '-createdAt',\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.sort.latest', {}, true)\n },\n '-downloads': {\n sort: '-downloads',\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.sort.top', {}, true)\n }\n };\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ExtensionListState', ExtensionListState);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport QueueState from './QueueState';\nimport ControlSectionState from './ControlSectionState';\nimport ExtensionListState from './ExtensionListState';\nexport default class ExtensionManagerState {\n constructor() {\n _defineProperty(this, \"queue\", new QueueState());\n _defineProperty(this, \"control\", new ControlSectionState());\n _defineProperty(this, \"extensions\", new ExtensionListState());\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ExtensionManagerState', ExtensionManagerState);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Component');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/LoadingIndicator');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Tooltip');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Icon');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/ItemList');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Link');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Pagination');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/classList');","import Component from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nexport default class Label extends Component {\n view(vnode) {\n const {\n className,\n type,\n ...attrs\n } = this.attrs;\n return m(\"span\", Object.assign({\n className: classList(['Label', \"Label--\".concat(this.attrs.type), className])\n }, attrs), vnode.children);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Label', Label);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Modal');","import app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nexport default class TaskOutputModal extends Modal {\n className() {\n return 'Modal--large QuickModal';\n }\n title() {\n return app.translator.trans(\"flarum-extension-manager.admin.sections.queue.operations.\".concat(this.attrs.task.operation()));\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(\"div\", {\n className: \"TaskOutputModal-data\"\n }, this.attrs.task.status() === 'failure' && m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.guessed_cause')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-guessed-cause\"\n }, this.attrs.task.guessedCause() && app.translator.trans('flarum-extension-manager.admin.exceptions.guessed_cause.' + this.attrs.task.guessedCause()) || app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.cause_unknown'))), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.command')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-command\"\n }, m(\"code\", null, \"$ composer \", this.attrs.task.command()))), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.output')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-output\"\n }, m(\"code\", null, m(\"pre\", null, this.attrs.task.output()))))));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/TaskOutputModal', TaskOutputModal);","import duration from 'dayjs/plugin/duration';\nexport default function humanDuration(start, end) {\n dayjs.extend(duration);\n const durationTime = dayjs(end).diff(start);\n return dayjs.duration(durationTime).humanize();\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/humanDuration', humanDuration);","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Icon from 'flarum/common/components/Icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\nimport Link from 'flarum/common/components/Link';\nimport Pagination from 'flarum/common/components/Pagination';\nimport classList from 'flarum/common/utils/classList';\nimport Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nexport default class QueueSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n app.extensionManager.queue.load();\n }\n view() {\n return m(\"section\", {\n id: \"ExtensionManager-queueSection\",\n className: \"ExtensionPage-settings ExtensionManager-queueSection\"\n }, m(\"div\", {\n className: \"ExtensionPage-permissions-header ExtensionManager-queueSection-header\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"h2\", {\n className: \"ExtensionTitle\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.queue.title')), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-sync-alt\",\n onclick: () => app.extensionManager.queue.load(),\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.sections.queue.refresh'),\n disabled: app.extensionManager.control.isLoading()\n }))), m(\"div\", {\n className: \"container\"\n }, this.queueTable()));\n }\n columns() {\n const items = new ItemList();\n items.add('operation', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.operation')),\n content: task => m(\"div\", {\n className: \"ExtensionManager-queueTable-operation\"\n }, m(\"span\", {\n className: \"ExtensionManager-queueTable-operation-icon\"\n }, this.operationIcon(task.operation())), m(\"span\", {\n className: \"ExtensionManager-queueTable-operation-name\"\n }, app.translator.trans(\"flarum-extension-manager.admin.sections.queue.operations.\".concat(task.operation()))))\n }, 80);\n items.add('package', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.package')),\n content: task => {\n var _task$package;\n const extension = app.data.extensions[(_task$package = task.package()) == null ? void 0 : _task$package.replace(/(\\/flarum-|\\/flarum-ext-|\\/)/g, '-')];\n return extension ? m(Link, {\n className: \"ExtensionManager-queueTable-package\",\n href: app.route('extension', {\n id: extension.id\n })\n }, m(\"div\", {\n className: \"ExtensionManager-queueTable-package-icon ExtensionIcon\",\n style: extension.icon\n }, !!extension.icon && m(Icon, {\n name: extension.icon.name\n })), m(\"div\", {\n className: \"ExtensionManager-queueTable-package-details\"\n }, m(\"span\", {\n className: \"ExtensionManager-queueTable-package-title\"\n }, extension.extra['flarum-extension'].title), m(\"span\", {\n className: \"ExtensionManager-queueTable-package-name\"\n }, task.package()))) : task.package();\n }\n }, 75);\n items.add('status', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.status')),\n content: task => m('[', null, m(Label, {\n className: \"ExtensionManager-queueTable-status\",\n type: {\n running: 'neutral',\n failure: 'error',\n pending: 'warning',\n success: 'success'\n }[task.status()]\n }, app.translator.trans(\"flarum-extension-manager.admin.sections.queue.statuses.\".concat(task.status()))), ['pending', 'running'].includes(task.status()) && m(LoadingIndicator, {\n size: \"small\",\n display: \"inline\"\n }))\n }, 70);\n items.add('elapsedTime', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.elapsed_time')),\n content: task => !task.startedAt() || !task.finishedAt() ? app.translator.trans('flarum-extension-manager.admin.sections.queue.task_just_started') : m(Tooltip, {\n text: \"\".concat(dayjs(task.startedAt()).format('LL LTS'), \" \").concat(dayjs(task.finishedAt()).format('LL LTS'))\n }, m(\"span\", null, humanDuration(task.startedAt(), task.finishedAt())))\n }, 65);\n items.add('memoryUsed', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.peak_memory_used')),\n content: task => m(\"span\", null, task.peakMemoryUsed())\n }, 60);\n items.add('details', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.details')),\n content: task => m(Button, {\n className: \"Button Button--icon Table-controls-item\",\n icon: \"fas fa-file-alt\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.details')\n // @todo fix in core\n // @ts-ignore\n ,\n onclick: () => app.modal.show(TaskOutputModal, {\n task\n }),\n disabled: ['pending', 'running'].includes(task.status())\n }),\n className: 'Table-controls'\n }, 55);\n return items;\n }\n queueTable() {\n const tasks = app.extensionManager.queue.getItems();\n if (!tasks) {\n return m(LoadingIndicator, null);\n }\n if (tasks && !tasks.length) {\n return m(\"h3\", {\n className: \"ExtensionPage-subHeader\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.queue.none'));\n }\n const columns = this.columns();\n return m('[', null, m(\"div\", {\n className: classList('Table-container', {\n 'loading-container': tasks && app.extensionManager.queue.isLoading()\n })\n }, m(\"table\", {\n className: \"Table ExtensionManager-queueTable\"\n }, m(\"thead\", null, m(\"tr\", null, columns.toArray().map((item, index) => m(\"th\", {\n key: index\n }, item.label)))), m(\"tbody\", null, tasks.map((task, index) => m(\"tr\", {\n key: index\n }, columns.toArray().map((item, index) => {\n const {\n label,\n content,\n ...attrs\n } = item;\n return m(\"td\", Object.assign({\n key: index\n }, attrs), content(task));\n }))))), tasks && app.extensionManager.queue.isLoading() && m(LoadingIndicator, {\n size: \"large\"\n })), m(Pagination, {\n total: app.extensionManager.queue.getTotalItems(),\n currentPage: app.extensionManager.queue.pageNumber() + 1,\n perPage: app.extensionManager.queue.getPerPage(),\n onChange: page => app.extensionManager.queue.goto(page)\n }));\n }\n operationIcon(operation) {\n return m(Icon, {\n name: {\n update_check: 'fas fa-sync-alt',\n update_major: 'fas fa-play',\n update_minor: 'fas fa-play',\n update_global: 'fas fa-play',\n extension_install: 'fas fa-download',\n extension_remove: 'fas fa-times',\n extension_update: 'fas fa-arrow-alt-circle-up',\n why_not: 'fas fa-exclamation-circle'\n }[operation]\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/QueueSection', QueueSection);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Alert');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/Stream');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nexport default class Installer extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"packageName\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.packageName = Stream('');\n }\n view() {\n return m(\"div\", {\n className: \"Form-group ExtensionManager-installer\"\n }, m(\"label\", {\n htmlFor: \"install-extension\"\n }, app.translator.trans('flarum-extension-manager.admin.extensions.install')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.extensions.install_help', {\n link: m(\"a\", {\n href: \"https://flarum.org/extensions\"\n }, \"flarum.org\"),\n semantic_link: m(\"a\", {\n href: \"https://devhints.io/semver\"\n }),\n code: m(\"code\", null)\n })), m(\"div\", {\n className: \"FormControl-container\"\n }, m(\"input\", {\n className: \"FormControl\",\n id: \"install-extension\",\n placeholder: \"vendor/package-name\",\n bidi: this.packageName\n }), m(Button, {\n className: \"Button\",\n icon: \"fas fa-download\",\n onclick: this.onsubmit.bind(this),\n loading: app.extensionManager.control.isLoading('extension-install'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.extensions.proceed'))));\n }\n data() {\n return {\n package: this.packageName()\n };\n }\n onsubmit() {\n app.extensionManager.control.requirePackage(this.data());\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Installer', Installer);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/humanTime');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport errorHandler from '../utils/errorHandler';\nexport default class WhyNotModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"loading\", true);\n _defineProperty(this, \"whyNot\", null);\n }\n className() {\n return 'Modal--large WhyNotModal';\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.why_not_modal.title');\n }\n oncreate(vnode) {\n super.oncreate(vnode);\n this.requestWhyNot();\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, this.loading ? m(LoadingIndicator, null) : m(\"pre\", {\n className: \"WhyNotModal-contents\"\n }, this.whyNot));\n }\n requestWhyNot() {\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/why-not\"),\n body: {\n data: {\n package: this.attrs.package\n }\n }\n }).then(response => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n }).catch(errorHandler);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/WhyNotModal', WhyNotModal);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/formatAmount');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Model');","export let VersionStability = /*#__PURE__*/function (VersionStability) {\n VersionStability[\"Stable\"] = \"stable\";\n VersionStability[\"Alpha\"] = \"alpha\";\n VersionStability[\"Beta\"] = \"beta\";\n VersionStability[\"RC\"] = \"rc\";\n VersionStability[\"Dev\"] = \"dev\";\n return VersionStability;\n}({});\nexport function isProductionReady(version) {\n return [VersionStability.Stable, VersionStability.RC].includes(stability(version));\n}\nexport function stability(version) {\n const split = version.split('-');\n if (split.length === 1) {\n return VersionStability.Stable;\n }\n const stab = split[1].split('.')[0].toLowerCase();\n switch (stab) {\n case 'alpha':\n return VersionStability.Alpha;\n case 'beta':\n return VersionStability.Beta;\n case 'rc':\n return VersionStability.RC;\n default:\n return VersionStability.Dev;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/versions', { VersionStability: VersionStability,isProductionReady: isProductionReady,stability: stability, });","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Model from 'flarum/common/Model';\nimport app from 'flarum/admin/app';\nimport { isProductionReady } from '../utils/versions';\nexport default class ExternalExtension extends Model {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"extensionId\", Model.attribute('extensionId'));\n _defineProperty(this, \"name\", Model.attribute('name'));\n _defineProperty(this, \"title\", Model.attribute('title'));\n _defineProperty(this, \"description\", Model.attribute('description'));\n _defineProperty(this, \"iconUrl\", Model.attribute('iconUrl'));\n _defineProperty(this, \"icon\", Model.attribute('icon'));\n _defineProperty(this, \"highestVersion\", Model.attribute('highestVersion'));\n _defineProperty(this, \"httpUri\", Model.attribute('httpUri'));\n _defineProperty(this, \"discussUri\", Model.attribute('discussUri'));\n _defineProperty(this, \"vendor\", Model.attribute('vendor'));\n _defineProperty(this, \"isPremium\", Model.attribute('isPremium'));\n _defineProperty(this, \"isLocale\", Model.attribute('isLocale'));\n _defineProperty(this, \"locale\", Model.attribute('locale'));\n _defineProperty(this, \"latestFlarumVersionSupported\", Model.attribute('latestFlarumVersionSupported'));\n _defineProperty(this, \"downloads\", Model.attribute('downloads'));\n _defineProperty(this, \"installed\", false);\n }\n isSupported() {\n const currentVersion = app.data.settings.version;\n const latestCompatibleVersion = this.latestFlarumVersionSupported();\n\n // If stability is not the same, it's not compatible.\n if (currentVersion.split('-')[1] !== latestCompatibleVersion.split('-')[1]) {\n return false;\n }\n\n // Minor versions are compatible.\n return currentVersion.split('.')[0] === latestCompatibleVersion.split('.')[0];\n }\n isProductionReady() {\n return isProductionReady(this.highestVersion());\n }\n toLocalExtension() {\n return {\n id: this.extensionId(),\n name: this.name(),\n version: this.highestVersion(),\n description: this.description(),\n icon: this.icon() || {\n name: 'fas fa-box-open',\n backgroundColor: '#117187',\n color: '#fff'\n },\n links: {\n discuss: this.discussUri(),\n website: this.httpUri()\n },\n extra: {\n 'flarum-extension': {\n title: this.title()\n }\n }\n };\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/models/ExternalExtension', ExternalExtension);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Dropdown');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/LinkButton');","import Component from 'flarum/common/Component';\nimport Icon from 'flarum/common/components/Icon';\nimport Badge from 'flarum/common/components/Badge';\nimport app from 'flarum/admin/app';\nimport Button from 'flarum/common/components/Button';\nimport formatAmount from 'flarum/common/utils/formatAmount';\nimport ExternalExtension from '../models/ExternalExtension';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport classList from 'flarum/common/utils/classList';\nimport Label from './Label';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport WhyNotModal from './WhyNotModal';\nimport LinkButton from 'flarum/common/components/LinkButton';\nexport default class ExtensionCard extends Component {\n getExtension() {\n return this.attrs.extension instanceof ExternalExtension ? this.attrs.extension.toLocalExtension() : this.attrs.extension;\n }\n view() {\n const extension = this.getExtension();\n const {\n isCore,\n isDanger\n } = this.attrs;\n return m(\"div\", {\n className: classList('ExtensionCard', {\n 'ExtensionCard--core': isCore,\n 'ExtensionCard--danger': isDanger\n })\n }, m(\"div\", {\n className: \"ExtensionCard-header\"\n }, this.icon(), m(Tooltip, {\n text: extension.name\n }, m(\"h4\", null, extension.extra['flarum-extension'].title)), this.attrs.extension instanceof ExternalExtension && m(\"div\", {\n className: \"ExtensionCard-badges\"\n }, this.badges().toArray()), m(\"div\", {\n className: \"ExtensionCard-actions\"\n }, this.actionItems().toArray())), m(\"div\", {\n className: \"ExtensionCard-body\"\n }, m(\"p\", null, extension.description)), m(\"div\", {\n className: \"ExtensionCard-footer\"\n }, m(\"div\", {\n className: \"ExtensionCard-meta\"\n }, this.metaItems().toArray())));\n }\n icon() {\n var _extension$icon, _extension$icon2;\n const extension = this.getExtension();\n if (this.attrs.extension instanceof ExternalExtension && extension.id in app.data.extensions) {\n extension.icon = app.data.extensions[extension.id].icon;\n }\n const style = extension.icon || {};\n if (!((_extension$icon = extension.icon) != null && _extension$icon.name) && this.attrs.extension instanceof ExternalExtension && !(extension.id in app.data.extensions) && this.attrs.extension.iconUrl()) {\n style.backgroundImage = \"url(\".concat(this.attrs.extension.iconUrl(), \")\");\n }\n return m(\"span\", {\n className: \"ExtensionIcon\",\n style: extension.icon\n }, (_extension$icon2 = extension.icon) != null && _extension$icon2.name ? m(Icon, {\n name: extension.icon.name\n }) : null);\n }\n badges() {\n const items = new ItemList();\n const extension = this.attrs.extension;\n if (extension.isSupported()) {\n items.add('compatible', m(Badge, {\n icon: \"fas fa-check\",\n type: \"success\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.compatible'),\n className: \"Badge--flat Badge--square\"\n }));\n } else {\n items.add('incompatible', m(Badge, {\n icon: \"fas fa-times\",\n type: \"danger\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.incompatible'),\n className: \"Badge--flat Badge--square\"\n }));\n }\n if (extension.isPremium()) {\n items.add('premium', m(Badge, {\n icon: \"fas fa-dollar-sign\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.premium'),\n className: \"ExtensionCard-badge--premium Badge--flat Badge--square\"\n }));\n }\n if (!extension.isProductionReady()) {\n items.add('unstable', m(Badge, {\n icon: \"fas fa-flask\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.unstable'),\n className: \"Badge--flat Badge--square Badge--danger\"\n }));\n }\n if (extension.name().split('/')[0] === 'fof') {\n items.add('fof', m(Badge, {\n icon: \"fas fa-users\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.fof'),\n className: \"Badge--flat Badge--square\"\n }));\n }\n if (extension.name().split('/')[0] === 'flarum') {\n items.add('flarum', m(Badge, {\n icon: \"fab fa-flarum\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.badges.flarum'),\n className: \"ExtensionCard-badge--flarum Badge--flat Badge--square\"\n }));\n }\n return items;\n }\n metaItems() {\n var _updates$latestMinor;\n const items = new ItemList();\n const {\n updates,\n isCore\n } = this.attrs;\n const latestVersion = updates ? (_updates$latestMinor = updates['latest-minor']) != null ? _updates$latestMinor : updates['latest-major'] && !isCore ? updates['latest-major'] : null : null;\n if (this.attrs.extension instanceof ExternalExtension) {\n items.add('downloads', m(\"span\", null, m(Icon, {\n name: \"fas fa-circle-down\"\n }), app.translator.trans('flarum-extension-manager.admin.sections.discover.extension.downloads', {\n count: this.attrs.extension.downloads(),\n formattedCount: formatAmount(this.attrs.extension.downloads())\n })));\n } else {\n items.add('version', m(\"div\", {\n className: \"ExtensionCard-version\"\n }, m(\"span\", {\n className: \"ExtensionCard-version-current\"\n }, this.version(updates['version'])), latestVersion ? m('[', null, m(Icon, {\n name: \"fas fa-arrow-right\"\n }), m(Label, {\n className: \"ExtensionCard-version-latest\",\n type: updates['latest-minor'] ? 'success' : 'warning'\n }, this.version(latestVersion))) : null));\n }\n if (this.attrs.extension instanceof ExternalExtension) {\n items.add('version', m(\"div\", {\n className: \"ExtensionCard-version\"\n }, \"v\", this.version(this.attrs.extension.highestVersion())));\n items.add('link', m(LinkButton, {\n className: \"Button Button--ua-reset Button--link Button--icon\",\n href: this.attrs.extension.httpUri(),\n target: \"_blank\",\n icon: \"fas fa-external-link-alt\",\n external: true\n }));\n }\n return items;\n }\n actionItems() {\n const items = new ItemList();\n const {\n updates,\n extension,\n onClickUpdate,\n whyNotWarning\n } = this.attrs;\n if (extension instanceof ExternalExtension) {\n if (!(extension.extensionId() in app.data.extensions)) {\n items.add('install', m(Button, {\n className: \"Button Button--icon Button--flat\",\n icon: \"fas fa-cloud-arrow-down\",\n onclick: () => {\n app.extensionManager.control.requirePackage({\n package: extension.name()\n });\n }\n }));\n } else {\n items.add('installed', m(Button, {\n className: \"Button Button--icon Button--flat Button--success\",\n icon: \"fas fa-check-circle\",\n disabled: true\n }));\n }\n } else {\n if (onClickUpdate && typeof onClickUpdate === 'function') {\n items.add('update', m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-cloud-arrow-down\",\n className: \"Button Button--icon Button--flat\",\n onclick: onClickUpdate,\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.extensions.update')\n })));\n } else if (onClickUpdate) {\n items.add('update', m(Dropdown, {\n buttonClassName: \"Button Button--icon Button--flat\",\n icon: \"fas fa-ellipsis\",\n label: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-cloud-arrow-down\",\n onclick: onClickUpdate.soft\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_soft_label')), m(Button, {\n icon: \"fas fa-rotate\",\n onclick: onClickUpdate.hard,\n disabled: !updates['direct-dependency']\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_hard_label'))));\n }\n if (whyNotWarning) items.add('whyNot', m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.extensions.check_why_it_failed_updating')\n }, m(Button, {\n icon: \"fas fa-exclamation-circle\",\n className: \"Button Button--icon Button--flat Button--danger\",\n onclick: () => app.modal.show(WhyNotModal, {\n package: extension.name\n }),\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.extensions.check_why_it_failed_updating')\n })));\n }\n return items;\n }\n version(v) {\n return v.charAt(0) === 'v' ? v.substring(1) : v;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ExtensionCard', ExtensionCard);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Alert from 'flarum/common/components/Alert';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionCard from './ExtensionCard';\nimport classList from 'flarum/common/utils/classList';\nexport default class MajorUpdater extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"updateState\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.updateState = this.attrs.updateState;\n }\n view() {\n return m(\"div\", {\n className: classList('Form-group Form-group--danger ExtensionManager-majorUpdate', {\n 'ExtensionManager-majorUpdate--failed': this.updateState.status === 'failure',\n 'ExtensionManager-majorUpdate--incompatibleExtensions': this.updateState.incompatibleExtensions.length\n })\n }, m(\"img\", {\n alt: \"flarum logo\",\n src: app.forum.attribute('baseUrl') + '/assets/extensions/flarum-extension-manager/flarum.svg'\n }), m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.major_updater.title', {\n version: this.attrs.coreUpdate['latest-major']\n })), m(\"p\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.description')), m(\"div\", {\n className: \"ExtensionManager-updaterControls\"\n }, m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.major_updater.dry_run_help')\n }, m(Button, {\n className: \"Button\",\n icon: \"fas fa-vial\",\n onclick: this.update.bind(this, true),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.dry_run'))), m(Button, {\n className: \"Button Button--danger\",\n icon: \"fas fa-play\",\n onclick: this.update.bind(this, false),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.update'))), this.updateState.incompatibleExtensions.length ? m(\"div\", {\n className: \"ExtensionManager-majorUpdate-incompatibleExtensions ExtensionManager-extensions-grid\"\n }, this.updateState.incompatibleExtensions.map(extension => m(ExtensionCard, {\n extension: app.data.extensions[extension.replace('flarum-', '').replace('flarum-ext-', '').replace('/', '-')],\n updates: {},\n onClickUpdate: null,\n isDanger: true\n }))) : null, this.updateState.status === 'failure' ? m(Alert, {\n type: \"error\",\n className: \"ExtensionManager-majorUpdate-failure\",\n dismissible: false,\n controls: [m(Button, {\n className: \"Button Button--text ExtensionManager-majorUpdate-failure-details\",\n icon: \"fas fa-question-circle\",\n onclick: () => app.modal.show(WhyNotModal, {\n package: 'flarum/core'\n })\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.failure.why'))]\n }, m(\"p\", {\n className: \"ExtensionManager-majorUpdate-failure-desc\"\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.failure.desc'))) : null);\n }\n update(dryRun) {\n app.extensionManager.control.majorUpdate({\n dryRun\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/MajorUpdater', MajorUpdater);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/InfoTile');","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport InfoTile from 'flarum/common/components/InfoTile';\nimport ExtensionCard from './ExtensionCard';\nimport { isProductionReady } from '../utils/versions';\nexport default class Updater extends Component {\n view() {\n const core = app.extensionManager.control.coreUpdate;\n return [m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.updater.updater_title')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.updater_help')), this.lastUpdateCheckView(), m(\"div\", {\n className: \"ExtensionManager-updaterControls\"\n }, this.controlItems().toArray()), this.availableUpdatesView()), core && core.package['latest-major'] && isProductionReady(core.package['latest-major']) ? m(MajorUpdater, {\n coreUpdate: core.package,\n updateState: app.extensionManager.control.lastUpdateRun.major\n }) : null];\n }\n lastUpdateCheckView() {\n var _app$extensionManager;\n return ((_app$extensionManager = app.extensionManager.control.lastUpdateCheck) == null ? void 0 : _app$extensionManager.checkedAt) && m(\"p\", {\n className: \"ExtensionManager-lastUpdatedAt\"\n }, m(\"span\", {\n className: \"ExtensionManager-lastUpdatedAt-label\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.last_update_checked_at')), m(\"span\", {\n className: \"ExtensionManager-lastUpdatedAt-value\"\n }, humanTime(app.extensionManager.control.lastUpdateCheck.checkedAt))) || null;\n }\n availableUpdatesView() {\n const state = app.extensionManager.control;\n if (app.extensionManager.control.isLoading('check') || app.extensionManager.control.isLoading('global-update')) {\n return m(\"div\", {\n className: \"ExtensionManager-extensions\"\n }, m(LoadingIndicator, null));\n }\n const hasMinorCoreUpdate = state.coreUpdate && state.coreUpdate.package['latest-minor'];\n if (!(state.extensionUpdates.length || hasMinorCoreUpdate)) {\n return m(\"div\", {\n className: \"ExtensionManager-extensions ExtensionManager-extensions--empty\"\n }, m(InfoTile, {\n icon: \"fas fa-plug-circle-check\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.up_to_date')));\n }\n return m(\"div\", {\n className: \"ExtensionManager-extensions\"\n }, m(\"div\", {\n className: \"ExtensionManager-extensions-grid\"\n }, hasMinorCoreUpdate ? m(ExtensionCard, {\n extension: state.coreUpdate.extension,\n updates: state.coreUpdate.package,\n isCore: true,\n onClickUpdate: () => state.updateCoreMinor(),\n whyNotWarning: state.lastUpdateRun.limitedPackages().includes('flarum/core')\n }) : null, state.extensionUpdates.map(extension => m(ExtensionCard, {\n extension: extension,\n updates: state.packageUpdates[extension.id],\n onClickUpdate: {\n soft: () => state.updateExtension(extension, 'soft'),\n hard: () => state.updateExtension(extension, 'hard')\n },\n whyNotWarning: state.lastUpdateRun.limitedPackages().includes(extension.name)\n }))));\n }\n controlItems() {\n const items = new ItemList();\n items.add('updateCheck', m(Button, {\n className: \"Button\",\n icon: \"fas fa-sync-alt\",\n onclick: () => app.extensionManager.control.checkForUpdates(),\n loading: app.extensionManager.control.isLoading('check'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.updater.check_for_updates')), 100);\n items.add('globalUpdate', m(Button, {\n className: \"Button\",\n icon: \"fas fa-play\",\n onclick: () => app.extensionManager.control.updateGlobally(),\n loading: app.extensionManager.control.isLoading('global-update'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.updater.run_global_update')));\n return items;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Updater', Updater);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Form');","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Installer from './Installer';\nimport Updater from './Updater';\nimport Form from 'flarum/common/components/Form';\nexport default class ControlSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n }\n view() {\n return m(\"div\", {\n className: \"ExtensionPage-settings ExtensionManager-controlSection\"\n }, m(\"div\", {\n className: \"container\"\n }, app.data['flarum-extension-manager.writable_dirs'] ? m(Form, null, m(Installer, null), m(Updater, null)) : m(\"div\", {\n className: \"Form-group\"\n }, m(Alert, {\n type: \"warning\",\n dismissible: false\n }, app.translator.trans('flarum-extension-manager.admin.file_permissions')))));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ControlSection', ControlSection);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/FormGroup');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport FormGroup from 'flarum/common/components/FormGroup';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nexport default class ConfigureJson extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"settings\", {});\n _defineProperty(this, \"initialSettings\", null);\n _defineProperty(this, \"loading\", false);\n _defineProperty(this, \"type\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.submit(true);\n }\n className() {\n return '';\n }\n view() {\n return m(\"div\", {\n className: classList('FormSection', this.className())\n }, m(\"label\", null, this.title()), this.content(), m(\"div\", {\n className: \"Form-group Form-controls\"\n }, this.submitButton()));\n }\n submitButton() {\n return [m(Button, {\n className: \"Button Button--primary\",\n loading: this.loading,\n onclick: () => this.submit(false),\n disabled: !this.isDirty()\n }, app.translator.trans('core.admin.settings.submit_button'))];\n }\n customSettingComponents() {\n return FormGroup.prototype.customFieldComponents();\n }\n setting(key) {\n var _this$settings$key;\n return (_this$settings$key = this.settings[key]) != null ? _this$settings$key : this.settings[key] = Stream();\n }\n submit(readOnly) {\n this.loading = true;\n const configuration = {};\n Object.keys(this.settings).forEach(key => {\n configuration[key] = this.settings[key]();\n });\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/extension-manager/composer',\n body: {\n type: this.type,\n data: readOnly ? null : configuration\n }\n }).then(_ref => {\n let {\n data\n } = _ref;\n Object.keys(data).forEach(key => {\n this.settings[key] = Stream(data[key]);\n });\n this.initialSettings = Array.isArray(data) ? {} : data;\n }).finally(() => {\n this.loading = false;\n m.redraw();\n });\n }\n isDirty() {\n return JSON.stringify(this.initialSettings) !== JSON.stringify(this.settings);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureJson', ConfigureJson);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Select');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Modal from 'flarum/common/components/Modal';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport Form from 'flarum/common/components/Form';\nexport default class RepositoryModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"repository\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.name = Stream(this.attrs.name || '');\n this.repository = Stream(this.attrs.repository || {\n type: 'composer',\n url: ''\n });\n }\n className() {\n return 'RepositoryModal Modal--small';\n }\n title() {\n const context = this.attrs.repository ? 'edit' : 'add';\n return app.translator.trans(\"flarum-extension-manager.admin.composer.\".concat(context, \"_repository_label\"));\n }\n content() {\n const types = {\n composer: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.composer'),\n vcs: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.vcs'),\n path: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.path')\n };\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, null, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.name_label')), m(\"input\", {\n className: \"FormControl\",\n bidi: this.name\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.type_label')), m(Select, {\n options: types,\n value: this.repository().type,\n onchange: value => this.repository({\n ...this.repository(),\n type: value\n })\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.url')), m(\"input\", {\n className: \"FormControl\",\n onchange: e => this.repository({\n ...this.repository(),\n url: e.target.value\n }),\n value: this.repository().url\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(Button, {\n className: \"Button Button--primary\",\n onclick: this.submit.bind(this)\n }, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.submit_button')))));\n }\n submit() {\n this.attrs.onsubmit(this.repository(), this.name());\n this.hide();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/RepositoryModal', RepositoryModal);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport ConfigureJson from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport RepositoryModal from './RepositoryModal';\nexport default class ConfigureComposer extends ConfigureJson {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", 'composer');\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.composer.title');\n }\n className() {\n return 'ConfigureComposer';\n }\n content() {\n return m(\"div\", {\n className: \"Form ExtensionManager-SettingsGroups-content\"\n }, this.attrs.buildSettingComponent.call(this, {\n setting: 'minimum-stability',\n label: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.label'),\n help: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.help'),\n type: 'select',\n options: {\n stable: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.stable'),\n RC: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.rc'),\n beta: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.beta'),\n alpha: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.alpha'),\n dev: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.dev')\n }\n }), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.label')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.composer.repositories.help')), m(\"div\", {\n className: \"ConfigureComposer-repositories\"\n }, Object.keys(this.setting('repositories')() || {}).map(name => {\n const repository = this.setting('repositories')()[name];\n return m(\"div\", {\n className: \"ButtonGroup ButtonGroup--full\"\n }, m(Button, {\n className: \"Button\",\n icon: {\n composer: 'fas fa-cubes',\n vcs: 'fas fa-code-branch',\n path: 'fas fa-folder'\n }[repository.type],\n onclick: () => app.modal.show(RepositoryModal, {\n name,\n repository,\n onsubmit: (repository, newName) => {\n const repositories = this.setting('repositories')();\n delete repositories[name];\n this.setting('repositories')(repositories);\n this.onchange(repository, newName);\n }\n })\n }, name, \" (\", repository.type, \")\"), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-trash\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.composer.delete_repository_label'),\n onclick: () => {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.composer.delete_repository_confirmation')))) {\n const repositories = {\n ...this.setting('repositories')()\n };\n delete repositories[name];\n this.setting('repositories')(repositories);\n }\n }\n }));\n }))));\n }\n submitButton() {\n const items = super.submitButton();\n items.push(m(Button, {\n className: \"Button\",\n onclick: () => app.modal.show(RepositoryModal, {\n onsubmit: this.onchange.bind(this)\n })\n }, app.translator.trans('flarum-extension-manager.admin.composer.add_repository_label')));\n return items;\n }\n onchange(repository, name) {\n this.setting('repositories')({\n ...this.setting('repositories')(),\n [name]: repository\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureComposer', ConfigureComposer);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Modal from 'flarum/common/components/Modal';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport Form from 'flarum/common/components/Form';\nexport default class AuthMethodModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"host\", void 0);\n _defineProperty(this, \"token\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.type = Stream(this.attrs.type || 'bearer');\n this.host = Stream(this.attrs.host || '');\n this.token = Stream(this.attrs.token || '');\n }\n className() {\n return 'AuthMethodModal Modal--small';\n }\n title() {\n const context = this.attrs.host ? 'edit' : 'add';\n return app.translator.trans(\"flarum-extension-manager.admin.auth_config.\".concat(context, \"_label\"));\n }\n content() {\n const types = {\n 'github-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.github-oauth'),\n 'gitlab-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-oauth'),\n 'gitlab-token': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-token'),\n bearer: app.translator.trans('flarum-extension-manager.admin.auth_config.types.bearer')\n };\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, null, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.type_label')), m(Select, {\n options: types,\n value: this.type(),\n onchange: this.type\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.host_label')), m(\"input\", {\n className: \"FormControl\",\n bidi: this.host,\n placeholder: app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.host_placeholder')\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.token_label')), m(\"textarea\", {\n className: \"FormControl\",\n oninput: e => this.token(e.target.value),\n rows: \"6\",\n placeholder: this.token().startsWith('unchanged:') ? extractText(app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.unchanged_token_placeholder')) : ''\n }, this.token().startsWith('unchanged:') ? '' : this.token())), m(\"div\", {\n className: \"Form-group\"\n }, m(Button, {\n className: \"Button Button--primary\",\n onclick: this.submit.bind(this)\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.submit_button')))));\n }\n submit() {\n this.attrs.onsubmit(this.type(), this.host(), this.token());\n this.hide();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/AuthMethodModal', AuthMethodModal);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport ConfigureJson from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport AuthMethodModal from './AuthMethodModal';\nimport extractText from 'flarum/common/utils/extractText';\nexport default class ConfigureAuth extends ConfigureJson {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", 'auth');\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.auth_config.title');\n }\n className() {\n return 'ConfigureAuth';\n }\n content() {\n const authSettings = Object.keys(this.settings);\n const hasAuthSettings = authSettings.length && authSettings.every(type => {\n const data = this.settings[type]();\n return Array.isArray(data) ? data.length : Object.keys(data).length;\n });\n return m(\"div\", {\n className: \"ExtensionManager-SettingsGroups-content\"\n }, hasAuthSettings ? authSettings.map(type => {\n const hosts = this.settings[type]();\n return m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans(\"flarum-extension-manager.admin.auth_config.types.\".concat(type))), m(\"div\", {\n className: \"ConfigureAuth-hosts\"\n }, Object.keys(hosts).map(host => {\n const data = hosts[host];\n return m(\"div\", {\n className: \"ButtonGroup ButtonGroup--full\"\n }, m(Button, {\n className: \"Button\",\n icon: \"fas fa-key\",\n onclick: () => app.modal.show(AuthMethodModal, {\n type,\n host,\n token: data,\n onsubmit: this.onchange.bind(this, host)\n })\n }, host), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-trash\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.auth_config.delete_label'),\n onclick: () => {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.auth_config.delete_confirmation')))) {\n const newType = {\n ...this.setting(type)()\n };\n delete newType[host];\n if (Object.keys(newType).length) {\n this.setting(type)(newType);\n } else {\n delete this.settings[type];\n }\n }\n }\n }));\n })));\n }) : m(\"span\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.no_auth_methods_configured')));\n }\n submitButton() {\n const items = super.submitButton();\n items.push(m(Button, {\n className: \"Button\",\n loading: this.loading,\n onclick: () => app.modal.show(AuthMethodModal, {\n onsubmit: this.onchange.bind(this, null)\n })\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.add_label')));\n return items;\n }\n onchange(oldHost, type, host, token) {\n const data = {\n ...this.setting(type)()\n };\n if (oldHost) {\n delete data[oldHost];\n }\n data[host] = token;\n this.setting(type)(data);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureAuth', ConfigureAuth);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Input');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/listItems');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/throttleDebounce');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Form from 'flarum/common/components/Form';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Input from 'flarum/common/components/Input';\nimport Stream from 'flarum/common/utils/Stream';\nimport Alert from 'flarum/common/components/Alert';\nimport listItems from 'flarum/common/helpers/listItems';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport ExtensionCard from './ExtensionCard';\nimport Pagination from 'flarum/common/components/Pagination';\nimport InfoTile from 'flarum/common/components/InfoTile';\nimport classList from 'flarum/common/utils/classList';\nimport { throttle } from 'flarum/common/utils/throttleDebounce';\nexport default class DiscoverSection extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"search\", Stream(''));\n _defineProperty(this, \"warningsDismissed\", Stream(false));\n _defineProperty(this, \"applySearch\", throttle(1200, value => {\n const params = app.extensionManager.extensions.getParams();\n app.extensionManager.extensions.refreshParams({\n ...params,\n filter: {\n ...params.filter,\n q: value\n }\n }, 1);\n }));\n }\n oninit(vnode) {\n super.oninit(vnode);\n app.extensionManager.extensions.goto(1);\n this.warningsDismissed(localStorage.getItem('flarum-extension-manager.warningsDismissed') === 'true');\n }\n load(page) {\n if (page === void 0) {\n page = 1;\n }\n app.extensionManager.extensions.goto(page);\n }\n view() {\n return m(\"div\", {\n className: \"ExtensionPage-settings ExtensionManager-DiscoverSection\"\n }, m(\"div\", {\n className: \"container\"\n }, m(Form, null, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.discover.title')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.description'), this.warningsDismissed() && m(Button, {\n className: \"Button Button--text Button--warning Button--more\",\n icon: \"fas fa-exclamation-triangle\",\n onclick: () => this.setWarningDismissed(false)\n }))), !this.warningsDismissed() && m(\"div\", {\n className: \"ExtensionManager-warnings Form-group\"\n }, m(Alert, {\n className: \"ExtensionManager-primaryWarning\",\n type: \"warning\",\n dismissible: true,\n ondismiss: () => this.setWarningDismissed(true)\n }, m(\"ul\", null, listItems(this.warningItems().toArray())))), m(\"div\", {\n className: \"Tabs\"\n }, m(\"div\", {\n className: \"Tabs-nav\"\n }, this.tabItems().toArray()), m(\"div\", {\n className: \"Tabs-content\"\n }, m(\"hr\", {\n className: \"Tabs-divider\"\n }), m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-toolbar\"\n }, m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-toolbar-primary\"\n }, this.toolbarPrimaryItems().toArray()), m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-toolbar-secondary\"\n }, this.toolbarSecondaryItems().toArray())), this.extensionList(), m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-footer\"\n }, this.footerItems().toArray()))))));\n }\n tabFilters() {\n return {\n '': {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.discover'),\n active: () => {\n var _app$extensionManager;\n return !((_app$extensionManager = app.extensionManager.extensions.getParams().filter) != null && _app$extensionManager.type);\n }\n },\n extension: {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.extensions'),\n active: () => {\n var _app$extensionManager2;\n return ((_app$extensionManager2 = app.extensionManager.extensions.getParams().filter) == null ? void 0 : _app$extensionManager2.type) === 'extension';\n }\n },\n locale: {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.languages'),\n active: () => {\n var _app$extensionManager3;\n return ((_app$extensionManager3 = app.extensionManager.extensions.getParams().filter) == null ? void 0 : _app$extensionManager3.type) === 'locale';\n }\n },\n theme: {\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.tabs.themes'),\n active: () => {\n var _app$extensionManager4;\n return ((_app$extensionManager4 = app.extensionManager.extensions.getParams().filter) == null ? void 0 : _app$extensionManager4.type) === 'theme';\n }\n }\n };\n }\n tabItems() {\n const items = new ItemList();\n const tabs = this.tabFilters();\n Object.keys(tabs).forEach(key => {\n const tab = tabs[key];\n items.add(key, m(Button, {\n className: \"Button Button--link\",\n active: tab.active(),\n onclick: () => {\n app.extensionManager.extensions.changeFilter('type', key);\n }\n }, tab.label));\n });\n return items;\n }\n warningItems() {\n const items = new ItemList();\n items.add('accessWarning', app.translator.trans('flarum-extension-manager.admin.settings.access_warning'));\n if (app.data.debugEnabled) {\n items.add('devModeWarning', app.translator.trans('flarum-extension-manager.admin.settings.debug_mode_warning'));\n }\n return items;\n }\n toolbarPrimaryItems() {\n const items = new ItemList();\n items.add('search', m(Input, {\n value: this.search(),\n onchange: value => {\n this.search(value);\n this.applySearch(value);\n },\n inputAttrs: {\n className: 'FormControl-alt'\n },\n clearable: true,\n placeholder: app.translator.trans('flarum-extension-manager.admin.sections.discover.search'),\n prefixIcon: \"fas fa-search\"\n }));\n return items;\n }\n toolbarSecondaryItems() {\n var _app$extensionManager5, _app$extensionManager6;\n const items = new ItemList();\n const sortMap = app.extensionManager.extensions.sortMap();\n const sortOptions = Object.keys(sortMap).reduce((acc, sortId) => {\n const sort = sortMap[sortId];\n acc[sortId] = typeof sort !== 'string' ? sort.label : sort;\n return acc;\n }, {});\n items.add('sort', m(Dropdown, {\n buttonClassName: \"Button\",\n label: sortOptions[app.extensionManager.extensions.getParams().sort] || Object.keys(sortMap).map(key => sortOptions[key])[0],\n accessibleToggleLabel: app.translator.trans('flarum-extension-manager.admin.sections.discover.sort.toggle_dropdown_accessible_label')\n }, Object.keys(sortOptions).map(value => {\n const label = sortOptions[value];\n const active = app.extensionManager.extensions.getParams().sort === value;\n return m(Button, {\n icon: active ? 'fas fa-check' : true,\n onclick: () => app.extensionManager.extensions.changeSort(value),\n active: active\n }, label);\n })));\n const is = (_app$extensionManager5 = (_app$extensionManager6 = app.extensionManager.extensions.getParams().filter) == null || (_app$extensionManager6 = _app$extensionManager6.is) == null ? void 0 : _app$extensionManager6[0]) != null ? _app$extensionManager5 : null;\n const activeType = is || 'all';\n items.add('party', m(Dropdown, {\n buttonClassName: \"Button\",\n label: app.translator.trans('flarum-extension-manager.admin.sections.discover.party_filter.' + activeType),\n accessibleToggleLabel: app.translator.trans('flarum-extension-manager.admin.sections.discover.party_filter.toggle_dropdown_accessible_label')\n }, ['all', 'premium'].map(party => m(Button, {\n icon: activeType === party ? 'fas fa-check' : true,\n onclick: () => {\n app.extensionManager.extensions.changeFilter('is', party === 'all' ? undefined : [party]);\n },\n active: activeType === party\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.party_filter.' + party)))));\n return items;\n }\n extensionList() {\n if (!app.extensionManager.extensions.hasItems() && app.extensionManager.extensions.isLoading()) {\n return m(LoadingIndicator, {\n display: \"block\"\n });\n }\n if (!app.extensionManager.extensions.hasItems()) {\n return m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-list ExtensionManager-DiscoverSection-list--empty\"\n }, m(InfoTile, {\n icon: \"fas fa-plug-circle-exclamation\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.empty_results')));\n }\n return m(\"div\", {\n className: classList('ExtensionManager-DiscoverSection-list', {\n 'loading-container': app.extensionManager.extensions.isLoading()\n })\n }, m(\"div\", {\n className: \"ExtensionManager-DiscoverSection-list-inner\"\n }, app.extensionManager.extensions.getPages().map(page => page.items.map(extension => m(ExtensionCard, {\n extension: extension,\n key: extension.name()\n })))), app.extensionManager.extensions.hasItems() && app.extensionManager.extensions.isLoading() && m(LoadingIndicator, {\n size: \"large\"\n }));\n }\n footerItems() {\n const items = new ItemList();\n items.add('pagination', m(Pagination, {\n total: app.extensionManager.extensions.totalItems,\n perPage: app.extensionManager.extensions.pageSize,\n currentPage: app.extensionManager.extensions.getLocation().page,\n onChange: page => {\n const current = app.extensionManager.extensions.getLocation().page;\n if (current === page) {\n return;\n }\n this.load(page);\n }\n }));\n items.add('premiumTermsLink', m(LinkButton, {\n className: \"Button Button--link\",\n href: \"https://flarum.org/terms/premium-extensions\",\n external: true,\n target: \"_blank\",\n icon: \"fas fa-circle-info\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.discover.premium_extension_terms')));\n return items;\n }\n setWarningDismissed(dismissed) {\n this.warningsDismissed(dismissed);\n localStorage.setItem('flarum-extension-manager.warningsDismissed', dismissed ? 'true' : 'false');\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/DiscoverSection', DiscoverSection);","import app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport QueueSection from './QueueSection';\nimport ControlSection from './ControlSection';\nimport ConfigureComposer from './ConfigureComposer';\nimport ConfigureAuth from './ConfigureAuth';\nimport DiscoverSection from './DiscoverSection';\nexport default class SettingsPage extends ExtensionPage {\n content() {\n const settings = app.registry.getSettings(this.extension.id);\n return m(\"div\", {\n className: \"ExtensionPage-settings\"\n }, m(\"div\", {\n className: \"container\"\n }, settings ? [m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.settings.title')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.settings.description'))), m(\"div\", {\n className: \"FormSectionGroup ExtensionManager-SettingsGroups\"\n }, m(\"div\", {\n className: \"FormSection\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.settings.title')), m(\"div\", {\n className: \"Form\"\n }, settings.map(this.buildSettingComponent.bind(this))), m(\"div\", {\n className: \"Form-group Form--controls\"\n }, this.submitButton())), m(ConfigureComposer, {\n buildSettingComponent: this.buildSettingComponent\n }), m(ConfigureAuth, {\n buildSettingComponent: this.buildSettingComponent\n }))] : m(\"h3\", {\n className: \"ExtensionPage-subHeader\"\n }, app.translator.trans('core.admin.extension.no_settings'))));\n }\n sections(vnode) {\n const items = super.sections(vnode);\n items.add('discover', m(DiscoverSection, null), 15);\n items.add('control', m(ControlSection, null), 10);\n items.setPriority('content', 8);\n if (app.data.settings['flarum-extension-manager.queue_jobs'] !== '0' && app.data.settings['flarum-extension-manager.queue_jobs']) {\n items.add('queue', m(QueueSection, null), 5);\n }\n items.remove('permissions');\n return items;\n }\n onsaved() {\n super.onsaved();\n m.redraw();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/SettingsPage', SettingsPage);","const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'KiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nexport default function prettyBytes(number, options) {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\tspace: true,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tconst separator = options.space ? ' ' : '';\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0${separator}${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + separator + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\tnumber /= (options.binary ? 1024 : 1000) ** exponent;\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + separator + unit;\n}\n","import Model from 'flarum/common/Model';\nimport prettyBytes from 'pretty-bytes';\nexport default class Task extends Model {\n status() {\n return Model.attribute('status').call(this);\n }\n operation() {\n return Model.attribute('operation').call(this);\n }\n command() {\n return Model.attribute('command').call(this);\n }\n package() {\n return Model.attribute('package').call(this);\n }\n output() {\n return Model.attribute('output').call(this);\n }\n guessedCause() {\n return Model.attribute('guessedCause').call(this);\n }\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n startedAt() {\n return Model.attribute('startedAt', Model.transformDate).call(this);\n }\n finishedAt() {\n return Model.attribute('finishedAt', Model.transformDate).call(this);\n }\n peakMemoryUsed() {\n return prettyBytes(Model.attribute('peakMemoryUsed').call(this) * 1024);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/models/Task', Task);","import Extend from 'flarum/common/extenders';\nimport app from 'flarum/admin/app';\nimport extractText from 'flarum/common/utils/extractText';\nimport SettingsPage from './components/SettingsPage';\nimport Task from './models/Task';\nimport ExternalExtension from './models/ExternalExtension';\nexport default [new Extend.Store() //\n.add('extension-manager-tasks', Task).add('external-extensions', ExternalExtension), new Extend.Admin().setting(() => ({\n setting: 'flarum-extension-manager.queue_jobs',\n label: app.translator.trans('flarum-extension-manager.admin.settings.queue_jobs'),\n help: m.trust(extractText(app.translator.trans('flarum-extension-manager.admin.settings.queue_jobs_help', {\n basic_impl_link: 'https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting',\n adv_impl_link: 'https://discuss.flarum.org/d/21873-redis-sessions-cache-queues',\n php_version: \"\".concat(app.data.phpVersion, \"\"),\n folder_perms_link: 'https://docs.flarum.org/install#folder-ownership'\n }))),\n type: 'boolean',\n disabled: app.data['flarum-extension-manager.using_sync_queue']\n})).setting(() => ({\n setting: 'flarum-extension-manager.task_retention_days',\n label: app.translator.trans('flarum-extension-manager.admin.settings.task_retention_days'),\n help: app.translator.trans('flarum-extension-manager.admin.settings.task_retention_days_help'),\n type: 'number'\n})).page(SettingsPage).generalIndexItems('settings', () => [{\n id: 'minimum-stability',\n label: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.label', {}, true),\n help: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.help', {}, true)\n}, {\n id: 'repositories',\n label: app.translator.trans('flarum-extension-manager.admin.composer.repositories.label', {}, true),\n help: app.translator.trans('flarum-extension-manager.admin.composer.repositories.help', {}, true)\n}, {\n id: 'composer-auth',\n label: app.translator.trans('flarum-extension-manager.admin.auth_config.title', {}, true)\n}, {\n id: 'updates',\n label: app.translator.trans('flarum-extension-manager.admin.updater.updater_title', {}, true),\n help: app.translator.trans('flarum-extension-manager.admin.updater.updater_help', {}, true)\n}])];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport jumpToQueue from './utils/jumpToQueue';\nimport ExtensionManagerState from './states/ExtensionManagerState';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-extension-manager', app => {\n app.extensionManager = new ExtensionManagerState();\n if (app.data['flarum-extension-manager.using_sync_queue']) {\n app.data.settings['flarum-extension-manager.queue_jobs'] = '0';\n }\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-extension-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n items.add('remove', m(Button, {\n className: \"Button Button--danger\",\n icon: \"fas fa-times\",\n onclick: () => {\n app.modal.show(LoadingModal);\n app.request({\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions/\").concat(this.extension.id),\n method: 'DELETE'\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }\n }).finally(() => {\n app.modal.close();\n });\n }\n }, app.translator.trans('flarum-extension-manager.admin.extensions.remove')));\n });\n});"],"names":["module","exports","t","s","n","i","e","r","o","u","d","a","h","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","g","f","$l","m","p","l","$","Math","ceil","floor","y","abs","v","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","round","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","valueOf","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","$utils","duration","isDuration","bind","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","getter","__esModule","definition","key","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","value","flarum","reg","jumpToQueue","close","route","set","id","queue","load","setTimeout","_document$getElementB","document","getElementById","scrollIntoView","block","_typeof","iterator","constructor","_defineProperty","toPrimitive","TypeError","configurable","writable","window","QueueState","params","actionTaken","_params","loading","page","limit","offset","find","then","data","_data$payload$meta","tasks","total","payload","meta","redraw","task","status","pollQueue","control","setLoading","location","reload","isLoading","getItems","getTotalItems","getTotalPages","pageNumber","getPerPage","hasPrev","hasNext","prev","next","goto","polling","clearTimeout","hasPending","_this$tasks","error","response","errors","includes","code","clear","guessed_cause","show","type","trans","concat","ControlSectionState","lastUpdateRun","JSON","parse","settings","limitedPackages","major","minor","global","lastUpdateCheck","extensionUpdates","formatExtensionUpdates","coreUpdate","formatCoreUpdate","name","hasOperationRunning","requirePackage","method","url","attribute","body","processing","extensionId","extension","href","catch","errorHandler","finally","checkForUpdates","updateCoreMinor","confirm","updateExtension","updateMode","extra","title","updateGlobally","_lastUpdateCheck$upda","packageUpdates","updates","installed","filter","composerPackage","extensions","safeToUpdate","values","_lastUpdateCheck$upda2","core","pop","package","version","icon","backgroundImage","resources","links","majorUpdate","_ref","dryRun","updateState","_e$response","incompatibleExtensions","incompatible_extensions","ExtensionListState","super","sort","sortMap","label","ExtensionManagerState","Label","view","vnode","className","attrs","assign","children","TaskOutputModal","operation","content","guessedCause","command","output","humanDuration","start","end","dayjs","extend","durationTime","diff","QueueSection","oninit","onclick","disabled","queueTable","columns","items","operationIcon","_task$package","style","running","failure","pending","success","size","display","startedAt","finishedAt","text","peakMemoryUsed","length","toArray","item","index","currentPage","perPage","onChange","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","Installer","arguments","packageName","htmlFor","link","semantic_link","placeholder","bidi","onsubmit","WhyNotModal","oncreate","requestWhyNot","whyNot","reason","VersionStability","isProductionReady","Stable","RC","stability","split","toLowerCase","Alpha","Beta","Dev","ExternalExtension","isSupported","currentVersion","latestCompatibleVersion","latestFlarumVersionSupported","highestVersion","toLocalExtension","description","backgroundColor","color","discuss","discussUri","website","httpUri","ExtensionCard","getExtension","isCore","isDanger","badges","actionItems","metaItems","_extension$icon","_extension$icon2","iconUrl","isPremium","_updates$latestMinor","latestVersion","count","downloads","formattedCount","target","external","onClickUpdate","whyNotWarning","buttonClassName","soft","hard","charAt","substring","MajorUpdater","alt","src","update","dismissible","controls","Updater","lastUpdateCheckView","controlItems","availableUpdatesView","_app$extensionManager","checkedAt","state","hasMinorCoreUpdate","ControlSection","ConfigureJson","submit","submitButton","isDirty","customSettingComponents","customFieldComponents","setting","_this$settings$key","readOnly","configuration","initialSettings","Array","isArray","stringify","RepositoryModal","repository","context","types","composer","vcs","path","options","onchange","hide","ConfigureComposer","buildSettingComponent","help","stable","beta","alpha","dev","newName","repositories","push","AuthMethodModal","host","token","bearer","oninput","rows","startsWith","ConfigureAuth","authSettings","hasAuthSettings","every","hosts","newType","oldHost","DiscoverSection","throttle","getParams","refreshParams","q","warningsDismissed","localStorage","getItem","setWarningDismissed","ondismiss","warningItems","tabItems","toolbarPrimaryItems","toolbarSecondaryItems","extensionList","footerItems","tabFilters","active","_app$extensionManager2","_app$extensionManager3","theme","_app$extensionManager4","tabs","tab","changeFilter","debugEnabled","search","applySearch","inputAttrs","clearable","prefixIcon","_app$extensionManager5","_app$extensionManager6","sortOptions","acc","sortId","accessibleToggleLabel","changeSort","activeType","is","party","hasItems","getPages","totalItems","pageSize","getLocation","dismissed","setItem","SettingsPage","getSettings","sections","setPriority","remove","onsaved","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","result","Task","createdAt","isFinite","UNITS","bits","binary","space","separator","signed","isNegative","prefix","localeOptions","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","toPrecision","prettyBytes","trust","basic_impl_link","adv_impl_link","php_version","phpVersion","folder_perms_link","generalIndexItems","app","extensionManager","modal","request","forum","alerts","translator"],"sourceRoot":""} \ No newline at end of file