diff --git a/extensions/package-manager/js/dist-typings/components/ControlSection.d.ts b/extensions/package-manager/js/dist-typings/components/ControlSection.d.ts new file mode 100644 index 000000000..f1aa63361 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/ControlSection.d.ts @@ -0,0 +1,5 @@ +/// +import Component from 'flarum/common/Component'; +export default class ControlSection extends Component { + view(): JSX.Element; +} 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 c9297c734..0d89c7672 100644 --- a/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts +++ b/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts @@ -1,10 +1,7 @@ -import Mithril from 'mithril'; +import type Mithril from 'mithril'; import Component, { ComponentAttrs } from 'flarum/common/Component'; -import { Extension as BaseExtension } from 'flarum/admin/AdminApplication'; +import { Extension } from 'flarum/admin/AdminApplication'; import { UpdatedPackage } from './Updater'; -export declare type Extension = BaseExtension & { - name: string; -}; export interface ExtensionItemAttrs extends ComponentAttrs { extension: Extension; updates: UpdatedPackage; @@ -16,5 +13,5 @@ export interface ExtensionItemAttrs extends ComponentAttrs { } export default class ExtensionItem extends Component { view(vnode: Mithril.Vnode): Mithril.Children; - private version; + version(v: string): string; } diff --git a/extensions/package-manager/js/dist-typings/components/Installer.d.ts b/extensions/package-manager/js/dist-typings/components/Installer.d.ts index 2a2bf6bc3..27595cbec 100644 --- a/extensions/package-manager/js/dist-typings/components/Installer.d.ts +++ b/extensions/package-manager/js/dist-typings/components/Installer.d.ts @@ -1,11 +1,14 @@ import type Mithril from 'mithril'; -import Component from 'flarum/common/Component'; +import Component, { ComponentAttrs } from 'flarum/common/Component'; import Stream from 'flarum/common/utils/Stream'; -export default class Installer extends Component { +interface InstallerAttrs extends ComponentAttrs { +} +export default class Installer extends Component { packageName: Stream; isLoading: boolean; - oninit(vnode: Mithril.Vnode): void; + oninit(vnode: Mithril.Vnode): void; view(): Mithril.Children; data(): any; onsubmit(): void; } +export {}; diff --git a/extensions/package-manager/js/dist-typings/components/Label.d.ts b/extensions/package-manager/js/dist-typings/components/Label.d.ts new file mode 100644 index 000000000..4273be2e2 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/Label.d.ts @@ -0,0 +1,9 @@ +import type Mithril from 'mithril'; +import Component, { ComponentAttrs } from 'flarum/common/Component'; +interface LabelAttrs extends ComponentAttrs { + type: 'success' | 'error' | 'neutral' | 'warning'; +} +export default class Label extends Component { + view(vnode: Mithril.Vnode): JSX.Element; +} +export {}; diff --git a/extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts b/extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts index 326585b84..8ec1fa7b1 100644 --- a/extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts +++ b/extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts @@ -1,5 +1,5 @@ +import type Mithril from 'mithril'; import Component, { ComponentAttrs } from 'flarum/common/Component'; -import Mithril from 'mithril'; import { UpdatedPackage, UpdateState } from './Updater'; interface MajorUpdaterAttrs extends ComponentAttrs { coreUpdate: UpdatedPackage; diff --git a/extensions/package-manager/js/dist-typings/components/Pagination.d.ts b/extensions/package-manager/js/dist-typings/components/Pagination.d.ts new file mode 100644 index 000000000..999081d75 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/Pagination.d.ts @@ -0,0 +1,13 @@ +/// +import Component, { ComponentAttrs } from 'flarum/common/Component'; +import QueueState from '../states/QueueState'; +interface PaginationAttrs extends ComponentAttrs { + list: QueueState; +} +/** + * @todo make it abstract in core for reusability. + */ +export default class Pagination extends Component { + view(): JSX.Element; +} +export {}; diff --git a/extensions/package-manager/js/dist-typings/components/QueueSection.d.ts b/extensions/package-manager/js/dist-typings/components/QueueSection.d.ts new file mode 100644 index 000000000..f204aaf9e --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/QueueSection.d.ts @@ -0,0 +1,10 @@ +import type Mithril from 'mithril'; +import Component from 'flarum/common/Component'; +import { TaskOperations } from '../models/Task'; +export default class QueueSection extends Component<{}> { + oninit(vnode: Mithril.Vnode<{}, this>): void; + view(): JSX.Element; + columns(): any; + queueTable(): JSX.Element; + operationIcon(operation: TaskOperations): Mithril.Children; +} diff --git a/extensions/package-manager/js/dist-typings/components/SettingsPage.d.ts b/extensions/package-manager/js/dist-typings/components/SettingsPage.d.ts new file mode 100644 index 000000000..e76e5b510 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/SettingsPage.d.ts @@ -0,0 +1,6 @@ +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 { + sections(vnode: Mithril.VnodeDOM): ItemList; +} diff --git a/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts b/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts new file mode 100644 index 000000000..d8bbb2a22 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts @@ -0,0 +1,12 @@ +/// +import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; +import Task from '../models/Task'; +interface TaskOutputModalAttrs extends IInternalModalAttrs { + task: Task; +} +export default class TaskOutputModal extends Modal { + className(): string; + title(): any; + content(): JSX.Element; +} +export {}; diff --git a/extensions/package-manager/js/dist-typings/components/Updater.d.ts b/extensions/package-manager/js/dist-typings/components/Updater.d.ts index 1afac3239..3648cd8cb 100644 --- a/extensions/package-manager/js/dist-typings/components/Updater.d.ts +++ b/extensions/package-manager/js/dist-typings/components/Updater.d.ts @@ -1,6 +1,6 @@ import Mithril from 'mithril'; -import Component from 'flarum/common/Component'; -import { Extension } from './ExtensionItem'; +import Component, { ComponentAttrs } from 'flarum/common/Component'; +import { Extension } from 'flarum/admin/AdminApplication'; export declare type UpdatedPackage = { name: string; version: string; @@ -30,12 +30,14 @@ export declare type LastUpdateRun = { } & { limitedPackages: () => string[]; }; -export default class Updater extends Component { +interface UpdaterAttrs extends ComponentAttrs { +} +export default class Updater extends Component { isLoading: string | null; packageUpdates: Record; lastUpdateCheck: LastUpdateCheck; get lastUpdateRun(): LastUpdateRun; - oninit(vnode: Mithril.Vnode): void; + oninit(vnode: Mithril.Vnode): void; view(): (JSX.Element | null)[]; getExtensionUpdates(): Extension[]; getCoreUpdate(): UpdatedPackage | undefined; 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 3e1272b58..a09d7777f 100644 --- a/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts +++ b/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts @@ -1,14 +1,14 @@ -import Mithril from 'mithril'; +import type Mithril from 'mithril'; import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; export interface WhyNotModalAttrs extends IInternalModalAttrs { package: string; } -export default class WhyNotModal extends Modal { +export default class WhyNotModal extends Modal { loading: boolean; whyNot: string | null; className(): string; title(): any; - oncreate(vnode: Mithril.VnodeDOM): void; + oncreate(vnode: Mithril.VnodeDOM): void; content(): JSX.Element; requestWhyNot(): void; } diff --git a/extensions/package-manager/js/dist-typings/models/Task.d.ts b/extensions/package-manager/js/dist-typings/models/Task.d.ts new file mode 100644 index 000000000..bf6b110d9 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/models/Task.d.ts @@ -0,0 +1,13 @@ +import Model from 'flarum/common/Model'; +export declare type TaskOperations = 'extension_install' | 'extension_remove' | 'extension_update' | 'update_global' | 'update_minor' | 'update_major' | 'update_check' | 'why_not'; +export default class Task extends Model { + status(): any; + operation(): any; + command(): any; + package(): any; + output(): any; + createdAt(): any; + startedAt(): any; + finishedAt(): any; + peakMemoryUsed(): string; +} diff --git a/extensions/package-manager/js/dist-typings/states/QueueState.d.ts b/extensions/package-manager/js/dist-typings/states/QueueState.d.ts new file mode 100644 index 000000000..c17444ef7 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/states/QueueState.d.ts @@ -0,0 +1,16 @@ +import Task from '../models/Task'; +import { ApiQueryParamsPlural } from 'flarum/common/Store'; +export default class QueueState { + private tasks; + private limit; + private offset; + private total; + load(params?: ApiQueryParamsPlural): any; + getItems(): Task[] | null; + getTotalPages(): number; + pageNumber(): number; + hasPrev(): boolean; + hasNext(): boolean; + prev(): void; + next(): void; +} diff --git a/extensions/package-manager/js/dist-typings/utils/humanDuration.d.ts b/extensions/package-manager/js/dist-typings/utils/humanDuration.d.ts new file mode 100644 index 000000000..e949d62c2 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/utils/humanDuration.d.ts @@ -0,0 +1 @@ +export default function humanDuration(start: Date, end: Date): any; diff --git a/extensions/package-manager/js/dist-typings/utils/jumpToQueue.d.ts b/extensions/package-manager/js/dist-typings/utils/jumpToQueue.d.ts new file mode 100644 index 000000000..859e26960 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/utils/jumpToQueue.d.ts @@ -0,0 +1 @@ +export default function jumpToQueue(): void; diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 1c6b97d63..85b4cbf25 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -1,2 +1,2 @@ -(()=>{var a={n:e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},d:(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(a,e)=>Object.prototype.hasOwnProperty.call(a,e),r:a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})}},e={};(()=>{"use strict";a.r(e);const t=flarum.core.compat["common/extend"],n=flarum.core.compat["admin/app"];var r=a.n(n);const o=flarum.core.compat["common/components/Alert"];var s=a.n(o);const i=flarum.core.compat["admin/components/ExtensionPage"];var l=a.n(i);const c=flarum.core.compat["common/components/Button"];var u=a.n(c);const d=flarum.core.compat["admin/components/LoadingModal"];var p=a.n(d);function g(a,e){return g=Object.setPrototypeOf||function(a,e){return a.__proto__=e,a},g(a,e)}function f(a,e){a.prototype=Object.create(e.prototype),a.prototype.constructor=a,g(a,e)}const h=flarum.core.compat["common/Component"];var k=a.n(h);const v=flarum.core.compat["common/utils/Stream"];var x=a.n(v);function y(a){var 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?(r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.guessed_cause."+e.guessed_cause)),r().modal.close()):r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.composer_command_failure"));break;case"extension_already_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_already_installed")),r().modal.close();break;case"extension_not_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_not_installed")),r().modal.close()}}var b=function(a){function e(){for(var e,t=arguments.length,n=new Array(t),r=0;r{var a={3:function(a){a.exports=function(){"use strict";var a,t,e=1e3,n=6e4,r=36e5,s=864e5,i=/\[([^\]]+)]|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,o=31536e6,l=2592e6,u=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,c={years:o,months:l,days:s,hours:r,minutes:n,seconds:e,milliseconds:1,weeks:6048e5},m=function(a){return a instanceof v},d=function(a,t,e){return new v(a,e,t.$l)},p=function(a){return t.p(a)+"s"},f=function(a){return a<0},g=function(a){return f(a)?Math.ceil(a):Math.floor(a)},h=function(a){return Math.abs(a)},k=function(a,t){return a?f(a)?{negative:!0,format:""+h(a)+t}:{negative:!1,format:""+a+t}:{negative:!1,format:""}},v=function(){function f(a,t,e){var n=this;if(this.$d={},this.$l=e,void 0===a&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(a*c[p(t)],this);if("number"==typeof a)return this.$ms=a,this.parseFromMilliseconds(),this;if("object"==typeof a)return Object.keys(a).forEach((function(t){n.$d[p(t)]=a[t]})),this.calMilliseconds(),this;if("string"==typeof a){var r=a.match(u);if(r){var s=r.slice(2).map((function(a){return null!=a?Number(a):0}));return this.$d.years=s[0],this.$d.months=s[1],this.$d.weeks=s[2],this.$d.days=s[3],this.$d.hours=s[4],this.$d.minutes=s[5],this.$d.seconds=s[6],this.calMilliseconds(),this}}return this}var h=f.prototype;return h.calMilliseconds=function(){var a=this;this.$ms=Object.keys(this.$d).reduce((function(t,e){return t+(a.$d[e]||0)*c[e]}),0)},h.parseFromMilliseconds=function(){var a=this.$ms;this.$d.years=g(a/o),a%=o,this.$d.months=g(a/l),a%=l,this.$d.days=g(a/s),a%=s,this.$d.hours=g(a/r),a%=r,this.$d.minutes=g(a/n),a%=n,this.$d.seconds=g(a/e),a%=e,this.$d.milliseconds=a},h.toISOString=function(){var a=k(this.$d.years,"Y"),t=k(this.$d.months,"M"),e=+this.$d.days||0;this.$d.weeks&&(e+=7*this.$d.weeks);var n=k(e,"D"),r=k(this.$d.hours,"H"),s=k(this.$d.minutes,"M"),i=this.$d.seconds||0;this.$d.milliseconds&&(i+=this.$d.milliseconds/1e3);var o=k(i,"S"),l=a.negative||t.negative||n.negative||r.negative||s.negative||o.negative,u=r.format||s.format||o.format?"T":"",c=(l?"-":"")+"P"+a.format+t.format+n.format+u+r.format+s.format+o.format;return"P"===c||"-P"===c?"P0D":c},h.toJSON=function(){return this.toISOString()},h.format=function(a){var e=a||"YYYY-MM-DDTHH:mm:ss",n={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return e.replace(i,(function(a,t){return t||String(n[a])}))},h.as=function(a){return this.$ms/c[p(a)]},h.get=function(a){var t=this.$ms,e=p(a);return"milliseconds"===e?t%=1e3:t="weeks"===e?g(t/c[e]):this.$d[e],0===t?0:t},h.add=function(a,t,e){var n;return n=t?a*c[p(t)]:m(a)?a.$ms:d(a,this).$ms,d(this.$ms+n*(e?-1:1),this)},h.subtract=function(a,t){return this.add(a,t,!0)},h.locale=function(a){var t=this.clone();return t.$l=a,t},h.clone=function(){return d(this.$ms,this)},h.humanize=function(t){return a().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},h.milliseconds=function(){return this.get("milliseconds")},h.asMilliseconds=function(){return this.as("milliseconds")},h.seconds=function(){return this.get("seconds")},h.asSeconds=function(){return this.as("seconds")},h.minutes=function(){return this.get("minutes")},h.asMinutes=function(){return this.as("minutes")},h.hours=function(){return this.get("hours")},h.asHours=function(){return this.as("hours")},h.days=function(){return this.get("days")},h.asDays=function(){return this.as("days")},h.weeks=function(){return this.get("weeks")},h.asWeeks=function(){return this.as("weeks")},h.months=function(){return this.get("months")},h.asMonths=function(){return this.as("months")},h.years=function(){return this.get("years")},h.asYears=function(){return this.as("years")},f}();return function(e,n,r){a=r,t=r().$utils(),r.duration=function(a,t){var e=r.locale();return d(a,{$l:e},t)},r.isDuration=m;var s=n.prototype.add,i=n.prototype.subtract;n.prototype.add=function(a,t){return m(a)&&(a=a.asMilliseconds()),s.bind(this)(a,t)},n.prototype.subtract=function(a,t){return m(a)&&(a=a.asMilliseconds()),i.bind(this)(a,t)}}}()}},t={};function e(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={exports:{}};return a[n].call(s.exports,s,s.exports,e),s.exports}e.n=a=>{var t=a&&a.__esModule?()=>a.default:()=>a;return e.d(t,{a:t}),t},e.d=(a,t)=>{for(var n in t)e.o(t,n)&&!e.o(a,n)&&Object.defineProperty(a,n,{enumerable:!0,get:t[n]})},e.o=(a,t)=>Object.prototype.hasOwnProperty.call(a,t),e.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})};var n={};(()=>{"use strict";e.r(n);const a=flarum.core.compat["common/extend"],t=flarum.core.compat["admin/app"];var r=e.n(t);const s=flarum.core.compat["admin/components/ExtensionPage"];var i=e.n(s);const o=flarum.core.compat["common/components/Button"];var l=e.n(o);const u=flarum.core.compat["admin/components/LoadingModal"];var c=e.n(u);const d=flarum.core.compat["admin/utils/isExtensionEnabled"];var p=e.n(d);function f(a,t){return f=Object.setPrototypeOf||function(a,t){return a.__proto__=t,a},f(a,t)}function g(a,t){a.prototype=Object.create(t.prototype),a.prototype.constructor=a,f(a,t)}function h(a,t){if(null==a)return{};var e,n,r={},s=Object.keys(a);for(n=0;n=0||(r[e]=a[e]);return r}const k=flarum.core.compat["common/Component"];var v=e.n(k);const y=flarum.core.compat["common/components/LoadingIndicator"];var b=e.n(y);const x=flarum.core.compat["common/components/Tooltip"];var _=e.n(x);const N=flarum.core.compat["common/helpers/icon"];var M=e.n(N);const w=flarum.core.compat["common/utils/ItemList"];var P=e.n(w);const $=flarum.core.compat["common/utils/extractText"];var U=e.n($);const q=flarum.core.compat["common/utils/classList"];var T=e.n(q),j=["className","type"],S=function(a){function t(){return a.apply(this,arguments)||this}return g(t,a),t.prototype.view=function(a){var t=this.attrs,e=t.className,n=(t.type,h(t,j));return m("span",Object.assign({className:T()(["Label","Label--"+this.attrs.type,e])},n),a.children)},t}(v());const B=flarum.core.compat["common/components/Modal"];var L=e.n(B),O=function(a){function t(){return a.apply(this,arguments)||this}g(t,a);var e=t.prototype;return e.className=function(){return"Modal--large QuickModal"},e.title=function(){return r().translator.trans("flarum-package-manager.admin.sections.queue.operations."+this.attrs.task.operation())},e.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"TaskOutputModal-data"},m("div",{className:"Form-group"},m("label",null,r().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,r().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()))))))},t}(L()),E=e(3),A=e.n(E),C=function(a){function t(){return a.apply(this,arguments)||this}return g(t,a),t.prototype.view=function(){var a=this;return m("nav",{class:"Pagination UserListPage-gridPagination"},m(l(),{disabled:!this.attrs.list.hasPrev(),title:r().translator.trans("core.admin.users.pagination.back_button"),onclick:function(){return a.attrs.list.prev()},icon:"fas fa-chevron-left",className:"Button Button--icon UserListPage-backBtn"}),m("span",{class:"UserListPage-pageNumber"},r().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:r().translator.trans("core.admin.users.pagination.next_button"),onclick:function(){return a.attrs.list.next()},icon:"fas fa-chevron-right",className:"Button Button--icon UserListPage-nextBtn"}))},t}(v()),D=["label","content"],F=function(a){function t(){return a.apply(this,arguments)||this}g(t,a);var e=t.prototype;return e.oninit=function(t){a.prototype.oninit.call(this,t),r().packageManagerQueue.load()},e.view=function(){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"},r().translator.trans("flarum-package-manager.admin.sections.queue.title")),m(l(),{className:"Button Button--icon",icon:"fas fa-sync-alt",onclick:function(){return r().packageManagerQueue.load()},"aria-label":r().translator.trans("flarum-package-manager.admin.sections.queue.refresh")}))),m("div",{className:"container"},this.queueTable()))},e.columns=function(){var a=this,t=new(P());return t.add("operation",{label:U()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.operation")),content:function(t){return m("div",{className:"PackageManager-queueTable-operation"},m("span",{className:"PackageManager-queueTable-operation-icon"},a.operationIcon(t.operation())),m("span",{className:"PackageManager-queueTable-operation-name"},r().translator.trans("flarum-package-manager.admin.sections.queue.operations."+t.operation())))}},80),t.add("package",{label:U()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.package")),content:function(a){var t,e=r().data.extensions[null==(t=a.package())?void 0:t.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return e?m("div",{className:"PackageManager-queueTable-package"},m("div",{className:"PackageManager-queueTable-package-icon ExtensionIcon",style:e.icon},e.icon?M()(e.icon.name):""),m("div",{className:"PackageManager-queueTable-package-details"},m("span",{className:"PackageManager-queueTable-package-title"},e.extra["flarum-extension"].title),m("span",{className:"PackageManager-queueTable-package-name"},a.package()))):a.package()}},75),t.add("status",{label:U()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.status")),content:function(a){return m(S,{className:"PackageManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[a.status()]},r().translator.trans("flarum-package-manager.admin.sections.queue.statuses."+a.status()))}},70),t.add("elapsedTime",{label:U()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.elapsed_time")),content:function(a){return a.startedAt()?m(_(),{text:dayjs(a.startedAt()).format("LL LTS")+" "+dayjs(a.finishedAt()).format("LL LTS")},m("span",null,function(a,t){dayjs.extend(A());var e=dayjs(t).diff(a);return dayjs.duration(e).humanize()}(a.startedAt(),a.finishedAt()))):r().translator.trans("flarum-package-manager.admin.sections.queue.task_just_started")}},65),t.add("memoryUsed",{label:U()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.peak_memory_used")),content:function(a){return m("span",null,a.peakMemoryUsed())}},60),t.add("details",{label:U()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.details")),content:function(a){return m(l(),{className:"Button Button--icon Table-controls-item",icon:"fas fa-file-alt","aria-label":r().translator.trans("flarum-package-manager.admin.sections.queue.columns.details"),onclick:function(){return r().modal.show(O,{task:a})}})},className:"Table-controls"},55),t},e.queueTable=function(){var a=r().packageManagerQueue.getItems();if(!a)return m(b(),null);if(a&&!a.length)return m("h3",{className:"ExtensionPage-subHeader"},r().translator.trans("flarum-package-manager.admin.sections.queue.none"));var t=this.columns();return m("[",null,m("table",{className:"Table PackageManager-queueTable"},m("thead",null,m("tr",null,t.toArray().map((function(a,t){return m("th",{key:t},a.label)})))),m("tbody",null,a.map((function(a,e){return m("tr",{key:e},t.toArray().map((function(t,e){t.label;var n=t.content,r=h(t,D);return m("td",Object.assign({key:e},r),n(a))})))})))),m(C,{list:r().packageManagerQueue}))},e.operationIcon=function(a){return M()({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])},t}(v());const Y=flarum.core.compat["common/components/Alert"];var H=e.n(Y);const I=flarum.core.compat["common/utils/Stream"];var W=e.n(I);function Q(a){var t=a.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(t.code))throw a;switch(t.code){case"composer_command_failure":t.guessed_cause?(r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.guessed_cause."+t.guessed_cause)),r().modal.close()):r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.composer_command_failure"));break;case"extension_already_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_already_installed")),r().modal.close();break;case"extension_not_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_not_installed")),r().modal.close()}}function G(){r().modal.close(),m.route.set(r().route("extension",{id:"flarum-package-manager"})),r().packageManagerQueue.load(),setTimeout((function(){var a;null==(a=document.getElementById("PackageManager-queueSection"))||a.scrollIntoView({block:"nearest"})}),200)}window.jumpToQueue=G;var R=function(a){function t(){for(var t,e=arguments.length,n=new Array(e),r=0;r"+t.data.phpVersion+"",folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),default:!1,type:"boolean",disabled:t.data["flarum-package-manager.using_sync_queue"]}).registerPage(ea),(0,a.extend)(i().prototype,"topItems",(function(a){var e=this;"flarum-package-manager"===this.extension.id||p()(this.extension.id)||a.add("remove",m(l(),{className:"Button Button--danger",icon:"fas fa-times",onclick:function(){t.modal.show(c()),t.request({url:t.forum.attribute("apiUrl")+"/package-manager/extensions/"+e.extension.id,method:"DELETE"}).then((function(a){null!=a&&a.processing?G():(t.alerts.show({type:"success"},t.translator.trans("flarum-package-manager.admin.extensions.successful_remove")),window.location=t.forum.attribute("adminUrl"))})).finally((function(){t.modal.close()}))}},"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 01ed2ae87..d4e183765 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/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.core.compat['common/extend']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/package-manager/./src/admin/components/Installer.tsx","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/package-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/icon']\"","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/external root \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/./src/admin/index.tsx"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\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.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/ExtensionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/LoadingModal'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({ type: 'error' }, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`));\n app.modal.close();\n } else {\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","import type Mithril from 'mithril';\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';\n\nexport default class Installer extends Component {\n packageName!: Stream;\n isLoading: boolean = false;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

\n {app.translator.trans('flarum-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com,\n })}\n

\n
\n \n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n this.isLoading = true;\n app.modal.show(LoadingModal);\n\n app\n .request<{ id: string }>({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n errorHandler,\n })\n .then((response) => {\n const extensionId = response.id;\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_install', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/admin/app';\nimport Mithril from 'mithril';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport errorHandler from '../utils/errorHandler';\n\nexport interface WhyNotModalAttrs extends IInternalModalAttrs {\n package: string;\n}\n\nexport default class WhyNotModal extends Modal {\n loading: boolean = true;\n whyNot: string | null = null;\n\n className() {\n return 'Modal--large WhyNotModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.why_not_modal.title');\n }\n\n oncreate(vnode: Mithril.VnodeDOM) {\n super.oncreate(vnode);\n\n this.requestWhyNot();\n }\n\n content() {\n return
{this.loading ? :
{this.whyNot}
}
;\n }\n\n requestWhyNot(): void {\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/why-not`,\n body: {\n data: {\n package: this.attrs.package,\n },\n },\n errorHandler,\n })\n .then((response: any) => {\n this.loading = false;\n this.whyNot = response.data.whyNot;\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","import Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport icon from 'flarum/common/helpers/icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport { Extension as BaseExtension } from 'flarum/admin/AdminApplication';\nimport { UpdatedPackage } from './Updater';\nimport WhyNotModal from './WhyNotModal';\n\n/*\n * @todo fix in core\n */\nexport type Extension = BaseExtension & {\n name: string;\n};\n\nexport interface ExtensionItemAttrs extends ComponentAttrs {\n extension: Extension;\n updates: UpdatedPackage;\n onClickUpdate: CallableFunction;\n whyNotWarning?: boolean;\n isCore?: boolean;\n updatable?: boolean;\n isDanger?: boolean;\n}\n\nexport default class ExtensionItem extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n const { extension, updates, onClickUpdate, whyNotWarning, isCore, isDanger } = this.attrs;\n\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {updates['latest-minor'] ? (\n \n {this.version(updates['latest-minor']!)}\n \n ) : null}\n {updates['latest-major'] && !isCore ? (\n \n {this.version(updates['latest-major']!)}\n \n ) : null}\n
\n
\n
\n {onClickUpdate ? (\n \n \n \n ) : null}\n {whyNotWarning ? (\n \n app.modal.show(WhyNotModal, { package: extension.name })}\n aria-label={app.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')}\n />\n \n ) : null}\n
\n \n );\n }\n\n private version(v: string): string {\n return 'v' + v.replace('v', '');\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Mithril from 'mithril';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport { UpdatedPackage, UpdateState } from './Updater';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport Alert from 'flarum/common/components/Alert';\nimport WhyNotModal from './WhyNotModal';\nimport RequestError from 'flarum/common/utils/RequestError';\nimport ExtensionItem, { Extension } from './ExtensionItem';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n updateState: UpdateState;\n}\n\nexport default class MajorUpdater extends Component {\n isLoading: string | null = null;\n updateState!: UpdateState;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.updateState = this.attrs.updateState;\n }\n\n view(vnode: Mithril.Vnode): Mithril.Children {\n // @todo move Form-group--danger class to core for reuse\n return (\n
\n \"flarum\n \n

{app.translator.trans('flarum-package-manager.admin.major_updater.description')}

\n
\n \n \n \n \n
\n {this.updateState.incompatibleExtensions.length ? (\n
\n {this.updateState.incompatibleExtensions.map((extension: string) => (\n \n ))}\n
\n ) : null}\n {this.updateState.status === 'failure' ? (\n app.modal.show(WhyNotModal, { package: 'flarum/core' })}\n >\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.why')}\n ,\n ]}\n >\n

\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.desc')}\n

\n \n ) : null}\n
\n );\n }\n\n update(dryRun: boolean) {\n this.isLoading = `update-${dryRun ? 'dry-run' : 'run'}`;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`,\n body: {\n data: { dryRun },\n },\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .catch((e: RequestError) => {\n app.modal.close();\n this.updateState.status = 'failure';\n this.updateState.incompatibleExtensions = e.response?.errors?.pop()?.incompatible_extensions as string[];\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import Mithril from 'mithril';\nimport 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 extractText from 'flarum/common/utils/extractText';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ExtensionItem, { Extension } from './ExtensionItem';\n\nexport type UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n 'latest-minor': string | null;\n 'latest-major': string | null;\n 'latest-status': string;\n description: string;\n};\n\nexport type ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\nexport type LastUpdateCheck = {\n checkedAt: Date | null;\n updates: ComposerUpdates;\n};\n\ntype UpdateType = 'major' | 'minor' | 'global';\ntype UpdateStatus = 'success' | 'failure' | null;\nexport type UpdateState = {\n ranAt: Date | null;\n status: UpdateStatus;\n limitedPackages: string[];\n incompatibleExtensions: string[];\n};\n\nexport type LastUpdateRun = {\n [key in UpdateType]: UpdateState;\n} & {\n limitedPackages: () => string[];\n};\n\nexport default class Updater extends Component {\n isLoading: string | null = null;\n packageUpdates: Record = {};\n lastUpdateCheck: LastUpdateCheck = JSON.parse(app.data.settings['flarum-package-manager.last_update_check']) as LastUpdateCheck;\n get lastUpdateRun(): LastUpdateRun {\n const lastUpdateRun = JSON.parse(app.data.settings['flarum-package-manager.last_update_run']) as LastUpdateRun;\n\n lastUpdateRun.limitedPackages = () => [\n ...lastUpdateRun.major.limitedPackages,\n ...lastUpdateRun.minor.limitedPackages,\n ...lastUpdateRun.global.limitedPackages,\n ];\n\n return lastUpdateRun;\n }\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions = this.getExtensionUpdates();\n let coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate();\n let core: any;\n\n if (coreUpdate) {\n core = {\n id: 'flarum-core',\n name: 'flarum/core',\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`,\n },\n extra: {\n 'flarum-extension': {\n title: app.translator.trans('flarum-package-manager.admin.updater.flarum'),\n },\n },\n };\n }\n\n return [\n
\n \n

{app.translator.trans('flarum-package-manager.admin.updater.updater_help')}

\n {this.lastUpdateCheck?.checkedAt && (\n

\n \n {app.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')}\n \n {humanTime(this.lastUpdateCheck.checkedAt)}\n

\n )}\n
\n \n {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('flarum-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : extensions.length || core ? (\n
\n
\n {core ? (\n \n ) : null}\n {extensions.map((extension: Extension) => (\n \n ))}\n
\n
\n ) : null}\n
,\n coreUpdate && coreUpdate['latest-major'] ? : null,\n ];\n }\n\n getExtensionUpdates(): Extension[] {\n this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return (Object.values(app.data.extensions) as Extension[]).filter((extension: Extension) => this.packageUpdates[extension.id]);\n }\n\n getCoreUpdate(): UpdatedPackage | undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n })\n .then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\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.isLoading = 'minor-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })\n );\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.isLoading = 'global-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/utils/isExtensionEnabled'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport Alert from 'flarum/common/components/Alert';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Installer from './components/Installer';\nimport Updater from './components/Updater';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\n\napp.initializers.add('flarum-package-manager', (app) => {\n app.extensionData\n .for('flarum-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('flarum-package-manager.admin.file_permissions')}\n \n
\n );\n }\n\n return null;\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n\n return null;\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n\n return null;\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, 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 >\n Remove\n \n );\n });\n});\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","p","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","create","constructor","e","error","response","errors","includes","code","guessed_cause","app","type","Installer","packageName","isLoading","oninit","vnode","this","Stream","view","className","htmlFor","extiverse","href","id","placeholder","bidi","icon","onclick","onsubmit","bind","loading","data","package","LoadingModal","method","url","body","errorHandler","then","extensionId","extension","window","location","reload","m","redraw","Component","_defineProperties","target","props","i","length","descriptor","configurable","writable","WhyNotModal","whyNot","title","oncreate","requestWhyNot","content","attrs","Modal","ExtensionItem","updates","onClickUpdate","whyNotWarning","isCore","isDanger","classList","style","name","extra","version","text","v","replace","MajorUpdater","updateState","alt","src","coreUpdate","update","incompatibleExtensions","map","status","dismissible","controls","dryRun","pop","incompatible_extensions","Updater","packageUpdates","lastUpdateCheck","JSON","parse","Constructor","protoProps","extensions","getExtensionUpdates","getCoreUpdate","backgroundImage","checkedAt","humanTime","checkForUpdates","disabled","updateGlobally","updateCoreMinor","lastUpdateRun","limitedPackages","updateExtension","major","installed","filter","composerPackage","safeToUpdate","values","confirm","extractText","minor","global","extensionData","registerSetting","isRequiredDirectoriesWritable","translator","trans","extend","ExtensionPage","items","isExtensionEnabled","add","modal","show","request","forum","attribute","alerts","close"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"admin.js","mappings":"2BAAoEA,EAAOC,QAAmJ,WAAW,aAAa,IAAIC,EAAEC,EAAEC,EAAE,IAAIC,EAAE,IAAIC,EAAE,KAAKC,EAAE,MAAMC,EAAE,sFAAsFC,EAAE,QAAQC,EAAE,OAAOC,EAAE,sKAAsKC,EAAE,CAACC,MAAMJ,EAAEK,OAAOJ,EAAEK,KAAKR,EAAES,MAAMV,EAAEW,QAAQZ,EAAEa,QAAQd,EAAEe,aAAa,EAAEC,MAAM,QAAQC,EAAE,SAASnB,GAAG,OAAOA,aAAaoB,GAAGC,EAAE,SAASrB,EAAEC,EAAEC,GAAG,OAAO,IAAIkB,EAAEpB,EAAEE,EAAED,EAAEqB,KAAKC,EAAE,SAASvB,GAAG,OAAOC,EAAEmB,EAAEpB,GAAG,KAAKwB,EAAE,SAASxB,GAAG,OAAOA,EAAE,GAAGyB,EAAE,SAASzB,GAAG,OAAOwB,EAAExB,GAAG0B,KAAKC,KAAK3B,GAAG0B,KAAKE,MAAM5B,IAAI6B,EAAE,SAAS7B,GAAG,OAAO0B,KAAKI,IAAI9B,IAAI+B,EAAE,SAAS/B,EAAEC,GAAG,OAAOD,EAAEwB,EAAExB,GAAG,CAACgC,UAAS,EAAGC,OAAO,GAAGJ,EAAE7B,GAAGC,GAAG,CAAC+B,UAAS,EAAGC,OAAO,GAAGjC,EAAEC,GAAG,CAAC+B,UAAS,EAAGC,OAAO,KAAKb,EAAE,WAAW,SAASI,EAAExB,EAAEC,EAAEC,GAAG,IAAIC,EAAE+B,KAAK,GAAGA,KAAKC,GAAG,GAAGD,KAAKZ,GAAGpB,OAAE,IAASF,IAAIkC,KAAKE,IAAI,EAAEF,KAAKG,yBAAyBpC,EAAE,OAAOoB,EAAErB,EAAEU,EAAEa,EAAEtB,IAAIiC,MAAM,GAAG,iBAAiBlC,EAAE,OAAOkC,KAAKE,IAAIpC,EAAEkC,KAAKG,wBAAwBH,KAAK,GAAG,iBAAiBlC,EAAE,OAAOsC,OAAOC,KAAKvC,GAAGwC,SAAS,SAASvC,GAAGE,EAAEgC,GAAGZ,EAAEtB,IAAID,EAAEC,MAAMiC,KAAKO,kBAAkBP,KAAK,GAAG,iBAAiBlC,EAAE,CAAC,IAAII,EAAEJ,EAAE0C,MAAMjC,GAAG,GAAGL,EAAE,CAAC,IAAIC,EAAED,EAAEuC,MAAM,GAAGC,KAAK,SAAS5C,GAAG,OAAO,MAAMA,EAAE6C,OAAO7C,GAAG,KAAK,OAAOkC,KAAKC,GAAGxB,MAAMN,EAAE,GAAG6B,KAAKC,GAAGvB,OAAOP,EAAE,GAAG6B,KAAKC,GAAGjB,MAAMb,EAAE,GAAG6B,KAAKC,GAAGtB,KAAKR,EAAE,GAAG6B,KAAKC,GAAGrB,MAAMT,EAAE,GAAG6B,KAAKC,GAAGpB,QAAQV,EAAE,GAAG6B,KAAKC,GAAGnB,QAAQX,EAAE,GAAG6B,KAAKO,kBAAkBP,MAAM,OAAOA,KAAK,IAAIL,EAAEL,EAAEsB,UAAU,OAAOjB,EAAEY,gBAAgB,WAAW,IAAIzC,EAAEkC,KAAKA,KAAKE,IAAIE,OAAOC,KAAKL,KAAKC,IAAIY,QAAQ,SAAS9C,EAAEC,GAAG,OAAOD,GAAGD,EAAEmC,GAAGjC,IAAI,GAAGQ,EAAER,KAAK,IAAI2B,EAAEQ,sBAAsB,WAAW,IAAIrC,EAAEkC,KAAKE,IAAIF,KAAKC,GAAGxB,MAAMc,EAAEzB,EAAEO,GAAGP,GAAGO,EAAE2B,KAAKC,GAAGvB,OAAOa,EAAEzB,EAAEQ,GAAGR,GAAGQ,EAAE0B,KAAKC,GAAGtB,KAAKY,EAAEzB,EAAEK,GAAGL,GAAGK,EAAE6B,KAAKC,GAAGrB,MAAMW,EAAEzB,EAAEI,GAAGJ,GAAGI,EAAE8B,KAAKC,GAAGpB,QAAQU,EAAEzB,EAAEG,GAAGH,GAAGG,EAAE+B,KAAKC,GAAGnB,QAAQS,EAAEzB,EAAEE,GAAGF,GAAGE,EAAEgC,KAAKC,GAAGlB,aAAajB,GAAG6B,EAAEmB,YAAY,WAAW,IAAIhD,EAAE+B,EAAEG,KAAKC,GAAGxB,MAAM,KAAKV,EAAE8B,EAAEG,KAAKC,GAAGvB,OAAO,KAAKV,GAAGgC,KAAKC,GAAGtB,MAAM,EAAEqB,KAAKC,GAAGjB,QAAQhB,GAAG,EAAEgC,KAAKC,GAAGjB,OAAO,IAAIf,EAAE4B,EAAE7B,EAAE,KAAKE,EAAE2B,EAAEG,KAAKC,GAAGrB,MAAM,KAAKT,EAAE0B,EAAEG,KAAKC,GAAGpB,QAAQ,KAAKT,EAAE4B,KAAKC,GAAGnB,SAAS,EAAEkB,KAAKC,GAAGlB,eAAeX,GAAG4B,KAAKC,GAAGlB,aAAa,KAAK,IAAIV,EAAEwB,EAAEzB,EAAE,KAAKE,EAAER,EAAEgC,UAAU/B,EAAE+B,UAAU7B,EAAE6B,UAAU5B,EAAE4B,UAAU3B,EAAE2B,UAAUzB,EAAEyB,SAASvB,EAAEL,EAAE6B,QAAQ5B,EAAE4B,QAAQ1B,EAAE0B,OAAO,IAAI,GAAGvB,GAAGF,EAAE,IAAI,IAAI,IAAIR,EAAEiC,OAAOhC,EAAEgC,OAAO9B,EAAE8B,OAAOxB,EAAEL,EAAE6B,OAAO5B,EAAE4B,OAAO1B,EAAE0B,OAAO,MAAM,MAAMvB,GAAG,OAAOA,EAAE,MAAMA,GAAGmB,EAAEoB,OAAO,WAAW,OAAOf,KAAKc,eAAenB,EAAEI,OAAO,SAASjC,GAAG,IAAIE,EAAEF,GAAG,sBAAsBG,EAAE,CAAC+C,EAAEhB,KAAKC,GAAGxB,MAAMwC,GAAGlD,EAAEA,EAAEiC,KAAKC,GAAGxB,MAAM,EAAE,KAAKyC,KAAKnD,EAAEA,EAAEiC,KAAKC,GAAGxB,MAAM,EAAE,KAAK0C,EAAEnB,KAAKC,GAAGvB,OAAO0C,GAAGrD,EAAEA,EAAEiC,KAAKC,GAAGvB,OAAO,EAAE,KAAK2C,EAAErB,KAAKC,GAAGtB,KAAK2C,GAAGvD,EAAEA,EAAEiC,KAAKC,GAAGtB,KAAK,EAAE,KAAK4C,EAAEvB,KAAKC,GAAGrB,MAAM4C,GAAGzD,EAAEA,EAAEiC,KAAKC,GAAGrB,MAAM,EAAE,KAAKS,EAAEW,KAAKC,GAAGpB,QAAQ4C,GAAG1D,EAAEA,EAAEiC,KAAKC,GAAGpB,QAAQ,EAAE,KAAKd,EAAEiC,KAAKC,GAAGnB,QAAQ4C,GAAG3D,EAAEA,EAAEiC,KAAKC,GAAGnB,QAAQ,EAAE,KAAK6C,IAAI5D,EAAEA,EAAEiC,KAAKC,GAAGlB,aAAa,EAAE,MAAM,OAAOf,EAAE4D,QAAQxD,GAAG,SAASN,EAAEC,GAAG,OAAOA,GAAG8D,OAAO5D,EAAEH,QAAQ6B,EAAEmC,GAAG,SAAShE,GAAG,OAAOkC,KAAKE,IAAI1B,EAAEa,EAAEvB,KAAK6B,EAAEoC,IAAI,SAASjE,GAAG,IAAIC,EAAEiC,KAAKE,IAAIlC,EAAEqB,EAAEvB,GAAG,MAAM,iBAAiBE,EAAED,GAAG,IAAIA,EAAE,UAAUC,EAAEuB,EAAExB,EAAES,EAAER,IAAIgC,KAAKC,GAAGjC,GAAG,IAAID,EAAE,EAAEA,GAAG4B,EAAEqC,IAAI,SAASlE,EAAEC,EAAEC,GAAG,IAAIC,EAAE,OAAOA,EAAEF,EAAED,EAAEU,EAAEa,EAAEtB,IAAIkB,EAAEnB,GAAGA,EAAEoC,IAAIf,EAAErB,EAAEkC,MAAME,IAAIf,EAAEa,KAAKE,IAAIjC,GAAGD,GAAG,EAAE,GAAGgC,OAAOL,EAAEsC,SAAS,SAASnE,EAAEC,GAAG,OAAOiC,KAAKgC,IAAIlE,EAAEC,GAAE,IAAK4B,EAAEuC,OAAO,SAASpE,GAAG,IAAIC,EAAEiC,KAAKmC,QAAQ,OAAOpE,EAAEqB,GAAGtB,EAAEC,GAAG4B,EAAEwC,MAAM,WAAW,OAAOhD,EAAEa,KAAKE,IAAIF,OAAOL,EAAEyC,SAAS,SAASrE,GAAG,OAAOD,IAAIkE,IAAIhC,KAAKE,IAAI,MAAMgC,OAAOlC,KAAKZ,IAAIiD,SAAStE,IAAI4B,EAAEZ,aAAa,WAAW,OAAOiB,KAAK+B,IAAI,iBAAiBpC,EAAE2C,eAAe,WAAW,OAAOtC,KAAK8B,GAAG,iBAAiBnC,EAAEb,QAAQ,WAAW,OAAOkB,KAAK+B,IAAI,YAAYpC,EAAE4C,UAAU,WAAW,OAAOvC,KAAK8B,GAAG,YAAYnC,EAAEd,QAAQ,WAAW,OAAOmB,KAAK+B,IAAI,YAAYpC,EAAE6C,UAAU,WAAW,OAAOxC,KAAK8B,GAAG,YAAYnC,EAAEf,MAAM,WAAW,OAAOoB,KAAK+B,IAAI,UAAUpC,EAAE8C,QAAQ,WAAW,OAAOzC,KAAK8B,GAAG,UAAUnC,EAAEhB,KAAK,WAAW,OAAOqB,KAAK+B,IAAI,SAASpC,EAAE+C,OAAO,WAAW,OAAO1C,KAAK8B,GAAG,SAASnC,EAAEX,MAAM,WAAW,OAAOgB,KAAK+B,IAAI,UAAUpC,EAAEgD,QAAQ,WAAW,OAAO3C,KAAK8B,GAAG,UAAUnC,EAAEjB,OAAO,WAAW,OAAOsB,KAAK+B,IAAI,WAAWpC,EAAEiD,SAAS,WAAW,OAAO5C,KAAK8B,GAAG,WAAWnC,EAAElB,MAAM,WAAW,OAAOuB,KAAK+B,IAAI,UAAUpC,EAAEkD,QAAQ,WAAW,OAAO7C,KAAK8B,GAAG,UAAUxC,EAA/sG,GAAotG,OAAO,SAAStB,EAAEC,EAAEC,GAAGJ,EAAEI,EAAEH,EAAEG,IAAI4E,SAAS5E,EAAE6E,SAAS,SAASjF,EAAEC,GAAG,IAAIC,EAAEE,EAAEgE,SAAS,OAAO/C,EAAErB,EAAE,CAACsB,GAAGpB,GAAGD,IAAIG,EAAE8E,WAAW/D,EAAE,IAAId,EAAEF,EAAE2C,UAAUoB,IAAI5D,EAAEH,EAAE2C,UAAUqB,SAAShE,EAAE2C,UAAUoB,IAAI,SAASlE,EAAEC,GAAG,OAAOkB,EAAEnB,KAAKA,EAAEA,EAAEwE,kBAAkBnE,EAAE8E,KAAKjD,KAAP7B,CAAaL,EAAEC,IAAIE,EAAE2C,UAAUqB,SAAS,SAASnE,EAAEC,GAAG,OAAOkB,EAAEnB,KAAKA,EAAEA,EAAEwE,kBAAkBlE,EAAE6E,KAAKjD,KAAP5B,CAAaN,EAAEC,KAAx6IA,KCC/EmF,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaxF,QAGrB,IAAID,EAASsF,EAAyBE,GAAY,CAGjDvF,QAAS,IAOV,OAHA0F,EAAoBH,GAAUI,KAAK5F,EAAOC,QAASD,EAAQA,EAAOC,QAASsF,GAGpEvF,EAAOC,QCpBfsF,EAAoBnF,EAAKJ,IACxB,IAAI6F,EAAS7F,GAAUA,EAAO8F,WAC7B,IAAO9F,EAAiB,QACxB,IAAM,EAEP,OADAuF,EAAoB3E,EAAEiF,EAAQ,CAAElF,EAAGkF,IAC5BA,GCLRN,EAAoB3E,EAAI,CAACX,EAAS8F,KACjC,IAAI,IAAIC,KAAOD,EACXR,EAAoB/E,EAAEuF,EAAYC,KAAST,EAAoB/E,EAAEP,EAAS+F,IAC5ExD,OAAOyD,eAAehG,EAAS+F,EAAK,CAAEE,YAAY,EAAM/B,IAAK4B,EAAWC,MCJ3ET,EAAoB/E,EAAI,CAAC2F,EAAKC,IAAU5D,OAAOQ,UAAUqD,eAAeT,KAAKO,EAAKC,GCClFb,EAAoBhF,EAAKN,IACH,oBAAXqG,QAA0BA,OAAOC,aAC1C/D,OAAOyD,eAAehG,EAASqG,OAAOC,YAAa,CAAEC,MAAO,WAE7DhE,OAAOyD,eAAehG,EAAS,aAAc,CAAEuG,OAAO,K,mCCLvD,MAAM,EAA+BC,OAAOC,KAAKC,OAAO,iBCAlD,EAA+BF,OAAOC,KAAKC,OAAO,a,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,kC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,iC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,kC,aCAzC,SAASC,EAAgBpG,EAAGc,GAMzC,OALAsF,EAAkBpE,OAAOqE,gBAAkB,SAAyBrG,EAAGc,GAErE,OADAd,EAAEsG,UAAYxF,EACPd,GAGFoG,EAAgBpG,EAAGc,GCLb,SAASyF,EAAeC,EAAUC,GAC/CD,EAAShE,UAAYR,OAAO0E,OAAOD,EAAWjE,WAC9CgE,EAAShE,UAAUmE,YAAcH,EACjCH,EAAeG,EAAUC,GCJZ,SAASG,EAA8BC,EAAQC,GAC5D,GAAc,MAAVD,EAAgB,MAAO,GAC3B,IAEIrB,EAAK3F,EAFLkH,EAAS,GACTC,EAAahF,OAAOC,KAAK4E,GAG7B,IAAKhH,EAAI,EAAGA,EAAImH,EAAWC,OAAQpH,IACjC2F,EAAMwB,EAAWnH,GACbiH,EAASI,QAAQ1B,IAAQ,IAC7BuB,EAAOvB,GAAOqB,EAAOrB,IAGvB,OAAOuB,ECZT,MAAM,EAA+Bd,OAAOC,KAAKC,OAAO,oB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,sC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,6B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,uB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,yB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,0B,oCCQnCgB,EAAAA,SAAAA,G,4EACnBC,KAAA,SAAKC,GACH,MAAsCzF,KAAK0F,MAAnCC,EAAR,EAAQA,UAAoBD,GAA5B,EAAmBE,KAAnB,QAEA,OACE,wBAAMD,UAAWE,GAAAA,CAAU,CAAC,QAAD,UAAoB7F,KAAK0F,MAAME,KAAQD,KAAiBD,GAChFD,EAAMK,W,EANMP,CAAcQ,KCRnC,MAAM,EAA+B1B,OAAOC,KAAKC,OAAO,2B,aCQnCyB,EAAAA,SAAAA,G,oFACnBL,UAAA,WACE,MAAO,2B,EAGTM,MAAA,WACE,OAAOC,IAAAA,WAAAA,MAAA,0DAA+ElG,KAAK0F,MAAMS,KAAKC,c,EAGxGC,QAAA,WACE,OACE,SAAKV,UAAU,cACb,SAAKA,UAAU,wBACb,SAAKA,UAAU,cACb,eAAQO,IAAAA,WAAAA,MAAqB,qEAC7B,SAAKP,UAAU,4CACb,4BAAkB3F,KAAK0F,MAAMS,KAAKG,aAGtC,SAAKX,UAAU,cACb,eAAQO,IAAAA,WAAAA,MAAqB,oEAC7B,SAAKP,UAAU,2CACb,cACE,aAAM3F,KAAK0F,MAAMS,KAAKI,gB,EAvBjBP,CAAyFQ,K,gBCIzFC,EAAAA,SAAAA,G,4EACnBjB,KAAA,WAAO,WACL,OACE,SAAKkB,MAAM,0CACT,EAAC,IAAD,CACEC,UAAW3G,KAAK0F,MAAMkB,KAAKC,UAC3BZ,MAAOC,IAAAA,WAAAA,MAAqB,2CAC5BY,QAAS,kBAAM,EAAKpB,MAAMkB,KAAKG,QAC/BC,KAAK,sBACLrB,UAAU,6CAEZ,UAAMe,MAAM,2BACTR,IAAAA,WAAAA,MAAqB,2CAA4C,CAChEe,QAASjH,KAAK0F,MAAMkB,KAAKM,aAAe,EACxCC,MAAOnH,KAAK0F,MAAMkB,KAAKQ,mBAG3B,EAAC,IAAD,CACET,UAAW3G,KAAK0F,MAAMkB,KAAKS,UAC3BpB,MAAOC,IAAAA,WAAAA,MAAqB,2CAC5BY,QAAS,kBAAM,EAAKpB,MAAMkB,KAAKU,QAC/BN,KAAK,uBACLrB,UAAU,+C,EAtBCc,CAAmBV,K,sBCUnBwB,EAAAA,SAAAA,G,oFACnBC,OAAA,SAAO/B,GACL,YAAM+B,OAAN,UAAa/B,GAEbS,IAAAA,oBAAAA,Q,EAGFV,KAAA,WACE,OACE,aAASiC,GAAG,8BAA8B9B,UAAU,yDAClD,SAAKA,UAAU,uEACb,SAAKA,UAAU,aACb,QAAIA,UAAU,kBAAkBO,IAAAA,WAAAA,MAAqB,sDACrD,EAAC,IAAD,CACEP,UAAU,sBACVqB,KAAK,kBACLF,QAAS,kBAAMZ,IAAAA,oBAAAA,QACf,aAAYA,IAAAA,WAAAA,MAAqB,2DAIvC,SAAKP,UAAU,aAAa3F,KAAK0H,gB,EAKvCC,QAAA,WAAU,WACFC,EAAQ,IAAIC,KAuGlB,OArGAD,EAAM5F,IACJ,YACA,CACE8F,MAAOC,GAAAA,CAAY7B,IAAAA,WAAAA,MAAqB,kEACxCG,QAAS,SAACF,GAAD,OACP,SAAKR,UAAU,uCACb,UAAMA,UAAU,4CAA4C,EAAKqC,cAAc7B,EAAKC,cACpF,UAAMT,UAAU,4CACbO,IAAAA,WAAAA,MAAA,0DAA+EC,EAAKC,iBAK7F,IAGFwB,EAAM5F,IACJ,UACA,CACE8F,MAAOC,GAAAA,CAAY7B,IAAAA,WAAAA,MAAqB,gEACxCG,QAAS,SAACF,GAAS,MACX8B,EAA8B/B,IAAAA,KAAAA,WAAA,SAAoBC,EAAI,gBAAxB,EAAoB,EAAgBvE,QAAQ,gCAAiC,MAEjH,OAAOqG,EACL,SAAKtC,UAAU,qCACb,SAAKA,UAAU,uDAAuDuC,MAAOD,EAAUjB,MACpFiB,EAAUjB,KAAOA,GAAAA,CAAKiB,EAAUjB,KAAKmB,MAAQ,IAEhD,SAAKxC,UAAU,6CACb,UAAMA,UAAU,2CAA2CsC,EAAUG,MAAM,oBAAoBnC,OAC/F,UAAMN,UAAU,0CAA0CQ,EAAI,aAIlEA,EAAI,YAIV,IAGFyB,EAAM5F,IACJ,SACA,CACE8F,MAAOC,GAAAA,CAAY7B,IAAAA,WAAAA,MAAqB,+DACxCG,QAAS,SAACF,GAAD,OACP,EAACZ,EAAD,CACEI,UAAU,mCACVC,KAAM,CAAEyC,QAAS,UAAWC,QAAS,QAASC,QAAS,UAAWC,QAAS,WAAYrC,EAAKsC,WAE3FvC,IAAAA,WAAAA,MAAA,wDAA6EC,EAAKsC,aAIzF,IAGFb,EAAM5F,IACJ,cACA,CACE8F,MAAOC,GAAAA,CAAY7B,IAAAA,WAAAA,MAAqB,qEACxCG,QAAS,SAACF,GAAD,OACNA,EAAKuC,YAGJ,EAAC,IAAD,CAASC,KAASC,MAAMzC,EAAKuC,aAAa3I,OAAO,UAApC,KAAkD6I,MAAMzC,EAAK0C,cAAc9I,OAAO,WAC7F,cCnHC,SAAuB+I,EAAaC,GACjDH,MAAMI,OAAOjG,KAEb,IAAMkG,EAAeL,MAAMG,GAAKG,KAAKJ,GAErC,OAAOF,MAAM7F,SAASkG,GAAc7G,WD8GjB+G,CAAchD,EAAKuC,YAAavC,EAAK0C,gBAH9C3C,IAAAA,WAAAA,MAAqB,mEAO3B,IAGF0B,EAAM5F,IACJ,aACA,CACE8F,MAAOC,GAAAA,CAAY7B,IAAAA,WAAAA,MAAqB,yEACxCG,QAAS,SAACF,GAAD,OAAU,cAAOA,EAAKiD,oBAEjC,IAGFxB,EAAM5F,IACJ,UACA,CACE8F,MAAOC,GAAAA,CAAY7B,IAAAA,WAAAA,MAAqB,gEACxCG,QAAS,SAACF,GAAD,OACP,EAAC,IAAD,CACER,UAAU,0CACVqB,KAAK,kBACL,aAAYd,IAAAA,WAAAA,MAAqB,+DAGjCY,QAAS,kBAAMZ,IAAAA,MAAAA,KAAeF,EAAiB,CAAEG,KAAAA,QAGrDR,UAAW,kBAEb,IAGKiC,G,EAGTF,WAAA,WACE,IAAM2B,EAAQnD,IAAAA,oBAAAA,WAEd,IAAKmD,EACH,OAAO,EAAC,IAAD,MAGT,GAAIA,IAAUA,EAAMhE,OAClB,OAAO,QAAIM,UAAU,2BAA2BO,IAAAA,WAAAA,MAAqB,qDAGvE,IAAMyB,EAAU3H,KAAK2H,UAErB,OACE,WACE,WAAOhC,UAAU,mCACf,eACE,YACGgC,EAAQ2B,UAAU5I,KAAI,SAAC6I,EAAMC,GAAP,OACrB,QAAI5F,IAAK4F,GAAQD,EAAKzB,YAI5B,eACGuB,EAAM3I,KAAI,SAACyF,EAAMqD,GAAP,OACT,QAAI5F,IAAK4F,GACN7B,EAAQ2B,UAAU5I,KAAI,SAAC6I,EAAMC,GACSD,EAA7BzB,MAAR,IAAezB,EAAsBkD,EAAtBlD,QAAYX,EAA3B,EAAqC6D,EAArC,GAEA,OACE,sBAAI3F,IAAK4F,GAAW9D,GACjBW,EAAQF,aASvB,EAACM,EAAD,CAAYG,KAAMV,IAAAA,wB,EAKxB8B,cAAA,SAAc5B,GACZ,OAAOY,GAAAA,CACL,CACEyC,aAAc,kBACdC,aAAc,cACdC,aAAc,cACdC,cAAe,cACfC,kBAAmB,kBACnBC,iBAAkB,eAClBC,iBAAkB,6BAClBC,QAAS,6BACT5D,K,EA7LamB,CAAqBxB,KEtB1C,MAAM,EAA+B1B,OAAOC,KAAKC,OAAO,2B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,uB,aCEzC,SAAS,EAACrG,GACvB,IAAM+L,EAAQ/L,EAAEgM,SAASC,OAAO,GAEhC,IAAK,CAAC,2BAA4B,8BAA+B,2BAA2BC,SAASH,EAAMI,MACzG,MAAMnM,EAGR,OAAQ+L,EAAMI,MACZ,IAAK,2BACCJ,EAAMK,eACRpE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAA,yDAA8E+D,EAAMK,gBACvHpE,IAAAA,MAAAA,SAEAA,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAqB,qEAE1D,MAEF,IAAK,8BACHA,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAqB,wEACxDA,IAAAA,MAAAA,QACA,MAEF,IAAK,0BACHA,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAqB,oEACxDA,IAAAA,MAAAA,SCrBS,SAASqE,IACtBrE,IAAAA,MAAAA,QACA7G,EAAEmL,MAAMC,IAAIvE,IAAAA,MAAU,YAAa,CAAEuB,GAAI,4BACzCvB,IAAAA,oBAAAA,OACAwE,YAAW,WAAM,MACf,SAAAC,SAASC,eAAe,iCAAxB,EAAwDC,eAAe,CAAEC,MAAO,cAC/E,KARLC,OAAOR,YAAcA,E,ICUAS,EAAAA,SAAAA,G,wIACnBC,iBAAAA,E,EACAC,WAAqB,E,oCAErB1D,OAAA,SAAO/B,GACL,YAAM+B,OAAN,UAAa/B,GAEbzF,KAAKiL,YAAcE,GAAAA,CAAO,K,EAG5B3F,KAAA,WACE,OACE,SAAKG,UAAU,uCACb,WAAOyF,QAAQ,qBAAqBlF,IAAAA,WAAAA,MAAqB,oDACzD,OAAGP,UAAU,YACVO,IAAAA,WAAAA,MAAqB,uDAAwD,CAC5EmF,UAAW,OAAGC,KAAK,yBAAR,oBAGf,SAAK3F,UAAU,yBACb,WAAOA,UAAU,cAAc8B,GAAG,oBAAoB8D,YAAY,sBAAsBC,KAAMxL,KAAKiL,cACnG,EAAC,IAAD,CAAQtF,UAAU,SAASqB,KAAK,kBAAkBF,QAAS9G,KAAKyL,SAASxI,KAAKjD,MAAO0L,QAAS1L,KAAKkL,WAChGhF,IAAAA,WAAAA,MAAqB,uD,EAOhCyF,KAAA,WACE,MAAO,CACLC,QAAS5L,KAAKiL,gB,EAIlBQ,SAAA,WAAiB,WACfzL,KAAKkL,WAAY,EACjBhF,IAAAA,MAAAA,KAAe2F,KAEf3F,IAAAA,QACkD,CAC9C4F,OAAQ,OACRC,IAAQ7F,IAAAA,MAAAA,UAAoB,UAAzB,8BACH8F,KAAM,CACJL,KAAM3L,KAAK2L,QAEbM,aAAAA,IAEDC,MAAK,SAAChC,GACL,GAAIA,EAASiC,WACX5B,QACK,CACL,IAAM6B,EAAclC,EAASzC,GAC7BvB,IAAAA,OAAAA,KACE,CAAEN,KAAM,WACRM,IAAAA,WAAAA,MAAqB,6DAA8D,CAAE+B,UAAWmE,KAElGrB,OAAOsB,SAASf,KAAUpF,IAAAA,MAAAA,UAAoB,YAA9C,eAAwEkG,EACxErB,OAAOsB,SAASC,aAnBtB,SAsBW,WACP,EAAKpB,WAAY,EACjB7L,EAAEkN,a,EA/DWvB,CAAkBjF,KCbvC,SAASyG,EAAkBrH,EAAQsH,GACjC,IAAK,IAAIxO,EAAI,EAAGA,EAAIwO,EAAMpH,OAAQpH,IAAK,CACrC,IAAIyO,EAAaD,EAAMxO,GACvByO,EAAW5I,WAAa4I,EAAW5I,aAAc,EACjD4I,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjDxM,OAAOyD,eAAesB,EAAQuH,EAAW9I,IAAK8I,ICNlD,MAAM,EAA+BrI,OAAOC,KAAKC,OAAO,4B,aCiBnCsI,EAAAA,SAAAA,G,wIACnBnB,SAAmB,E,EACnBoB,OAAwB,K,oCAExBnH,UAAA,WACE,MAAO,4B,EAGTM,MAAA,WACE,OAAOC,IAAAA,WAAAA,MAAqB,qD,EAG9B6G,SAAA,SAAStH,GACP,YAAMsH,SAAN,UAAetH,GAEfzF,KAAKgN,iB,EAGP3G,QAAA,WACE,OAAO,SAAKV,UAAU,cAAc3F,KAAK0L,QAAU,EAAC,IAAD,MAAuB,SAAK/F,UAAU,wBAAwB3F,KAAK8M,U,EAGxHE,cAAA,WAAsB,WACpB9G,IAAAA,QAC2B,CACvB4F,OAAQ,OACRC,IAAQ7F,IAAAA,MAAAA,UAAoB,UAAzB,2BACH8F,KAAM,CACJL,KAAM,CACJC,QAAS5L,KAAK0F,MAAL,UAGbuG,aAAAA,IAEDC,MAAK,SAAChC,GACL,EAAKwB,SAAU,EACf,EAAKoB,OAAS5C,EAASyB,KAAKsB,OAC5B5N,EAAEkN,a,EArCWM,CAA6ErG,KCM7E0G,EAAAA,SAAAA,G,oFACnB1H,KAAA,SAAKC,GAAqD,MACxD,EAA+EzF,KAAK0F,MAA5EuC,EAAR,EAAQA,UAAWkF,EAAnB,EAAmBA,QAASC,EAA5B,EAA4BA,cAAeC,EAA3C,EAA2CA,cAAeC,EAA1D,EAA0DA,OAAQC,EAAlE,EAAkEA,SAC5DC,EAAa,SAAGL,EAAQ,iBAAX,EAA+BA,EAAQ,kBAAoBG,EAASH,EAAQ,gBAAkB,KAEjH,OACE,SACExH,UAAWE,GAAAA,CAAU,CACnB,4BAA4B,EAC5B,iCAAkCyH,EAClC,mCAAoCC,KAGtC,SAAK5H,UAAU,8CAA8CuC,MAAOD,EAAUjB,MAC3EiB,EAAUjB,KAAOA,GAAAA,CAAKiB,EAAUjB,KAAKmB,MAAQ,IAEhD,SAAKxC,UAAU,iCACb,SAAKA,UAAU,iCAAiCsC,EAAUG,MAAM,oBAAoBnC,OACpF,SAAKN,UAAU,oCACb,UAAMA,UAAU,4CAA4C3F,KAAKyN,QAAQxF,EAAUwF,UAClFD,EACC,EAACjI,EAAD,CAAOI,UAAU,0CAA0CC,KAAMuH,EAAQ,gBAAkB,UAAY,WACpGnN,KAAKyN,QAAQD,IAEd,OAGR,SAAK7H,UAAU,qCACZyH,EACC,EAAC,IAAD,CAASzE,KAAMzC,IAAAA,WAAAA,MAAqB,mDAClC,EAAC,IAAD,CACEc,KAAK,6BACLrB,UAAU,mCACVmB,QAASsG,EACT,aAAYlH,IAAAA,WAAAA,MAAqB,qDAGnC,KACHmH,EACC,EAAC,IAAD,CAAS1E,KAAMzC,IAAAA,WAAAA,MAAqB,yEAClC,EAAC,IAAD,CACEc,KAAK,4BACLrB,UAAU,kDACVmB,QAAS,kBAAMZ,IAAAA,MAAAA,KAAe2G,EAAa,CAAEjB,QAAS3D,EAAUE,QAChE,aAAYjC,IAAAA,WAAAA,MAAqB,2EAGnC,Q,EAMZuH,QAAA,SAAQC,GACN,MAAO,IAAMA,EAAE9L,QAAQ,IAAK,K,EAtDXsL,CAA6EnH,KCF7E4H,EAAAA,SAAAA,G,wIACnBzC,UAA2B,K,EAC3B0C,iBAAAA,E,oCAEApG,OAAA,SAAO/B,GACL,YAAM+B,OAAN,UAAa/B,GAEbzF,KAAK4N,YAAc5N,KAAK0F,MAAMkI,a,EAGhCpI,KAAA,SAAKC,GAEH,OACE,SAAKE,UAAU,4DACb,SAAKkI,IAAI,cAAcC,IAAK5H,IAAAA,MAAAA,UAAoB,WAAa,yDAC7D,eAAQA,IAAAA,WAAAA,MAAqB,mDAAoD,CAAEuH,QAASzN,KAAK0F,MAAMqI,WAAW,mBAClH,OAAGpI,UAAU,YAAYO,IAAAA,WAAAA,MAAqB,2DAC9C,SAAKP,UAAU,kCACb,EAAC,IAAD,CAASgD,KAAMzC,IAAAA,WAAAA,MAAqB,4DAClC,EAAC,IAAD,CAAQP,UAAU,SAASqB,KAAK,cAAcF,QAAS9G,KAAKgO,OAAO/K,KAAKjD,MAAM,IAC3EkG,IAAAA,WAAAA,MAAqB,wDAG1B,EAAC,IAAD,CAAQP,UAAU,wBAAwBqB,KAAK,cAAcF,QAAS9G,KAAKgO,OAAO/K,KAAKjD,MAAM,IAC1FkG,IAAAA,WAAAA,MAAqB,uDAGzBlG,KAAK4N,YAAYK,uBAAuB5I,OACvC,SAAKM,UAAU,oFACZ3F,KAAK4N,YAAYK,uBAAuBvN,KAAI,SAACuH,GAAD,OAC3C,EAACiF,EAAD,CACEjF,UAAW/B,IAAAA,KAAAA,WAAoB+B,EAAUrG,QAAQ,UAAW,IAAIA,QAAQ,cAAe,IAAIA,QAAQ,IAAK,MACxGuL,QAAS,GACTC,cAAe,KACfG,UAAU,QAId,KACyB,YAA5BvN,KAAK4N,YAAYnF,OAChB,EAAC,IAAD,CACE7C,KAAK,QACLD,UAAU,qCACVuI,aAAa,EACbC,SAAU,CACR,EAAC,IAAD,CACExI,UAAU,iEACVqB,KAAK,yBACLF,QAAS,kBAAMZ,IAAAA,MAAAA,KAAe2G,EAAa,CAAEjB,QAAS,kBAErD1F,IAAAA,WAAAA,MAAqB,6DAI1B,OAAGP,UAAU,2CACVO,IAAAA,WAAAA,MAAqB,6DAGxB,O,EAKV8H,OAAA,SAAOI,GAAiB,WACtBpO,KAAKkL,UAAL,WAA2BkD,EAAS,UAAY,OAChDlI,IAAAA,MAAAA,KAAe2F,KAEf3F,IAAAA,QACwC,CACpC4F,OAAQ,OACRC,IAAQ7F,IAAAA,MAAAA,UAAoB,UAAzB,gCACH8F,KAAM,CACJL,KAAM,CAAEyC,OAAAA,IAEVnC,aAAAA,IAEDC,MAAK,SAAChC,GACL,MAAIA,GAAAA,EAAUiC,WACZ5B,KAEArE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,WAAaM,IAAAA,WAAAA,MAAqB,mDAC1D6E,OAAOsB,SAASC,aAdtB,OAiBS,SAACpO,GAAoB,UAC1BgI,IAAAA,MAAAA,QACA,EAAK0H,YAAYnF,OAAS,UAC1B,EAAKmF,YAAYK,uBAAjB,SAA0C/P,EAAEgM,WAA5C,SAA0C,EAAYC,SAAtD,SAA0C,EAAoBkE,YAA9D,EAA0C,EAA2BC,2BApBzE,SAsBW,WACP,EAAKpD,UAAY,KACjB7L,EAAEkN,a,EA3FWoB,CAAsE5H,KC8BtEwI,GAAAA,SAAAA,G,wIACnBrD,UAA2B,K,EAC3BsD,eAAiD,G,EACjDC,gBAAmCC,KAAKC,MAAMzI,IAAAA,KAAAA,SAAAA,6C,aL5CX0I,EAAaC,E,uBKyDhDrH,OAAA,SAAO/B,GACL,YAAM+B,OAAN,UAAa/B,I,EAGfD,KAAA,WAAO,MAGDlB,EAHC,OACCwK,EAAa9O,KAAK+O,sBACpBhB,EAAyC/N,KAAKgP,gBAmBlD,OAhBIjB,IACFzJ,EAAO,CACLmD,GAAI,cACJU,KAAM,cACNsF,QAASvH,IAAAA,KAAAA,SAAAA,QACTc,KAAM,CACJiI,gBAAiB,OAAO/I,IAAAA,MAAAA,UAAoB,WAA7B,wDAEjBkC,MAAO,CACL,mBAAoB,CAClBnC,MAAOC,IAAAA,WAAAA,MAAqB,mDAM7B,CACL,SAAKP,UAAU,cACb,eAAQO,IAAAA,WAAAA,MAAqB,uDAC7B,OAAGP,UAAU,YAAYO,IAAAA,WAAAA,MAAqB,uDAC7C,SAAAlG,KAAKyO,sBAAL,IAAsBS,YACrB,OAAGvJ,UAAU,gCACX,UAAMA,UAAU,sCACbO,IAAAA,WAAAA,MAAqB,gEAExB,UAAMP,UAAU,sCAAsCwJ,GAAAA,CAAUnP,KAAKyO,gBAAgBS,aAGzF,SAAKvJ,UAAU,kCACb,EAAC,IAAD,CACEA,UAAU,SACVqB,KAAK,kBACLF,QAAS9G,KAAKoP,gBAAgBnM,KAAKjD,MACnC0L,QAA4B,UAAnB1L,KAAKkL,UACdvE,SAA6B,OAAnB3G,KAAKkL,WAAyC,UAAnBlL,KAAKkL,WAEzChF,IAAAA,WAAAA,MAAqB,2DAExB,EAAC,IAAD,CACEP,UAAU,SACVqB,KAAK,cACLF,QAAS9G,KAAKqP,eAAepM,KAAKjD,MAClC0L,QAA4B,kBAAnB1L,KAAKkL,UACdvE,SAA6B,OAAnB3G,KAAKkL,WAAyC,kBAAnBlL,KAAKkL,WAEzChF,IAAAA,WAAAA,MAAqB,4DAGN,OAAnBlG,KAAKkL,UACJ,SAAKvF,UAAU,6BACb,EAAC,IAAD,OAEAmJ,EAAWzJ,QAAUf,EACvB,SAAKqB,UAAU,6BACb,SAAKA,UAAU,kCACZrB,EACC,EAAC4I,EAAD,CACEjF,UAAW3D,EACX6I,QAASY,EACTT,QAAQ,EACRF,cAAepN,KAAKsP,gBAAgBrM,KAAKjD,MACzCqN,cAAerN,KAAKuP,cAAcC,kBAAkBpF,SAAS,iBAE7D,KACH0E,EAAWpO,KAAI,SAACuH,GAAD,OACd,EAACiF,EAAD,CACEjF,UAAWA,EACXkF,QAAS,EAAKqB,eAAevG,EAAUR,IACvC2F,cAAe,EAAKqC,gBAAgBxM,KAAK,EAAMgF,GAC/CoF,cAAe,EAAKkC,cAAcC,kBAAkBpF,SAASnC,EAAUE,aAK7E,MAEN4F,GAAcA,EAAW,gBAAkB,EAACJ,EAAD,CAAcI,WAAYA,EAAYH,YAAa5N,KAAKuP,cAAcG,QAAY,O,EAIjIX,oBAAA,WAAmC,iBAcjC,OAbA,SAAA/O,KAAKyO,kBAAL,WAAsBtB,UAAtB,WAA+BwC,YAA/B,EAA0CC,QAAO,SAACC,GAChD,IAAMpI,EAAKoI,EAAgB1H,KAAKvG,QAAQ,IAAK,KAAKA,QAAQ,0BAA2B,IAE/EqG,EAAY/B,IAAAA,KAAAA,WAAoBuB,GAChCqI,EAAe,CAAC,qBAAsB,mBAAmB1F,SAASyF,EAAgB,kBAMxF,OAJI5H,GAAa6H,IACf,EAAKtB,eAAevG,EAAUR,IAAMoI,GAG/B5H,GAAa6H,KAGd1P,OAAO2P,OAAO7J,IAAAA,KAAAA,YAAqC0J,QAAO,SAAC3H,GAAD,OAA0B,EAAKuG,eAAevG,EAAUR,Q,EAG5HuH,cAAA,WAA4C,UAC1C,gBAAOhP,KAAKyO,kBAAZ,SAAO,EAAsBtB,UAA7B,SAAO,EAA+BwC,gBAAtC,EAAO,EAA0CC,QAAO,SAACC,GAAD,MAA8D,gBAAzBA,EAAgB1H,QAAwBkG,O,EAGvIe,gBAAA,WAAkB,WAChBpP,KAAKkL,UAAY,QAEjBhF,IAAAA,QACmD,CAC/C4F,OAAQ,OACRC,IAAQ7F,IAAAA,MAAAA,UAAoB,UAAzB,qCACH+F,aAAAA,IAEDC,MAAK,SAAChC,GACAA,EAAkCiC,WACrC5B,IAEA,EAAKkE,gBAAkBvE,KAV7B,SAaW,WACP,EAAKgB,UAAY,KACjB7L,EAAEkN,a,EAIR+C,gBAAA,WAAkB,WACZU,QAAQjI,GAAAA,CAAY7B,IAAAA,WAAAA,MAAqB,sEAC3CA,IAAAA,MAAAA,KAAe2F,KACf7L,KAAKkL,UAAY,eAEjBhF,IAAAA,QACwC,CACpC4F,OAAQ,OACRC,IAAQ7F,IAAAA,MAAAA,UAAoB,UAAzB,gCACH+F,aAAAA,IAEDC,MAAK,SAAChC,GACL,MAAIA,GAAAA,EAAUiC,WACZ5B,KAEArE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,WAAaM,IAAAA,WAAAA,MAAqB,mDAC1D6E,OAAOsB,SAASC,aAXtB,SAcW,WACP,EAAKpB,UAAY,KACjB7L,EAAEkN,c,EAKVkD,gBAAA,SAAgBxH,GAAgB,WAC9B/B,IAAAA,MAAAA,KAAe2F,KACf7L,KAAKkL,UAAY,mBAEjBhF,IAAAA,QACwC,CACpC4F,OAAQ,QACRC,IAAQ7F,IAAAA,MAAAA,UAAoB,UAAzB,+BAAiE+B,EAAUR,GAC9EwE,aAAAA,IAEDC,MAAK,SAAChC,GACL,MAAIA,GAAAA,EAAUiC,WACZ5B,KAEArE,IAAAA,OAAAA,KACE,CAAEN,KAAM,WACRM,IAAAA,WAAAA,MAAqB,4DAA6D,CAChF+B,UAAWA,EAAUG,MAAM,oBAAoBnC,SAGnD8E,OAAOsB,SAASC,aAhBtB,SAmBW,WACP,EAAKpB,UAAY,KACjB7L,EAAEkN,a,EAIR8C,eAAA,WAAiB,WACfnJ,IAAAA,MAAAA,KAAe2F,KACf7L,KAAKkL,UAAY,gBAEjBhF,IAAAA,QACwC,CACpC4F,OAAQ,OACRC,IAAQ7F,IAAAA,MAAAA,UAAoB,UAAzB,iCACH+F,aAAAA,IAEDC,MAAK,SAAChC,GACL,MAAIA,GAAAA,EAAUiC,WACZ5B,KAEArE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,WAAaM,IAAAA,WAAAA,MAAqB,kEAC1D6E,OAAOsB,SAASC,aAXtB,SAcW,WACP,EAAKpB,UAAY,KACjB7L,EAAEkN,aLxQ2BqC,E,GAAaC,E,0BK6ChD,WACE,IAAMU,EAAgBb,KAAKC,MAAMzI,IAAAA,KAAAA,SAAAA,2CAQjC,OANAqJ,EAAcC,gBAAkB,2BAC3BD,EAAcG,MAAMF,gBACpBD,EAAcU,MAAMT,gBACpBD,EAAcW,OAAOV,kBAGnBD,OLrDO/C,EAAkBoC,EAAYhO,UAAWiO,GAEzDzO,OAAOyD,eAAe+K,EAAa,YAAa,CAC9ChC,UAAU,I,EKqCO2B,CAAgBxI,KC5ChBoK,GAAAA,SAAAA,G,4EACnB3K,KAAA,WACE,OACE,SAAKG,UAAU,2DACb,SAAKA,UAAU,oCACb,SAAKA,UAAU,aACb,QAAIA,UAAU,kBAAkBO,IAAAA,WAAAA,MAAqB,0DAGzD,SAAKP,UAAU,aACZO,IAAAA,KAAAA,wCACC,WACE,EAAC8E,EAAD,MACA,EAACuD,GAAD,OAGF,SAAK5I,UAAU,cACb,EAAC,IAAD,CAAOC,KAAK,UAAUsI,aAAa,GAChChI,IAAAA,WAAAA,MAAqB,sD,EAlBjBiK,CAAuBpK,KCCvBqK,GAAAA,SAAAA,G,4EACnBC,SAAA,SAAS5K,GAEP,IAAMmC,EAAQ,EAAH,UAASyI,SAAT,UAAkB5K,GAW7B,OATIS,IAAAA,KAAAA,SAAAA,sCACF0B,EAAM5F,IAAI,QAAS,EAACuF,EAAD,MAAkB,GAGvCK,EAAM5F,IAAI,UAAW,EAACmO,GAAD,MAAoB,GAEzCvI,EAAM0I,YAAY,UAAW,IAC7B1I,EAAM0I,YAAY,cAAe,GAE1B1I,G,EAdUwI,CAAqBG,KCR1C,MAAM,GAA+BlM,OAAOC,KAAKC,OAAO,gB,eCAzC,SAASiM,KAetB,OAdAA,GAAWpQ,OAAOqQ,QAAU,SAAUtL,GACpC,IAAK,IAAIlH,EAAI,EAAGA,EAAIyS,UAAUrL,OAAQpH,IAAK,CACzC,IAAIgH,EAASyL,UAAUzS,GAEvB,IAAK,IAAI2F,KAAOqB,EACV7E,OAAOQ,UAAUqD,eAAeT,KAAKyB,EAAQrB,KAC/CuB,EAAOvB,GAAOqB,EAAOrB,IAK3B,OAAOuB,GAGFqL,GAASG,MAAM3Q,KAAM0Q,WCf9B,IAAME,GAAa,CAClB,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAGKC,GAAe,CACpB,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGKC,GAAY,CACjB,IACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAGKC,GAAc,CACnB,IACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SASKC,GAAiB,SAACC,EAAQ/O,EAAQgP,GACvC,IAAIC,EAASF,EAOb,MANsB,iBAAX/O,GAAuBkP,MAAMC,QAAQnP,GAC/CiP,EAASF,EAAOD,eAAe9O,EAAQgP,IAClB,IAAXhP,QAA+BoB,IAAZ4N,IAC7BC,EAASF,EAAOD,oBAAe1N,EAAW4N,IAGpCC,GCjDaG,GAAAA,SAAAA,G,oFACnB7I,OAAA,WACE,OAAO8I,KAAAA,UAA+D,UAAU/N,KAAKxD,O,EAGvFoG,UAAA,WACE,OAAOmL,KAAAA,UAAgC,aAAa/N,KAAKxD,O,EAG3DsG,QAAA,WACE,OAAOiL,KAAAA,UAAwB,WAAW/N,KAAKxD,O,UAGjD,WACE,OAAOuR,KAAAA,UAAwB,WAAW/N,KAAKxD,O,EAGjDuG,OAAA,WACE,OAAOgL,KAAAA,UAAwB,UAAU/N,KAAKxD,O,EAGhDwR,UAAA,WACE,OAAOD,KAAAA,UAAgB,YAAaA,KAAAA,eAAqB/N,KAAKxD,O,EAGhE0I,UAAA,WACE,OAAO6I,KAAAA,UAA8B,YAAaA,KAAAA,eAAqB/N,KAAKxD,O,EAG9E6I,WAAA,WACE,OAAO0I,KAAAA,UAA8B,aAAcA,KAAAA,eAAqB/N,KAAKxD,O,EAG/EoJ,eAAA,WACE,ODkBW,SAAqB6H,EAAQC,GAC3C,IAAKvQ,OAAO8Q,SAASR,GACpB,MAAM,IAAIS,UAAJ,wCAAsDT,EAAtD,KAAiEA,GASxE,IAAMU,GANNT,EAAU,IACTU,MAAM,EACNC,QAAQ,GACLX,IAGkBU,KAClBV,EAAQW,OAASd,GAAcD,GAC/BI,EAAQW,OAAShB,GAAeD,GAEpC,GAAIM,EAAQY,QAAqB,IAAXb,EACrB,YAAaU,EAAM,GAGpB,IAOII,EAPEC,EAAaf,EAAS,EACtBgB,EAASD,EAAa,IAAOd,EAAQY,OAAS,IAAM,GAgB1D,GAdIE,IACHf,GAAUA,QAK2B3N,IAAlC4N,EAAQgB,wBACXH,EAAgB,CAACG,sBAAuBhB,EAAQgB,6BAGX5O,IAAlC4N,EAAQiB,wBACXJ,EAAgB,IAACI,sBAAuBjB,EAAQiB,uBAA0BJ,IAGvEd,EAAS,EAEZ,OAAOgB,EADcjB,GAAeC,EAAQC,EAAQhP,OAAQ6P,GAC7B,IAAMJ,EAAM,GAG5C,IAAMS,EAAW5S,KAAK6S,IAAI7S,KAAKE,MAAMwR,EAAQW,OAASrS,KAAK8S,IAAIrB,GAAUzR,KAAK8S,IAAI,MAAQ9S,KAAK+S,MAAMtB,GAAU,GAAIU,EAAMtM,OAAS,GAWlI,OAVA4L,GAAU,KAAJ,IAAKC,EAAQW,OAAS,KAAO,IAASO,GAEvCL,IACJd,EAASA,EAAOuB,YAAY,IAOtBP,EAJcjB,GAAerQ,OAAOsQ,GAASC,EAAQhP,OAAQ6P,GAIrC,IAFlBJ,EAAMS,GCpETK,CAAmE,KAAvDlB,KAAAA,UAAwB,kBAAkB/N,KAAKxD,Q,EAlCjDsR,CAAaC,MCTbmB,GAAAA,W,kBACXrJ,MAAuB,K,KACvBsJ,MAAQ,E,KACRC,OAAS,E,KACTzL,MAAQ,E,2BAEhB0L,KAAA,SAAKC,GAA+B,aAWlC,OAVA9S,KAAKqJ,MAAQ,KACbyJ,EAAS,IACPC,KAAM,IACJJ,MAAO3S,KAAK2S,MACZC,OAAQ5S,KAAK4S,QAFX,SAGCE,QAHD,EAGC,EAAQC,OAEVD,GAGE5M,IAAAA,MAAAA,KAAuB,wBAAyB4M,GAAU,IAAI5G,MAAK,SAACP,GAAS,MAMlF,OALA,EAAKtC,MAAQsC,EACb,EAAKxE,MAAL,SAAawE,EAAKqH,QAAQC,WAA1B,EAAa,EAAmB9L,MAEhC9H,EAAEkN,SAEKZ,M,EAIXuH,SAAA,WACE,OAAOlT,KAAKqJ,O,EAGdjC,cAAA,WACE,OAAO5H,KAAKC,KAAKO,KAAKmH,MAAQnH,KAAK2S,Q,EAGrCzL,WAAA,WACE,OAAO1H,KAAKC,KAAKO,KAAK4S,OAAS5S,KAAK2S,Q,EAGtC9L,QAAA,WACE,OAA6B,IAAtB7G,KAAKkH,c,EAGdG,QAAA,WACE,OAAOrH,KAAK4S,OAAS5S,KAAK2S,MAAQ3S,KAAKmH,O,EAGzCJ,KAAA,WACM/G,KAAK6G,YACP7G,KAAK4S,QAAU5S,KAAK2S,MACpB3S,KAAK6S,S,EAITvL,KAAA,WACMtH,KAAKqH,YACPrH,KAAK4S,QAAU5S,KAAK2S,MACpB3S,KAAK6S,S,EAzDUH,GCUrBxM,IAAAA,aAAAA,IAAqB,0BAA0B,SAACA,GAC9CA,EAAIiN,MAAMC,OAAO,yBAA2B9B,GAE5CpL,EAAImN,oBAAsB,IAAIX,GAE9BxM,EAAIoN,cAAJ,IACO,0BACJC,gBAAgB,CACfC,QAAS,oCACT1L,MAAO5B,EAAIuN,WAAWC,MAAM,oDAC5BC,KAAMtU,EAAEuU,MACN7L,GAAAA,CACE7B,EAAIuN,WAAWC,MAAM,wDAAyD,CAC5EG,gBAAiB,+FACjBC,cAAe,iEACfC,YAAa,WAAW7N,EAAIyF,KAAKqI,WAAtB,YACXC,kBAAmB,uDAIzBC,SAAS,EACTtO,KAAM,UACNe,SAAUT,EAAIyF,KAAK,6CAEpBwI,aAAa/D,KAEhBpH,EAAAA,EAAAA,QAAOuH,IAAAA,UAAyB,YAAY,SAAU3I,GAAO,WACjC,2BAAtB5H,KAAKiI,UAAUR,IAAmC2M,GAAAA,CAAmBpU,KAAKiI,UAAUR,KAIxFG,EAAM5F,IACJ,SACA,EAAC,IAAD,CACE2D,UAAU,wBACVqB,KAAK,eACLF,QAAS,WACPZ,EAAImO,MAAMC,KAAKzI,KAEf3F,EACGqO,QAAqC,CACpCxI,IAAQ7F,EAAIsO,MAAMC,UAAU,UAAzB,+BAAiE,EAAKxM,UAAUR,GACnFqE,OAAQ,WAETI,MAAK,SAAChC,GACL,MAAIA,GAAAA,EAAUiC,WACZ5B,KAEArE,EAAIwO,OAAOJ,KAAK,CAAE1O,KAAM,WAAaM,EAAIuN,WAAWC,MAAM,8DAC1D3I,OAAOsB,SAAWnG,EAAIsO,MAAMC,UAAU,gBAV5C,SAaW,WACPvO,EAAImO,MAAMM,aApBlB,kB","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.core.compat['common/extend']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/package-manager/./src/admin/components/Label.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/package-manager/./src/admin/components/TaskOutputModal.tsx","webpack://@flarum/package-manager/./src/admin/components/Pagination.tsx","webpack://@flarum/package-manager/./src/admin/components/QueueSection.tsx","webpack://@flarum/package-manager/./src/admin/utils/humanDuration.ts","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['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/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/package-manager/external root \"flarum.core.compat['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.core.compat['common/Model']\"","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/extends.js","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/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.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/ExtensionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/LoadingModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/utils/isExtensionEnabled'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import type Mithril from 'mithril';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\n\ninterface LabelAttrs extends ComponentAttrs {\n type: 'success' | 'error' | 'neutral' | 'warning';\n}\n\nexport default class Label extends Component {\n view(vnode: Mithril.Vnode) {\n const { className, type, ...attrs } = this.attrs;\n\n return (\n \n {vnode.children}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/admin/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Task from '../models/Task';\n\ninterface TaskOutputModalAttrs extends IInternalModalAttrs {\n task: Task;\n}\n\nexport default class TaskOutputModal extends Modal {\n className() {\n return 'Modal--large QuickModal';\n }\n\n title() {\n return app.translator.trans(`flarum-package-manager.admin.sections.queue.operations.${this.attrs.task.operation()}`);\n }\n\n content() {\n return (\n
\n
\n
\n \n
\n $ composer {this.attrs.task.command()}\n
\n
\n
\n \n
\n \n
{this.attrs.task.output()}
\n
\n
\n
\n
\n
\n );\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport QueueState from '../states/QueueState';\n\ninterface PaginationAttrs extends ComponentAttrs {\n list: QueueState;\n}\n\n/**\n * @todo make it abstract in core for reusability.\n */\nexport default class Pagination extends Component {\n view() {\n return (\n \n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } 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 { Extension } from 'flarum/admin/AdminApplication';\nimport icon from 'flarum/common/helpers/icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\n\nimport Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nimport Task, { TaskOperations } from '../models/Task';\nimport Pagination from './Pagination';\n\ninterface QueueTableColumn extends ComponentAttrs {\n label: string;\n content: (task: Task) => Mithril.Children;\n}\n\nexport default class QueueSection extends Component<{}> {\n oninit(vnode: Mithril.Vnode<{}, this>) {\n super.oninit(vnode);\n\n app.packageManagerQueue.load();\n }\n\n view() {\n return (\n
\n
\n
\n

{app.translator.trans('flarum-package-manager.admin.sections.queue.title')}

\n app.packageManagerQueue.load()}\n aria-label={app.translator.trans('flarum-package-manager.admin.sections.queue.refresh')}\n />\n
\n
\n
{this.queueTable()}
\n
\n );\n }\n\n columns() {\n const items = new ItemList();\n\n items.add(\n 'operation',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.operation')),\n content: (task) => (\n
\n {this.operationIcon(task.operation())}\n \n {app.translator.trans(`flarum-package-manager.admin.sections.queue.operations.${task.operation()}`)}\n \n
\n ),\n },\n 80\n );\n\n items.add(\n 'package',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.package')),\n content: (task) => {\n const extension: Extension | null = app.data.extensions[task.package()?.replace(/(\\/flarum-|\\/flarum-ext-|\\/)/g, '-')];\n\n return extension ? (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n {extension.extra['flarum-extension'].title}\n {task.package()}\n
\n
\n ) : (\n task.package()\n );\n },\n },\n 75\n );\n\n items.add(\n 'status',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.status')),\n content: (task) => (\n \n {app.translator.trans(`flarum-package-manager.admin.sections.queue.statuses.${task.status()}`)}\n \n ),\n },\n 70\n );\n\n items.add(\n 'elapsedTime',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.elapsed_time')),\n content: (task) =>\n !task.startedAt() ? (\n app.translator.trans('flarum-package-manager.admin.sections.queue.task_just_started')\n ) : (\n \n {humanDuration(task.startedAt(), task.finishedAt())}\n \n ),\n },\n 65\n );\n\n items.add(\n 'memoryUsed',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.peak_memory_used')),\n content: (task) => {task.peakMemoryUsed()},\n },\n 60\n );\n\n items.add(\n 'details',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.details')),\n content: (task) => (\n app.modal.show(TaskOutputModal, { task })}\n />\n ),\n className: 'Table-controls',\n },\n 55\n );\n\n return items;\n }\n\n queueTable() {\n const tasks = app.packageManagerQueue.getItems();\n\n if (!tasks) {\n return ;\n }\n\n if (tasks && !tasks.length) {\n return

{app.translator.trans('flarum-package-manager.admin.sections.queue.none')}

;\n }\n\n const columns = this.columns();\n\n return (\n <>\n \n \n \n {columns.toArray().map((item, index) => (\n \n ))}\n \n \n \n {tasks.map((task, index) => (\n \n {columns.toArray().map((item, index) => {\n const { label, content, ...attrs } = item;\n\n return (\n \n );\n })}\n \n ))}\n \n
{item.label}
\n {content(task)}\n
\n\n \n \n );\n }\n\n operationIcon(operation: TaskOperations): Mithril.Children {\n return icon(\n {\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}\n","import duration from 'dayjs/plugin/duration';\n\nexport default function humanDuration(start: Date, end: Date) {\n dayjs.extend(duration);\n\n const durationTime = dayjs(end).diff(start);\n\n return dayjs.duration(durationTime).humanize();\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({ type: 'error' }, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`));\n app.modal.close();\n } else {\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","import app from 'flarum/admin/app';\n\n// @ts-ignore\nwindow.jumpToQueue = jumpToQueue;\n\nexport default function jumpToQueue(): void {\n app.modal.close();\n m.route.set(app.route('extension', { id: 'flarum-package-manager' }));\n app.packageManagerQueue.load();\n setTimeout(() => {\n document.getElementById('PackageManager-queueSection')?.scrollIntoView({ block: 'nearest' });\n }, 200);\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } 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';\n\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport { AsyncBackendResponse } from '../shims';\n\ninterface InstallerAttrs extends ComponentAttrs {}\n\nexport default class Installer extends Component {\n packageName!: Stream;\n isLoading: boolean = false;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

\n {app.translator.trans('flarum-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com,\n })}\n

\n
\n \n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n this.isLoading = true;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n errorHandler,\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', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }\n })\n .finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nimport errorHandler from '../utils/errorHandler';\n\ntype WhyNotResponse = {\n data: {\n reason: string;\n };\n};\n\nexport interface WhyNotModalAttrs extends IInternalModalAttrs {\n package: string;\n}\n\nexport default class WhyNotModal extends Modal {\n loading: boolean = true;\n whyNot: string | null = null;\n\n className() {\n return 'Modal--large WhyNotModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.why_not_modal.title');\n }\n\n oncreate(vnode: Mithril.VnodeDOM) {\n super.oncreate(vnode);\n\n this.requestWhyNot();\n }\n\n content() {\n return
{this.loading ? :
{this.whyNot}
}
;\n }\n\n requestWhyNot(): void {\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/why-not`,\n body: {\n data: {\n package: this.attrs.package,\n },\n },\n errorHandler,\n })\n .then((response) => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n });\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport icon from 'flarum/common/helpers/icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport { Extension } from 'flarum/admin/AdminApplication';\n\nimport { UpdatedPackage } from './Updater';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\n\nexport interface ExtensionItemAttrs extends ComponentAttrs {\n extension: Extension;\n updates: UpdatedPackage;\n onClickUpdate: CallableFunction;\n whyNotWarning?: boolean;\n isCore?: boolean;\n updatable?: boolean;\n isDanger?: boolean;\n}\n\nexport default class ExtensionItem extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n const { extension, updates, onClickUpdate, whyNotWarning, isCore, isDanger } = this.attrs;\n const latestVersion = updates['latest-minor'] ?? (updates['latest-major'] && !isCore ? updates['latest-major'] : null);\n\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {latestVersion ? (\n \n ) : null}\n
\n
\n
\n {onClickUpdate ? (\n \n \n \n ) : null}\n {whyNotWarning ? (\n \n app.modal.show(WhyNotModal, { package: extension.name })}\n aria-label={app.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')}\n />\n \n ) : null}\n
\n \n );\n }\n\n version(v: string): string {\n return 'v' + v.replace('v', '');\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } 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 RequestError from 'flarum/common/utils/RequestError';\n\nimport { UpdatedPackage, UpdateState } from './Updater';\nimport errorHandler from '../utils/errorHandler';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionItem from './ExtensionItem';\nimport { AsyncBackendResponse } from '../shims';\nimport jumpToQueue from '../utils/jumpToQueue';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n updateState: UpdateState;\n}\n\nexport default class MajorUpdater extends Component {\n isLoading: string | null = null;\n updateState!: UpdateState;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.updateState = this.attrs.updateState;\n }\n\n view(vnode: Mithril.Vnode): Mithril.Children {\n // @todo move Form-group--danger class to core for reuse\n return (\n
\n \"flarum\n \n

{app.translator.trans('flarum-package-manager.admin.major_updater.description')}

\n
\n \n \n \n \n
\n {this.updateState.incompatibleExtensions.length ? (\n
\n {this.updateState.incompatibleExtensions.map((extension: string) => (\n \n ))}\n
\n ) : null}\n {this.updateState.status === 'failure' ? (\n app.modal.show(WhyNotModal, { package: 'flarum/core' })}\n >\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.why')}\n ,\n ]}\n >\n

\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.desc')}\n

\n \n ) : null}\n
\n );\n }\n\n update(dryRun: boolean) {\n this.isLoading = `update-${dryRun ? 'dry-run' : 'run'}`;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`,\n body: {\n data: { dryRun },\n },\n errorHandler,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n }\n })\n .catch((e: RequestError) => {\n app.modal.close();\n this.updateState.status = 'failure';\n this.updateState.incompatibleExtensions = e.response?.errors?.pop()?.incompatible_extensions as string[];\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ExtensionItem from './ExtensionItem';\nimport extractText from 'flarum/common/utils/extractText';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport { AsyncBackendResponse } from '../shims';\nimport { Extension } from 'flarum/admin/AdminApplication';\n\nexport type UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n 'latest-minor': string | null;\n 'latest-major': string | null;\n 'latest-status': string;\n description: string;\n};\n\nexport type ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\nexport type LastUpdateCheck = {\n checkedAt: Date | null;\n updates: ComposerUpdates;\n};\n\ntype UpdateType = 'major' | 'minor' | 'global';\ntype UpdateStatus = 'success' | 'failure' | null;\nexport type UpdateState = {\n ranAt: Date | null;\n status: UpdateStatus;\n limitedPackages: string[];\n incompatibleExtensions: string[];\n};\n\nexport type LastUpdateRun = {\n [key in UpdateType]: UpdateState;\n} & {\n limitedPackages: () => string[];\n};\n\ninterface UpdaterAttrs extends ComponentAttrs {}\n\nexport default class Updater extends Component {\n isLoading: string | null = null;\n packageUpdates: Record = {};\n lastUpdateCheck: LastUpdateCheck = JSON.parse(app.data.settings['flarum-package-manager.last_update_check']) as LastUpdateCheck;\n get lastUpdateRun(): LastUpdateRun {\n const lastUpdateRun = JSON.parse(app.data.settings['flarum-package-manager.last_update_run']) as LastUpdateRun;\n\n lastUpdateRun.limitedPackages = () => [\n ...lastUpdateRun.major.limitedPackages,\n ...lastUpdateRun.minor.limitedPackages,\n ...lastUpdateRun.global.limitedPackages,\n ];\n\n return lastUpdateRun;\n }\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions = this.getExtensionUpdates();\n let coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate();\n let core: any;\n\n if (coreUpdate) {\n core = {\n id: 'flarum-core',\n name: 'flarum/core',\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`,\n },\n extra: {\n 'flarum-extension': {\n title: app.translator.trans('flarum-package-manager.admin.updater.flarum'),\n },\n },\n };\n }\n\n return [\n
\n \n

{app.translator.trans('flarum-package-manager.admin.updater.updater_help')}

\n {this.lastUpdateCheck?.checkedAt && (\n

\n \n {app.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')}\n \n {humanTime(this.lastUpdateCheck.checkedAt)}\n

\n )}\n
\n \n {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('flarum-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : extensions.length || core ? (\n
\n
\n {core ? (\n \n ) : null}\n {extensions.map((extension: Extension) => (\n \n ))}\n
\n
\n ) : null}\n
,\n coreUpdate && coreUpdate['latest-major'] ? : null,\n ];\n }\n\n getExtensionUpdates(): Extension[] {\n this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return (Object.values(app.data.extensions) as Extension[]).filter((extension: Extension) => this.packageUpdates[extension.id]);\n }\n\n getCoreUpdate(): UpdatedPackage | undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n })\n .then((response) => {\n if ((response as AsyncBackendResponse).processing) {\n jumpToQueue();\n } else {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\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.isLoading = 'minor-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n }\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n })\n .then((response) => {\n if (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 );\n window.location.reload();\n }\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.isLoading = 'global-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n }\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\n\nimport Installer from './Installer';\nimport Updater from './Updater';\n\nexport default class ControlSection extends Component {\n view() {\n return (\n
\n
\n
\n

{app.translator.trans('flarum-package-manager.admin.sections.control.title')}

\n
\n
\n
\n {app.data['flarum-package-manager.writable_dirs'] ? (\n <>\n \n \n \n ) : (\n
\n \n {app.translator.trans('flarum-package-manager.admin.file_permissions')}\n \n
\n )}\n
\n
\n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport ExtensionPage, { ExtensionPageAttrs } from 'flarum/admin/components/ExtensionPage';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nimport QueueSection from './QueueSection';\nimport ControlSection from './ControlSection';\n\nexport default class SettingsPage extends ExtensionPage {\n sections(vnode: Mithril.VnodeDOM): ItemList {\n // @todo add core feature to register sections\n const items = super.sections(vnode);\n\n if (app.data.settings['flarum-package-manager.queue_jobs']) {\n items.add('queue', , 5);\n }\n\n items.add('control', , 8);\n\n items.setPriority('content', 10);\n items.setPriority('permissions', 0);\n\n return items;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","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';\n\nexport type TaskOperations =\n | 'extension_install'\n | 'extension_remove'\n | 'extension_update'\n | 'update_global'\n | 'update_minor'\n | 'update_major'\n | 'update_check'\n | 'why_not';\n\nexport default class Task extends Model {\n status() {\n return Model.attribute<'pending' | 'running' | 'failure' | 'success'>('status').call(this);\n }\n\n operation() {\n return Model.attribute('operation').call(this);\n }\n\n command() {\n return Model.attribute('command').call(this);\n }\n\n package() {\n return Model.attribute('package').call(this);\n }\n\n output() {\n return Model.attribute('output').call(this);\n }\n\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n\n startedAt() {\n return Model.attribute('startedAt', Model.transformDate).call(this);\n }\n\n finishedAt() {\n return Model.attribute('finishedAt', Model.transformDate).call(this);\n }\n\n peakMemoryUsed() {\n return prettyBytes(Model.attribute('peakMemoryUsed').call(this) * 1024);\n }\n}\n","import app from 'flarum/admin/app';\nimport Task from '../models/Task';\nimport { ApiQueryParamsPlural } from 'flarum/common/Store';\n\nexport default class QueueState {\n private tasks: Task[] | null = null;\n private limit = 5;\n private offset = 0;\n private total = 0;\n\n load(params?: ApiQueryParamsPlural) {\n this.tasks = null;\n params = {\n page: {\n limit: this.limit,\n offset: this.offset,\n ...params?.page,\n },\n ...params,\n };\n\n return app.store.find('package-manager-tasks', params || {}).then((data) => {\n this.tasks = data;\n this.total = data.payload.meta?.total;\n\n m.redraw();\n\n return data;\n });\n }\n\n getItems() {\n return this.tasks;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.total / this.limit);\n }\n\n pageNumber(): number {\n return Math.ceil(this.offset / this.limit);\n }\n\n hasPrev(): boolean {\n return this.pageNumber() !== 0;\n }\n\n hasNext(): boolean {\n return this.offset + this.limit < this.total;\n }\n\n prev(): void {\n if (this.hasPrev()) {\n this.offset -= this.limit;\n this.load();\n }\n }\n\n next(): void {\n if (this.hasNext()) {\n this.offset += this.limit;\n this.load();\n }\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport SettingsPage from './components/SettingsPage';\n\nimport Task from './models/Task';\nimport jumpToQueue from './utils/jumpToQueue';\nimport QueueState from './states/QueueState';\nimport extractText from 'flarum/common/utils/extractText';\nimport { AsyncBackendResponse } from './shims';\n\napp.initializers.add('flarum-package-manager', (app) => {\n app.store.models['package-manager-tasks'] = Task;\n\n app.packageManagerQueue = new QueueState();\n\n app.extensionData\n .for('flarum-package-manager')\n .registerSetting({\n setting: 'flarum-package-manager.queue_jobs',\n label: app.translator.trans('flarum-package-manager.admin.settings.queue_jobs'),\n help: m.trust(\n extractText(\n 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: `${app.data.phpVersion}`,\n folder_perms_link: 'https://docs.flarum.org/install#folder-ownership',\n })\n )\n ),\n default: false,\n type: 'boolean',\n disabled: app.data['flarum-package-manager.using_sync_queue'],\n })\n .registerPage(SettingsPage);\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }\n })\n .finally(() => {\n app.modal.close();\n });\n }}\n >\n Remove\n \n );\n });\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","core","compat","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","create","constructor","_objectWithoutPropertiesLoose","source","excluded","target","sourceKeys","length","indexOf","Label","view","vnode","attrs","className","type","classList","children","Component","TaskOutputModal","title","app","task","operation","content","command","output","Modal","Pagination","class","disabled","list","hasPrev","onclick","prev","icon","current","pageNumber","total","getTotalPages","hasNext","next","QueueSection","oninit","id","queueTable","columns","items","ItemList","label","extractText","operationIcon","extension","style","name","extra","running","failure","pending","success","status","startedAt","text","dayjs","finishedAt","start","end","extend","durationTime","diff","humanDuration","peakMemoryUsed","tasks","toArray","item","index","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","error","response","errors","includes","code","guessed_cause","jumpToQueue","route","set","setTimeout","document","getElementById","scrollIntoView","block","window","Installer","packageName","isLoading","Stream","htmlFor","extiverse","href","placeholder","bidi","onsubmit","loading","data","package","LoadingModal","method","url","body","errorHandler","then","processing","extensionId","location","reload","redraw","_defineProperties","props","descriptor","configurable","writable","WhyNotModal","whyNot","oncreate","requestWhyNot","reason","ExtensionItem","updates","onClickUpdate","whyNotWarning","isCore","isDanger","latestVersion","version","v","MajorUpdater","updateState","alt","src","coreUpdate","update","incompatibleExtensions","dismissible","controls","dryRun","pop","incompatible_extensions","Updater","packageUpdates","lastUpdateCheck","JSON","parse","Constructor","protoProps","extensions","getExtensionUpdates","getCoreUpdate","backgroundImage","checkedAt","humanTime","checkForUpdates","updateGlobally","updateCoreMinor","lastUpdateRun","limitedPackages","updateExtension","major","installed","filter","composerPackage","safeToUpdate","values","confirm","minor","global","ControlSection","SettingsPage","sections","setPriority","ExtensionPage","_extends","assign","arguments","apply","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","options","result","Array","isArray","Task","Model","createdAt","isFinite","TypeError","UNITS","bits","binary","signed","localeOptions","isNegative","prefix","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","toPrecision","prettyBytes","QueueState","limit","offset","load","params","page","payload","meta","getItems","store","models","packageManagerQueue","extensionData","registerSetting","setting","translator","trans","help","trust","basic_impl_link","adv_impl_link","php_version","phpVersion","folder_perms_link","default","registerPage","isExtensionEnabled","modal","show","request","forum","attribute","alerts","close"],"sourceRoot":""} \ No newline at end of file