diff --git a/extensions/package-manager/js/dist-typings/components/AuthMethodModal.d.ts b/extensions/package-manager/js/dist-typings/components/AuthMethodModal.d.ts new file mode 100644 index 000000000..ccdabbe09 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/AuthMethodModal.d.ts @@ -0,0 +1,19 @@ +import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; +import Mithril from 'mithril'; +import Stream from 'flarum/common/utils/Stream'; +export interface IAuthMethodModalAttrs extends IInternalModalAttrs { + onsubmit: (type: string, host: string, token: string) => void; + type?: string; + host?: string; + token?: string; +} +export default class AuthMethodModal extends Modal { + protected type: Stream; + protected host: Stream; + protected token: Stream; + oninit(vnode: Mithril.Vnode): void; + className(): string; + title(): Mithril.Children; + content(): Mithril.Children; + submit(): void; +} diff --git a/extensions/package-manager/js/dist-typings/components/ConfigureAuth.d.ts b/extensions/package-manager/js/dist-typings/components/ConfigureAuth.d.ts new file mode 100644 index 000000000..5832ca690 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/ConfigureAuth.d.ts @@ -0,0 +1,10 @@ +import type Mithril from 'mithril'; +import ConfigureJson, { IConfigureJson } from './ConfigureJson'; +export default class ConfigureAuth extends ConfigureJson { + protected type: string; + title(): Mithril.Children; + className(): string; + content(): Mithril.Children; + submitButton(): Mithril.Children[]; + onchange(oldHost: string | null, type: string, host: string, token: string): void; +} diff --git a/extensions/package-manager/js/dist-typings/components/ConfigureComposer.d.ts b/extensions/package-manager/js/dist-typings/components/ConfigureComposer.d.ts new file mode 100644 index 000000000..6fd730aa2 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/ConfigureComposer.d.ts @@ -0,0 +1,14 @@ +import type Mithril from 'mithril'; +import ConfigureJson, { type IConfigureJson } from './ConfigureJson'; +export declare type Repository = { + type: 'composer' | 'vcs' | 'path'; + url: string; +}; +export default class ConfigureComposer extends ConfigureJson { + protected type: string; + title(): Mithril.Children; + className(): string; + content(): Mithril.Children; + submitButton(): Mithril.Children[]; + onchange(repository: Repository, name: string): void; +} diff --git a/extensions/package-manager/js/dist-typings/components/ConfigureJson.d.ts b/extensions/package-manager/js/dist-typings/components/ConfigureJson.d.ts new file mode 100644 index 000000000..fa2f0cf85 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/ConfigureJson.d.ts @@ -0,0 +1,24 @@ +import type Mithril from 'mithril'; +import Component, { type ComponentAttrs } from 'flarum/common/Component'; +import { CommonSettingsItemOptions, type SettingsComponentOptions } from '@flarum/core/src/admin/components/AdminPage'; +import type ItemList from 'flarum/common/utils/ItemList'; +import Stream from 'flarum/common/utils/Stream'; +export interface IConfigureJson extends ComponentAttrs { + buildSettingComponent: (entry: ((this: this) => Mithril.Children) | SettingsComponentOptions) => Mithril.Children; +} +export default abstract class ConfigureJson extends Component { + protected settings: Record>; + protected initialSettings: Record | null; + protected loading: boolean; + oninit(vnode: Mithril.Vnode): void; + protected abstract type: string; + abstract title(): Mithril.Children; + abstract content(): Mithril.Children; + className(): string; + view(): Mithril.Children; + submitButton(): Mithril.Children[]; + customSettingComponents(): ItemList<(attributes: CommonSettingsItemOptions) => Mithril.Children>; + setting(key: string): Stream; + submit(readOnly: boolean): void; + isDirty(): boolean; +} diff --git a/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts b/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts index 204db6624..0f45ff1fb 100644 --- a/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts +++ b/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts @@ -5,7 +5,10 @@ import { UpdatedPackage } from '../states/ControlSectionState'; export interface ExtensionItemAttrs extends ComponentAttrs { extension: Extension; updates: UpdatedPackage; - onClickUpdate: CallableFunction; + onClickUpdate: CallableFunction | { + soft: CallableFunction; + hard: CallableFunction; + }; whyNotWarning?: boolean; isCore?: boolean; updatable?: boolean; diff --git a/extensions/package-manager/js/dist-typings/components/RepositoryModal.d.ts b/extensions/package-manager/js/dist-typings/components/RepositoryModal.d.ts new file mode 100644 index 000000000..58264720d --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/RepositoryModal.d.ts @@ -0,0 +1,18 @@ +import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; +import Mithril from 'mithril'; +import Stream from 'flarum/common/utils/Stream'; +import { type Repository } from './ConfigureComposer'; +export interface IRepositoryModalAttrs extends IInternalModalAttrs { + onsubmit: (repository: Repository, key: string) => void; + name?: string; + repository?: Repository; +} +export default class RepositoryModal extends Modal { + protected name: Stream; + protected repository: Stream; + oninit(vnode: Mithril.Vnode): void; + className(): string; + title(): Mithril.Children; + content(): Mithril.Children; + submit(): void; +} diff --git a/extensions/package-manager/js/dist-typings/components/SettingsPage.d.ts b/extensions/package-manager/js/dist-typings/components/SettingsPage.d.ts index e76e5b510..0565020a0 100644 --- a/extensions/package-manager/js/dist-typings/components/SettingsPage.d.ts +++ b/extensions/package-manager/js/dist-typings/components/SettingsPage.d.ts @@ -2,5 +2,7 @@ import type Mithril from 'mithril'; import ExtensionPage, { ExtensionPageAttrs } from 'flarum/admin/components/ExtensionPage'; import ItemList from 'flarum/common/utils/ItemList'; export default class SettingsPage extends ExtensionPage { + content(): JSX.Element; sections(vnode: Mithril.VnodeDOM): ItemList; + onsaved(): void; } diff --git a/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts b/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts index 9a49783a8..fd62ede6c 100644 --- a/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts +++ b/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts @@ -1,5 +1,5 @@ /// -/// +/// import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; import Task from '../models/Task'; interface TaskOutputModalAttrs extends IInternalModalAttrs { diff --git a/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts b/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts index 2b6082f29..3eed70a2a 100644 --- a/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts +++ b/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts @@ -1,4 +1,4 @@ -/// +/// import type Mithril from 'mithril'; import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; export interface WhyNotModalAttrs extends IInternalModalAttrs { diff --git a/extensions/package-manager/js/dist-typings/models/Task.d.ts b/extensions/package-manager/js/dist-typings/models/Task.d.ts index 8644ffef3..32dee88eb 100644 --- a/extensions/package-manager/js/dist-typings/models/Task.d.ts +++ b/extensions/package-manager/js/dist-typings/models/Task.d.ts @@ -6,6 +6,7 @@ export default class Task extends Model { command(): string; package(): string; output(): string; + guessedCause(): string; createdAt(): Date | null | undefined; startedAt(): Date; finishedAt(): Date; diff --git a/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts b/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts index 342033f8c..69abf8f92 100644 --- a/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts +++ b/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts @@ -9,6 +9,8 @@ export declare type UpdatedPackage = { 'latest-minor': string | null; 'latest-major': string | null; 'latest-status': string; + 'required-as': string; + 'direct-dependency': boolean; description: string; }; export declare type ComposerUpdates = { @@ -31,7 +33,7 @@ export declare type LastUpdateRun = { } & { limitedPackages: () => string[]; }; -export declare type LoadingTypes = UpdaterLoadingTypes | InstallerLoadingTypes | MajorUpdaterLoadingTypes; +export declare type LoadingTypes = UpdaterLoadingTypes | InstallerLoadingTypes | MajorUpdaterLoadingTypes | 'queued-action'; export declare type CoreUpdate = { package: UpdatedPackage; extension: Extension; @@ -45,13 +47,17 @@ export default class ControlSectionState { get lastUpdateRun(): LastUpdateRun; constructor(); isLoading(name?: LoadingTypes): boolean; - isLoadingOtherThan(name: LoadingTypes): boolean; + hasOperationRunning(): boolean; setLoading(name: LoadingTypes): void; + requirePackage(data: any): void; checkForUpdates(): void; updateCoreMinor(): void; - updateExtension(extension: Extension): void; + updateExtension(extension: Extension, updateMode: 'soft' | 'hard'): void; updateGlobally(): void; formatExtensionUpdates(lastUpdateCheck: LastUpdateCheck): Extension[]; formatCoreUpdate(lastUpdateCheck: LastUpdateCheck): CoreUpdate | null; + majorUpdate({ dryRun }: { + dryRun: boolean; + }): void; } export {}; diff --git a/extensions/package-manager/js/dist-typings/states/ExtensionManagerState.d.ts b/extensions/package-manager/js/dist-typings/states/ExtensionManagerState.d.ts new file mode 100644 index 000000000..e97eabb0f --- /dev/null +++ b/extensions/package-manager/js/dist-typings/states/ExtensionManagerState.d.ts @@ -0,0 +1,6 @@ +import QueueState from './QueueState'; +import ControlSectionState from './ControlSectionState'; +export default class ExtensionManagerState { + queue: QueueState; + control: ControlSectionState; +} diff --git a/extensions/package-manager/js/dist-typings/states/QueueState.d.ts b/extensions/package-manager/js/dist-typings/states/QueueState.d.ts index 538a44d97..a09278ab1 100644 --- a/extensions/package-manager/js/dist-typings/states/QueueState.d.ts +++ b/extensions/package-manager/js/dist-typings/states/QueueState.d.ts @@ -1,11 +1,12 @@ import Task from '../models/Task'; import { ApiQueryParamsPlural } from 'flarum/common/Store'; export default class QueueState { + private polling; private tasks; private limit; private offset; private total; - load(params?: ApiQueryParamsPlural): Promise>; + load(params?: ApiQueryParamsPlural, actionTaken?: boolean): Promise; getItems(): Task[] | null; getTotalPages(): number; pageNumber(): number; @@ -13,4 +14,6 @@ export default class QueueState { hasNext(): boolean; prev(): void; next(): void; + pollQueue(actionTaken?: boolean): void; + hasPending(): boolean; } diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 16c7a2ff2..a07b2022b 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -1,2 +1,2 @@ -(()=>{var a={647:function(a){a.exports=function(){"use strict";var a,e,t=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=2592e6,c=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,m={years:i,months:l,days:r,hours:s,minutes:n,seconds:t,milliseconds:1,weeks:6048e5},u=function(a){return a instanceof b},d=function(a,e,t){return new b(a,t,e.$l)},g=function(a){return e.p(a)+"s"},p=function(a){return a<0},h=function(a){return p(a)?Math.ceil(a):Math.floor(a)},f=function(a){return Math.abs(a)},k=function(a,e){return a?p(a)?{negative:!0,format:""+f(a)+e}:{negative:!1,format:""+a+e}:{negative:!1,format:""}},b=function(){function p(a,e,t){var n=this;if(this.$d={},this.$l=t,void 0===a&&(this.$ms=0,this.parseFromMilliseconds()),e)return d(a*m[g(e)],this);if("number"==typeof a)return this.$ms=a,this.parseFromMilliseconds(),this;if("object"==typeof a)return Object.keys(a).forEach((function(e){n.$d[g(e)]=a[e]})),this.calMilliseconds(),this;if("string"==typeof a){var s=a.match(c);if(s){var r=s.slice(2).map((function(a){return null!=a?Number(a):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 a=this;this.$ms=Object.keys(this.$d).reduce((function(e,t){return e+(a.$d[t]||0)*m[t]}),0)},f.parseFromMilliseconds=function(){var a=this.$ms;this.$d.years=h(a/i),a%=i,this.$d.months=h(a/l),a%=l,this.$d.days=h(a/r),a%=r,this.$d.hours=h(a/s),a%=s,this.$d.minutes=h(a/n),a%=n,this.$d.seconds=h(a/t),a%=t,this.$d.milliseconds=a},f.toISOString=function(){var a=k(this.$d.years,"Y"),e=k(this.$d.months,"M"),t=+this.$d.days||0;this.$d.weeks&&(t+=7*this.$d.weeks);var n=k(t,"D"),s=k(this.$d.hours,"H"),r=k(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var i=k(o,"S"),l=a.negative||e.negative||n.negative||s.negative||r.negative||i.negative,c=s.format||r.format||i.format?"T":"",m=(l?"-":"")+"P"+a.format+e.format+n.format+c+s.format+r.format+i.format;return"P"===m||"-P"===m?"P0D":m},f.toJSON=function(){return this.toISOString()},f.format=function(a){var t=a||"YYYY-MM-DDTHH:mm:ss",n={Y:this.$d.years,YY:e.s(this.$d.years,2,"0"),YYYY:e.s(this.$d.years,4,"0"),M:this.$d.months,MM:e.s(this.$d.months,2,"0"),D:this.$d.days,DD:e.s(this.$d.days,2,"0"),H:this.$d.hours,HH:e.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:e.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:e.s(this.$d.seconds,2,"0"),SSS:e.s(this.$d.milliseconds,3,"0")};return t.replace(o,(function(a,e){return e||String(n[a])}))},f.as=function(a){return this.$ms/m[g(a)]},f.get=function(a){var e=this.$ms,t=g(a);return"milliseconds"===t?e%=1e3:e="weeks"===t?h(e/m[t]):this.$d[t],0===e?0:e},f.add=function(a,e,t){var n;return n=e?a*m[g(e)]:u(a)?a.$ms:d(a,this).$ms,d(this.$ms+n*(t?-1:1),this)},f.subtract=function(a,e){return this.add(a,e,!0)},f.locale=function(a){var e=this.clone();return e.$l=a,e},f.clone=function(){return d(this.$ms,this)},f.humanize=function(e){return a().add(this.$ms,"ms").locale(this.$l).fromNow(!e)},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}();return function(t,n,s){a=s,e=s().$utils(),s.duration=function(a,e){var t=s.locale();return d(a,{$l:t},e)},s.isDuration=u;var r=n.prototype.add,o=n.prototype.subtract;n.prototype.add=function(a,e){return u(a)&&(a=a.asMilliseconds()),r.bind(this)(a,e)},n.prototype.subtract=function(a,e){return u(a)&&(a=a.asMilliseconds()),o.bind(this)(a,e)}}}()}},e={};function t(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={exports:{}};return a[n].call(r.exports,r,r.exports,t),r.exports}t.n=a=>{var e=a&&a.__esModule?()=>a.default:()=>a;return t.d(e,{a:e}),e},t.d=(a,e)=>{for(var n in e)t.o(e,n)&&!t.o(a,n)&&Object.defineProperty(a,n,{enumerable:!0,get:e[n]})},t.o=(a,e)=>Object.prototype.hasOwnProperty.call(a,e),t.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})};var n={};(()=>{"use strict";t.r(n);const a=flarum.reg.get("core","common/extend"),e=flarum.reg.get("core","admin/app");var s=t.n(e);const r=flarum.reg.get("core","admin/components/ExtensionPage");var o=t.n(r);const i=flarum.reg.get("core","common/components/Button");var l=t.n(i);const c=flarum.reg.get("core","admin/components/LoadingModal");var u=t.n(c);const d=flarum.reg.get("core","admin/utils/isExtensionEnabled");var g=t.n(d);const p=flarum.reg.get("core","common/components/Alert");var h=t.n(p);const f=flarum.reg.get("core","common/Component");var k=t.n(f);const b=flarum.reg.get("core","common/components/LoadingIndicator");var v=t.n(b);const y=flarum.reg.get("core","common/components/Tooltip");var x=t.n(y);const M=flarum.reg.get("core","common/components/Icon");var N=t.n(M);const _=flarum.reg.get("core","common/utils/ItemList");var w=t.n(_);const P=flarum.reg.get("core","common/utils/extractText");var U=t.n(P);const S=flarum.reg.get("core","common/utils/classList");var $=t.n(S);class T extends(k()){view(a){const{className:e,type:t,...n}=this.attrs;return m("span",Object.assign({className:$()(["Label","Label--".concat(this.attrs.type),e])},n),a.children)}}flarum.reg.add("flarum-package-manager","admin/components/Label",T);const q=flarum.reg.get("core","common/components/Modal");var j=t.n(q);class B extends(j()){className(){return"Modal--large QuickModal"}title(){return s().translator.trans("flarum-package-manager.admin.sections.queue.operations.".concat(this.attrs.task.operation()))}content(){return m("div",{className:"Modal-body"},m("div",{className:"TaskOutputModal-data"},m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-package-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-package-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-package-manager","admin/components/TaskOutputModal",B);var L=t(647),E=t.n(L);function O(a,e){dayjs.extend(E());const t=dayjs(e).diff(a);return dayjs.duration(t).humanize()}flarum.reg.add("flarum-package-manager","admin/utils/humanDuration",O);class C extends(k()){view(){return m("nav",{className:"Pagination UserListPage-gridPagination"},m(l(),{disabled:!this.attrs.list.hasPrev(),title:s().translator.trans("core.admin.users.pagination.back_button"),onclick:()=>this.attrs.list.prev(),icon:"fas fa-chevron-left",className:"Button Button--icon UserListPage-backBtn"}),m("span",{className:"UserListPage-pageNumber"},s().translator.trans("core.admin.users.pagination.page_counter",{current:this.attrs.list.pageNumber()+1,total:this.attrs.list.getTotalPages()})),m(l(),{disabled:!this.attrs.list.hasNext(),title:s().translator.trans("core.admin.users.pagination.next_button"),onclick:()=>this.attrs.list.next(),icon:"fas fa-chevron-right",className:"Button Button--icon UserListPage-nextBtn"}))}}flarum.reg.add("flarum-package-manager","admin/components/Pagination",C);class D extends(k()){oninit(a){super.oninit(a),s().packageManager.queue.load()}view(){return m("section",{id:"PackageManager-queueSection",className:"ExtensionPage-permissions PackageManager-queueSection"},m("div",{className:"ExtensionPage-permissions-header PackageManager-queueSection-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},s().translator.trans("flarum-package-manager.admin.sections.queue.title")),m(l(),{className:"Button Button--icon",icon:"fas fa-sync-alt",onclick:()=>s().packageManager.queue.load(),"aria-label":s().translator.trans("flarum-package-manager.admin.sections.queue.refresh")}))),m("div",{className:"container"},this.queueTable()))}columns(){const a=new(w());return a.add("operation",{label:U()(s().translator.trans("flarum-package-manager.admin.sections.queue.columns.operation")),content:a=>m("div",{className:"PackageManager-queueTable-operation"},m("span",{className:"PackageManager-queueTable-operation-icon"},this.operationIcon(a.operation())),m("span",{className:"PackageManager-queueTable-operation-name"},s().translator.trans("flarum-package-manager.admin.sections.queue.operations.".concat(a.operation()))))},80),a.add("package",{label:U()(s().translator.trans("flarum-package-manager.admin.sections.queue.columns.package")),content:a=>{var e;const t=s().data.extensions[null==(e=a.package())?void 0:e.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return t?m("div",{className:"PackageManager-queueTable-package"},m("div",{className:"PackageManager-queueTable-package-icon ExtensionIcon",style:t.icon},!!t.icon&&m(N(),{name:t.icon.name})),m("div",{className:"PackageManager-queueTable-package-details"},m("span",{className:"PackageManager-queueTable-package-title"},t.extra["flarum-extension"].title),m("span",{className:"PackageManager-queueTable-package-name"},a.package()))):a.package()}},75),a.add("status",{label:U()(s().translator.trans("flarum-package-manager.admin.sections.queue.columns.status")),content:a=>m(T,{className:"PackageManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[a.status()]},s().translator.trans("flarum-package-manager.admin.sections.queue.statuses.".concat(a.status())))},70),a.add("elapsedTime",{label:U()(s().translator.trans("flarum-package-manager.admin.sections.queue.columns.elapsed_time")),content:a=>a.startedAt()?m(x(),{text:"".concat(dayjs(a.startedAt()).format("LL LTS")," ").concat(dayjs(a.finishedAt()).format("LL LTS"))},m("span",null,O(a.startedAt(),a.finishedAt()))):s().translator.trans("flarum-package-manager.admin.sections.queue.task_just_started")},65),a.add("memoryUsed",{label:U()(s().translator.trans("flarum-package-manager.admin.sections.queue.columns.peak_memory_used")),content:a=>m("span",null,a.peakMemoryUsed())},60),a.add("details",{label:U()(s().translator.trans("flarum-package-manager.admin.sections.queue.columns.details")),content:a=>m(l(),{className:"Button Button--icon Table-controls-item",icon:"fas fa-file-alt","aria-label":s().translator.trans("flarum-package-manager.admin.sections.queue.columns.details"),onclick:()=>s().modal.show(B,{task:a})}),className:"Table-controls"},55),a}queueTable(){const a=s().packageManager.queue.getItems();if(!a)return m(v(),null);if(a&&!a.length)return m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("flarum-package-manager.admin.sections.queue.none"));const e=this.columns();return m("[",null,m("table",{className:"Table PackageManager-queueTable"},m("thead",null,m("tr",null,e.toArray().map(((a,e)=>m("th",{key:e},a.label))))),m("tbody",null,a.map(((a,t)=>m("tr",{key:t},e.toArray().map(((e,t)=>{const{label:n,content:s,...r}=e;return m("td",Object.assign({key:t},r),s(a))}))))))),m(C,{list:s().packageManager.queue}))}operationIcon(a){const e={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"}[a];return m(N(),{name:e})}}function F(a){return F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},F(a)}function A(a,e,t){return(e=function(a){var e=function(a,e){if("object"!==F(a)||null===a)return a;var t=a[Symbol.toPrimitive];if(void 0!==t){var n=t.call(a,e);if("object"!==F(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(a)}(a,"string");return"symbol"===F(e)?e:String(e)}(e))in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}flarum.reg.add("flarum-package-manager","admin/components/QueueSection",D);const I=flarum.reg.get("core","common/utils/Stream");var Y=t.n(I);function H(a){const e=a.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(e.code))throw a;switch(e.code){case"composer_command_failure":e.guessed_cause?(s().alerts.show({type:"error"},s().translator.trans("flarum-package-manager.admin.exceptions.guessed_cause.".concat(e.guessed_cause))),s().modal.close()):s().alerts.show({type:"error"},s().translator.trans("flarum-package-manager.admin.exceptions.composer_command_failure"));break;case"extension_already_installed":s().alerts.show({type:"error"},s().translator.trans("flarum-package-manager.admin.exceptions.extension_already_installed")),s().modal.close();break;case"extension_not_installed":s().alerts.show({type:"error"},s().translator.trans("flarum-package-manager.admin.exceptions.extension_not_installed")),s().modal.close()}}function W(){s().modal.close(),m.route.set(s().route("extension",{id:"flarum-package-manager"})),s().packageManager.queue.load(),setTimeout((()=>{var a;null==(a=document.getElementById("PackageManager-queueSection"))||a.scrollIntoView({block:"nearest"})}),200)}window.jumpToQueue=W,flarum.reg.add("flarum-package-manager","admin/utils/jumpToQueue",W);class G extends(k()){constructor(){super(...arguments),A(this,"packageName",void 0)}oninit(a){super.oninit(a),this.packageName=Y()("")}view(){return m("div",{className:"Form-group PackageManager-installer"},m("label",{htmlFor:"install-extension"},s().translator.trans("flarum-package-manager.admin.extensions.install")),m("p",{className:"helpText"},s().translator.trans("flarum-package-manager.admin.extensions.install_help",{extiverse:m("a",{href:"https://extiverse.com"},"extiverse.com")})),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().packageManager.control.isLoading("extension-install"),disabled:s().packageManager.control.isLoadingOtherThan("extension-install")},s().translator.trans("flarum-package-manager.admin.extensions.proceed"))))}data(){return{package:this.packageName()}}onsubmit(){s().packageManager.control.setLoading("extension-install"),s().modal.show(u()),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/package-manager/extensions"),body:{data:this.data()}}).then((a=>{if(a.processing)W();else{const e=a.id;s().alerts.show({type:"success"},s().translator.trans("flarum-package-manager.admin.extensions.successful_install",{extension:e})),window.location.href="".concat(s().forum.attribute("adminUrl"),"#/extension/").concat(e),window.location.reload()}})).catch(H).finally((()=>{s().packageManager.control.setLoading(null),s().modal.close(),m.redraw()}))}}flarum.reg.add("flarum-package-manager","admin/components/Installer",G);const R=flarum.reg.get("core","common/helpers/humanTime");var V=t.n(R);class Q extends(j()){constructor(){super(...arguments),A(this,"loading",!0),A(this,"whyNot",null)}className(){return"Modal--large WhyNotModal"}title(){return s().translator.trans("flarum-package-manager.admin.why_not_modal.title")}oncreate(a){super.oncreate(a),this.requestWhyNot()}content(){return m("div",{className:"Modal-body"},this.loading?m(v(),null):m("pre",{className:"WhyNotModal-contents"},this.whyNot))}requestWhyNot(){s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/package-manager/why-not"),body:{data:{package:this.attrs.package}}}).then((a=>{this.loading=!1,this.whyNot=a.data.reason,m.redraw()})).catch(H)}}flarum.reg.add("flarum-package-manager","admin/components/WhyNotModal",Q);class Z extends(k()){view(a){var e;const{extension:t,updates:n,onClickUpdate:r,whyNotWarning:o,isCore:i,isDanger:c}=this.attrs,u=null!=(e=n["latest-minor"])?e:n["latest-major"]&&!i?n["latest-major"]:null;return m("div",{className:$()({"PackageManager-extension":!0,"PackageManager-extension--core":i,"PackageManager-extension--danger":c})},m("div",{className:"PackageManager-extension-icon ExtensionIcon",style:t.icon},t.icon?m(N(),{name:t.icon.name}):""),m("div",{className:"PackageManager-extension-info"},m("div",{className:"PackageManager-extension-name"},t.extra["flarum-extension"].title),m("div",{className:"PackageManager-extension-version"},m("span",{className:"PackageManager-extension-version-current"},this.version(n.version)),u?m(T,{className:"PackageManager-extension-version-latest",type:n["latest-minor"]?"success":"warning"},this.version(u)):null)),m("div",{className:"PackageManager-extension-controls"},r?m(x(),{text:s().translator.trans("flarum-package-manager.admin.extensions.update")},m(l(),{icon:"fas fa-arrow-alt-circle-up",className:"Button Button--icon Button--flat",onclick:r,"aria-label":s().translator.trans("flarum-package-manager.admin.extensions.update")})):null,o?m(x(),{text:s().translator.trans("flarum-package-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(Q,{package:t.name}),"aria-label":s().translator.trans("flarum-package-manager.admin.extensions.check_why_it_failed_updating")})):null))}version(a){return"v"+a.replace("v","")}}flarum.reg.add("flarum-package-manager","admin/components/ExtensionItem",Z);class z extends(k()){constructor(){super(...arguments),A(this,"updateState",void 0)}oninit(a){super.oninit(a),this.updateState=this.attrs.updateState}view(){return m("div",{className:"Form-group Form-group--danger PackageManager-majorUpdate"},m("img",{alt:"flarum logo",src:s().forum.attribute("baseUrl")+"/assets/extensions/flarum-package-manager/flarum.svg"}),m("label",null,s().translator.trans("flarum-package-manager.admin.major_updater.title",{version:this.attrs.coreUpdate["latest-major"]})),m("p",{className:"helpText"},s().translator.trans("flarum-package-manager.admin.major_updater.description")),m("div",{className:"PackageManager-updaterControls"},m(x(),{text:s().translator.trans("flarum-package-manager.admin.major_updater.dry_run_help")},m(l(),{className:"Button",icon:"fas fa-vial",onclick:this.update.bind(this,!0),disabled:s().packageManager.control.isLoadingOtherThan("major-update-dry-run")},s().translator.trans("flarum-package-manager.admin.major_updater.dry_run"))),m(l(),{className:"Button Button--danger",icon:"fas fa-play",onclick:this.update.bind(this,!1),disabled:s().packageManager.control.isLoadingOtherThan("major-update")},s().translator.trans("flarum-package-manager.admin.major_updater.update"))),this.updateState.incompatibleExtensions.length?m("div",{className:"PackageManager-majorUpdate-incompatibleExtensions PackageManager-extensions-grid"},this.updateState.incompatibleExtensions.map((a=>m(Z,{extension:s().data.extensions[a.replace("flarum-","").replace("flarum-ext-","").replace("/","-")],updates:{},onClickUpdate:null,isDanger:!0})))):null,"failure"===this.updateState.status?m(h(),{type:"error",className:"PackageManager-majorUpdate-failure",dismissible:!1,controls:[m(l(),{className:"Button Button--text PackageManager-majorUpdate-failure-details",icon:"fas fa-question-circle",onclick:()=>s().modal.show(Q,{package:"flarum/core"})},s().translator.trans("flarum-package-manager.admin.major_updater.failure.why"))]},m("p",{className:"PackageManager-majorUpdate-failure-desc"},s().translator.trans("flarum-package-manager.admin.major_updater.failure.desc"))):null)}update(a){s().packageManager.control.setLoading(a?"major-update-dry-run":"major-update"),s().modal.show(u()),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/package-manager/major-update"),body:{data:{dryRun:a}}}).then((a=>{null!=a&&a.processing?W():(s().alerts.show({type:"success"},s().translator.trans("flarum-package-manager.admin.update_successful")),window.location.reload())})).catch(H).catch((a=>{var e,t,n;s().modal.close(),this.updateState.status="failure",this.updateState.incompatibleExtensions=null==(e=a.response)||null==(t=e.errors)||null==(n=t.pop())?void 0:n.incompatible_extensions})).finally((()=>{s().packageManager.control.setLoading(null),m.redraw()}))}}flarum.reg.add("flarum-package-manager","admin/components/MajorUpdater",z);class J extends(k()){view(){const a=s().packageManager.control.coreUpdate;return[m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-package-manager.admin.updater.updater_title")),m("p",{className:"helpText"},s().translator.trans("flarum-package-manager.admin.updater.updater_help")),this.lastUpdateCheckView(),m("div",{className:"PackageManager-updaterControls"},this.controlItems().toArray()),this.availableUpdatesView()),a&&a.package["latest-major"]?m(z,{coreUpdate:a.package,updateState:s().packageManager.control.lastUpdateRun.major}):null]}lastUpdateCheckView(){var a;return(null==(a=s().packageManager.control.lastUpdateCheck)?void 0:a.checkedAt)&&m("p",{className:"PackageManager-lastUpdatedAt"},m("span",{className:"PackageManager-lastUpdatedAt-label"},s().translator.trans("flarum-package-manager.admin.updater.last_update_checked_at")),m("span",{className:"PackageManager-lastUpdatedAt-value"},V()(s().packageManager.control.lastUpdateCheck.checkedAt)))||null}availableUpdatesView(){const a=s().packageManager.control;return s().packageManager.control.isLoading()?m("div",{className:"PackageManager-extensions"},m(v(),null)):a.extensionUpdates.length||a.coreUpdate?m("div",{className:"PackageManager-extensions"},m("div",{className:"PackageManager-extensions-grid"},a.coreUpdate?m(Z,{extension:a.coreUpdate.extension,updates:a.coreUpdate.package,isCore:!0,onClickUpdate:()=>a.updateCoreMinor(),whyNotWarning:a.lastUpdateRun.limitedPackages().includes("flarum/core")}):null,a.extensionUpdates.map((e=>m(Z,{extension:e,updates:a.packageUpdates[e.id],onClickUpdate:()=>a.updateExtension(e),whyNotWarning:a.lastUpdateRun.limitedPackages().includes(e.name)}))))):m("div",{className:"PackageManager-extensions"},m(h(),{type:"success",dismissible:!1},s().translator.trans("flarum-package-manager.admin.updater.up_to_date")))}controlItems(){const a=new(w());return a.add("updateCheck",m(l(),{className:"Button",icon:"fas fa-sync-alt",onclick:()=>s().packageManager.control.checkForUpdates(),loading:s().packageManager.control.isLoading("check"),disabled:s().packageManager.control.isLoadingOtherThan("check")},s().translator.trans("flarum-package-manager.admin.updater.check_for_updates")),100),a.add("globalUpdate",m(l(),{className:"Button",icon:"fas fa-play",onclick:()=>s().packageManager.control.updateGlobally(),loading:s().packageManager.control.isLoading("global-update"),disabled:s().packageManager.control.isLoadingOtherThan("global-update")},s().translator.trans("flarum-package-manager.admin.updater.run_global_update"))),a}}flarum.reg.add("flarum-package-manager","admin/components/Updater",J);class K extends(k()){oninit(a){super.oninit(a)}view(){return m("div",{className:"ExtensionPage-permissions PackageManager-controlSection"},m("div",{className:"ExtensionPage-permissions-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},s().translator.trans("flarum-package-manager.admin.sections.control.title")))),m("div",{className:"container"},s().data["flarum-package-manager.writable_dirs"]?m("[",null,m(G,null),m(J,null)):m("div",{className:"Form-group"},m(h(),{type:"warning",dismissible:!1},s().translator.trans("flarum-package-manager.admin.file_permissions")))))}}flarum.reg.add("flarum-package-manager","admin/components/ControlSection",K);class X extends(o()){sections(a){const e=super.sections(a);return e.setPriority("content",10),e.add("control",m(K,null),8),parseInt(s().data.settings["flarum-package-manager.queue_jobs"])&&e.add("queue",m(D,null),5),e.setPriority("permissions",0),e}}flarum.reg.add("flarum-package-manager","admin/components/SettingsPage",X);const aa=flarum.reg.get("core","common/Model");var ea=t.n(aa);const ta=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],na=["B","kiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],sa=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],ra=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],oa=(a,e,t)=>{let n=a;return"string"==typeof e||Array.isArray(e)?n=a.toLocaleString(e,t):!0!==e&&void 0===t||(n=a.toLocaleString(void 0,t)),n};class ia extends(ea()){status(){return ea().attribute("status").call(this)}operation(){return ea().attribute("operation").call(this)}command(){return ea().attribute("command").call(this)}package(){return ea().attribute("package").call(this)}output(){return ea().attribute("output").call(this)}createdAt(){return ea().attribute("createdAt",ea().transformDate).call(this)}startedAt(){return ea().attribute("startedAt",ea().transformDate).call(this)}finishedAt(){return ea().attribute("finishedAt",ea().transformDate).call(this)}peakMemoryUsed(){return function(a,e){if(!Number.isFinite(a))throw new TypeError("Expected a finite number, got ".concat(typeof a,": ").concat(a));const t=(e={bits:!1,binary:!1,...e}).bits?e.binary?ra:sa:e.binary?na:ta;if(e.signed&&0===a)return" 0 ".concat(t[0]);const n=a<0,s=n?"-":e.signed?"+":"";let r;if(n&&(a=-a),void 0!==e.minimumFractionDigits&&(r={minimumFractionDigits:e.minimumFractionDigits}),void 0!==e.maximumFractionDigits&&(r={maximumFractionDigits:e.maximumFractionDigits,...r}),a<1)return s+oa(a,e.locale,r)+" "+t[0];const o=Math.min(Math.floor(e.binary?Math.log(a)/Math.log(1024):Math.log10(a)/3),t.length-1);return a/=(e.binary?1024:1e3)**o,r||(a=a.toPrecision(3)),s+oa(Number(a),e.locale,r)+" "+t[o]}(1024*ea().attribute("peakMemoryUsed").call(this))}}flarum.reg.add("flarum-package-manager","admin/models/Task",ia);class la{constructor(){A(this,"tasks",null),A(this,"limit",20),A(this,"offset",0),A(this,"total",0)}load(a){var e;return this.tasks=null,a={page:{limit:this.limit,offset:this.offset,...null==(e=a)?void 0:e.page},...a},s().store.find("package-manager-tasks",a||{}).then((a=>{var e;return this.tasks=a,this.total=null==(e=a.payload.meta)?void 0:e.total,m.redraw(),a}))}getItems(){return this.tasks}getTotalPages(){return Math.ceil(this.total/this.limit)}pageNumber(){return Math.ceil(this.offset/this.limit)}hasPrev(){return 0!==this.pageNumber()}hasNext(){return this.offset+this.limit[...a.major.limitedPackages,...a.minor.limitedPackages,...a.global.limitedPackages],a}constructor(){A(this,"loading",null),A(this,"packageUpdates",{}),A(this,"lastUpdateCheck",void 0),A(this,"extensionUpdates",void 0),A(this,"coreUpdate",null),this.lastUpdateCheck=JSON.parse(s().data.settings["flarum-package-manager.last_update_check"]),this.extensionUpdates=this.formatExtensionUpdates(this.lastUpdateCheck),this.coreUpdate=this.formatCoreUpdate(this.lastUpdateCheck)}isLoading(a){return void 0===a&&(a=null),a&&this.loading===a||!a&&null!==this.loading}isLoadingOtherThan(a){return null!==this.loading&&this.loading!==a}setLoading(a){this.loading=a}checkForUpdates(){this.setLoading("check"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/package-manager/check-for-updates")}).then((a=>{a.processing?W():(this.lastUpdateCheck=a,this.extensionUpdates=this.formatExtensionUpdates(a),this.coreUpdate=this.formatCoreUpdate(a),m.redraw())})).catch(H).finally((()=>{this.setLoading(null),m.redraw()}))}updateCoreMinor(){confirm(U()(s().translator.trans("flarum-package-manager.admin.minor_update_confirmation.content")))&&(s().modal.show(u()),this.setLoading("minor-update"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/package-manager/minor-update")}).then((a=>{null!=a&&a.processing?W():(s().alerts.show({type:"success"},s().translator.trans("flarum-package-manager.admin.update_successful")),window.location.reload())})).catch(H).finally((()=>{this.setLoading(null),s().modal.close(),m.redraw()})))}updateExtension(a){s().modal.show(u()),this.setLoading("extension-update"),s().request({method:"PATCH",url:"".concat(s().forum.attribute("apiUrl"),"/package-manager/extensions/").concat(a.id)}).then((e=>{null!=e&&e.processing?W():(s().alerts.show({type:"success"},s().translator.trans("flarum-package-manager.admin.extensions.successful_update",{extension:a.extra["flarum-extension"].title})),window.location.reload())})).catch(H).finally((()=>{this.setLoading(null),s().modal.close(),m.redraw()}))}updateGlobally(){s().modal.show(u()),this.setLoading("global-update"),s().request({method:"POST",url:"".concat(s().forum.attribute("apiUrl"),"/package-manager/global-update")}).then((a=>{null!=a&&a.processing?W():(s().alerts.show({type:"success"},s().translator.trans("flarum-package-manager.admin.updater.global_update_successful")),window.location.reload())})).catch(H).finally((()=>{this.setLoading(null),s().modal.close(),m.redraw()}))}formatExtensionUpdates(a){var e,t;return this.packageUpdates={},null==a||null==(e=a.updates)||null==(t=e.installed)||t.filter((a=>{const e=a.name.replace("/","-").replace(/(flarum-ext-)|(flarum-)/,""),t=s().data.extensions[e],n=["semver-safe-update","update-possible"].includes(a["latest-status"]);return t&&n&&(this.packageUpdates[t.id]=a),t&&n})),Object.values(s().data.extensions).filter((a=>this.packageUpdates[a.id]))}formatCoreUpdate(a){var e,t;const n=null==a||null==(e=a.updates)||null==(t=e.installed)?void 0:t.filter((a=>"flarum/core"===a.name)).pop();return n?{package:n,extension:{id:"flarum-core",name:"flarum/core",version:s().data.settings.version,icon:{backgroundImage:"url(".concat(s().data.resources[0].attributes.baseUrl,"/assets/extensions/flarum-package-manager/flarum.svg")},extra:{"flarum-extension":{title:U()(s().translator.trans("flarum-package-manager.admin.updater.flarum"))}}}}:null}}flarum.reg.add("flarum-package-manager","admin/states/ControlSectionState",ca);class ma{constructor(){A(this,"queue",new la),A(this,"control",new ca)}}flarum.reg.add("flarum-package-manager","admin/states/PackageManagerState",ma),s().initializers.add("flarum-package-manager",(e=>{e.store.models["package-manager-tasks"]=ia,e.packageManager=new ma,e.extensionData.for("flarum-package-manager").registerSetting((()=>m("div",{className:"Form-group"},m(h(),{type:"warning",dismissible:!1},e.translator.trans("flarum-package-manager.admin.settings.access_warning"))))).registerSetting({setting:"flarum-package-manager.queue_jobs",label:e.translator.trans("flarum-package-manager.admin.settings.queue_jobs"),help:m.trust(U()(e.translator.trans("flarum-package-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(e.data.phpVersion,""),folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),default:!1,type:"boolean",disabled:e.data["flarum-package-manager.using_sync_queue"]}).registerPage(X),(0,a.extend)(o().prototype,"topItems",(function(a){"flarum-package-manager"===this.extension.id||g()(this.extension.id)||a.add("remove",m(l(),{className:"Button Button--danger",icon:"fas fa-times",onclick:()=>{e.modal.show(u()),e.request({url:"".concat(e.forum.attribute("apiUrl"),"/package-manager/extensions/").concat(this.extension.id),method:"DELETE"}).then((a=>{null!=a&&a.processing?W():(e.alerts.show({type:"success"},e.translator.trans("flarum-package-manager.admin.extensions.successful_remove")),window.location=e.forum.attribute("adminUrl"))})).finally((()=>{e.modal.close()}))}},"Remove"))}))}))})(),module.exports=n})(); +(()=>{var t={647:function(t){t.exports=function(){"use strict";var t,e,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=2592e6,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(t){return t instanceof b},d=function(t,e,a){return new b(t,a,e.$l)},g=function(t){return e.p(t)+"s"},p=function(t){return t<0},h=function(t){return p(t)?Math.ceil(t):Math.floor(t)},f=function(t){return Math.abs(t)},x=function(t,e){return t?p(t)?{negative:!0,format:""+f(t)+e}:{negative:!1,format:""+t+e}:{negative:!1,format:""}},b=function(){function p(t,e,a){var n=this;if(this.$d={},this.$l=a,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),e)return d(t*u[g(e)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach((function(e){n.$d[g(e)]=t[e]})),this.calMilliseconds(),this;if("string"==typeof t){var s=t.match(m);if(s){var r=s.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 f=p.prototype;return f.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(e,a){return e+(t.$d[a]||0)*u[a]}),0)},f.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=h(t/i),t%=i,this.$d.months=h(t/l),t%=l,this.$d.days=h(t/r),t%=r,this.$d.hours=h(t/s),t%=s,this.$d.minutes=h(t/n),t%=n,this.$d.seconds=h(t/a),t%=a,this.$d.milliseconds=t},f.toISOString=function(){var t=x(this.$d.years,"Y"),e=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);var i=x(o,"S"),l=t.negative||e.negative||n.negative||s.negative||r.negative||i.negative,m=s.format||r.format||i.format?"T":"",u=(l?"-":"")+"P"+t.format+e.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(t){var a=t||"YYYY-MM-DDTHH:mm:ss",n={Y:this.$d.years,YY:e.s(this.$d.years,2,"0"),YYYY:e.s(this.$d.years,4,"0"),M:this.$d.months,MM:e.s(this.$d.months,2,"0"),D:this.$d.days,DD:e.s(this.$d.days,2,"0"),H:this.$d.hours,HH:e.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:e.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:e.s(this.$d.seconds,2,"0"),SSS:e.s(this.$d.milliseconds,3,"0")};return a.replace(o,(function(t,e){return e||String(n[t])}))},f.as=function(t){return this.$ms/u[g(t)]},f.get=function(t){var e=this.$ms,a=g(t);return"milliseconds"===a?e%=1e3:e="weeks"===a?h(e/u[a]):this.$d[a],0===e?0:e},f.add=function(t,e,a){var n;return n=e?t*u[g(e)]:c(t)?t.$ms:d(t,this).$ms,d(this.$ms+n*(a?-1:1),this)},f.subtract=function(t,e){return this.add(t,e,!0)},f.locale=function(t){var e=this.clone();return e.$l=t,e},f.clone=function(){return d(this.$ms,this)},f.humanize=function(e){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!e)},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}();return function(a,n,s){t=s,e=s().$utils(),s.duration=function(t,e){var a=s.locale();return d(t,{$l:a},e)},s.isDuration=c;var r=n.prototype.add,o=n.prototype.subtract;n.prototype.add=function(t,e){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,e)},n.prototype.subtract=function(t,e){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,e)}}}()}},e={};function a(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={exports:{}};return t[n].call(r.exports,r,r.exports,a),r.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";a.r(n);const t=flarum.reg.get("core","common/extend"),e=flarum.reg.get("core","admin/app");var s=a.n(e);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);const p=flarum.reg.get("core","common/Component");var h=a.n(p);const f=flarum.reg.get("core","common/components/LoadingIndicator");var x=a.n(f);const b=flarum.reg.get("core","common/components/Tooltip");var y=a.n(b);const v=flarum.reg.get("core","common/components/Icon");var _=a.n(v);const k=flarum.reg.get("core","common/utils/ItemList");var N=a.n(k);const M=flarum.reg.get("core","common/utils/extractText");var w=a.n(M);const E=flarum.reg.get("core","common/components/Link");var S=a.n(E);const U=flarum.reg.get("core","common/utils/classList");var B=a.n(U);class q extends(h()){view(t){const{className:e,type:a,...n}=this.attrs;return m("span",Object.assign({className:B()(["Label","Label--".concat(this.attrs.type),e])},n),t.children)}}flarum.reg.add("flarum-extension-manager","admin/components/Label",q);const j=flarum.reg.get("core","common/components/Modal");var T=a.n(j);class $ extends(T()){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",$);var C=a(647),P=a.n(C);function F(t,e){dayjs.extend(P());const a=dayjs(e).diff(t);return dayjs.duration(a).humanize()}flarum.reg.add("flarum-extension-manager","admin/utils/humanDuration",F);class L extends(h()){view(){return m("nav",{className:"Pagination UserListPage-gridPagination"},m(l(),{disabled:!this.attrs.list.hasPrev()||s().extensionManager.control.isLoading(),title:s().translator.trans("core.admin.users.pagination.back_button"),onclick:()=>this.attrs.list.prev(),icon:"fas fa-chevron-left",className:"Button Button--icon UserListPage-backBtn"}),m("span",{className:"UserListPage-pageNumber"},s().translator.trans("core.admin.users.pagination.page_counter",{current:this.attrs.list.pageNumber()+1,total:this.attrs.list.getTotalPages()})),m(l(),{disabled:!this.attrs.list.hasNext()||s().extensionManager.control.isLoading(),title:s().translator.trans("core.admin.users.pagination.next_button"),onclick:()=>this.attrs.list.next(),icon:"fas fa-chevron-right",className:"Button Button--icon UserListPage-nextBtn"}))}}flarum.reg.add("flarum-extension-manager","admin/components/Pagination",L);class O extends(h()){oninit(t){super.oninit(t),s().extensionManager.queue.load()}view(){return m("section",{id:"ExtensionManager-queueSection",className:"ExtensionPage-permissions 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 t=new(N());return t.add("operation",{label:w()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.operation")),content:t=>m("div",{className:"ExtensionManager-queueTable-operation"},m("span",{className:"ExtensionManager-queueTable-operation-icon"},this.operationIcon(t.operation())),m("span",{className:"ExtensionManager-queueTable-operation-name"},s().translator.trans("flarum-extension-manager.admin.sections.queue.operations.".concat(t.operation()))))},80),t.add("package",{label:w()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.package")),content:t=>{var e;const a=s().data.extensions[null==(e=t.package())?void 0:e.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return a?m(S(),{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(_(),{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"},t.package()))):t.package()}},75),t.add("status",{label:w()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.status")),content:t=>m("[",null,m(q,{className:"ExtensionManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[t.status()]},s().translator.trans("flarum-extension-manager.admin.sections.queue.statuses.".concat(t.status()))),["pending","running"].includes(t.status())&&m(x(),{size:"small",display:"inline"}))},70),t.add("elapsedTime",{label:w()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.elapsed_time")),content:t=>t.startedAt()&&t.finishedAt()?m(y(),{text:"".concat(dayjs(t.startedAt()).format("LL LTS")," ").concat(dayjs(t.finishedAt()).format("LL LTS"))},m("span",null,F(t.startedAt(),t.finishedAt()))):s().translator.trans("flarum-extension-manager.admin.sections.queue.task_just_started")},65),t.add("memoryUsed",{label:w()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.peak_memory_used")),content:t=>m("span",null,t.peakMemoryUsed())},60),t.add("details",{label:w()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.details")),content:t=>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($,{task:t}),disabled:["pending","running"].includes(t.status())}),className:"Table-controls"},55),t}queueTable(){const t=s().extensionManager.queue.getItems();if(!t)return m(x(),null);if(t&&!t.length)return m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("flarum-extension-manager.admin.sections.queue.none"));const e=this.columns();return m("[",null,m("table",{className:"Table ExtensionManager-queueTable"},m("thead",null,m("tr",null,e.toArray().map(((t,e)=>m("th",{key:e},t.label))))),m("tbody",null,t.map(((t,a)=>m("tr",{key:a},e.toArray().map(((e,a)=>{const{label:n,content:s,...r}=e;return m("td",Object.assign({key:a},r),s(t))}))))))),m(L,{list:s().extensionManager.queue}))}operationIcon(t){return m(_(),{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"}[t]})}}flarum.reg.add("flarum-extension-manager","admin/components/QueueSection",O);const A=flarum.reg.get("core","common/components/Alert");var D=a.n(A);function I(t){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},I(t)}function Y(t,e,a){return(e=function(t){var e=function(t,e){if("object"!==I(t)||null===t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var n=a.call(t,e);if("object"!==I(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===I(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}const R=flarum.reg.get("core","common/utils/Stream");var G=a.n(R);class W extends(h()){constructor(){super(...arguments),Y(this,"packageName",void 0)}oninit(t){super.oninit(t),this.packageName=G()("")}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",{extiverse:m("a",{href:"https://extiverse.com"},"extiverse.com"),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",W);const H=flarum.reg.get("core","common/helpers/humanTime");var Q=a.n(H);function J(t){s().extensionManager.control.setLoading(null);const e=t.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(e.code))throw t;switch(s().alerts.clear(),e.code){case"composer_command_failure":e.guessed_cause?(s().alerts.show({type:"error"},s().translator.trans("flarum-extension-manager.admin.exceptions.guessed_cause.".concat(e.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()}}class V extends(T()){constructor(){super(...arguments),Y(this,"loading",!0),Y(this,"whyNot",null)}className(){return"Modal--large WhyNotModal"}title(){return s().translator.trans("flarum-extension-manager.admin.why_not_modal.title")}oncreate(t){super.oncreate(t),this.requestWhyNot()}content(){return m("div",{className:"Modal-body"},this.loading?m(x(),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((t=>{this.loading=!1,this.whyNot=t.data.reason,m.redraw()})).catch(J)}}flarum.reg.add("flarum-extension-manager","admin/components/WhyNotModal",V);const Z=flarum.reg.get("core","common/components/Dropdown");var z=a.n(Z);class K extends(h()){view(t){var e;const{extension:a,updates:n,onClickUpdate:r,whyNotWarning:o,isCore:i,isDanger:u}=this.attrs,c=null!=(e=n["latest-minor"])?e:n["latest-major"]&&!i?n["latest-major"]:null;return m("div",{className:B()({"ExtensionManager-extension":!0,"ExtensionManager-extension--core":i,"ExtensionManager-extension--danger":u})},m("div",{className:"ExtensionManager-extension-icon ExtensionIcon",style:a.icon},a.icon?m(_(),{name:a.icon.name}):""),m("div",{className:"ExtensionManager-extension-info"},m("div",{className:"ExtensionManager-extension-name"},a.extra["flarum-extension"].title),m("div",{className:"ExtensionManager-extension-version"},m("span",{className:"ExtensionManager-extension-version-current"},this.version(n.version)),c?m(q,{className:"ExtensionManager-extension-version-latest",type:n["latest-minor"]?"success":"warning"},this.version(c)):null)),m("div",{className:"ExtensionManager-extension-controls"},r&&"function"==typeof r?m(y(),{text:s().translator.trans("flarum-extension-manager.admin.extensions.update")},m(l(),{icon:"fas fa-arrow-alt-circle-up",className:"Button Button--icon Button--flat",onclick:r,"aria-label":s().translator.trans("flarum-extension-manager.admin.extensions.update")})):r?m(z(),{buttonClassName:"Button Button--icon Button--flat",icon:"fas fa-arrow-alt-circle-up",label:s().translator.trans("flarum-extension-manager.admin.extensions.update")},m(l(),{icon:"fas fa-arrow-alt-circle-up",className:"Button",onclick:r.soft},s().translator.trans("flarum-extension-manager.admin.extensions.update_soft_label")),m(l(),{icon:"fas fa-arrow-alt-circle-up",className:"Button",onclick:r.hard,disabled:!n["direct-dependency"]},s().translator.trans("flarum-extension-manager.admin.extensions.update_hard_label"))):null,o?m(y(),{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(V,{package:a.name}),"aria-label":s().translator.trans("flarum-extension-manager.admin.extensions.check_why_it_failed_updating")})):null))}version(t){return"v"===t.charAt(0)?t.substring(1):t}}flarum.reg.add("flarum-extension-manager","admin/components/ExtensionItem",K);class X extends(h()){constructor(){super(...arguments),Y(this,"updateState",void 0)}oninit(t){super.oninit(t),this.updateState=this.attrs.updateState}view(){return m("div",{className:B()("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(y(),{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((t=>m(K,{extension:s().data.extensions[t.replace("flarum-","").replace("flarum-ext-","").replace("/","-")],updates:{},onClickUpdate:null,isDanger:!0})))):null,"failure"===this.updateState.status?m(D(),{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(V,{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(t){s().extensionManager.control.majorUpdate({dryRun:t})}}flarum.reg.add("flarum-extension-manager","admin/components/MajorUpdater",X);class tt extends(h()){view(){const t=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()),t&&t.package["latest-major"]?m(X,{coreUpdate:t.package,updateState:s().extensionManager.control.lastUpdateRun.major}):null]}lastUpdateCheckView(){var t;return(null==(t=s().extensionManager.control.lastUpdateCheck)?void 0:t.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"},Q()(s().extensionManager.control.lastUpdateCheck.checkedAt)))||null}availableUpdatesView(){const t=s().extensionManager.control;if(s().extensionManager.control.isLoading("check")||s().extensionManager.control.isLoading("global-update"))return m("div",{className:"ExtensionManager-extensions"},m(x(),null));const e=t.coreUpdate&&t.coreUpdate.package["latest-minor"];return t.extensionUpdates.length||e?m("div",{className:"ExtensionManager-extensions"},m("div",{className:"ExtensionManager-extensions-grid"},e?m(K,{extension:t.coreUpdate.extension,updates:t.coreUpdate.package,isCore:!0,onClickUpdate:()=>t.updateCoreMinor(),whyNotWarning:t.lastUpdateRun.limitedPackages().includes("flarum/core")}):null,t.extensionUpdates.map((e=>m(K,{extension:e,updates:t.packageUpdates[e.id],onClickUpdate:{soft:()=>t.updateExtension(e,"soft"),hard:()=>t.updateExtension(e,"hard")},whyNotWarning:t.lastUpdateRun.limitedPackages().includes(e.name)}))))):m("div",{className:"ExtensionManager-extensions"},m("span",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.updater.up_to_date")))}controlItems(){const t=new(N());return t.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),t.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"))),t}}flarum.reg.add("flarum-extension-manager","admin/components/Updater",tt);const et=flarum.reg.get("core","common/components/Form");var at=a.n(et);class nt extends(h()){oninit(t){super.oninit(t)}view(){return m("div",{className:"ExtensionPage-permissions ExtensionManager-controlSection"},m("div",{className:"ExtensionPage-permissions-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},s().translator.trans("flarum-extension-manager.admin.sections.control.title")))),m("div",{className:"container"},s().data["flarum-extension-manager.writable_dirs"]?m(at(),null,m(W,null),m(tt,null)):m("div",{className:"Form-group"},m(D(),{type:"warning",dismissible:!1},s().translator.trans("flarum-extension-manager.admin.file_permissions")))))}}flarum.reg.add("flarum-extension-manager","admin/components/ControlSection",nt);const st=flarum.reg.get("core","admin/components/AdminPage");var rt=a.n(st);class ot extends(h()){constructor(){super(...arguments),Y(this,"settings",{}),Y(this,"initialSettings",null),Y(this,"loading",!1),Y(this,"type",void 0)}oninit(t){super.oninit(t),this.submit(!0)}className(){return""}view(){return m("div",{className:B()("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 rt().prototype.customSettingComponents()}setting(t){var e;return null!=(e=this.settings[t])?e:this.settings[t]=G()()}submit(t){this.loading=!0;const e={};Object.keys(this.settings).forEach((t=>{e[t]=this.settings[t]()})),s().request({method:"POST",url:s().forum.attribute("apiUrl")+"/extension-manager/composer",body:{type:this.type,data:t?null:e}}).then((t=>{let{data:e}=t;Object.keys(e).forEach((t=>{this.settings[t]=G()(e[t])})),this.initialSettings=Array.isArray(e)?{}:e})).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",ot);const it=flarum.reg.get("core","common/components/Select");var lt=a.n(it);class mt extends(T()){constructor(){super(...arguments),Y(this,"name",void 0),Y(this,"repository",void 0)}oninit(t){super.oninit(t),this.name=G()(this.attrs.name||""),this.repository=G()(this.attrs.repository||{type:"composer",url:""})}className(){return"RepositoryModal Modal--small"}title(){const t=this.attrs.repository?"edit":"add";return s().translator.trans("flarum-extension-manager.admin.composer.".concat(t,"_repository_label"))}content(){const t={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("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(lt(),{options:t,value:this.repository().type,onchange:t=>this.repository({...this.repository(),type:t})})),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:t=>this.repository({...this.repository(),url:t.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",mt);class ut extends ot{constructor(){super(...arguments),Y(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((t=>{const e=this.setting("repositories")()[t];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"}[e.type],onclick:()=>s().modal.show(mt,{name:t,repository:e,onsubmit:(e,a)=>{const n=this.setting("repositories")();delete n[t],this.setting("repositories")(n),this.onchange(e,a)}})},t," (",e.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(w()(s().translator.trans("flarum-extension-manager.admin.composer.delete_repository_confirmation")))){const e={...this.setting("repositories")()};delete e[t],this.setting("repositories")(e)}}}))})))))}submitButton(){const t=super.submitButton();return t.push(m(l(),{className:"Button",onclick:()=>s().modal.show(mt,{onsubmit:this.onchange.bind(this)})},s().translator.trans("flarum-extension-manager.admin.composer.add_repository_label"))),t}onchange(t,e){this.setting("repositories")({...this.setting("repositories")(),[e]:t})}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureComposer",ut);const ct=flarum.reg.get("core","common/helpers/listItems");var dt=a.n(ct);class gt extends(T()){constructor(){super(...arguments),Y(this,"type",void 0),Y(this,"host",void 0),Y(this,"token",void 0)}oninit(t){super.oninit(t),this.type=G()(this.attrs.type||"bearer"),this.host=G()(this.attrs.host||""),this.token=G()(this.attrs.token||"")}className(){return"AuthMethodModal Modal--small"}title(){const t=this.attrs.host?"edit":"add";return s().translator.trans("flarum-extension-manager.admin.auth_config.".concat(t,"_label"))}content(){const t={"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("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.add_modal.type_label")),m(lt(),{options:t,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:t=>this.token(t.target.value),rows:"6",placeholder:this.token().startsWith("unchanged:")?w()(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",gt);class pt extends ot{constructor(){super(...arguments),Y(this,"type","auth")}title(){return s().translator.trans("flarum-extension-manager.admin.auth_config.title")}className(){return"ConfigureAuth"}content(){const t=Object.keys(this.settings),e=t.length&&t.every((t=>{const e=this.settings[t]();return Array.isArray(e)?e.length:Object.keys(e).length}));return m("div",{className:"ExtensionManager-SettingsGroups-content"},e?t.map((t=>{const e=this.settings[t]();return m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.auth_config.types.".concat(t))),m("div",{className:"ConfigureAuth-hosts"},Object.keys(e).map((a=>{const n=e[a];return m("div",{className:"ButtonGroup ButtonGroup--full"},m(l(),{className:"Button",icon:"fas fa-key",onclick:()=>s().modal.show(gt,{type:t,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(w()(s().translator.trans("flarum-extension-manager.admin.auth_config.delete_confirmation")))){const e={...this.setting(t)()};delete e[a],Object.keys(e).length?this.setting(t)(e):delete this.settings[t]}}}))}))))})):m("span",{className:"helpText"},s().translator.trans("flarum-extension-manager.admin.auth_config.no_auth_methods_configured")))}submitButton(){const t=super.submitButton();return t.push(m(l(),{className:"Button",loading:this.loading,onclick:()=>s().modal.show(gt,{onsubmit:this.onchange.bind(this,null)})},s().translator.trans("flarum-extension-manager.admin.auth_config.add_label"))),t}onchange(t,e,a,n){const s={...this.setting(e)()};t&&delete s[t],s[a]=n,this.setting(e)(s)}}flarum.reg.add("flarum-extension-manager","admin/components/ConfigureAuth",pt);class ht extends(o()){content(){const t=s().extensionData.getSettings(this.extension.id),e=[s().translator.trans("flarum-extension-manager.admin.settings.access_warning")];return s().data.debugEnabled&&e.push(s().translator.trans("flarum-extension-manager.admin.settings.debug_mode_warning")),m("div",{className:"ExtensionPage-settings"},m("div",{className:"container"},m("div",{className:"ExtensionManager-warnings Form-group"},m(D(),{className:"ExtensionManager-primaryWarning",type:"warning",dismissible:!1},m("ul",null,dt()(e)))),t?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"},t.map(this.buildSettingComponent.bind(this))),m("div",{className:"Form-group Form--controls"},this.submitButton())),m(ut,{buildSettingComponent:this.buildSettingComponent}),m(pt,{buildSettingComponent:this.buildSettingComponent})):m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("core.admin.extension.no_settings"))))}sections(t){const e=super.sections(t);return e.setPriority("content",10),e.add("control",m(nt,null),8),"0"!==s().data.settings["flarum-extension-manager.queue_jobs"]&&s().data.settings["flarum-extension-manager.queue_jobs"]&&e.add("queue",m(O,null),5),e.remove("permissions"),e}onsaved(){super.onsaved(),m.redraw()}}flarum.reg.add("flarum-extension-manager","admin/components/SettingsPage",ht);const ft=flarum.reg.get("core","common/Model");var xt=a.n(ft);const bt=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],yt=["B","kiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],vt=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],_t=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],kt=(t,e,a)=>{let n=t;return"string"==typeof e||Array.isArray(e)?n=t.toLocaleString(e,a):!0!==e&&void 0===a||(n=t.toLocaleString(void 0,a)),n};class Nt extends(xt()){status(){return xt().attribute("status").call(this)}operation(){return xt().attribute("operation").call(this)}command(){return xt().attribute("command").call(this)}package(){return xt().attribute("package").call(this)}output(){return xt().attribute("output").call(this)}guessedCause(){return xt().attribute("guessedCause").call(this)}createdAt(){return xt().attribute("createdAt",xt().transformDate).call(this)}startedAt(){return xt().attribute("startedAt",xt().transformDate).call(this)}finishedAt(){return xt().attribute("finishedAt",xt().transformDate).call(this)}peakMemoryUsed(){return function(t,e){if(!Number.isFinite(t))throw new TypeError("Expected a finite number, got ".concat(typeof t,": ").concat(t));const a=(e={bits:!1,binary:!1,...e}).bits?e.binary?_t:vt:e.binary?yt:bt;if(e.signed&&0===t)return" 0 ".concat(a[0]);const n=t<0,s=n?"-":e.signed?"+":"";let r;if(n&&(t=-t),void 0!==e.minimumFractionDigits&&(r={minimumFractionDigits:e.minimumFractionDigits}),void 0!==e.maximumFractionDigits&&(r={maximumFractionDigits:e.maximumFractionDigits,...r}),t<1)return s+kt(t,e.locale,r)+" "+a[0];const o=Math.min(Math.floor(e.binary?Math.log(t)/Math.log(1024):Math.log10(t)/3),a.length-1);return t/=(e.binary?1024:1e3)**o,r||(t=t.toPrecision(3)),s+kt(Number(t),e.locale,r)+" "+a[o]}(1024*xt().attribute("peakMemoryUsed").call(this))}}function Mt(){s().modal.close(),m.route.set(s().route("extension",{id:"flarum-extension-manager"})),s().extensionManager.queue.load({},!0),setTimeout((()=>{var t;null==(t=document.getElementById("ExtensionManager-queueSection"))||t.scrollIntoView({block:"nearest"})}),200)}flarum.reg.add("flarum-extension-manager","admin/models/Task",Nt),window.jumpToQueue=Mt,flarum.reg.add("flarum-extension-manager","admin/utils/jumpToQueue",Mt);class wt{constructor(){Y(this,"polling",null),Y(this,"tasks",null),Y(this,"limit",20),Y(this,"offset",0),Y(this,"total",0)}load(t,e){var a;return void 0===e&&(e=!1),this.tasks=null,t={page:{limit:this.limit,offset:this.offset,...null==(a=t)?void 0:a.page},...t},s().store.find("extension-manager-tasks",t||{}).then((t=>{var a;return this.tasks=t,this.total=null==(a=t.payload.meta)?void 0:a.total,m.redraw(),(null==t?void 0:t.find((t=>"pending"===t.status()||"running"===t.status())))?this.pollQueue(e):e?(s().extensionManager.control.setLoading(null),window.location.reload()):s().extensionManager.control.isLoading()&&s().extensionManager.control.setLoading(null),t}))}getItems(){return this.tasks}getTotalPages(){return Math.ceil(this.total/this.limit)}pageNumber(){return Math.ceil(this.offset/this.limit)}hasPrev(){return 0!==this.pageNumber()}hasNext(){return this.offset+this.limit{this.load({},t)}),6e3)}hasPending(){var t;return!(null==(t=this.tasks)||!t.find((t=>"pending"===t.status()||"running"===t.status())))}}flarum.reg.add("flarum-extension-manager","admin/states/QueueState",wt);class Et{get lastUpdateRun(){const t=JSON.parse(s().data.settings["flarum-extension-manager.last_update_run"]);return t.limitedPackages=()=>[...t.major.limitedPackages,...t.minor.limitedPackages,...t.global.limitedPackages],t}constructor(){Y(this,"loading",null),Y(this,"packageUpdates",{}),Y(this,"lastUpdateCheck",void 0),Y(this,"extensionUpdates",void 0),Y(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(t){return void 0===t&&(t=null),t&&this.loading===t||!t&&null!==this.loading}hasOperationRunning(){return this.isLoading()||s().extensionManager.queue.hasPending()}setLoading(t){this.loading=t}requirePackage(t){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:t}}).then((t=>{if(t.processing)Mt();else{const e=t.id;s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.extensions.successful_install",{extension:e})),window.location.href="".concat(s().forum.attribute("adminUrl"),"#/extension/").concat(e),window.location.reload()}})).catch(J).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((t=>{t.processing?Mt():(this.lastUpdateCheck=t,this.extensionUpdates=this.formatExtensionUpdates(t),this.coreUpdate=this.formatCoreUpdate(t),this.setLoading(null),m.redraw())})).catch(J).finally((()=>{m.redraw()}))}updateCoreMinor(){confirm(w()(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((t=>{null!=t&&t.processing?Mt():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.update_successful")),window.location.reload())})).catch(J).finally((()=>{s().modal.close(),m.redraw()})))}updateExtension(t,e){s().modal.show(c()),this.setLoading("extension-update"),s().request({method:"PATCH",url:"".concat(s().forum.attribute("apiUrl"),"/extension-manager/extensions/").concat(t.id),body:{data:{updateMode:e}}}).then((e=>{null!=e&&e.processing?Mt():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.extensions.successful_update",{extension:t.extra["flarum-extension"].title})),window.location.reload())})).catch(J).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((t=>{null!=t&&t.processing?Mt():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.updater.global_update_successful")),window.location.reload())})).catch(J).finally((()=>{s().modal.close(),m.redraw()}))}formatExtensionUpdates(t){var e,a;return this.packageUpdates={},null==t||null==(e=t.updates)||null==(a=e.installed)||a.filter((t=>{const e=t.name.replace("/","-").replace(/(flarum-ext-)|(flarum-)/,""),a=s().data.extensions[e],n=["semver-safe-update","update-possible"].includes(t["latest-status"]);return a&&n&&(this.packageUpdates[a.id]=t),a&&n})),Object.values(s().data.extensions).filter((t=>this.packageUpdates[t.id]))}formatCoreUpdate(t){var e,a;const n=null==t||null==(e=t.updates)||null==(a=e.installed)?void 0:a.filter((t=>"flarum/core"===t.name)).pop();return n?{package:n,extension:{id:"flarum-core",name:"flarum/core",version:s().data.settings.version,icon:{backgroundImage:"url(".concat(s().data.resources[0].attributes.baseUrl,"/assets/extensions/flarum-extension-manager/flarum.svg")},extra:{"flarum-extension":{title:w()(s().translator.trans("flarum-extension-manager.admin.updater.flarum"))}}}}:null}majorUpdate(t){let{dryRun:e}=t;s().extensionManager.control.setLoading(e?"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:e}}}).then((t=>{null!=t&&t.processing?Mt():(s().alerts.show({type:"success"},s().translator.trans("flarum-extension-manager.admin.update_successful")),window.location.reload())})).catch(J).catch((t=>{var e,n,r;s().modal.close(),a.status="failure",a.incompatibleExtensions=null==(e=t.response)||null==(n=e.errors)||null==(r=n.pop())?void 0:r.incompatible_extensions})).finally((()=>{m.redraw()}))}}flarum.reg.add("flarum-extension-manager","admin/states/ControlSectionState",Et);class St{constructor(){Y(this,"queue",new wt),Y(this,"control",new Et)}}flarum.reg.add("flarum-extension-manager","admin/states/ExtensionManagerState",St),s().initializers.add("flarum-extension-manager",(e=>{e.store.models["extension-manager-tasks"]=Nt,e.extensionManager=new St,e.data["flarum-extension-manager.using_sync_queue"]&&(e.data.settings["flarum-extension-manager.queue_jobs"]="0"),e.extensionData.for("flarum-extension-manager").registerSetting({setting:"flarum-extension-manager.queue_jobs",label:e.translator.trans("flarum-extension-manager.admin.settings.queue_jobs"),help:m.trust(w()(e.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(e.data.phpVersion,""),folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),type:"boolean",disabled:e.data["flarum-extension-manager.using_sync_queue"]}).registerSetting({setting:"flarum-extension-manager.task_retention_days",label:e.translator.trans("flarum-extension-manager.admin.settings.task_retention_days"),help:e.translator.trans("flarum-extension-manager.admin.settings.task_retention_days_help"),type:"number"}).registerPage(ht),(0,t.extend)(o().prototype,"topItems",(function(t){"flarum-extension-manager"===this.extension.id||g()(this.extension.id)||t.add("remove",m(l(),{className:"Button Button--danger",icon:"fas fa-times",onclick:()=>{e.modal.show(c()),e.request({url:"".concat(e.forum.attribute("apiUrl"),"/extension-manager/extensions/").concat(this.extension.id),method:"DELETE"}).then((t=>{null!=t&&t.processing?Mt():(e.alerts.show({type:"success"},e.translator.trans("flarum-extension-manager.admin.extensions.successful_remove")),window.location=e.forum.attribute("adminUrl"))})).finally((()=>{e.modal.close()}))}},e.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 5d3791993..5dc59fdcf 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/package-manager/../../../node_modules/dayjs/plugin/duration.js","webpack://@flarum/package-manager/webpack/bootstrap","webpack://@flarum/package-manager/webpack/runtime/compat get default export","webpack://@flarum/package-manager/webpack/runtime/define property getters","webpack://@flarum/package-manager/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/package-manager/webpack/runtime/make namespace object","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'admin/app')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'admin/components/ExtensionPage')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'admin/components/LoadingModal')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'admin/utils/isExtensionEnabled')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/components/Alert')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/Component')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/components/LoadingIndicator')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/components/Tooltip')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/components/Icon')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/utils/ItemList')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/utils/extractText')\"","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/utils/classList')\"","webpack://@flarum/package-manager/./src/admin/components/Label.tsx","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/components/Modal')\"","webpack://@flarum/package-manager/./src/admin/components/TaskOutputModal.tsx","webpack://@flarum/package-manager/./src/admin/utils/humanDuration.ts","webpack://@flarum/package-manager/./src/admin/components/Pagination.tsx","webpack://@flarum/package-manager/./src/admin/components/QueueSection.tsx","webpack://@flarum/package-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/package-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/package-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/package-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/utils/Stream')\"","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/package-manager/./src/admin/utils/jumpToQueue.ts","webpack://@flarum/package-manager/./src/admin/components/Installer.tsx","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/helpers/humanTime')\"","webpack://@flarum/package-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/package-manager/./src/admin/components/ExtensionItem.tsx","webpack://@flarum/package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@flarum/package-manager/./src/admin/components/Updater.tsx","webpack://@flarum/package-manager/./src/admin/components/ControlSection.tsx","webpack://@flarum/package-manager/./src/admin/components/SettingsPage.tsx","webpack://@flarum/package-manager/external root \"flarum.reg.get('core', 'common/Model')\"","webpack://@flarum/package-manager/../../../node_modules/pretty-bytes/index.js","webpack://@flarum/package-manager/./src/admin/models/Task.ts","webpack://@flarum/package-manager/./src/admin/states/QueueState.ts","webpack://@flarum/package-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/package-manager/./src/admin/states/PackageManagerState.ts","webpack://@flarum/package-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,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(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)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=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*d[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)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,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=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},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/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[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.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}();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)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),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');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Alert');","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/utils/extractText');","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-package-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-package-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 }, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-package-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-package-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-package-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-package-manager', 'admin/utils/humanDuration', humanDuration);","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\n/**\n * @todo make it abstract in core for reusability.\n */\nexport default class Pagination extends Component {\n view() {\n return m(\"nav\", {\n className: \"Pagination UserListPage-gridPagination\"\n }, m(Button, {\n disabled: !this.attrs.list.hasPrev(),\n title: app.translator.trans('core.admin.users.pagination.back_button'),\n onclick: () => this.attrs.list.prev(),\n icon: \"fas fa-chevron-left\",\n className: \"Button Button--icon UserListPage-backBtn\"\n }), m(\"span\", {\n className: \"UserListPage-pageNumber\"\n }, app.translator.trans('core.admin.users.pagination.page_counter', {\n current: this.attrs.list.pageNumber() + 1,\n total: this.attrs.list.getTotalPages()\n })), m(Button, {\n disabled: !this.attrs.list.hasNext(),\n title: app.translator.trans('core.admin.users.pagination.next_button'),\n onclick: () => this.attrs.list.next(),\n icon: \"fas fa-chevron-right\",\n className: \"Button Button--icon UserListPage-nextBtn\"\n }));\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/components/Pagination', Pagination);","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 Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nimport Pagination from './Pagination';\nexport default class QueueSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n app.packageManager.queue.load();\n }\n view() {\n return m(\"section\", {\n id: \"PackageManager-queueSection\",\n className: \"ExtensionPage-permissions PackageManager-queueSection\"\n }, m(\"div\", {\n className: \"ExtensionPage-permissions-header PackageManager-queueSection-header\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"h2\", {\n className: \"ExtensionTitle\"\n }, app.translator.trans('flarum-package-manager.admin.sections.queue.title')), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-sync-alt\",\n onclick: () => app.packageManager.queue.load(),\n \"aria-label\": app.translator.trans('flarum-package-manager.admin.sections.queue.refresh')\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-package-manager.admin.sections.queue.columns.operation')),\n content: task => m(\"div\", {\n className: \"PackageManager-queueTable-operation\"\n }, m(\"span\", {\n className: \"PackageManager-queueTable-operation-icon\"\n }, this.operationIcon(task.operation())), m(\"span\", {\n className: \"PackageManager-queueTable-operation-name\"\n }, app.translator.trans(\"flarum-package-manager.admin.sections.queue.operations.\".concat(task.operation()))))\n }, 80);\n items.add('package', {\n label: extractText(app.translator.trans('flarum-package-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(\"div\", {\n className: \"PackageManager-queueTable-package\"\n }, m(\"div\", {\n className: \"PackageManager-queueTable-package-icon ExtensionIcon\",\n style: extension.icon\n }, !!extension.icon && m(Icon, {\n name: extension.icon.name\n })), m(\"div\", {\n className: \"PackageManager-queueTable-package-details\"\n }, m(\"span\", {\n className: \"PackageManager-queueTable-package-title\"\n }, extension.extra['flarum-extension'].title), m(\"span\", {\n className: \"PackageManager-queueTable-package-name\"\n }, task.package()))) : task.package();\n }\n }, 75);\n items.add('status', {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.status')),\n content: task => m(Label, {\n className: \"PackageManager-queueTable-status\",\n type: {\n running: 'neutral',\n failure: 'error',\n pending: 'warning',\n success: 'success'\n }[task.status()]\n }, app.translator.trans(\"flarum-package-manager.admin.sections.queue.statuses.\".concat(task.status())))\n }, 70);\n items.add('elapsedTime', {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.elapsed_time')),\n content: task => !task.startedAt() ? app.translator.trans('flarum-package-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-package-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-package-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-package-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 }),\n className: 'Table-controls'\n }, 55);\n return items;\n }\n queueTable() {\n const tasks = app.packageManager.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-package-manager.admin.sections.queue.none'));\n }\n const columns = this.columns();\n return m('[', null, m(\"table\", {\n className: \"Table PackageManager-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 }))))), m(Pagination, {\n list: app.packageManager.queue\n }));\n }\n operationIcon(operation) {\n const iconName = {\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 return m(Icon, {\n name: iconName\n });\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/components/QueueSection', QueueSection);","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\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(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/Stream');","import app from 'flarum/admin/app';\nexport default function (e) {\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 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-package-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-package-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-package-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-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}","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-package-manager'\n }));\n app.packageManager.queue.load();\n setTimeout(() => {\n var _document$getElementB;\n (_document$getElementB = document.getElementById('PackageManager-queueSection')) == null ? void 0 : _document$getElementB.scrollIntoView({\n block: 'nearest'\n });\n }, 200);\n}\nflarum.reg.add('flarum-package-manager', 'admin/utils/jumpToQueue', jumpToQueue);","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';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\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 PackageManager-installer\"\n }, m(\"label\", {\n htmlFor: \"install-extension\"\n }, app.translator.trans('flarum-package-manager.admin.extensions.install')), m(\"p\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-package-manager.admin.extensions.install_help', {\n extiverse: m(\"a\", {\n href: \"https://extiverse.com\"\n }, \"extiverse.com\")\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.packageManager.control.isLoading('extension-install'),\n disabled: app.packageManager.control.isLoadingOtherThan('extension-install')\n }, app.translator.trans('flarum-package-manager.admin.extensions.proceed'))));\n }\n data() {\n return {\n package: this.packageName()\n };\n }\n onsubmit() {\n app.packageManager.control.setLoading('extension-install');\n app.modal.show(LoadingModal);\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/package-manager/extensions\"),\n body: {\n data: this.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-package-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.packageManager.control.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n}\nflarum.reg.add('flarum-package-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-package-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'), \"/package-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-package-manager', 'admin/components/WhyNotModal', WhyNotModal);","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport Icon from 'flarum/common/components/Icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\nexport default class ExtensionItem extends Component {\n view(vnode) {\n var _updates$latestMinor;\n const {\n extension,\n updates,\n onClickUpdate,\n whyNotWarning,\n isCore,\n isDanger\n } = this.attrs;\n const latestVersion = (_updates$latestMinor = updates['latest-minor']) != null ? _updates$latestMinor : updates['latest-major'] && !isCore ? updates['latest-major'] : null;\n return m(\"div\", {\n className: classList({\n 'PackageManager-extension': true,\n 'PackageManager-extension--core': isCore,\n 'PackageManager-extension--danger': isDanger\n })\n }, m(\"div\", {\n className: \"PackageManager-extension-icon ExtensionIcon\",\n style: extension.icon\n }, extension.icon ? m(Icon, {\n name: extension.icon.name\n }) : ''), m(\"div\", {\n className: \"PackageManager-extension-info\"\n }, m(\"div\", {\n className: \"PackageManager-extension-name\"\n }, extension.extra['flarum-extension'].title), m(\"div\", {\n className: \"PackageManager-extension-version\"\n }, m(\"span\", {\n className: \"PackageManager-extension-version-current\"\n }, this.version(updates['version'])), latestVersion ? m(Label, {\n className: \"PackageManager-extension-version-latest\",\n type: updates['latest-minor'] ? 'success' : 'warning'\n }, this.version(latestVersion)) : null)), m(\"div\", {\n className: \"PackageManager-extension-controls\"\n }, onClickUpdate ? m(Tooltip, {\n text: app.translator.trans('flarum-package-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-arrow-alt-circle-up\",\n className: \"Button Button--icon Button--flat\",\n onclick: onClickUpdate,\n \"aria-label\": app.translator.trans('flarum-package-manager.admin.extensions.update')\n })) : null, whyNotWarning ? m(Tooltip, {\n text: app.translator.trans('flarum-package-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-package-manager.admin.extensions.check_why_it_failed_updating')\n })) : null));\n }\n version(v) {\n return 'v' + v.replace('v', '');\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/components/ExtensionItem', ExtensionItem);","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 LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Alert from 'flarum/common/components/Alert';\nimport errorHandler from '../utils/errorHandler';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionItem from './ExtensionItem';\nimport jumpToQueue from '../utils/jumpToQueue';\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 // @todo move Form-group--danger class to core for reuse\n return m(\"div\", {\n className: \"Form-group Form-group--danger PackageManager-majorUpdate\"\n }, m(\"img\", {\n alt: \"flarum logo\",\n src: app.forum.attribute('baseUrl') + '/assets/extensions/flarum-package-manager/flarum.svg'\n }), m(\"label\", null, app.translator.trans('flarum-package-manager.admin.major_updater.title', {\n version: this.attrs.coreUpdate['latest-major']\n })), m(\"p\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-package-manager.admin.major_updater.description')), m(\"div\", {\n className: \"PackageManager-updaterControls\"\n }, m(Tooltip, {\n text: app.translator.trans('flarum-package-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.packageManager.control.isLoadingOtherThan('major-update-dry-run')\n }, app.translator.trans('flarum-package-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.packageManager.control.isLoadingOtherThan('major-update')\n }, app.translator.trans('flarum-package-manager.admin.major_updater.update'))), this.updateState.incompatibleExtensions.length ? m(\"div\", {\n className: \"PackageManager-majorUpdate-incompatibleExtensions PackageManager-extensions-grid\"\n }, this.updateState.incompatibleExtensions.map(extension => m(ExtensionItem, {\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: \"PackageManager-majorUpdate-failure\",\n dismissible: false,\n controls: [m(Button, {\n className: \"Button Button--text PackageManager-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-package-manager.admin.major_updater.failure.why'))]\n }, m(\"p\", {\n className: \"PackageManager-majorUpdate-failure-desc\"\n }, app.translator.trans('flarum-package-manager.admin.major_updater.failure.desc'))) : null);\n }\n update(dryRun) {\n app.packageManager.control.setLoading(dryRun ? 'major-update-dry-run' : 'major-update');\n app.modal.show(LoadingModal);\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/package-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-package-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).catch(e => {\n var _e$response, _e$response$errors, _e$response$errors$po;\n app.modal.close();\n this.updateState.status = 'failure';\n this.updateState.incompatibleExtensions = (_e$response = e.response) == null ? void 0 : (_e$response$errors = _e$response.errors) == null ? void 0 : (_e$response$errors$po = _e$response$errors.pop()) == null ? void 0 : _e$response$errors$po.incompatible_extensions;\n }).finally(() => {\n app.packageManager.control.setLoading(null);\n m.redraw();\n });\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/components/MajorUpdater', MajorUpdater);","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 ExtensionItem from './ExtensionItem';\nimport Alert from 'flarum/common/components/Alert';\nimport ItemList from 'flarum/common/utils/ItemList';\nexport default class Updater extends Component {\n view() {\n const core = app.packageManager.control.coreUpdate;\n return [m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-package-manager.admin.updater.updater_title')), m(\"p\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-package-manager.admin.updater.updater_help')), this.lastUpdateCheckView(), m(\"div\", {\n className: \"PackageManager-updaterControls\"\n }, this.controlItems().toArray()), this.availableUpdatesView()), core && core.package['latest-major'] ? m(MajorUpdater, {\n coreUpdate: core.package,\n updateState: app.packageManager.control.lastUpdateRun.major\n }) : null];\n }\n lastUpdateCheckView() {\n var _app$packageManager$c;\n return ((_app$packageManager$c = app.packageManager.control.lastUpdateCheck) == null ? void 0 : _app$packageManager$c.checkedAt) && m(\"p\", {\n className: \"PackageManager-lastUpdatedAt\"\n }, m(\"span\", {\n className: \"PackageManager-lastUpdatedAt-label\"\n }, app.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')), m(\"span\", {\n className: \"PackageManager-lastUpdatedAt-value\"\n }, humanTime(app.packageManager.control.lastUpdateCheck.checkedAt))) || null;\n }\n availableUpdatesView() {\n const state = app.packageManager.control;\n if (app.packageManager.control.isLoading()) {\n return m(\"div\", {\n className: \"PackageManager-extensions\"\n }, m(LoadingIndicator, null));\n }\n if (!(state.extensionUpdates.length || state.coreUpdate)) {\n return m(\"div\", {\n className: \"PackageManager-extensions\"\n }, m(Alert, {\n type: \"success\",\n dismissible: false\n }, app.translator.trans('flarum-package-manager.admin.updater.up_to_date')));\n }\n return m(\"div\", {\n className: \"PackageManager-extensions\"\n }, m(\"div\", {\n className: \"PackageManager-extensions-grid\"\n }, state.coreUpdate ? m(ExtensionItem, {\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(ExtensionItem, {\n extension: extension,\n updates: state.packageUpdates[extension.id],\n onClickUpdate: () => state.updateExtension(extension),\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.packageManager.control.checkForUpdates(),\n loading: app.packageManager.control.isLoading('check'),\n disabled: app.packageManager.control.isLoadingOtherThan('check')\n }, app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')), 100);\n items.add('globalUpdate', m(Button, {\n className: \"Button\",\n icon: \"fas fa-play\",\n onclick: () => app.packageManager.control.updateGlobally(),\n loading: app.packageManager.control.isLoading('global-update'),\n disabled: app.packageManager.control.isLoadingOtherThan('global-update')\n }, app.translator.trans('flarum-package-manager.admin.updater.run_global_update')));\n return items;\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/components/Updater', Updater);","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';\nexport default class ControlSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n }\n view() {\n return m(\"div\", {\n className: \"ExtensionPage-permissions PackageManager-controlSection\"\n }, m(\"div\", {\n className: \"ExtensionPage-permissions-header\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"h2\", {\n className: \"ExtensionTitle\"\n }, app.translator.trans('flarum-package-manager.admin.sections.control.title')))), m(\"div\", {\n className: \"container\"\n }, app.data['flarum-package-manager.writable_dirs'] ? m('[', 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-package-manager.admin.file_permissions')))));\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/components/ControlSection', ControlSection);","import app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport QueueSection from './QueueSection';\nimport ControlSection from './ControlSection';\nexport default class SettingsPage extends ExtensionPage {\n sections(vnode) {\n const items = super.sections(vnode);\n items.setPriority('content', 10);\n items.add('control', m(ControlSection, null), 8);\n if (parseInt(app.data.settings['flarum-package-manager.queue_jobs'])) {\n items.add('queue', m(QueueSection, null), 5);\n }\n items.setPriority('permissions', 0);\n return items;\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/components/SettingsPage', SettingsPage);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Model');","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\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\tif (options.signed && number === 0) {\n\t\treturn ` 0 ${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 + ' ' + 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 + ' ' + 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 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-package-manager', 'admin/models/Task', Task);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nexport default class QueueState {\n constructor() {\n _defineProperty(this, \"tasks\", null);\n _defineProperty(this, \"limit\", 20);\n _defineProperty(this, \"offset\", 0);\n _defineProperty(this, \"total\", 0);\n }\n load(params) {\n var _params;\n this.tasks = null;\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('package-manager-tasks', params || {}).then(data => {\n var _data$payload$meta;\n this.tasks = data;\n this.total = (_data$payload$meta = data.payload.meta) == null ? void 0 : _data$payload$meta.total;\n m.redraw();\n return data;\n });\n }\n getItems() {\n return this.tasks;\n }\n getTotalPages() {\n return Math.ceil(this.total / this.limit);\n }\n pageNumber() {\n return Math.ceil(this.offset / 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}\nflarum.reg.add('flarum-package-manager', 'admin/states/QueueState', QueueState);","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-package-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-package-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 isLoadingOtherThan(name) {\n return this.loading !== null && this.loading !== name;\n }\n setLoading(name) {\n this.loading = name;\n }\n checkForUpdates() {\n this.setLoading('check');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/package-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 m.redraw();\n }\n }).catch(errorHandler).finally(() => {\n this.setLoading(null);\n m.redraw();\n });\n }\n updateCoreMinor() {\n if (confirm(extractText(app.translator.trans('flarum-package-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'), \"/package-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-package-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n }\n updateExtension(extension) {\n app.modal.show(LoadingModal);\n this.setLoading('extension-update');\n app.request({\n method: 'PATCH',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/package-manager/extensions/\").concat(extension.id)\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-package-manager.admin.extensions.successful_update', {\n extension: extension.extra['flarum-extension'].title\n }));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n this.setLoading(null);\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'), \"/package-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-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n formatExtensionUpdates(lastUpdateCheck) {\n var _lastUpdateCheck$upda, _lastUpdateCheck$upda2;\n this.packageUpdates = {};\n lastUpdateCheck == null ? void 0 : (_lastUpdateCheck$upda = lastUpdateCheck.updates) == null ? void 0 : (_lastUpdateCheck$upda2 = _lastUpdateCheck$upda.installed) == null ? void 0 : _lastUpdateCheck$upda2.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$upda3, _lastUpdateCheck$upda4;\n const core = lastUpdateCheck == null ? void 0 : (_lastUpdateCheck$upda3 = lastUpdateCheck.updates) == null ? void 0 : (_lastUpdateCheck$upda4 = _lastUpdateCheck$upda3.installed) == null ? void 0 : _lastUpdateCheck$upda4.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 // @ts-ignore\n backgroundImage: \"url(\".concat(app.data.resources[0]['attributes']['baseUrl'], \"/assets/extensions/flarum-package-manager/flarum.svg\")\n },\n extra: {\n 'flarum-extension': {\n title: extractText(app.translator.trans('flarum-package-manager.admin.updater.flarum'))\n }\n }\n }\n };\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/states/ControlSectionState', ControlSectionState);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport QueueState from './QueueState';\nimport ControlSectionState from './ControlSectionState';\nexport default class PackageManagerState {\n constructor() {\n _defineProperty(this, \"queue\", new QueueState());\n _defineProperty(this, \"control\", new ControlSectionState());\n }\n}\nflarum.reg.add('flarum-package-manager', 'admin/states/PackageManagerState', PackageManagerState);","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 Alert from 'flarum/common/components/Alert';\nimport SettingsPage from './components/SettingsPage';\nimport Task from './models/Task';\nimport jumpToQueue from './utils/jumpToQueue';\nimport extractText from 'flarum/common/utils/extractText';\nimport PackageManagerState from './states/PackageManagerState';\napp.initializers.add('flarum-package-manager', app => {\n app.store.models['package-manager-tasks'] = Task;\n app.packageManager = new PackageManagerState();\n app.extensionData.for('flarum-package-manager').registerSetting(() => m(\"div\", {\n className: \"Form-group\"\n }, m(Alert, {\n type: \"warning\",\n dismissible: false\n }, app.translator.trans('flarum-package-manager.admin.settings.access_warning')))).registerSetting({\n setting: 'flarum-package-manager.queue_jobs',\n label: app.translator.trans('flarum-package-manager.admin.settings.queue_jobs'),\n help: m.trust(extractText(app.translator.trans('flarum-package-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 default: false,\n type: 'boolean',\n disabled: app.data['flarum-package-manager.using_sync_queue']\n }).registerPage(SettingsPage);\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-package-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'), \"/package-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-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }\n }).finally(() => {\n app.modal.close();\n });\n }\n }, \"Remove\"));\n });\n});"],"names":["module","exports","t","s","n","i","e","r","o","u","h","a","d","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","p","f","$l","m","l","$","Math","ceil","floor","y","abs","g","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","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","Label","view","vnode","className","type","attrs","assign","concat","children","TaskOutputModal","title","task","operation","content","command","output","humanDuration","start","end","dayjs","extend","durationTime","diff","Pagination","disabled","list","hasPrev","onclick","prev","icon","current","pageNumber","total","getTotalPages","hasNext","next","QueueSection","oninit","super","id","queueTable","columns","items","label","operationIcon","_task$package","extension","package","style","name","extra","running","failure","pending","success","status","startedAt","text","finishedAt","peakMemoryUsed","tasks","length","toArray","item","index","iconName","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","_typeof","iterator","constructor","_defineProperty","arg","input","hint","prim","toPrimitive","res","TypeError","toPropertyKey","configurable","writable","error","response","errors","includes","code","guessed_cause","jumpToQueue","route","set","setTimeout","_document$getElementB","document","getElementById","scrollIntoView","block","window","Installer","arguments","packageName","htmlFor","extiverse","href","placeholder","bidi","onsubmit","loading","data","method","url","body","then","processing","extensionId","location","reload","catch","errorHandler","finally","redraw","WhyNotModal","oncreate","requestWhyNot","whyNot","reason","ExtensionItem","_updates$latestMinor","updates","onClickUpdate","whyNotWarning","isCore","isDanger","latestVersion","version","v","MajorUpdater","updateState","alt","src","coreUpdate","update","incompatibleExtensions","dismissible","controls","dryRun","_e$response","_e$response$errors","_e$response$errors$po","pop","incompatible_extensions","Updater","core","lastUpdateCheckView","controlItems","availableUpdatesView","_app$packageManager$c","checkedAt","state","extensionUpdates","updateCoreMinor","lastUpdateRun","limitedPackages","packageUpdates","updateExtension","ControlSection","SettingsPage","sections","setPriority","parseInt","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","options","result","Array","isArray","Task","createdAt","isFinite","UNITS","bits","binary","signed","isNegative","prefix","localeOptions","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","toPrecision","prettyBytes","QueueState","load","params","_params","page","limit","offset","_data$payload$meta","payload","meta","getItems","ControlSectionState","JSON","parse","major","minor","global","lastUpdateCheck","formatExtensionUpdates","formatCoreUpdate","isLoading","isLoadingOtherThan","setLoading","checkForUpdates","confirm","updateGlobally","_lastUpdateCheck$upda","_lastUpdateCheck$upda2","installed","filter","composerPackage","safeToUpdate","values","_lastUpdateCheck$upda3","_lastUpdateCheck$upda4","backgroundImage","PackageManagerState","app","store","models","packageManager","extensionData","for","registerSetting","translator","trans","setting","help","trust","basic_impl_link","adv_impl_link","php_version","phpVersion","folder_perms_link","default","registerPage","modal","show","request","forum","attribute","alerts","close"],"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/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/utils/extractText')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Link')\"","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/Pagination.tsx","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/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/extension-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/extension-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/extension-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","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/utils/errorHandler.ts","webpack://@flarum/extension-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Dropdown')\"","webpack://@flarum/extension-manager/./src/admin/components/ExtensionItem.tsx","webpack://@flarum/extension-manager/./src/admin/components/MajorUpdater.tsx","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', 'admin/components/AdminPage')\"","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/external root \"flarum.reg.get('core', 'common/helpers/listItems')\"","webpack://@flarum/extension-manager/./src/admin/components/AuthMethodModal.tsx","webpack://@flarum/extension-manager/./src/admin/components/ConfigureAuth.tsx","webpack://@flarum/extension-manager/./src/admin/components/SettingsPage.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/Model')\"","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/utils/jumpToQueue.ts","webpack://@flarum/extension-manager/./src/admin/states/QueueState.ts","webpack://@flarum/extension-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/extension-manager/./src/admin/states/ExtensionManagerState.ts","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,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(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)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=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*d[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)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,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=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},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/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[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.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}();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)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),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');","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/utils/extractText');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Link');","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 Button from 'flarum/common/components/Button';\n/**\n * @todo make it abstract in core for reusability.\n */\nexport default class Pagination extends Component {\n view() {\n return m(\"nav\", {\n className: \"Pagination UserListPage-gridPagination\"\n }, m(Button, {\n disabled: !this.attrs.list.hasPrev() || app.extensionManager.control.isLoading(),\n title: app.translator.trans('core.admin.users.pagination.back_button'),\n onclick: () => this.attrs.list.prev(),\n icon: \"fas fa-chevron-left\",\n className: \"Button Button--icon UserListPage-backBtn\"\n }), m(\"span\", {\n className: \"UserListPage-pageNumber\"\n }, app.translator.trans('core.admin.users.pagination.page_counter', {\n current: this.attrs.list.pageNumber() + 1,\n total: this.attrs.list.getTotalPages()\n })), m(Button, {\n disabled: !this.attrs.list.hasNext() || app.extensionManager.control.isLoading(),\n title: app.translator.trans('core.admin.users.pagination.next_button'),\n onclick: () => this.attrs.list.next(),\n icon: \"fas fa-chevron-right\",\n className: \"Button Button--icon UserListPage-nextBtn\"\n }));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Pagination', Pagination);","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 Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nimport Pagination from './Pagination';\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-permissions 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(\"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 }))))), m(Pagination, {\n list: app.extensionManager.queue\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');","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\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(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","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 extiverse: m(\"a\", {\n href: \"https://extiverse.com\"\n }, \"extiverse.com\"),\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 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}","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/Dropdown');","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport Icon from 'flarum/common/components/Icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\nimport Dropdown from 'flarum/common/components/Dropdown';\nexport default class ExtensionItem extends Component {\n view(vnode) {\n var _updates$latestMinor;\n const {\n extension,\n updates,\n onClickUpdate,\n whyNotWarning,\n isCore,\n isDanger\n } = this.attrs;\n const latestVersion = (_updates$latestMinor = updates['latest-minor']) != null ? _updates$latestMinor : updates['latest-major'] && !isCore ? updates['latest-major'] : null;\n return m(\"div\", {\n className: classList({\n 'ExtensionManager-extension': true,\n 'ExtensionManager-extension--core': isCore,\n 'ExtensionManager-extension--danger': isDanger\n })\n }, m(\"div\", {\n className: \"ExtensionManager-extension-icon ExtensionIcon\",\n style: extension.icon\n }, extension.icon ? m(Icon, {\n name: extension.icon.name\n }) : ''), m(\"div\", {\n className: \"ExtensionManager-extension-info\"\n }, m(\"div\", {\n className: \"ExtensionManager-extension-name\"\n }, extension.extra['flarum-extension'].title), m(\"div\", {\n className: \"ExtensionManager-extension-version\"\n }, m(\"span\", {\n className: \"ExtensionManager-extension-version-current\"\n }, this.version(updates['version'])), latestVersion ? m(Label, {\n className: \"ExtensionManager-extension-version-latest\",\n type: updates['latest-minor'] ? 'success' : 'warning'\n }, this.version(latestVersion)) : null)), m(\"div\", {\n className: \"ExtensionManager-extension-controls\"\n }, onClickUpdate && typeof onClickUpdate === 'function' ? m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-arrow-alt-circle-up\",\n className: \"Button Button--icon Button--flat\",\n onclick: onClickUpdate,\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.extensions.update')\n })) : onClickUpdate ? m(Dropdown, {\n buttonClassName: \"Button Button--icon Button--flat\",\n icon: \"fas fa-arrow-alt-circle-up\",\n label: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-arrow-alt-circle-up\",\n className: \"Button\",\n onclick: onClickUpdate.soft\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_soft_label')), m(Button, {\n icon: \"fas fa-arrow-alt-circle-up\",\n className: \"Button\",\n onclick: onClickUpdate.hard,\n disabled: !updates['direct-dependency']\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_hard_label'))) : null, whyNotWarning ? 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 })) : null));\n }\n version(v) {\n return v.charAt(0) === 'v' ? v.substring(1) : v;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ExtensionItem', ExtensionItem);","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 ExtensionItem from './ExtensionItem';\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 // @todo move Form-group--danger class to core for reuse\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(ExtensionItem, {\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);","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 ExtensionItem from './ExtensionItem';\nimport ItemList from 'flarum/common/utils/ItemList';\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\"\n }, m(\"span\", {\n className: \"helpText\"\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(ExtensionItem, {\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(ExtensionItem, {\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-permissions ExtensionManager-controlSection\"\n }, m(\"div\", {\n className: \"ExtensionPage-permissions-header\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"h2\", {\n className: \"ExtensionTitle\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.control.title')))), 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', 'admin/components/AdminPage');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport AdminPage from 'flarum/admin/components/AdminPage';\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 AdminPage.prototype.customSettingComponents();\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';\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(\"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);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/listItems');","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';\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(\"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);","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 Alert from 'flarum/common/components/Alert';\nimport listItems from 'flarum/common/helpers/listItems';\nimport ConfigureAuth from './ConfigureAuth';\nexport default class SettingsPage extends ExtensionPage {\n content() {\n const settings = app.extensionData.getSettings(this.extension.id);\n const warnings = [app.translator.trans('flarum-extension-manager.admin.settings.access_warning')];\n if (app.data.debugEnabled) warnings.push(app.translator.trans('flarum-extension-manager.admin.settings.debug_mode_warning'));\n return m(\"div\", {\n className: \"ExtensionPage-settings\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"div\", {\n className: \"ExtensionManager-warnings Form-group\"\n }, m(Alert, {\n className: \"ExtensionManager-primaryWarning\",\n type: \"warning\",\n dismissible: false\n }, m(\"ul\", null, listItems(warnings)))), settings ? 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.setPriority('content', 10);\n items.add('control', m(ControlSection, null), 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 __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Model');","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\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\tif (options.signed && number === 0) {\n\t\treturn ` 0 ${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 + ' ' + 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 + ' ' + 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 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 ? void 0 : _document$getElementB.scrollIntoView({\n block: 'nearest'\n });\n }, 200);\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/jumpToQueue', jumpToQueue);","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 }\n load(params, actionTaken) {\n var _params;\n if (actionTaken === void 0) {\n actionTaken = false;\n }\n this.tasks = null;\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 ? void 0 : _data$payload$meta.total;\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 return data;\n });\n }\n getItems() {\n return this.tasks;\n }\n getTotalPages() {\n return Math.ceil(this.total / this.limit);\n }\n pageNumber() {\n return Math.ceil(this.offset / 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 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 _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, _lastUpdateCheck$upda2;\n this.packageUpdates = {};\n lastUpdateCheck == null ? void 0 : (_lastUpdateCheck$upda = lastUpdateCheck.updates) == null ? void 0 : (_lastUpdateCheck$upda2 = _lastUpdateCheck$upda.installed) == null ? void 0 : _lastUpdateCheck$upda2.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$upda3, _lastUpdateCheck$upda4;\n const core = lastUpdateCheck == null ? void 0 : (_lastUpdateCheck$upda3 = lastUpdateCheck.updates) == null ? void 0 : (_lastUpdateCheck$upda4 = _lastUpdateCheck$upda3.installed) == null ? void 0 : _lastUpdateCheck$upda4.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 // @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 }\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, _e$response$errors, _e$response$errors$po;\n app.modal.close();\n updateState.status = 'failure';\n updateState.incompatibleExtensions = (_e$response = e.response) == null ? void 0 : (_e$response$errors = _e$response.errors) == null ? void 0 : (_e$response$errors$po = _e$response$errors.pop()) == null ? void 0 : _e$response$errors$po.incompatible_extensions;\n }).finally(() => {\n m.redraw();\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ControlSectionState', ControlSectionState);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport QueueState from './QueueState';\nimport ControlSectionState from './ControlSectionState';\nexport default class ExtensionManagerState {\n constructor() {\n _defineProperty(this, \"queue\", new QueueState());\n _defineProperty(this, \"control\", new ControlSectionState());\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ExtensionManagerState', ExtensionManagerState);","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 SettingsPage from './components/SettingsPage';\nimport Task from './models/Task';\nimport jumpToQueue from './utils/jumpToQueue';\nimport extractText from 'flarum/common/utils/extractText';\nimport ExtensionManagerState from './states/ExtensionManagerState';\napp.initializers.add('flarum-extension-manager', app => {\n app.store.models['extension-manager-tasks'] = Task;\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 app.extensionData.for('flarum-extension-manager').registerSetting({\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 }).registerSetting({\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 }).registerPage(SettingsPage);\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","h","a","d","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","p","f","$l","m","l","$","Math","ceil","floor","y","abs","g","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","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","Label","view","vnode","className","type","attrs","assign","concat","children","TaskOutputModal","title","task","operation","content","status","guessedCause","command","output","humanDuration","start","end","dayjs","extend","durationTime","diff","Pagination","disabled","list","hasPrev","onclick","prev","icon","current","pageNumber","total","getTotalPages","hasNext","next","QueueSection","oninit","super","id","queueTable","columns","items","label","operationIcon","_task$package","extension","package","href","style","name","extra","running","failure","pending","success","includes","size","display","startedAt","finishedAt","text","peakMemoryUsed","tasks","length","toArray","item","index","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","_typeof","iterator","constructor","_defineProperty","arg","input","hint","prim","toPrimitive","res","TypeError","toPropertyKey","configurable","writable","Installer","arguments","packageName","htmlFor","extiverse","semantic_link","code","placeholder","bidi","onsubmit","loading","data","error","response","errors","guessed_cause","WhyNotModal","oncreate","requestWhyNot","whyNot","method","url","body","then","reason","redraw","catch","errorHandler","ExtensionItem","_updates$latestMinor","updates","onClickUpdate","whyNotWarning","isCore","isDanger","latestVersion","version","buttonClassName","soft","hard","v","charAt","substring","MajorUpdater","updateState","incompatibleExtensions","alt","src","coreUpdate","update","dismissible","controls","dryRun","Updater","core","lastUpdateCheckView","controlItems","availableUpdatesView","_app$extensionManager","checkedAt","state","hasMinorCoreUpdate","extensionUpdates","updateCoreMinor","lastUpdateRun","limitedPackages","packageUpdates","updateExtension","ControlSection","ConfigureJson","submit","submitButton","isDirty","customSettingComponents","setting","_this$settings$key","settings","readOnly","configuration","_ref","initialSettings","Array","isArray","finally","JSON","stringify","RepositoryModal","repository","context","types","composer","vcs","path","options","onchange","target","hide","ConfigureComposer","buildSettingComponent","help","stable","RC","beta","alpha","dev","newName","repositories","confirm","push","AuthMethodModal","host","token","bearer","oninput","rows","startsWith","ConfigureAuth","authSettings","hasAuthSettings","every","hosts","newType","oldHost","SettingsPage","warnings","sections","setPriority","remove","onsaved","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","result","Task","createdAt","isFinite","UNITS","bits","binary","signed","isNegative","prefix","localeOptions","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","toPrecision","prettyBytes","jumpToQueue","route","set","setTimeout","_document$getElementB","document","getElementById","scrollIntoView","block","window","QueueState","load","params","actionTaken","_params","page","limit","offset","_data$payload$meta","payload","meta","find","pollQueue","location","reload","getItems","polling","clearTimeout","hasPending","_this$tasks","ControlSectionState","parse","major","minor","global","lastUpdateCheck","formatExtensionUpdates","formatCoreUpdate","isLoading","hasOperationRunning","setLoading","requirePackage","processing","extensionId","checkForUpdates","updateMode","updateGlobally","_lastUpdateCheck$upda","_lastUpdateCheck$upda2","installed","filter","composerPackage","safeToUpdate","values","_lastUpdateCheck$upda3","_lastUpdateCheck$upda4","pop","backgroundImage","majorUpdate","_e$response","_e$response$errors","_e$response$errors$po","incompatible_extensions","ExtensionManagerState","app","store","models","extensionManager","extensionData","for","registerSetting","translator","trans","trust","basic_impl_link","adv_impl_link","php_version","phpVersion","folder_perms_link","registerPage","modal","show","request","forum","attribute","alerts","close"],"sourceRoot":""} \ No newline at end of file