From 207032f6ff2ba89e9c1c3d6c73ee337bcc3b7767 Mon Sep 17 00:00:00 2001 From: Sami Mazouz Date: Wed, 10 Jan 2024 15:56:32 +0100 Subject: [PATCH] chore: rename `package-manager` to `extension-manager` --- ...l => flarum-extension-manager-backend.yml} | 2 +- composer.json | 6 +- extensions/package-manager/LICENSE.md | 2 +- extensions/package-manager/README.md | 8 +-- extensions/package-manager/composer.json | 14 ++--- extensions/package-manager/extend.php | 34 +++++------ .../states/ControlSectionState.d.ts | 1 + ...rState.d.ts => ExtensionManagerState.d.ts} | 2 +- .../js/dist-typings/states/QueueState.d.ts | 1 + extensions/package-manager/js/dist/admin.js | 2 +- .../package-manager/js/dist/admin.js.map | 2 +- extensions/package-manager/js/package.json | 2 +- .../src/admin/components/AuthMethodModal.tsx | 22 +++---- .../js/src/admin/components/ConfigureAuth.tsx | 14 ++--- .../admin/components/ConfigureComposer.tsx | 28 ++++----- .../js/src/admin/components/ConfigureJson.tsx | 2 +- .../src/admin/components/ControlSection.tsx | 8 +-- .../js/src/admin/components/ExtensionItem.tsx | 34 +++++------ .../js/src/admin/components/Installer.tsx | 14 ++--- .../js/src/admin/components/MajorUpdater.tsx | 45 ++++++++------ .../js/src/admin/components/Pagination.tsx | 4 +- .../js/src/admin/components/QueueSection.tsx | 60 +++++++++---------- .../src/admin/components/RepositoryModal.tsx | 16 ++--- .../js/src/admin/components/SettingsPage.tsx | 12 ++-- .../src/admin/components/TaskOutputModal.tsx | 12 ++-- .../js/src/admin/components/Updater.tsx | 50 ++++++++-------- .../js/src/admin/components/WhyNotModal.tsx | 4 +- .../package-manager/js/src/admin/index.tsx | 38 ++++++------ .../package-manager/js/src/admin/shims.d.ts | 4 +- .../src/admin/states/ControlSectionState.ts | 40 +++++++------ ...nagerState.ts => ExtensionManagerState.ts} | 2 +- .../js/src/admin/states/QueueState.ts | 12 ++-- .../js/src/admin/utils/errorHandler.ts | 10 ++-- .../js/src/admin/utils/jumpToQueue.ts | 6 +- extensions/package-manager/less/admin.less | 50 +++++++++++++++- .../less/admin/ControlSection.less | 18 +++--- .../less/admin/QueueSection.less | 4 +- extensions/package-manager/locale/en.yml | 8 +-- ...000_create_package_manager_tasks_table.php | 2 +- ..._column_to_package_manager_tasks_table.php | 22 +++++-- ..._10_000000_rename_to_extension_manager.php | 16 +++++ .../Controller/CheckForUpdatesController.php | 6 +- .../ConfigureComposerController.php | 8 ++- .../Api/Controller/GlobalUpdateController.php | 6 +- .../Api/Controller/ListTasksController.php | 8 +-- .../Api/Controller/MajorUpdateController.php | 6 +- .../Api/Controller/MinorUpdateController.php | 6 +- .../Controller/RemoveExtensionController.php | 6 +- .../Controller/RequireExtensionController.php | 6 +- .../Controller/UpdateExtensionController.php | 6 +- .../src/Api/Controller/WhyNotController.php | 6 +- .../src/Api/Serializer/TaskSerializer.php | 6 +- .../src/Command/AbstractActionCommand.php | 4 +- .../src/Command/CheckForUpdates.php | 4 +- .../src/Command/CheckForUpdatesHandler.php | 14 ++--- .../src/Command/GlobalUpdate.php | 4 +- .../src/Command/GlobalUpdateHandler.php | 8 +-- .../src/Command/MajorUpdate.php | 4 +- .../src/Command/MajorUpdateHandler.php | 14 ++--- .../src/Command/MinorUpdate.php | 4 +- .../src/Command/MinorUpdateHandler.php | 14 ++--- .../src/Command/RemoveExtension.php | 4 +- .../src/Command/RemoveExtensionHandler.php | 14 ++--- .../src/Command/RequireExtension.php | 4 +- .../src/Command/RequireExtensionHandler.php | 14 ++--- .../src/Command/UpdateExtension.php | 4 +- .../src/Command/UpdateExtensionHandler.php | 14 ++--- .../package-manager/src/Command/WhyNot.php | 4 +- .../src/Command/WhyNotHandler.php | 8 +-- .../src/Composer/ComposerAdapter.php | 8 +-- .../src/Composer/ComposerJson.php | 4 +- .../src/Composer/ComposerOutput.php | 2 +- .../src/ConfigureComposerValidator.php | 2 +- .../src/Event/FlarumUpdated.php | 2 +- .../ComposerCommandFailedException.php | 2 +- .../ComposerRequireFailedException.php | 2 +- .../ComposerUpdateFailedException.php | 2 +- .../src/Exception/ExceptionHandler.php | 2 +- .../ExtensionAlreadyInstalledException.php | 2 +- .../ExtensionNotInstalledException.php | 2 +- ...sionDependencyCannotBeRemovedException.php | 2 +- .../Exception/MajorUpdateFailedException.php | 6 +- .../Exception/NoNewMajorVersionException.php | 2 +- .../src/Extension/Event/Installed.php | 2 +- .../src/Extension/Event/Removed.php | 2 +- .../src/Extension/Event/Updated.php | 2 +- ...hp => ExtensionManagerServiceProvider.php} | 14 ++--- .../src/Job/ComposerCommandJob.php | 8 +-- .../package-manager/src/Job/Dispatcher.php | 10 ++-- .../src/Job/DispatcherResponse.php | 2 +- .../src/Listener/ClearCacheAfterUpdate.php | 4 +- .../src/Listener/ReCheckForUpdates.php | 12 ++-- .../package-manager/src/OutputLogger.php | 2 +- .../src/RequirePackageValidator.php | 2 +- .../src/Settings/JsonSetting.php | 2 +- .../src/Settings/LastUpdateCheck.php | 4 +- .../src/Settings/LastUpdateRun.php | 6 +- .../package-manager/src/Support/Util.php | 2 +- extensions/package-manager/src/Task/Task.php | 4 +- .../src/Task/TaskRepository.php | 2 +- .../src/UpdateExtensionValidator.php | 2 +- .../package-manager/src/WhyNotValidator.php | 2 +- .../integration/ChangeComposerConfig.php | 2 +- .../tests/integration/DummyExtensions.php | 2 +- .../integration/RefreshComposerSetup.php | 4 +- .../tests/integration/SetupComposer.php | 2 +- .../tests/integration/TestCase.php | 10 ++-- .../integration/api/CheckForUpdatesTest.php | 10 ++-- .../integration/api/GlobalUpdateTest.php | 8 +-- .../tests/integration/api/MajorUpdateTest.php | 20 +++---- .../tests/integration/api/MinorUpdateTest.php | 20 +++---- .../api/extensions/RemoveExtensionTest.php | 10 ++-- .../api/extensions/RequireExtensionTest.php | 16 ++--- .../api/extensions/UpdateExtensionTest.php | 10 ++-- .../tests/integration/setup.php | 2 +- 115 files changed, 586 insertions(+), 493 deletions(-) rename .github/workflows/{flarum-package-manager-backend.yml => flarum-extension-manager-backend.yml} (88%) rename extensions/package-manager/js/dist-typings/states/{PackageManagerState.d.ts => ExtensionManagerState.d.ts} (77%) rename extensions/package-manager/js/src/admin/states/{PackageManagerState.ts => ExtensionManagerState.ts} (82%) create mode 100644 extensions/package-manager/migrations/2024_01_10_000000_rename_to_extension_manager.php rename extensions/package-manager/src/{PackageManagerServiceProvider.php => ExtensionManagerServiceProvider.php} (90%) diff --git a/.github/workflows/flarum-package-manager-backend.yml b/.github/workflows/flarum-extension-manager-backend.yml similarity index 88% rename from .github/workflows/flarum-package-manager-backend.yml rename to .github/workflows/flarum-extension-manager-backend.yml index 77a12e945..26d0e66e6 100644 --- a/.github/workflows/flarum-package-manager-backend.yml +++ b/.github/workflows/flarum-extension-manager-backend.yml @@ -1,4 +1,4 @@ -name: Package Manager PHP +name: Extension Manager PHP on: [workflow_dispatch, push, pull_request] diff --git a/composer.json b/composer.json index 59644ffbd..b1bf55311 100644 --- a/composer.json +++ b/composer.json @@ -46,7 +46,7 @@ "Flarum\\Lock\\": "extensions/lock/src", "Flarum\\Mentions\\": "extensions/mentions/src", "Flarum\\Nicknames\\": "extensions/nicknames/src", - "Flarum\\PackageManager\\": "extensions/package-manager/src", + "Flarum\\ExtensionManager\\": "extensions/extension-manager/src", "Flarum\\Pusher\\": "extensions/pusher/src", "Flarum\\Statistics\\": "extensions/statistics/src", "Flarum\\Sticky\\": "extensions/sticky/src", @@ -74,7 +74,7 @@ "flarum/markdown": "self.version", "flarum/mentions": "self.version", "flarum/nicknames": "self.version", - "flarum/package-manager": "self.version", + "flarum/extension-manager": "self.version", "flarum/pusher": "self.version", "flarum/statistics": "self.version", "flarum/sticky": "self.version", @@ -165,7 +165,7 @@ "extensions/markdown", "extensions/mentions", "extensions/nicknames", - "extensions/package-manager", + "extensions/extension-manager", "extensions/pusher", "extensions/statistics", "extensions/sticky", diff --git a/extensions/package-manager/LICENSE.md b/extensions/package-manager/LICENSE.md index 71a61da57..73986f18a 100755 --- a/extensions/package-manager/LICENSE.md +++ b/extensions/package-manager/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) Sami Mazouz +Copyright (c) 2024 Stichting Flarum (Flarum Foundation) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/extensions/package-manager/README.md b/extensions/package-manager/README.md index 9716bc082..46f1bd020 100755 --- a/extensions/package-manager/README.md +++ b/extensions/package-manager/README.md @@ -1,6 +1,6 @@ -# Package Manager +# Extension Manager -The package manager is a tool that allows you to easily install and manage extensions. It runs [composer](https://getcomposer.org/) under the hood. +The extension manager is a tool that allows you to easily install and manage extensions. It runs [composer](https://getcomposer.org/) under the hood. ## Security @@ -10,9 +10,9 @@ This extension is optional and can be removed for those who prefer to manually m ## Troubleshooting -If you have many extensions installed, you may run into memory issues when using the package manager. If this happens, you can use an asynchronous queue that will run the package manager in the background. +If you have many extensions installed, you may run into memory issues when using the extension manager. If this happens, you can use an asynchronous queue that will run the extension manager in the background. * Simple database queue guide: https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting * (Advanced) Redis queue: https://discuss.flarum.org/d/21873-redis-sessions-cache-queues -You can find detailed logs on the package manager operations in the `storage/logs/composer` directory. Please include the latest log file when reporting issues in the [Flarum support forum](https://discuss.flarum.org/t/support). +You can find detailed logs on the extension manager operations in the `storage/logs/composer` directory. Please include the latest log file when reporting issues in the [Flarum support forum](https://discuss.flarum.org/t/support). diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json index b8e390a3b..4abb1a5c5 100755 --- a/extensions/package-manager/composer.json +++ b/extensions/package-manager/composer.json @@ -1,6 +1,6 @@ { - "name": "flarum/package-manager", - "description": "A Flarum Package Manager.", + "name": "flarum/extension-manager", + "description": "An extension manager to install, update and remove extension packages from the interface (Wrapper around composer).", "keywords": [ "extensions", "composer", @@ -18,8 +18,8 @@ } ], "support": { - "issues": "https://github.com/flarum/package-manager/issues", - "source": "https://github.com/flarum/package-manager" + "issues": "https://github.com/flarum/framework/issues", + "source": "https://github.com/flarum/extension-manager" }, "require": { "flarum/core": "^1.8", @@ -31,7 +31,7 @@ }, "extra": { "flarum-extension": { - "title": "Package Manager", + "title": "Extension Manager", "icon": { "name": "fas fa-box-open", "backgroundColor": "#117187", @@ -69,12 +69,12 @@ }, "autoload": { "psr-4": { - "Flarum\\PackageManager\\": "src/" + "Flarum\\ExtensionManager\\": "src/" } }, "autoload-dev": { "psr-4": { - "Flarum\\PackageManager\\Tests\\": "tests/" + "Flarum\\ExtensionManager\\Tests\\": "tests/" } }, "scripts": { diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index e702889df..85a491f66 100755 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -7,7 +7,7 @@ * LICENSE file that was distributed with this source code. */ -namespace Flarum\PackageManager; +namespace Flarum\ExtensionManager; use Flarum\Extend; use Flarum\Foundation\Paths; @@ -17,16 +17,16 @@ use Illuminate\Queue\SyncQueue; return [ (new Extend\Routes('api')) - ->post('/package-manager/extensions', 'package-manager.extensions.require', Api\Controller\RequireExtensionController::class) - ->patch('/package-manager/extensions/{id}', 'package-manager.extensions.update', Api\Controller\UpdateExtensionController::class) - ->delete('/package-manager/extensions/{id}', 'package-manager.extensions.remove', Api\Controller\RemoveExtensionController::class) - ->post('/package-manager/check-for-updates', 'package-manager.check-for-updates', Api\Controller\CheckForUpdatesController::class) - ->post('/package-manager/why-not', 'package-manager.why-not', Api\Controller\WhyNotController::class) - ->post('/package-manager/minor-update', 'package-manager.minor-update', Api\Controller\MinorUpdateController::class) - ->post('/package-manager/major-update', 'package-manager.major-update', Api\Controller\MajorUpdateController::class) - ->post('/package-manager/global-update', 'package-manager.global-update', Api\Controller\GlobalUpdateController::class) - ->get('/package-manager-tasks', 'package-manager.tasks.index', Api\Controller\ListTasksController::class) - ->post('/package-manager/composer', 'package-manager.composer', Api\Controller\ConfigureComposerController::class), + ->post('/extension-manager/extensions', 'extension-manager.extensions.require', Api\Controller\RequireExtensionController::class) + ->patch('/extension-manager/extensions/{id}', 'extension-manager.extensions.update', Api\Controller\UpdateExtensionController::class) + ->delete('/extension-manager/extensions/{id}', 'extension-manager.extensions.remove', Api\Controller\RemoveExtensionController::class) + ->post('/extension-manager/check-for-updates', 'extension-manager.check-for-updates', Api\Controller\CheckForUpdatesController::class) + ->post('/extension-manager/why-not', 'extension-manager.why-not', Api\Controller\WhyNotController::class) + ->post('/extension-manager/minor-update', 'extension-manager.minor-update', Api\Controller\MinorUpdateController::class) + ->post('/extension-manager/major-update', 'extension-manager.major-update', Api\Controller\MajorUpdateController::class) + ->post('/extension-manager/global-update', 'extension-manager.global-update', Api\Controller\GlobalUpdateController::class) + ->get('/extension-manager-tasks', 'extension-manager.tasks.index', Api\Controller\ListTasksController::class) + ->post('/extension-manager/composer', 'extension-manager.composer', Api\Controller\ConfigureComposerController::class), (new Extend\Frontend('admin')) ->css(__DIR__.'/less/admin.less') @@ -34,13 +34,13 @@ return [ ->content(function (Document $document) { $paths = resolve(Paths::class); - $document->payload['flarum-package-manager.writable_dirs'] = is_writable($paths->vendor) + $document->payload['flarum-extension-manager.writable_dirs'] = is_writable($paths->vendor) && is_writable($paths->storage) && (! file_exists($paths->storage.'/.composer') || is_writable($paths->storage.'/.composer')) && is_writable($paths->base.'/composer.json') && is_writable($paths->base.'/composer.lock'); - $document->payload['flarum-package-manager.using_sync_queue'] = resolve(Queue::class) instanceof SyncQueue; + $document->payload['flarum-extension-manager.using_sync_queue'] = resolve(Queue::class) instanceof SyncQueue; }), new Extend\Locales(__DIR__.'/locale'), @@ -48,12 +48,12 @@ return [ (new Extend\Settings()) ->default(Settings\LastUpdateCheck::key(), json_encode(Settings\LastUpdateCheck::default())) ->default(Settings\LastUpdateRun::key(), json_encode(Settings\LastUpdateRun::default())) - ->default('flarum-package-manager.queue_jobs', false) - ->default('flarum-package-manager.minimum_stability', 'stable') - ->default('flarum-package-manager.task_retention_days', 7), + ->default('flarum-extension-manager.queue_jobs', '0') + ->default('flarum-extension-manager.minimum_stability', 'stable') + ->default('flarum-extension-manager.task_retention_days', 7), (new Extend\ServiceProvider) - ->register(PackageManagerServiceProvider::class), + ->register(ExtensionManagerServiceProvider::class), (new Extend\ErrorHandling) ->handler(Exception\ComposerCommandFailedException::class, Exception\ExceptionHandler::class) diff --git a/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts b/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts index b8e23b4f0..69abf8f92 100644 --- a/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts +++ b/extensions/package-manager/js/dist-typings/states/ControlSectionState.d.ts @@ -47,6 +47,7 @@ export default class ControlSectionState { get lastUpdateRun(): LastUpdateRun; constructor(); isLoading(name?: LoadingTypes): boolean; + hasOperationRunning(): boolean; setLoading(name: LoadingTypes): void; requirePackage(data: any): void; checkForUpdates(): void; diff --git a/extensions/package-manager/js/dist-typings/states/PackageManagerState.d.ts b/extensions/package-manager/js/dist-typings/states/ExtensionManagerState.d.ts similarity index 77% rename from extensions/package-manager/js/dist-typings/states/PackageManagerState.d.ts rename to extensions/package-manager/js/dist-typings/states/ExtensionManagerState.d.ts index bdd0a59be..e97eabb0f 100644 --- a/extensions/package-manager/js/dist-typings/states/PackageManagerState.d.ts +++ b/extensions/package-manager/js/dist-typings/states/ExtensionManagerState.d.ts @@ -1,6 +1,6 @@ import QueueState from './QueueState'; import ControlSectionState from './ControlSectionState'; -export default class PackageManagerState { +export default class ExtensionManagerState { queue: QueueState; control: ControlSectionState; } diff --git a/extensions/package-manager/js/dist-typings/states/QueueState.d.ts b/extensions/package-manager/js/dist-typings/states/QueueState.d.ts index 32940331a..a09278ab1 100644 --- a/extensions/package-manager/js/dist-typings/states/QueueState.d.ts +++ b/extensions/package-manager/js/dist-typings/states/QueueState.d.ts @@ -15,4 +15,5 @@ export default class QueueState { prev(): void; next(): void; pollQueue(actionTaken?: boolean): void; + hasPending(): boolean; } diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 9c3516098..ed43a5cc3 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -1,2 +1,2 @@ -(()=>{var a={3:function(a){a.exports=function(){"use strict";var a,t,e=1e3,n=6e4,r=36e5,s=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,i=31536e6,l=2592e6,c=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,u={years:i,months:l,days:s,hours:r,minutes:n,seconds:e,milliseconds:1,weeks:6048e5},m=function(a){return a instanceof b},d=function(a,t,e){return new b(a,e,t.$l)},p=function(a){return t.p(a)+"s"},g=function(a){return a<0},f=function(a){return g(a)?Math.ceil(a):Math.floor(a)},h=function(a){return Math.abs(a)},k=function(a,t){return a?g(a)?{negative:!0,format:""+h(a)+t}:{negative:!1,format:""+a+t}:{negative:!1,format:""}},b=function(){function g(a,t,e){var n=this;if(this.$d={},this.$l=e,void 0===a&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(a*u[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(c);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=g.prototype;return h.calMilliseconds=function(){var a=this;this.$ms=Object.keys(this.$d).reduce((function(t,e){return t+(a.$d[e]||0)*u[e]}),0)},h.parseFromMilliseconds=function(){var a=this.$ms;this.$d.years=f(a/i),a%=i,this.$d.months=f(a/l),a%=l,this.$d.days=f(a/s),a%=s,this.$d.hours=f(a/r),a%=r,this.$d.minutes=f(a/n),a%=n,this.$d.seconds=f(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"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var i=k(o,"S"),l=a.negative||t.negative||n.negative||r.negative||s.negative||i.negative,c=r.format||s.format||i.format?"T":"",u=(l?"-":"")+"P"+a.format+t.format+n.format+c+r.format+s.format+i.format;return"P"===u||"-P"===u?"P0D":u},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(o,(function(a,t){return t||String(n[a])}))},h.as=function(a){return this.$ms/u[p(a)]},h.get=function(a){var t=this.$ms,e=p(a);return"milliseconds"===e?t%=1e3:t="weeks"===e?f(t/u[e]):this.$d[e],0===t?0:t},h.add=function(a,t,e){var n;return n=t?a*u[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")},g}();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,o=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()),o.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 o=e.n(s);const i=flarum.core.compat["common/components/Button"];var l=e.n(i);const c=flarum.core.compat["admin/components/LoadingModal"];var u=e.n(c);const d=flarum.core.compat["admin/utils/isExtensionEnabled"];var p=e.n(d);function g(a,t){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,t){return a.__proto__=t,a},g(a,t)}function f(a,t){a.prototype=Object.create(t.prototype),a.prototype.constructor=a,g(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 b=e.n(k);const v=flarum.core.compat["common/components/LoadingIndicator"];var y=e.n(v);const _=flarum.core.compat["common/components/Tooltip"];var N=e.n(_);const x=flarum.core.compat["common/helpers/icon"];var M=e.n(x);const w=flarum.core.compat["common/utils/ItemList"];var P=e.n(w);const U=flarum.core.compat["common/utils/extractText"];var B=e.n(U);const S=flarum.core.compat["common/components/Link"];var j=e.n(S);const q=flarum.core.compat["common/utils/classList"];var $=e.n(q),T=["className","type"],C=function(a){function t(){return a.apply(this,arguments)||this}return f(t,a),t.prototype.view=function(a){var t=this.attrs,e=t.className,n=(t.type,h(t,T));return m("span",Object.assign({className:$()(["Label","Label--"+this.attrs.type,e])},n),a.children)},t}(b());const O=flarum.core.compat["common/components/Modal"];var F=e.n(O),L=function(a){function t(){return a.apply(this,arguments)||this}f(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"},"failure"===this.attrs.task.status()&&m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-package-manager.admin.sections.queue.output_modal.guessed_cause")),m("div",{className:"FormControl TaskOutputModal-data-guessed-cause"},this.attrs.task.guessedCause()&&r().translator.trans("flarum-package-manager.admin.exceptions.guessed_cause."+this.attrs.task.guessedCause())||r().translator.trans("flarum-package-manager.admin.sections.queue.output_modal.cause_unknown"))),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}(F()),A=e(3),E=e.n(A),D=function(a){function t(){return a.apply(this,arguments)||this}return f(t,a),t.prototype.view=function(){var a=this;return m("nav",{className:"Pagination UserListPage-gridPagination"},m(l(),{disabled:!this.attrs.list.hasPrev()||r().packageManager.control.isLoading(),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",{className:"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()||r().packageManager.control.isLoading(),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}(b()),Y=["label","content"],I=function(a){function t(){return a.apply(this,arguments)||this}f(t,a);var e=t.prototype;return e.oninit=function(t){a.prototype.oninit.call(this,t),r().packageManager.queue.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().packageManager.queue.load()},"aria-label":r().translator.trans("flarum-package-manager.admin.sections.queue.refresh"),disabled:r().packageManager.control.isLoading()}))),m("div",{className:"container"},this.queueTable()))},e.columns=function(){var a=this,t=new(P());return t.add("operation",{label:B()(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:B()(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(j(),{className:"PackageManager-queueTable-package",href:r().route("extension",{id:e.id})},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:B()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.status")),content:function(a){return m("[",null,m(C,{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())),["pending","running"].includes(a.status())&&m(y(),{size:"small",display:"inline"}))}},70),t.add("elapsedTime",{label:B()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.elapsed_time")),content:function(a){return a.startedAt()&&a.finishedAt()?m(N(),{text:dayjs(a.startedAt()).format("LL LTS")+" "+dayjs(a.finishedAt()).format("LL LTS")},m("span",null,function(a,t){dayjs.extend(E());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:B()(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:B()(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(L,{task:a})},disabled:["pending","running"].includes(a.status())})},className:"Table-controls"},55),t},e.queueTable=function(){var a=r().packageManager.queue.getItems();if(!a)return m(y(),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,Y);return m("td",Object.assign({key:e},r),n(a))})))})))),m(D,{list:r().packageManager.queue}))},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}(b());const G=flarum.core.compat["common/components/Alert"];var H=e.n(G);const W=flarum.core.compat["common/utils/Stream"];var R=e.n(W),V=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"}))),type:"boolean",disabled:t.data["flarum-package-manager.using_sync_queue"]}).registerSetting({setting:"flarum-package-manager.task_retention_days",label:t.translator.trans("flarum-package-manager.admin.settings.task_retention_days"),help:t.translator.trans("flarum-package-manager.admin.settings.task_retention_days_help"),type:"number"}).registerPage(ha),(0,a.extend)(o().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(u()),t.request({url:t.forum.attribute("apiUrl")+"/package-manager/extensions/"+e.extension.id,method:"DELETE"}).then((function(a){null!=a&&a.processing?wa():(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()}))}},t.translator.trans("flarum-package-manager.admin.extensions.remove")))}))}))})(),module.exports=n})(); +(()=>{var t={3:function(t){t.exports=function(){"use strict";var t,n,e=1e3,a=6e4,s=36e5,r=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,i=31536e6,l=2592e6,u=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,m={years:i,months:l,days:r,hours:s,minutes:a,seconds:e,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof b},d=function(t,n,e){return new b(t,e,n.$l)},p=function(t){return n.p(t)+"s"},f=function(t){return t<0},h=function(t){return f(t)?Math.ceil(t):Math.floor(t)},g=function(t){return Math.abs(t)},x=function(t,n){return t?f(t)?{negative:!0,format:""+g(t)+n}:{negative:!1,format:""+t+n}:{negative:!1,format:""}},b=function(){function f(t,n,e){var a=this;if(this.$d={},this.$l=e,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),n)return d(t*m[p(n)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach((function(n){a.$d[p(n)]=t[n]})),this.calMilliseconds(),this;if("string"==typeof t){var s=t.match(u);if(s){var r=s.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var g=f.prototype;return g.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(n,e){return n+(t.$d[e]||0)*m[e]}),0)},g.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=h(t/i),t%=i,this.$d.months=h(t/l),t%=l,this.$d.days=h(t/r),t%=r,this.$d.hours=h(t/s),t%=s,this.$d.minutes=h(t/a),t%=a,this.$d.seconds=h(t/e),t%=e,this.$d.milliseconds=t},g.toISOString=function(){var t=x(this.$d.years,"Y"),n=x(this.$d.months,"M"),e=+this.$d.days||0;this.$d.weeks&&(e+=7*this.$d.weeks);var a=x(e,"D"),s=x(this.$d.hours,"H"),r=x(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var i=x(o,"S"),l=t.negative||n.negative||a.negative||s.negative||r.negative||i.negative,u=s.format||r.format||i.format?"T":"",m=(l?"-":"")+"P"+t.format+n.format+a.format+u+s.format+r.format+i.format;return"P"===m||"-P"===m?"P0D":m},g.toJSON=function(){return this.toISOString()},g.format=function(t){var e=t||"YYYY-MM-DDTHH:mm:ss",a={Y:this.$d.years,YY:n.s(this.$d.years,2,"0"),YYYY:n.s(this.$d.years,4,"0"),M:this.$d.months,MM:n.s(this.$d.months,2,"0"),D:this.$d.days,DD:n.s(this.$d.days,2,"0"),H:this.$d.hours,HH:n.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:n.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:n.s(this.$d.seconds,2,"0"),SSS:n.s(this.$d.milliseconds,3,"0")};return e.replace(o,(function(t,n){return n||String(a[t])}))},g.as=function(t){return this.$ms/m[p(t)]},g.get=function(t){var n=this.$ms,e=p(t);return"milliseconds"===e?n%=1e3:n="weeks"===e?h(n/m[e]):this.$d[e],0===n?0:n},g.add=function(t,n,e){var a;return a=n?t*m[p(n)]:c(t)?t.$ms:d(t,this).$ms,d(this.$ms+a*(e?-1:1),this)},g.subtract=function(t,n){return this.add(t,n,!0)},g.locale=function(t){var n=this.clone();return n.$l=t,n},g.clone=function(){return d(this.$ms,this)},g.humanize=function(n){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!n)},g.milliseconds=function(){return this.get("milliseconds")},g.asMilliseconds=function(){return this.as("milliseconds")},g.seconds=function(){return this.get("seconds")},g.asSeconds=function(){return this.as("seconds")},g.minutes=function(){return this.get("minutes")},g.asMinutes=function(){return this.as("minutes")},g.hours=function(){return this.get("hours")},g.asHours=function(){return this.as("hours")},g.days=function(){return this.get("days")},g.asDays=function(){return this.as("days")},g.weeks=function(){return this.get("weeks")},g.asWeeks=function(){return this.as("weeks")},g.months=function(){return this.get("months")},g.asMonths=function(){return this.as("months")},g.years=function(){return this.get("years")},g.asYears=function(){return this.as("years")},f}();return function(e,a,s){t=s,n=s().$utils(),s.duration=function(t,n){var e=s.locale();return d(t,{$l:e},n)},s.isDuration=c;var r=a.prototype.add,o=a.prototype.subtract;a.prototype.add=function(t,n){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,n)},a.prototype.subtract=function(t,n){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,n)}}}()}},n={};function e(a){var s=n[a];if(void 0!==s)return s.exports;var r=n[a]={exports:{}};return t[a].call(r.exports,r,r.exports,e),r.exports}e.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},e.d=(t,n)=>{for(var a in n)e.o(n,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:n[a]})},e.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),e.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};(()=>{"use strict";e.r(a);const t=flarum.core.compat["common/extend"],n=flarum.core.compat["admin/app"];var s=e.n(n);const r=flarum.core.compat["admin/components/ExtensionPage"];var o=e.n(r);const i=flarum.core.compat["common/components/Button"];var l=e.n(i);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(t,n){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},f(t,n)}function h(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,f(t,n)}function g(t,n){if(null==t)return{};var e,a,s={},r=Object.keys(t);for(a=0;a=0||(s[e]=t[e]);return s}const x=flarum.core.compat["common/Component"];var b=e.n(x);const v=flarum.core.compat["common/components/LoadingIndicator"];var y=e.n(v);const _=flarum.core.compat["common/components/Tooltip"];var k=e.n(_);const N=flarum.core.compat["common/helpers/icon"];var M=e.n(N);const w=flarum.core.compat["common/utils/ItemList"];var E=e.n(w);const U=flarum.core.compat["common/utils/extractText"];var B=e.n(U);const S=flarum.core.compat["common/components/Link"];var q=e.n(S);const j=flarum.core.compat["common/utils/classList"];var $=e.n(j),P=["className","type"],T=function(t){function n(){return t.apply(this,arguments)||this}return h(n,t),n.prototype.view=function(t){var n=this.attrs,e=n.className,a=(n.type,g(n,P));return m("span",Object.assign({className:$()(["Label","Label--"+this.attrs.type,e])},a),t.children)},n}(b());const C=flarum.core.compat["common/components/Modal"];var O=e.n(C),F=function(t){function n(){return t.apply(this,arguments)||this}h(n,t);var e=n.prototype;return e.className=function(){return"Modal--large QuickModal"},e.title=function(){return s().translator.trans("flarum-extension-manager.admin.sections.queue.operations."+this.attrs.task.operation())},e.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"TaskOutputModal-data"},"failure"===this.attrs.task.status()&&m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.guessed_cause")),m("div",{className:"FormControl TaskOutputModal-data-guessed-cause"},this.attrs.task.guessedCause()&&s().translator.trans("flarum-extension-manager.admin.exceptions.guessed_cause."+this.attrs.task.guessedCause())||s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.cause_unknown"))),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.command")),m("div",{className:"FormControl TaskOutputModal-data-command"},m("code",null,"$ composer ",this.attrs.task.command()))),m("div",{className:"Form-group"},m("label",null,s().translator.trans("flarum-extension-manager.admin.sections.queue.output_modal.output")),m("div",{className:"FormControl TaskOutputModal-data-output"},m("code",null,m("pre",null,this.attrs.task.output()))))))},n}(O()),A=e(3),L=e.n(A),D=function(t){function n(){return t.apply(this,arguments)||this}return h(n,t),n.prototype.view=function(){var t=this;return m("nav",{className:"Pagination UserListPage-gridPagination"},m(l(),{disabled:!this.attrs.list.hasPrev()||s().extensionManager.control.isLoading(),title:s().translator.trans("core.admin.users.pagination.back_button"),onclick:function(){return t.attrs.list.prev()},icon:"fas fa-chevron-left",className:"Button Button--icon UserListPage-backBtn"}),m("span",{className:"UserListPage-pageNumber"},s().translator.trans("core.admin.users.pagination.page_counter",{current:this.attrs.list.pageNumber()+1,total:this.attrs.list.getTotalPages()})),m(l(),{disabled:!this.attrs.list.hasNext()||s().extensionManager.control.isLoading(),title:s().translator.trans("core.admin.users.pagination.next_button"),onclick:function(){return t.attrs.list.next()},icon:"fas fa-chevron-right",className:"Button Button--icon UserListPage-nextBtn"}))},n}(b()),Y=["label","content"],I=function(t){function n(){return t.apply(this,arguments)||this}h(n,t);var e=n.prototype;return e.oninit=function(n){t.prototype.oninit.call(this,n),s().extensionManager.queue.load()},e.view=function(){return m("section",{id:"ExtensionManager-queueSection",className:"ExtensionPage-permissions ExtensionManager-queueSection"},m("div",{className:"ExtensionPage-permissions-header ExtensionManager-queueSection-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},s().translator.trans("flarum-extension-manager.admin.sections.queue.title")),m(l(),{className:"Button Button--icon",icon:"fas fa-sync-alt",onclick:function(){return s().extensionManager.queue.load()},"aria-label":s().translator.trans("flarum-extension-manager.admin.sections.queue.refresh"),disabled:s().extensionManager.control.isLoading()}))),m("div",{className:"container"},this.queueTable()))},e.columns=function(){var t=this,n=new(E());return n.add("operation",{label:B()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.operation")),content:function(n){return m("div",{className:"ExtensionManager-queueTable-operation"},m("span",{className:"ExtensionManager-queueTable-operation-icon"},t.operationIcon(n.operation())),m("span",{className:"ExtensionManager-queueTable-operation-name"},s().translator.trans("flarum-extension-manager.admin.sections.queue.operations."+n.operation())))}},80),n.add("package",{label:B()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.package")),content:function(t){var n,e=s().data.extensions[null==(n=t.package())?void 0:n.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return e?m(q(),{className:"ExtensionManager-queueTable-package",href:s().route("extension",{id:e.id})},m("div",{className:"ExtensionManager-queueTable-package-icon ExtensionIcon",style:e.icon},!!e.icon&&M()(e.icon.name)),m("div",{className:"ExtensionManager-queueTable-package-details"},m("span",{className:"ExtensionManager-queueTable-package-title"},e.extra["flarum-extension"].title),m("span",{className:"ExtensionManager-queueTable-package-name"},t.package()))):t.package()}},75),n.add("status",{label:B()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.status")),content:function(t){return m("[",null,m(T,{className:"ExtensionManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[t.status()]},s().translator.trans("flarum-extension-manager.admin.sections.queue.statuses."+t.status())),["pending","running"].includes(t.status())&&m(y(),{size:"small",display:"inline"}))}},70),n.add("elapsedTime",{label:B()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.elapsed_time")),content:function(t){return t.startedAt()&&t.finishedAt()?m(k(),{text:dayjs(t.startedAt()).format("LL LTS")+" "+dayjs(t.finishedAt()).format("LL LTS")},m("span",null,function(t,n){dayjs.extend(L());var e=dayjs(n).diff(t);return dayjs.duration(e).humanize()}(t.startedAt(),t.finishedAt()))):s().translator.trans("flarum-extension-manager.admin.sections.queue.task_just_started")}},65),n.add("memoryUsed",{label:B()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.peak_memory_used")),content:function(t){return m("span",null,t.peakMemoryUsed())}},60),n.add("details",{label:B()(s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.details")),content:function(t){return m(l(),{className:"Button Button--icon Table-controls-item",icon:"fas fa-file-alt","aria-label":s().translator.trans("flarum-extension-manager.admin.sections.queue.columns.details"),onclick:function(){return s().modal.show(F,{task:t})},disabled:["pending","running"].includes(t.status())})},className:"Table-controls"},55),n},e.queueTable=function(){var t=s().extensionManager.queue.getItems();if(!t)return m(y(),null);if(t&&!t.length)return m("h3",{className:"ExtensionPage-subHeader"},s().translator.trans("flarum-extension-manager.admin.sections.queue.none"));var n=this.columns();return m("[",null,m("table",{className:"Table ExtensionManager-queueTable"},m("thead",null,m("tr",null,n.toArray().map((function(t,n){return m("th",{key:n},t.label)})))),m("tbody",null,t.map((function(t,e){return m("tr",{key:e},n.toArray().map((function(n,e){n.label;var a=n.content,s=g(n,Y);return m("td",Object.assign({key:e},s),a(t))})))})))),m(D,{list:s().extensionManager.queue}))},e.operationIcon=function(t){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"}[t])},n}(b());const R=flarum.core.compat["common/components/Alert"];var G=e.n(R);const H=flarum.core.compat["common/utils/Stream"];var W=e.n(H),V=function(t){function n(){for(var n,e=arguments.length,a=new Array(e),s=0;s"+n.data.phpVersion+"",folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),type:"boolean",disabled:n.data["flarum-extension-manager.using_sync_queue"]}).registerSetting({setting:"flarum-extension-manager.task_retention_days",label:n.translator.trans("flarum-extension-manager.admin.settings.task_retention_days"),help:n.translator.trans("flarum-extension-manager.admin.settings.task_retention_days_help"),type:"number"}).registerPage(gt),(0,t.extend)(o().prototype,"topItems",(function(t){var e=this;"flarum-extension-manager"===this.extension.id||p()(this.extension.id)||t.add("remove",m(l(),{className:"Button Button--danger",icon:"fas fa-times",onclick:function(){n.modal.show(c()),n.request({url:n.forum.attribute("apiUrl")+"/extension-manager/extensions/"+e.extension.id,method:"DELETE"}).then((function(t){null!=t&&t.processing?wt():(n.alerts.show({type:"success"},n.translator.trans("flarum-extension-manager.admin.extensions.successful_remove")),window.location=n.forum.attribute("adminUrl"))})).finally((function(){n.modal.close()}))}},n.translator.trans("flarum-extension-manager.admin.extensions.remove")))}))}))})(),module.exports=a})(); //# 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 e6ec422ac..b8041ebb8 100755 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@flarum/package-manager/../../../node_modules/dayjs/plugin/duration.js","webpack://@flarum/package-manager/webpack/bootstrap","webpack://@flarum/package-manager/webpack/runtime/compat get default export","webpack://@flarum/package-manager/webpack/runtime/define property getters","webpack://@flarum/package-manager/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/package-manager/webpack/runtime/make namespace object","webpack://@flarum/package-manager/external root \"flarum.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/components/Link']\"","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/components/Installer.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/package-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Dropdown']\"","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/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/AdminPage']\"","webpack://@flarum/package-manager/./src/admin/components/ConfigureJson.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Select']\"","webpack://@flarum/package-manager/./src/admin/components/RepositoryModal.tsx","webpack://@flarum/package-manager/./src/admin/components/ConfigureComposer.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@flarum/package-manager/./src/admin/components/AuthMethodModal.tsx","webpack://@flarum/package-manager/./src/admin/components/ConfigureAuth.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/pretty-bytes/index.js","webpack://@flarum/package-manager/./src/admin/models/Task.ts","webpack://@flarum/package-manager/./src/admin/utils/jumpToQueue.ts","webpack://@flarum/package-manager/./src/admin/states/QueueState.ts","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/package-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/package-manager/./src/admin/states/PackageManagerState.ts","webpack://@flarum/package-manager/./src/admin/index.tsx"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.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 ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\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 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 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/components/Link'];","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 {this.attrs.task.status() === 'failure' && (\n
\n \n
\n {(this.attrs.task.guessedCause() &&\n app.translator.trans('flarum-package-manager.admin.exceptions.guessed_cause.' + this.attrs.task.guessedCause())) ||\n app.translator.trans('flarum-package-manager.admin.sections.queue.output_modal.cause_unknown')}\n
\n
\n )}\n\n
\n \n
\n $ composer {this.attrs.task.command()}\n
\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';\nimport Link from 'flarum/common/components/Link';\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.packageManager.queue.load();\n }\n\n view() {\n return (\n
\n
\n
\n

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

\n app.packageManager.queue.load()}\n aria-label={app.translator.trans('flarum-package-manager.admin.sections.queue.refresh')}\n disabled={app.packageManager.control.isLoading()}\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 \n {app.translator.trans(`flarum-package-manager.admin.sections.queue.statuses.${task.status()}`)}\n \n {['pending', 'running'].includes(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() || !task.finishedAt() ? (\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 disabled={['pending', 'running'].includes(task.status())}\n />\n ),\n className: 'Table-controls',\n },\n 55\n );\n\n return items;\n }\n\n queueTable() {\n const tasks = app.packageManager.queue.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 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';\n\nexport interface InstallerAttrs extends ComponentAttrs {}\n\nexport type InstallerLoadingTypes = 'extension-install' | null;\n\nexport default class Installer extends Component {\n packageName!: Stream;\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 semantic_link: ,\n code: ,\n })}\n

\n
\n \n \n {app.translator.trans('flarum-package-manager.admin.extensions.proceed')}\n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n app.packageManager.control.requirePackage(this.data());\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n app.packageManager.control.setLoading(null);\n\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 app.alerts.clear();\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 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 })\n .then((response) => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n })\n .catch(errorHandler);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","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 '../states/ControlSectionState';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\nimport Dropdown from 'flarum/common/components/Dropdown';\n\nexport interface ExtensionItemAttrs extends ComponentAttrs {\n extension: Extension;\n updates: UpdatedPackage;\n onClickUpdate:\n | CallableFunction\n | {\n soft: CallableFunction;\n hard: CallableFunction;\n };\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(updates['version'])}\n {latestVersion ? (\n \n ) : null}\n
\n
\n
\n {onClickUpdate && typeof onClickUpdate === 'function' ? (\n \n \n \n ) : onClickUpdate ? (\n \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.charAt(0) === 'v' ? v.substring(1) : 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 Alert from 'flarum/common/components/Alert';\n\nimport { UpdatedPackage, UpdateState } from '../states/ControlSectionState';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionItem from './ExtensionItem';\nimport classList from 'flarum/common/utils/classList';\n\nexport interface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n updateState: UpdateState;\n}\n\nexport type MajorUpdaterLoadingTypes = 'major-update' | 'major-update-dry-run';\n\nexport default class MajorUpdater extends Component {\n updateState!: UpdateState;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.updateState = this.attrs.updateState;\n }\n\n view(): 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 {app.translator.trans('flarum-package-manager.admin.major_updater.update')}\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 app.packageManager.control.majorUpdate({ dryRun });\n }\n}\n","import 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 LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ExtensionItem from './ExtensionItem';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport interface IUpdaterAttrs extends ComponentAttrs {}\n\nexport type UpdaterLoadingTypes = 'check' | 'minor-update' | 'global-update' | 'extension-update' | null;\n\nexport default class Updater extends Component {\n view() {\n const core = app.packageManager.control.coreUpdate;\n\n return [\n
\n \n

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

\n {this.lastUpdateCheckView()}\n
{this.controlItems().toArray()}
\n {this.availableUpdatesView()}\n
,\n core && core.package['latest-major'] ? (\n \n ) : null,\n ];\n }\n\n lastUpdateCheckView() {\n return (\n (app.packageManager.control.lastUpdateCheck?.checkedAt && (\n

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

\n )) ||\n null\n );\n }\n\n availableUpdatesView() {\n const state = app.packageManager.control;\n\n if (app.packageManager.control.isLoading('check') || app.packageManager.control.isLoading('global-update')) {\n return (\n
\n \n
\n );\n }\n\n const hasMinorCoreUpdate = state.coreUpdate && state.coreUpdate.package['latest-minor'];\n\n if (!(state.extensionUpdates.length || hasMinorCoreUpdate)) {\n return (\n
\n {app.translator.trans('flarum-package-manager.admin.updater.up_to_date')}\n
\n );\n }\n\n return (\n
\n
\n {hasMinorCoreUpdate ? (\n state.updateCoreMinor()}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes('flarum/core')}\n />\n ) : null}\n {state.extensionUpdates.map((extension: Extension) => (\n state.updateExtension(extension, 'soft'),\n hard: () => state.updateExtension(extension, 'hard'),\n }}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes(extension.name)}\n />\n ))}\n
\n
\n );\n }\n\n controlItems() {\n const items = new ItemList();\n\n items.add(\n 'updateCheck',\n app.packageManager.control.checkForUpdates()}\n loading={app.packageManager.control.isLoading('check')}\n disabled={app.packageManager.control.isLoading()}\n >\n {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}\n ,\n 100\n );\n\n items.add(\n 'globalUpdate',\n app.packageManager.control.updateGlobally()}\n loading={app.packageManager.control.isLoading('global-update')}\n disabled={app.packageManager.control.isLoading()}\n >\n {app.translator.trans('flarum-package-manager.admin.updater.run_global_update')}\n \n );\n\n return items;\n }\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport { ComponentAttrs } from 'flarum/common/Component';\n\nimport Installer from './Installer';\nimport Updater from './Updater';\nimport Mithril from 'mithril';\n\nexport default class ControlSection extends Component {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n }\n\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","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/AdminPage'];","import app from 'flarum/admin/app';\nimport type Mithril from 'mithril';\nimport Component, { type ComponentAttrs } from 'flarum/common/Component';\nimport { CommonSettingsItemOptions, type SettingsComponentOptions } from '@flarum/core/src/admin/components/AdminPage';\nimport AdminPage from 'flarum/admin/components/AdminPage';\nimport type ItemList from 'flarum/common/utils/ItemList';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\n\nexport interface IConfigureJson extends ComponentAttrs {\n buildSettingComponent: (entry: ((this: this) => Mithril.Children) | SettingsComponentOptions) => Mithril.Children;\n}\n\nexport default abstract class ConfigureJson extends Component {\n protected settings: Record> = {};\n protected initialSettings: Record | null = null;\n protected loading: boolean = false;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.submit(true);\n }\n\n protected abstract type: string;\n abstract title(): Mithril.Children;\n abstract content(): Mithril.Children;\n\n className(): string {\n return '';\n }\n\n view(): Mithril.Children {\n return (\n
\n \n {this.content()}\n
{this.submitButton()}
\n
\n );\n }\n\n submitButton(): Mithril.Children[] {\n return [\n ,\n ];\n }\n\n customSettingComponents(): ItemList<(attributes: CommonSettingsItemOptions) => Mithril.Children> {\n return AdminPage.prototype.customSettingComponents();\n }\n\n setting(key: string) {\n return this.settings[key] ?? (this.settings[key] = Stream());\n }\n\n submit(readOnly: boolean) {\n this.loading = true;\n\n const configuration: any = {};\n\n Object.keys(this.settings).forEach((key) => {\n configuration[key] = this.settings[key]();\n });\n\n app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/package-manager/composer',\n body: {\n type: this.type,\n data: readOnly ? null : configuration,\n },\n })\n .then(({ data }: any) => {\n Object.keys(data).forEach((key) => {\n this.settings[key] = Stream(data[key]);\n });\n\n this.initialSettings = Array.isArray(data) ? {} : data;\n })\n .finally(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n isDirty() {\n return JSON.stringify(this.initialSettings) !== JSON.stringify(this.settings);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport { type Repository } from './ConfigureComposer';\n\nexport interface IRepositoryModalAttrs extends IInternalModalAttrs {\n onsubmit: (repository: Repository, key: string) => void;\n name?: string;\n repository?: Repository;\n}\n\nexport default class RepositoryModal extends Modal {\n protected name!: Stream;\n protected repository!: Stream;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.name = Stream(this.attrs.name || '');\n this.repository = Stream(this.attrs.repository || { type: 'composer', url: '' });\n }\n\n className(): string {\n return 'RepositoryModal Modal--small';\n }\n\n title(): Mithril.Children {\n const context = this.attrs.repository ? 'edit' : 'add';\n return app.translator.trans(`flarum-package-manager.admin.composer.${context}_repository_label`);\n }\n\n content(): Mithril.Children {\n const types = {\n composer: app.translator.trans('flarum-package-manager.admin.composer.repositories.types.composer'),\n vcs: app.translator.trans('flarum-package-manager.admin.composer.repositories.types.vcs'),\n path: app.translator.trans('flarum-package-manager.admin.composer.repositories.types.path'),\n };\n\n return (\n
\n
\n \n \n
\n
\n \n this.repository({ ...this.repository(), type: value })}\n />\n
\n
\n \n this.repository({ ...this.repository(), url: (e.target as HTMLInputElement).value })}\n value={this.repository().url}\n />\n
\n
\n \n
\n
\n );\n }\n\n submit() {\n this.attrs.onsubmit(this.repository(), this.name());\n this.hide();\n }\n}\n","import app from 'flarum/admin/app';\nimport type Mithril from 'mithril';\nimport ConfigureJson, { type IConfigureJson } from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport RepositoryModal from './RepositoryModal';\n\nexport type Repository = {\n type: 'composer' | 'vcs' | 'path';\n url: string;\n};\n\nexport default class ConfigureComposer extends ConfigureJson {\n protected type = 'composer';\n\n title(): Mithril.Children {\n return app.translator.trans('flarum-package-manager.admin.composer.title');\n }\n\n className(): string {\n return 'ConfigureComposer';\n }\n\n content(): Mithril.Children {\n return (\n
\n {this.attrs.buildSettingComponent.call(this, {\n setting: 'minimum-stability',\n label: app.translator.trans('flarum-package-manager.admin.composer.minimum_stability.label'),\n help: app.translator.trans('flarum-package-manager.admin.composer.minimum_stability.help'),\n type: 'select',\n options: {\n stable: app.translator.trans('flarum-package-manager.admin.composer.minimum_stability.options.stable'),\n RC: app.translator.trans('flarum-package-manager.admin.composer.minimum_stability.options.rc'),\n beta: app.translator.trans('flarum-package-manager.admin.composer.minimum_stability.options.beta'),\n alpha: app.translator.trans('flarum-package-manager.admin.composer.minimum_stability.options.alpha'),\n dev: app.translator.trans('flarum-package-manager.admin.composer.minimum_stability.options.dev'),\n },\n })}\n
\n \n
{app.translator.trans('flarum-package-manager.admin.composer.repositories.help')}
\n
\n {Object.keys(this.setting('repositories')() || {}).map((name) => {\n const repository = this.setting('repositories')()[name] as Repository;\n\n return (\n
\n \n app.modal.show(RepositoryModal, {\n name,\n repository,\n onsubmit: (repository: Repository, newName: string) => {\n const repositories = this.setting('repositories')();\n delete repositories[name];\n\n this.setting('repositories')(repositories);\n\n this.onchange(repository, newName);\n },\n })\n }\n >\n {name} ({repository.type})\n \n {\n if (confirm(extractText(app.translator.trans('flarum-package-manager.admin.composer.delete_repository_confirmation')))) {\n const repositories = { ...this.setting('repositories')() };\n delete repositories[name];\n\n this.setting('repositories')(repositories);\n }\n }}\n />\n
\n );\n })}\n
\n
\n
\n );\n }\n\n submitButton(): Mithril.Children[] {\n const items = super.submitButton();\n\n items.push(\n \n );\n\n return items;\n }\n\n onchange(repository: Repository, name: string) {\n this.setting('repositories')({\n ...this.setting('repositories')(),\n [name]: repository,\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\n\nexport interface IAuthMethodModalAttrs extends IInternalModalAttrs {\n onsubmit: (type: string, host: string, token: string) => void;\n type?: string;\n host?: string;\n token?: string;\n}\n\nexport default class AuthMethodModal extends Modal {\n protected type!: Stream;\n protected host!: Stream;\n protected token!: Stream;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.type = Stream(this.attrs.type || 'bearer');\n this.host = Stream(this.attrs.host || '');\n this.token = Stream(this.attrs.token || '');\n }\n\n className(): string {\n return 'AuthMethodModal Modal--small';\n }\n\n title(): Mithril.Children {\n const context = this.attrs.host ? 'edit' : 'add';\n return app.translator.trans(`flarum-package-manager.admin.auth_config.${context}_label`);\n }\n\n content(): Mithril.Children {\n const types = {\n 'github-oauth': app.translator.trans('flarum-package-manager.admin.auth_config.types.github-oauth'),\n 'gitlab-oauth': app.translator.trans('flarum-package-manager.admin.auth_config.types.gitlab-oauth'),\n 'gitlab-token': app.translator.trans('flarum-package-manager.admin.auth_config.types.gitlab-token'),\n bearer: app.translator.trans('flarum-package-manager.admin.auth_config.types.bearer'),\n };\n\n return (\n
\n
\n \n \n \n {app.translator.trans('flarum-extension-manager.admin.extensions.proceed')}\n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n app.extensionManager.control.requirePackage(this.data());\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n app.extensionManager.control.setLoading(null);\n\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 app.alerts.clear();\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-extension-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`));\n app.modal.close();\n } else {\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-extension-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-extension-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-extension-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 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-extension-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')}/extension-manager/why-not`,\n body: {\n data: {\n package: this.attrs.package,\n },\n },\n })\n .then((response) => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n })\n .catch(errorHandler);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","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 '../states/ControlSectionState';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\nimport Dropdown from 'flarum/common/components/Dropdown';\n\nexport interface ExtensionItemAttrs extends ComponentAttrs {\n extension: Extension;\n updates: UpdatedPackage;\n onClickUpdate:\n | CallableFunction\n | {\n soft: CallableFunction;\n hard: CallableFunction;\n };\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(updates['version'])}\n {latestVersion ? (\n \n ) : null}\n
\n
\n
\n {onClickUpdate && typeof onClickUpdate === 'function' ? (\n \n \n \n ) : onClickUpdate ? (\n \n \n \n \n ) : null}\n {whyNotWarning ? (\n \n app.modal.show(WhyNotModal, { package: extension.name })}\n aria-label={app.translator.trans('flarum-extension-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.charAt(0) === 'v' ? v.substring(1) : 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 Alert from 'flarum/common/components/Alert';\n\nimport { UpdatedPackage, UpdateState } from '../states/ControlSectionState';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionItem from './ExtensionItem';\nimport classList from 'flarum/common/utils/classList';\n\nexport interface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n updateState: UpdateState;\n}\n\nexport type MajorUpdaterLoadingTypes = 'major-update' | 'major-update-dry-run';\n\nexport default class MajorUpdater extends Component {\n updateState!: UpdateState;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.updateState = this.attrs.updateState;\n }\n\n view(): Mithril.Children {\n // @todo move Form-group--danger class to core for reuse\n return (\n \n \"flarum\n \n

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

\n
\n \n \n {app.translator.trans('flarum-extension-manager.admin.major_updater.dry_run')}\n \n \n \n {app.translator.trans('flarum-extension-manager.admin.major_updater.update')}\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-extension-manager.admin.major_updater.failure.why')}\n ,\n ]}\n >\n

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

\n \n ) : null}\n \n );\n }\n\n update(dryRun: boolean) {\n app.extensionManager.control.majorUpdate({ dryRun });\n }\n}\n","import 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 LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ExtensionItem from './ExtensionItem';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport interface IUpdaterAttrs extends ComponentAttrs {}\n\nexport type UpdaterLoadingTypes = 'check' | 'minor-update' | 'global-update' | 'extension-update' | null;\n\nexport default class Updater extends Component {\n view() {\n const core = app.extensionManager.control.coreUpdate;\n\n return [\n
\n \n

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

\n {this.lastUpdateCheckView()}\n
{this.controlItems().toArray()}
\n {this.availableUpdatesView()}\n
,\n core && core.package['latest-major'] ? (\n \n ) : null,\n ];\n }\n\n lastUpdateCheckView() {\n return (\n (app.extensionManager.control.lastUpdateCheck?.checkedAt && (\n

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

\n )) ||\n null\n );\n }\n\n availableUpdatesView() {\n const state = app.extensionManager.control;\n\n if (app.extensionManager.control.isLoading('check') || app.extensionManager.control.isLoading('global-update')) {\n return (\n
\n \n
\n );\n }\n\n const hasMinorCoreUpdate = state.coreUpdate && state.coreUpdate.package['latest-minor'];\n\n if (!(state.extensionUpdates.length || hasMinorCoreUpdate)) {\n return (\n
\n {app.translator.trans('flarum-extension-manager.admin.updater.up_to_date')}\n
\n );\n }\n\n return (\n
\n
\n {hasMinorCoreUpdate ? (\n state.updateCoreMinor()}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes('flarum/core')}\n />\n ) : null}\n {state.extensionUpdates.map((extension: Extension) => (\n state.updateExtension(extension, 'soft'),\n hard: () => state.updateExtension(extension, 'hard'),\n }}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes(extension.name)}\n />\n ))}\n
\n
\n );\n }\n\n controlItems() {\n const items = new ItemList();\n\n items.add(\n 'updateCheck',\n app.extensionManager.control.checkForUpdates()}\n loading={app.extensionManager.control.isLoading('check')}\n disabled={app.extensionManager.control.hasOperationRunning()}\n >\n {app.translator.trans('flarum-extension-manager.admin.updater.check_for_updates')}\n ,\n 100\n );\n\n items.add(\n 'globalUpdate',\n app.extensionManager.control.updateGlobally()}\n loading={app.extensionManager.control.isLoading('global-update')}\n disabled={app.extensionManager.control.hasOperationRunning()}\n >\n {app.translator.trans('flarum-extension-manager.admin.updater.run_global_update')}\n \n );\n\n return items;\n }\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport { ComponentAttrs } from 'flarum/common/Component';\n\nimport Installer from './Installer';\nimport Updater from './Updater';\nimport Mithril from 'mithril';\n\nexport default class ControlSection extends Component {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n }\n\n view() {\n return (\n
\n
\n
\n

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

\n
\n
\n
\n {app.data['flarum-extension-manager.writable_dirs'] ? (\n <>\n \n \n \n ) : (\n
\n \n {app.translator.trans('flarum-extension-manager.admin.file_permissions')}\n \n
\n )}\n
\n
\n );\n }\n}\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/AdminPage'];","import app from 'flarum/admin/app';\nimport type Mithril from 'mithril';\nimport Component, { type ComponentAttrs } from 'flarum/common/Component';\nimport { CommonSettingsItemOptions, type SettingsComponentOptions } from '@flarum/core/src/admin/components/AdminPage';\nimport AdminPage from 'flarum/admin/components/AdminPage';\nimport type ItemList from 'flarum/common/utils/ItemList';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\n\nexport interface IConfigureJson extends ComponentAttrs {\n buildSettingComponent: (entry: ((this: this) => Mithril.Children) | SettingsComponentOptions) => Mithril.Children;\n}\n\nexport default abstract class ConfigureJson extends Component {\n protected settings: Record> = {};\n protected initialSettings: Record | null = null;\n protected loading: boolean = false;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.submit(true);\n }\n\n protected abstract type: string;\n abstract title(): Mithril.Children;\n abstract content(): Mithril.Children;\n\n className(): string {\n return '';\n }\n\n view(): Mithril.Children {\n return (\n
\n \n {this.content()}\n
{this.submitButton()}
\n
\n );\n }\n\n submitButton(): Mithril.Children[] {\n return [\n ,\n ];\n }\n\n customSettingComponents(): ItemList<(attributes: CommonSettingsItemOptions) => Mithril.Children> {\n return AdminPage.prototype.customSettingComponents();\n }\n\n setting(key: string) {\n return this.settings[key] ?? (this.settings[key] = Stream());\n }\n\n submit(readOnly: boolean) {\n this.loading = true;\n\n const configuration: any = {};\n\n Object.keys(this.settings).forEach((key) => {\n configuration[key] = this.settings[key]();\n });\n\n app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/extension-manager/composer',\n body: {\n type: this.type,\n data: readOnly ? null : configuration,\n },\n })\n .then(({ data }: any) => {\n Object.keys(data).forEach((key) => {\n this.settings[key] = Stream(data[key]);\n });\n\n this.initialSettings = Array.isArray(data) ? {} : data;\n })\n .finally(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n isDirty() {\n return JSON.stringify(this.initialSettings) !== JSON.stringify(this.settings);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport { type Repository } from './ConfigureComposer';\n\nexport interface IRepositoryModalAttrs extends IInternalModalAttrs {\n onsubmit: (repository: Repository, key: string) => void;\n name?: string;\n repository?: Repository;\n}\n\nexport default class RepositoryModal extends Modal {\n protected name!: Stream;\n protected repository!: Stream;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.name = Stream(this.attrs.name || '');\n this.repository = Stream(this.attrs.repository || { type: 'composer', url: '' });\n }\n\n className(): string {\n return 'RepositoryModal Modal--small';\n }\n\n title(): Mithril.Children {\n const context = this.attrs.repository ? 'edit' : 'add';\n return app.translator.trans(`flarum-extension-manager.admin.composer.${context}_repository_label`);\n }\n\n content(): Mithril.Children {\n const types = {\n composer: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.composer'),\n vcs: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.vcs'),\n path: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.path'),\n };\n\n return (\n
\n
\n \n \n
\n
\n \n this.repository({ ...this.repository(), type: value })}\n />\n
\n
\n \n this.repository({ ...this.repository(), url: (e.target as HTMLInputElement).value })}\n value={this.repository().url}\n />\n
\n
\n \n
\n
\n );\n }\n\n submit() {\n this.attrs.onsubmit(this.repository(), this.name());\n this.hide();\n }\n}\n","import app from 'flarum/admin/app';\nimport type Mithril from 'mithril';\nimport ConfigureJson, { type IConfigureJson } from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport RepositoryModal from './RepositoryModal';\n\nexport type Repository = {\n type: 'composer' | 'vcs' | 'path';\n url: string;\n};\n\nexport default class ConfigureComposer extends ConfigureJson {\n protected type = 'composer';\n\n title(): Mithril.Children {\n return app.translator.trans('flarum-extension-manager.admin.composer.title');\n }\n\n className(): string {\n return 'ConfigureComposer';\n }\n\n content(): Mithril.Children {\n return (\n
\n {this.attrs.buildSettingComponent.call(this, {\n setting: 'minimum-stability',\n label: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.label'),\n help: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.help'),\n type: 'select',\n options: {\n stable: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.stable'),\n RC: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.rc'),\n beta: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.beta'),\n alpha: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.alpha'),\n dev: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.dev'),\n },\n })}\n
\n \n
{app.translator.trans('flarum-extension-manager.admin.composer.repositories.help')}
\n
\n {Object.keys(this.setting('repositories')() || {}).map((name) => {\n const repository = this.setting('repositories')()[name] as Repository;\n\n return (\n
\n \n app.modal.show(RepositoryModal, {\n name,\n repository,\n onsubmit: (repository: Repository, newName: string) => {\n const repositories = this.setting('repositories')();\n delete repositories[name];\n\n this.setting('repositories')(repositories);\n\n this.onchange(repository, newName);\n },\n })\n }\n >\n {name} ({repository.type})\n \n {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.composer.delete_repository_confirmation')))) {\n const repositories = { ...this.setting('repositories')() };\n delete repositories[name];\n\n this.setting('repositories')(repositories);\n }\n }}\n />\n
\n );\n })}\n
\n
\n
\n );\n }\n\n submitButton(): Mithril.Children[] {\n const items = super.submitButton();\n\n items.push(\n \n );\n\n return items;\n }\n\n onchange(repository: Repository, name: string) {\n this.setting('repositories')({\n ...this.setting('repositories')(),\n [name]: repository,\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\n\nexport interface IAuthMethodModalAttrs extends IInternalModalAttrs {\n onsubmit: (type: string, host: string, token: string) => void;\n type?: string;\n host?: string;\n token?: string;\n}\n\nexport default class AuthMethodModal extends Modal {\n protected type!: Stream;\n protected host!: Stream;\n protected token!: Stream;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.type = Stream(this.attrs.type || 'bearer');\n this.host = Stream(this.attrs.host || '');\n this.token = Stream(this.attrs.token || '');\n }\n\n className(): string {\n return 'AuthMethodModal Modal--small';\n }\n\n title(): Mithril.Children {\n const context = this.attrs.host ? 'edit' : 'add';\n return app.translator.trans(`flarum-extension-manager.admin.auth_config.${context}_label`);\n }\n\n content(): Mithril.Children {\n const types = {\n 'github-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.github-oauth'),\n 'gitlab-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-oauth'),\n 'gitlab-token': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-token'),\n bearer: app.translator.trans('flarum-extension-manager.admin.auth_config.types.bearer'),\n };\n\n return (\n
\n
\n \n
- +
- +