diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index 2184f5ee1..38c49fc0b 100755 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -17,6 +17,8 @@ use Flarum\PackageManager\Exception\ExceptionHandler; use Flarum\PackageManager\Exception\ComposerRequireFailedException; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\Exception\MajorUpdateFailedException; +use Flarum\PackageManager\Settings\LastUpdateCheck; +use Flarum\PackageManager\Settings\LastUpdateRun; return [ (new Extend\Routes('api')) @@ -24,6 +26,7 @@ return [ ->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), @@ -38,19 +41,13 @@ return [ && is_writable($paths->storage.'/.composer') && is_writable($paths->base.'/composer.json') && is_writable($paths->base.'/composer.lock'); - - $document->payload['lastUpdateCheck'] = resolve(LastUpdateCheck::class)->get(); }), new Extend\Locales(__DIR__ . '/locale'), (new Extend\Settings()) - ->default('flarum-package-manager.last_update_check', json_encode([ - 'checkedAt' => null, - 'updates' => [ - 'installed' => [], - ], - ])), + ->default(LastUpdateCheck::key(), json_encode(LastUpdateCheck::default())) + ->default(LastUpdateRun::key(), json_encode(LastUpdateRun::default())), (new Extend\ServiceProvider) ->register(PackageManagerServiceProvider::class), diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 4456c2bfb..661ea373c 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -101,6 +101,34 @@ __webpack_require__.r(__webpack_exports__); /***/ }), +/***/ "./node_modules/@babel/runtime/helpers/esm/createClass.js": +/*!****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/createClass.js ***! + \****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _createClass; }); +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +/***/ }), + /***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***! @@ -140,6 +168,114 @@ function _setPrototypeOf(o, p) { return _setPrototypeOf(o, p); } +/***/ }), + +/***/ "./src/admin/components/ExtensionItem.tsx": +/*!************************************************!*\ + !*** ./src/admin/components/ExtensionItem.tsx ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ExtensionItem; }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/Component */ "flarum/common/Component"); +/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/utils/classList */ "flarum/common/utils/classList"); +/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/helpers/icon */ "flarum/common/helpers/icon"); +/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); +/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var _WhyNotModal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./WhyNotModal */ "./src/admin/components/WhyNotModal.tsx"); + + + + + + + + +/* + * @todo fix in core + */ + +var ExtensionItem = /*#__PURE__*/function (_Component) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(ExtensionItem, _Component); + + function ExtensionItem() { + return _Component.apply(this, arguments) || this; + } + + var _proto = ExtensionItem.prototype; + + _proto.view = function view(vnode) { + var _this$attrs = this.attrs, + extension = _this$attrs.extension, + updates = _this$attrs.updates, + onClickUpdate = _this$attrs.onClickUpdate, + whyNotWarning = _this$attrs.whyNotWarning, + isCore = _this$attrs.isCore, + isDanger = _this$attrs.isDanger; + return m("div", { + className: flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3___default()({ + 'PackageManager-extension': true, + 'PackageManager-extension--core': isCore, + 'PackageManager-extension--danger': isDanger + }) + }, m("div", { + className: "PackageManager-extension-icon ExtensionIcon", + style: extension.icon + }, extension.icon ? flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4___default()(extension.icon.name) : ''), m("div", { + className: "PackageManager-extension-info" + }, m("div", { + className: "PackageManager-extension-name" + }, extension.extra['flarum-extension'].title), m("div", { + className: "PackageManager-extension-version" + }, m("span", { + className: "PackageManager-extension-version-current" + }, this.version(extension.version)), updates['latest-minor'] ? m("span", { + className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--minor" + }, this.version(updates['latest-minor'])) : null, updates['latest-major'] && !isCore ? m("span", { + className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--major" + }, this.version(updates['latest-major'])) : null)), m("div", { + className: "PackageManager-extension-controls" + }, onClickUpdate ? m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default.a, { + text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update') + }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6___default.a, { + icon: "fas fa-arrow-alt-circle-up", + className: "Button Button--icon Button--flat", + onclick: onClickUpdate, + "aria-label": flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update') + })) : null, whyNotWarning ? m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default.a, { + text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating') + }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6___default.a, { + icon: "fas fa-exclamation-circle", + className: "Button Button--icon Button--flat Button--danger", + onclick: function onclick() { + return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(_WhyNotModal__WEBPACK_IMPORTED_MODULE_7__["default"], { + "package": extension.name + }); + }, + "aria-label": flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating') + })) : null)); + }; + + _proto.version = function version(v) { + return 'v' + v.replace('v', ''); + }; + + return ExtensionItem; +}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); + + + /***/ }), /***/ "./src/admin/components/Installer.tsx": @@ -284,6 +420,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/admin/components/LoadingModal */ "flarum/admin/components/LoadingModal"); /* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts"); +/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/common/components/Alert */ "flarum/common/components/Alert"); +/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var _WhyNotModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WhyNotModal */ "./src/admin/components/WhyNotModal.tsx"); +/* harmony import */ var _ExtensionItem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ExtensionItem */ "./src/admin/components/ExtensionItem.tsx"); + + + @@ -304,14 +447,22 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { _this = _Component.call.apply(_Component, [this].concat(args)) || this; _this.isLoading = null; + _this.updateState = void 0; return _this; } var _proto = MajorUpdater.prototype; + _proto.oninit = function oninit(vnode) { + _Component.prototype.oninit.call(this, vnode); + + this.updateState = this.attrs.updateState; + }; + _proto.view = function view(vnode) { + // @todo move Form-group--danger class to core for reuse return m("div", { - className: "Form-group PackageManager-majorUpdate" + className: "Form-group Form-group--danger PackageManager-majorUpdate" }, m("img", { alt: "flarum logo", src: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('baseUrl') + '/assets/extensions/flarum-package-manager/flarum.svg' @@ -328,10 +479,34 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { icon: "fas fa-vial", onclick: this.update.bind(this, true) }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.dry_run'))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { - className: "Button", + className: "Button Button--danger", icon: "fas fa-play", onclick: this.update.bind(this, false) - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.update')))); + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.update'))), this.updateState.incompatibleExtensions.length ? m("div", { + className: "PackageManager-majorUpdate-incompatibleExtensions PackageManager-extensions-grid" + }, this.updateState.incompatibleExtensions.map(function (extension) { + return m(_ExtensionItem__WEBPACK_IMPORTED_MODULE_9__["default"], { + extension: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions[extension.replace('flarum-', '').replace('flarum-ext-', '').replace('/', '-')], + updates: {}, + onClickUpdate: null, + isDanger: true + }); + })) : null, this.updateState.status === 'failure' ? m(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7___default.a, { + type: "error", + className: "PackageManager-majorUpdate-failure", + dismissible: false, + controls: [m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { + className: "Button Button--text PackageManager-majorUpdate-failure-details", + icon: "fas fa-question-circle", + onclick: function onclick() { + return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(_WhyNotModal__WEBPACK_IMPORTED_MODULE_8__["default"], { + "package": 'flarum/core' + }); + } + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.failure.why'))] + }, m("p", { + className: "PackageManager-majorUpdate-failure-desc" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.failure.desc'))) : null); }; _proto.update = function update(dryRun) { @@ -353,6 +528,12 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { type: 'success' }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.update_successful')); window.location.reload(); + })["catch"](function (e) { + var _e$response, _e$response$errors, _e$response$errors$po; + + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.close(); + _this2.updateState.status = 'failure'; + _this2.updateState.incompatibleExtensions = (_e$response = e.response) == null ? void 0 : (_e$response$errors = _e$response.errors) == null ? void 0 : (_e$response$errors$po = _e$response$errors.pop()) == null ? void 0 : _e$response$errors$po.incompatible_extensions; })["finally"](function () { _this2.isLoading = null; m.redraw(); @@ -376,28 +557,23 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Updater; }); -/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); -/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); -/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/Component */ "flarum/common/Component"); -/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/helpers/icon */ "flarum/common/helpers/icon"); -/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/Component */ "flarum/common/Component"); +/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_Component__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); /* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/helpers/humanTime */ "flarum/common/helpers/humanTime"); /* harmony import */ var flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/admin/components/LoadingModal */ "flarum/admin/components/LoadingModal"); /* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts"); -/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! flarum/common/utils/classList */ "flarum/common/utils/classList"); -/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); -/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10__); -/* harmony import */ var _MajorUpdater__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./MajorUpdater */ "./src/admin/components/MajorUpdater.tsx"); - +/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts"); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var _MajorUpdater__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./MajorUpdater */ "./src/admin/components/MajorUpdater.tsx"); +/* harmony import */ var _ExtensionItem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ExtensionItem */ "./src/admin/components/ExtensionItem.tsx"); @@ -411,7 +587,7 @@ __webpack_require__.r(__webpack_exports__); var Updater = /*#__PURE__*/function (_Component) { - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(Updater, _Component); + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(Updater, _Component); function Updater() { var _this; @@ -422,8 +598,8 @@ var Updater = /*#__PURE__*/function (_Component) { _this = _Component.call.apply(_Component, [this].concat(args)) || this; _this.isLoading = null; - _this.lastUpdateCheck = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.lastUpdateCheck || {}; _this.packageUpdates = {}; + _this.lastUpdateCheck = JSON.parse(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.settings['flarum-package-manager.last_update_check']); return _this; } @@ -439,35 +615,35 @@ var Updater = /*#__PURE__*/function (_Component) { var extensions = this.getExtensionUpdates(); var coreUpdate = this.getCoreUpdate(); - var core = null; + var core; if (coreUpdate) { core = { - id: "flarum-core", - version: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.settings.version, + id: 'flarum-core', + name: 'flarum/core', + version: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.settings.version, icon: { - backgroundImage: "url(" + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('baseUrl') + "/assets/extensions/flarum-package-manager/flarum.svg" + backgroundImage: "url(" + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('baseUrl') + "/assets/extensions/flarum-package-manager/flarum.svg" }, extra: { 'flarum-extension': { - title: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.flarum') + title: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.flarum') } } }; - this.packageUpdates['flarum-core'] = coreUpdate; } return [m("div", { className: "Form-group" - }, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.updater_title')), m("p", { + }, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.updater_title')), m("p", { className: "helpText" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.updater_help')), Object.keys(this.lastUpdateCheck).length ? m("p", { + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.updater_help')), ((_this$lastUpdateCheck = this.lastUpdateCheck) == null ? void 0 : _this$lastUpdateCheck.checkedAt) && m("p", { className: "PackageManager-lastUpdatedAt" }, m("span", { className: "PackageManager-lastUpdatedAt-label" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')), m("span", { + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')), m("span", { className: "PackageManager-lastUpdatedAt-value" - }, flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default()((_this$lastUpdateCheck = this.lastUpdateCheck) == null ? void 0 : _this$lastUpdateCheck.checkedAt))) : null, m("div", { + }, flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default()(this.lastUpdateCheck.checkedAt))), m("div", { className: "PackageManager-updaterControls" }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { className: "Button", @@ -475,66 +651,37 @@ var Updater = /*#__PURE__*/function (_Component) { onclick: this.checkForUpdates.bind(this), loading: this.isLoading === 'check', disabled: this.isLoading !== null && this.isLoading !== 'check' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.check_for_updates')), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.check_for_updates')), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { className: "Button", icon: "fas fa-play", onclick: this.updateGlobally.bind(this), loading: this.isLoading === 'global-update', disabled: this.isLoading !== null && this.isLoading !== 'global-update' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.run_global_update'))), this.isLoading !== null ? m("div", { + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.run_global_update'))), this.isLoading !== null ? m("div", { className: "PackageManager-extensions" - }, m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10___default.a, null)) : extensions.length || core ? m("div", { + }, m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8___default.a, null)) : extensions.length || core ? m("div", { className: "PackageManager-extensions" }, m("div", { className: "PackageManager-extensions-grid" - }, core ? this.extensionItem(core, true) : null, extensions.map(function (extension) { - return _this2.extensionItem(extension); - }))) : null), coreUpdate && coreUpdate['latest-major'] ? m(_MajorUpdater__WEBPACK_IMPORTED_MODULE_11__["default"], { - coreUpdate: coreUpdate + }, core ? m(_ExtensionItem__WEBPACK_IMPORTED_MODULE_10__["default"], { + extension: core, + updates: coreUpdate, + isCore: true, + onClickUpdate: this.updateCoreMinor.bind(this), + whyNotWarning: this.lastUpdateRun.limitedPackages().includes('flarum/core') + }) : null, extensions.map(function (extension) { + return m(_ExtensionItem__WEBPACK_IMPORTED_MODULE_10__["default"], { + extension: extension, + updates: _this2.packageUpdates[extension.id], + onClickUpdate: _this2.updateExtension.bind(_this2, extension), + whyNotWarning: _this2.lastUpdateRun.limitedPackages().includes(extension.name) + }); + }))) : null), coreUpdate && coreUpdate['latest-major'] ? m(_MajorUpdater__WEBPACK_IMPORTED_MODULE_9__["default"], { + coreUpdate: coreUpdate, + updateState: this.lastUpdateRun.major }) : null]; }; - _proto.extensionItem = function extensionItem(extension, isCore) { - if (isCore === void 0) { - isCore = false; - } - - return m("div", { - className: flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9___default()({ - 'PackageManager-extension': true, - 'PackageManager-extension--core': isCore - }) - }, m("div", { - className: "PackageManager-extension-icon ExtensionIcon", - style: extension.icon - }, extension.icon ? flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3___default()(extension.icon.name) : ''), m("div", { - className: "PackageManager-extension-info" - }, m("div", { - className: "PackageManager-extension-name" - }, extension.extra['flarum-extension'].title), m("div", { - className: "PackageManager-extension-version" - }, m("span", { - className: "PackageManager-extension-version-current" - }, this.version(extension.version)), this.packageUpdates[extension.id]['latest-minor'] ? m("span", { - className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--minor" - }, this.version(this.packageUpdates[extension.id]['latest-minor'])) : null, this.packageUpdates[extension.id]['latest-major'] && !isCore ? m("span", { - className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--major" - }, this.version(this.packageUpdates[extension.id]['latest-major'])) : null)), m("div", { - className: "PackageManager-extension-controls" - }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7___default.a, { - text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update') - }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { - icon: "fas fa-arrow-alt-circle-up", - className: "Button Button--icon Button--flat", - onclick: isCore ? this.updateCoreMinor.bind(this) : this.updateExtension.bind(this, extension), - "aria-label": flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update') - })))); - }; - - _proto.version = function version(v) { - return 'v' + v.replace('v', ''); - }; - _proto.getExtensionUpdates = function getExtensionUpdates() { var _this$lastUpdateCheck2, _this$lastUpdateCheck3, @@ -542,7 +689,8 @@ var Updater = /*#__PURE__*/function (_Component) { _this3 = this; (_this$lastUpdateCheck2 = this.lastUpdateCheck) == null ? void 0 : (_this$lastUpdateCheck3 = _this$lastUpdateCheck2.updates) == null ? void 0 : (_this$lastUpdateCheck4 = _this$lastUpdateCheck3.installed) == null ? void 0 : _this$lastUpdateCheck4.filter(function (composerPackage) { - var extension = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')]; + var id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, ''); + var extension = flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.extensions[id]; var safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); if (extension && safeToUpdate) { @@ -551,7 +699,7 @@ var Updater = /*#__PURE__*/function (_Component) { return extension && safeToUpdate; }); - return Object.values(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions).filter(function (extension) { + return Object.values(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.extensions).filter(function (extension) { return _this3.packageUpdates[extension.id]; }); }; @@ -568,10 +716,10 @@ var Updater = /*#__PURE__*/function (_Component) { var _this4 = this; this.isLoading = 'check'; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({ method: 'POST', - url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/check-for-updates", - errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"] + url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/check-for-updates", + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"] }).then(function (response) { _this4.lastUpdateCheck = response; })["finally"](function () { @@ -583,17 +731,17 @@ var Updater = /*#__PURE__*/function (_Component) { _proto.updateCoreMinor = function updateCoreMinor() { var _this5 = this; - if (confirm(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content'))) { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); + if (confirm(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content'))) { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); this.isLoading = 'minor-update'; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({ method: 'POST', - url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/minor-update", - errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"] + url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/minor-update", + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"] }).then(function () { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.alerts.show({ type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.update_successful')); + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.update_successful')); window.location.reload(); })["finally"](function () { _this5.isLoading = null; @@ -605,16 +753,16 @@ var Updater = /*#__PURE__*/function (_Component) { _proto.updateExtension = function updateExtension(extension) { var _this6 = this; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); this.isLoading = 'extension-update'; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({ method: 'PATCH', - url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/extensions/" + extension.id, - errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"] + url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/extensions/" + extension.id, + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"] }).then(function () { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.alerts.show({ type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.successful_update', { + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })); window.location.reload(); @@ -627,16 +775,16 @@ var Updater = /*#__PURE__*/function (_Component) { _proto.updateGlobally = function updateGlobally() { var _this7 = this; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); this.isLoading = 'global-update'; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({ method: 'POST', - url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/global-update", - errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"] + url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/global-update", + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"] }).then(function () { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.alerts.show({ type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.global_update_successful')); + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.global_update_successful')); window.location.reload(); })["finally"](function () { _this7.isLoading = null; @@ -644,8 +792,111 @@ var Updater = /*#__PURE__*/function (_Component) { }); }; + Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_0__["default"])(Updater, [{ + key: "lastUpdateRun", + get: function get() { + var lastUpdateRun = JSON.parse(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.settings['flarum-package-manager.last_update_run']); + + lastUpdateRun.limitedPackages = function () { + return [].concat(lastUpdateRun.major.limitedPackages, lastUpdateRun.minor.limitedPackages, lastUpdateRun.global.limitedPackages); + }; + + return lastUpdateRun; + } + }]); + return Updater; -}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); +}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_3___default.a); + + + +/***/ }), + +/***/ "./src/admin/components/WhyNotModal.tsx": +/*!**********************************************!*\ + !*** ./src/admin/components/WhyNotModal.tsx ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return WhyNotModal; }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/Modal */ "flarum/common/components/Modal"); +/* harmony import */ var flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts"); + + + + + + +var WhyNotModal = /*#__PURE__*/function (_Modal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(WhyNotModal, _Modal); + + function WhyNotModal() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Modal.call.apply(_Modal, [this].concat(args)) || this; + _this.loading = true; + _this.whyNot = null; + return _this; + } + + var _proto = WhyNotModal.prototype; + + _proto.className = function className() { + return 'Modal--large WhyNotModal'; + }; + + _proto.title = function title() { + return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.why_not_modal.title'); + }; + + _proto.oncreate = function oncreate(vnode) { + _Modal.prototype.oncreate.call(this, vnode); + + this.requestWhyNot(); + }; + + _proto.content = function content() { + return m("div", { + className: "Modal-body" + }, this.loading ? m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3___default.a, null) : m("pre", { + className: "WhyNotModal-contents" + }, this.whyNot)); + }; + + _proto.requestWhyNot = function requestWhyNot() { + var _this2 = this; + + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + method: 'POST', + url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/why-not", + body: { + data: { + "package": this.attrs["package"] + } + }, + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_4__["default"] + }).then(function (response) { + _this2.loading = false; + _this2.whyNot = response.data.whyNot; + m.redraw(); + }); + }; + + return WhyNotModal; +}(flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2___default.a); @@ -766,6 +1017,10 @@ __webpack_require__.r(__webpack_exports__); type: 'error' }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans("flarum-package-manager.admin.exceptions.guessed_cause." + error.guessed_cause)); flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); + } else { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({ + type: 'error' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure')); } break; @@ -875,6 +1130,17 @@ module.exports = flarum.core.compat['common/components/LoadingIndicator']; /***/ }), +/***/ "flarum/common/components/Modal": +/*!****************************************************************!*\ + !*** external "flarum.core.compat['common/components/Modal']" ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Modal']; + +/***/ }), + /***/ "flarum/common/components/Tooltip": /*!******************************************************************!*\ !*** external "flarum.core.compat['common/components/Tooltip']" ***! diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index d1f87e77b..ea1ce0866 100755 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@flarum/package-manager/webpack/bootstrap","webpack://@flarum/package-manager/./admin.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/./src/admin/components/Installer.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/index.tsx","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","Installer","packageName","isLoading","oninit","vnode","Stream","view","app","translator","trans","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","type","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","attrs","coreUpdate","update","dryRun","Updater","lastUpdateCheck","packageUpdates","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","extra","title","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","updateCoreMinor","updateExtension","v","replace","updates","installed","filter","composerPackage","safeToUpdate","includes","values","pop","confirm","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","error","errors","code","guessed_cause"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';","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 _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\n\nexport default class Installer extends Component {\n packageName!: Stream;\n isLoading: boolean = false;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

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

\n
\n \n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n this.isLoading = true;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n errorHandler,\n })\n .then((response) => {\n const extensionId = response.id;\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_install', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Mithril from 'mithril';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport { UpdatedPackage } from './Updater';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n}\n\nexport default class MajorUpdater extends Component {\n isLoading: string | null = null;\n\n view(vnode: Mithril.Vnode): Mithril.Children {\n return (\n
\n \"flarum\n \n

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

\n
\n \n \n \n \n
\n
\n );\n }\n\n update(dryRun: boolean) {\n this.isLoading = `update-${dryRun ? 'dry-run' : 'run'}`;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`,\n body: {\n data: { dryRun },\n },\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import Mithril from \"mithril\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport errorHandler from '../utils/errorHandler';\nimport classList from 'flarum/common/utils/classList';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport {Extension} from \"flarum/admin/AdminApplication\";\n\nexport type UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n 'latest-minor': string | null;\n 'latest-major': string | null;\n 'latest-status': string;\n description: string;\n};\n\nexport type ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\nexport type LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: string | null = null;\n lastUpdateCheck: LastUpdateCheck = (app.data.lastUpdateCheck as LastUpdateCheck) || {};\n packageUpdates: Record = {};\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n const coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate();\n let core: any = null;\n\n if (coreUpdate) {\n core = {\n id: \"flarum-core\",\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`,\n },\n extra: {\n 'flarum-extension': {\n title: app.translator.trans('flarum-package-manager.admin.updater.flarum'),\n }\n }\n };\n\n this.packageUpdates['flarum-core'] = coreUpdate;\n }\n\n return [\n
\n \n

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

\n {Object.keys(this.lastUpdateCheck).length ? (\n

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

\n ) : null}\n
\n \n {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('flarum-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : extensions.length || core ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null}\n
,\n coreUpdate && coreUpdate['latest-major'] ? : null,\n ];\n }\n\n extensionItem(extension: Extension, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {this.packageUpdates[extension.id]['latest-minor'] ? (\n \n {this.version(this.packageUpdates[extension.id]['latest-minor']!)}\n \n ) : null}\n {this.packageUpdates[extension.id]['latest-major'] && !isCore ? (\n \n {this.version(this.packageUpdates[extension.id]['latest-major']!)}\n \n ) : null}\n
\n
\n
\n \n \n \n
\n \n );\n }\n\n version(v: string) {\n return 'v' + v.replace('v', '');\n }\n\n getExtensionUpdates() {\n this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => this.packageUpdates[extension.id]);\n }\n\n getCoreUpdate(): UpdatedPackage | undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n })\n .then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n if (confirm(app.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content'))) {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })\n );\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.isLoading = 'global-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport Alert from 'flarum/common/components/Alert';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Installer from './components/Installer';\nimport Updater from './components/Updater';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\n\napp.initializers.add('flarum-package-manager', (app) => {\n app.extensionData\n .for('flarum-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('flarum-package-manager.admin.file_permissions')}\n \n
\n );\n }\n\n return null;\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n\n return null;\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n\n return null;\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n })\n .finally(() => {\n app.modal.close();\n });\n }}\n >\n Remove\n \n );\n });\n});\n","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({type: 'error'}, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`))\n app.modal.close();\n }\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","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['admin/components/LoadingModal'];","module.exports = flarum.core.compat['admin/utils/isExtensionEnabled'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Alert'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/helpers/humanTime'];","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['common/utils/classList'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@flarum/package-manager/webpack/bootstrap","webpack://@flarum/package-manager/./admin.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/./src/admin/components/ExtensionItem.tsx","webpack://@flarum/package-manager/./src/admin/components/Installer.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/WhyNotModal.tsx","webpack://@flarum/package-manager/./src/admin/index.tsx","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_inheritsLoose","subClass","superClass","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ExtensionItem","view","vnode","attrs","extension","updates","onClickUpdate","whyNotWarning","isCore","isDanger","classList","icon","name","extra","title","version","app","translator","trans","modal","show","WhyNotModal","v","replace","Component","Installer","packageName","isLoading","oninit","Stream","extiverse","onsubmit","bind","data","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","type","window","location","href","reload","m","redraw","MajorUpdater","updateState","coreUpdate","update","incompatibleExtensions","map","extensions","status","dryRun","e","close","errors","pop","incompatible_extensions","Updater","packageUpdates","lastUpdateCheck","JSON","parse","settings","getExtensionUpdates","getCoreUpdate","core","backgroundImage","checkedAt","humanTime","checkForUpdates","updateGlobally","updateCoreMinor","lastUpdateRun","limitedPackages","includes","updateExtension","major","installed","filter","composerPackage","safeToUpdate","values","confirm","minor","global","loading","whyNot","className","oncreate","requestWhyNot","content","Modal","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","error","code","guessed_cause"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\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 _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport icon from 'flarum/common/helpers/icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport { Extension as BaseExtension } from 'flarum/admin/AdminApplication';\nimport { UpdatedPackage } from './Updater';\nimport WhyNotModal from './WhyNotModal';\n\n/*\n * @todo fix in core\n */\nexport type Extension = BaseExtension & {\n name: string;\n};\n\nexport interface ExtensionItemAttrs extends ComponentAttrs {\n extension: Extension;\n updates: UpdatedPackage;\n onClickUpdate: CallableFunction;\n whyNotWarning?: boolean;\n isCore?: boolean;\n updatable?: boolean;\n isDanger?: boolean;\n}\n\nexport default class ExtensionItem extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n const { extension, updates, onClickUpdate, whyNotWarning, isCore, isDanger } = this.attrs;\n\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {updates['latest-minor'] ? (\n \n {this.version(updates['latest-minor']!)}\n \n ) : null}\n {updates['latest-major'] && !isCore ? (\n \n {this.version(updates['latest-major']!)}\n \n ) : null}\n
\n
\n
\n {onClickUpdate ? (\n \n \n \n ) : null}\n {whyNotWarning ? (\n \n app.modal.show(WhyNotModal, { package: extension.name })}\n aria-label={app.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')}\n />\n \n ) : null}\n
\n \n );\n }\n\n private version(v: string): string {\n return 'v' + v.replace('v', '');\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\n\nexport default class Installer extends Component {\n packageName!: Stream;\n isLoading: boolean = false;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

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

\n
\n \n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n this.isLoading = true;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n errorHandler,\n })\n .then((response) => {\n const extensionId = response.id;\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_install', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Mithril from 'mithril';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport { UpdatedPackage, UpdateState } from './Updater';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport Alert from 'flarum/common/components/Alert';\nimport WhyNotModal from './WhyNotModal';\nimport RequestError from 'flarum/common/utils/RequestError';\nimport ExtensionItem, { Extension } from './ExtensionItem';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n updateState: UpdateState;\n}\n\nexport default class MajorUpdater extends Component {\n isLoading: string | null = null;\n updateState!: UpdateState;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.updateState = this.attrs.updateState;\n }\n\n view(vnode: Mithril.Vnode): Mithril.Children {\n // @todo move Form-group--danger class to core for reuse\n return (\n
\n \"flarum\n \n

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

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

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

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

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

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

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

\n )}\n
\n \n {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('flarum-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : extensions.length || core ? (\n
\n
\n {core ? (\n \n ) : null}\n {extensions.map((extension: Extension) => (\n \n ))}\n
\n
\n ) : null}\n
,\n coreUpdate && coreUpdate['latest-major'] ? : null,\n ];\n }\n\n getExtensionUpdates(): Extension[] {\n this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return (Object.values(app.data.extensions) as Extension[]).filter((extension: Extension) => this.packageUpdates[extension.id]);\n }\n\n getCoreUpdate(): UpdatedPackage | undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n })\n .then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n if (confirm(app.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content'))) {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })\n );\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.isLoading = 'global-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Mithril from 'mithril';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport errorHandler from '../utils/errorHandler';\n\nexport interface WhyNotModalAttrs extends IInternalModalAttrs {\n package: string;\n}\n\nexport default class WhyNotModal extends Modal {\n loading: boolean = true;\n whyNot: string | null = null;\n\n className() {\n return 'Modal--large WhyNotModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.why_not_modal.title');\n }\n\n oncreate(vnode: Mithril.VnodeDOM) {\n super.oncreate(vnode);\n\n this.requestWhyNot();\n }\n\n content() {\n return
{this.loading ? :
{this.whyNot}
}
;\n }\n\n requestWhyNot(): void {\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/why-not`,\n body: {\n data: {\n package: this.attrs.package,\n },\n },\n errorHandler,\n })\n .then((response: any) => {\n this.loading = false;\n this.whyNot = response.data.whyNot;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport Alert from 'flarum/common/components/Alert';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Installer from './components/Installer';\nimport Updater from './components/Updater';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\n\napp.initializers.add('flarum-package-manager', (app) => {\n app.extensionData\n .for('flarum-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('flarum-package-manager.admin.file_permissions')}\n \n
\n );\n }\n\n return null;\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n\n return null;\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n\n return null;\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n })\n .finally(() => {\n app.modal.close();\n });\n }}\n >\n Remove\n \n );\n });\n});\n","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({ type: 'error' }, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`));\n app.modal.close();\n } else {\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['admin/components/LoadingModal'];","module.exports = flarum.core.compat['admin/utils/isExtensionEnabled'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Alert'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Modal'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/helpers/humanTime'];","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['common/utils/classList'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/package.json b/extensions/package-manager/js/package.json index 2ade114a7..8755d76b6 100755 --- a/extensions/package-manager/js/package.json +++ b/extensions/package-manager/js/package.json @@ -4,9 +4,9 @@ "private": true, "prettier": "@flarum/prettier-config", "dependencies": { - "flarum-webpack-config": "^1.0.0", - "flarum-tsconfig": "^1.0.0", "@flarum/prettier-config": "^1.0.0", + "flarum-tsconfig": "^1.0.0", + "flarum-webpack-config": "^1.0.0", "webpack": "^4.26.0", "webpack-cli": "^3.0.7" }, diff --git a/extensions/package-manager/js/src/admin/components/ExtensionItem.tsx b/extensions/package-manager/js/src/admin/components/ExtensionItem.tsx new file mode 100644 index 000000000..17d141296 --- /dev/null +++ b/extensions/package-manager/js/src/admin/components/ExtensionItem.tsx @@ -0,0 +1,89 @@ +import Mithril from 'mithril'; +import app from 'flarum/admin/app'; +import Component, { ComponentAttrs } from 'flarum/common/Component'; +import classList from 'flarum/common/utils/classList'; +import icon from 'flarum/common/helpers/icon'; +import Tooltip from 'flarum/common/components/Tooltip'; +import Button from 'flarum/common/components/Button'; +import { Extension as BaseExtension } from 'flarum/admin/AdminApplication'; +import { UpdatedPackage } from './Updater'; +import WhyNotModal from './WhyNotModal'; + +/* + * @todo fix in core + */ +export type Extension = BaseExtension & { + name: string; +}; + +export interface ExtensionItemAttrs extends ComponentAttrs { + extension: Extension; + updates: UpdatedPackage; + onClickUpdate: CallableFunction; + whyNotWarning?: boolean; + isCore?: boolean; + updatable?: boolean; + isDanger?: boolean; +} + +export default class ExtensionItem extends Component { + view(vnode: Mithril.Vnode): Mithril.Children { + const { extension, updates, onClickUpdate, whyNotWarning, isCore, isDanger } = this.attrs; + + return ( +
+
+ {extension.icon ? icon(extension.icon.name) : ''} +
+
+
{extension.extra['flarum-extension'].title}
+
+ {this.version(extension.version)} + {updates['latest-minor'] ? ( + + {this.version(updates['latest-minor']!)} + + ) : null} + {updates['latest-major'] && !isCore ? ( + + {this.version(updates['latest-major']!)} + + ) : null} +
+
+
+ {onClickUpdate ? ( + +
+
+ ); + } + + private version(v: string): string { + return 'v' + v.replace('v', ''); + } +} diff --git a/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx index 7bd2f253d..bb1099e68 100644 --- a/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx +++ b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx @@ -3,20 +3,33 @@ import Component, { ComponentAttrs } from 'flarum/common/Component'; import Mithril from 'mithril'; import Button from 'flarum/common/components/Button'; import Tooltip from 'flarum/common/components/Tooltip'; -import { UpdatedPackage } from './Updater'; +import { UpdatedPackage, UpdateState } from './Updater'; import LoadingModal from 'flarum/admin/components/LoadingModal'; import errorHandler from '../utils/errorHandler'; +import Alert from 'flarum/common/components/Alert'; +import WhyNotModal from './WhyNotModal'; +import RequestError from 'flarum/common/utils/RequestError'; +import ExtensionItem, { Extension } from './ExtensionItem'; interface MajorUpdaterAttrs extends ComponentAttrs { coreUpdate: UpdatedPackage; + updateState: UpdateState; } export default class MajorUpdater extends Component { isLoading: string | null = null; + updateState!: UpdateState; - view(vnode: Mithril.Vnode): Mithril.Children { + oninit(vnode: Mithril.Vnode) { + super.oninit(vnode); + + this.updateState = this.attrs.updateState; + } + + view(vnode: Mithril.Vnode): Mithril.Children { + // @todo move Form-group--danger class to core for reuse return ( -
+
flarum logo

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

@@ -26,10 +39,42 @@ export default class MajorUpdater -
+ {this.updateState.incompatibleExtensions.length ? ( +
+ {this.updateState.incompatibleExtensions.map((extension: string) => ( + + ))} +
+ ) : null} + {this.updateState.status === 'failure' ? ( + app.modal.show(WhyNotModal, { package: 'flarum/core' })} + > + {app.translator.trans('flarum-package-manager.admin.major_updater.failure.why')} + , + ]} + > +

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

+
+ ) : null}
); } @@ -51,6 +96,11 @@ export default class MajorUpdater { + app.modal.close(); + this.updateState.status = 'failure'; + this.updateState.incompatibleExtensions = e.response?.errors?.pop()?.incompatible_extensions as string[]; + }) .finally(() => { this.isLoading = null; m.redraw(); diff --git a/extensions/package-manager/js/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index 0dbca8351..d621c360b 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -1,16 +1,13 @@ -import Mithril from "mithril"; +import Mithril from 'mithril'; import app from 'flarum/admin/app'; import Component from 'flarum/common/Component'; -import icon from 'flarum/common/helpers/icon'; import Button from 'flarum/common/components/Button'; import humanTime from 'flarum/common/helpers/humanTime'; import LoadingModal from 'flarum/admin/components/LoadingModal'; -import Tooltip from 'flarum/common/components/Tooltip'; import errorHandler from '../utils/errorHandler'; -import classList from 'flarum/common/utils/classList'; import LoadingIndicator from 'flarum/common/components/LoadingIndicator'; import MajorUpdater from './MajorUpdater'; -import {Extension} from "flarum/admin/AdminApplication"; +import ExtensionItem, { Extension } from './ExtensionItem'; export type UpdatedPackage = { name: string; @@ -27,27 +24,54 @@ export type ComposerUpdates = { }; export type LastUpdateCheck = { - checkedAt: Date; + checkedAt: Date | null; updates: ComposerUpdates; }; +type UpdateType = 'major' | 'minor' | 'global'; +type UpdateStatus = 'success' | 'failure' | null; +export type UpdateState = { + ranAt: Date | null; + status: UpdateStatus; + limitedPackages: string[]; + incompatibleExtensions: string[]; +}; + +export type LastUpdateRun = { + [key in UpdateType]: UpdateState; +} & { + limitedPackages: () => string[]; +}; + export default class Updater extends Component { isLoading: string | null = null; - lastUpdateCheck: LastUpdateCheck = (app.data.lastUpdateCheck as LastUpdateCheck) || {}; packageUpdates: Record = {}; + lastUpdateCheck: LastUpdateCheck = JSON.parse(app.data.settings['flarum-package-manager.last_update_check']) as LastUpdateCheck; + get lastUpdateRun(): LastUpdateRun { + const lastUpdateRun = JSON.parse(app.data.settings['flarum-package-manager.last_update_run']) as LastUpdateRun; + + lastUpdateRun.limitedPackages = () => [ + ...lastUpdateRun.major.limitedPackages, + ...lastUpdateRun.minor.limitedPackages, + ...lastUpdateRun.global.limitedPackages, + ]; + + return lastUpdateRun; + } oninit(vnode: Mithril.Vnode) { super.oninit(vnode); } view() { - const extensions: any = this.getExtensionUpdates(); - const coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate(); - let core: any = null; + const extensions = this.getExtensionUpdates(); + let coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate(); + let core: any; if (coreUpdate) { core = { - id: "flarum-core", + id: 'flarum-core', + name: 'flarum/core', version: app.data.settings.version, icon: { backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`, @@ -55,25 +79,23 @@ export default class Updater extends Component { extra: { 'flarum-extension': { title: app.translator.trans('flarum-package-manager.admin.updater.flarum'), - } - } + }, + }, }; - - this.packageUpdates['flarum-core'] = coreUpdate; } return [

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

- {Object.keys(this.lastUpdateCheck).length ? ( + {this.lastUpdateCheck?.checkedAt && (

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

- ) : null} + )}
, - coreUpdate && coreUpdate['latest-major'] ? : null, + coreUpdate && coreUpdate['latest-major'] ? : null, ]; } - extensionItem(extension: Extension, isCore: boolean = false) { - return ( -
-
- {extension.icon ? icon(extension.icon.name) : ''} -
-
-
{extension.extra['flarum-extension'].title}
-
- {this.version(extension.version)} - {this.packageUpdates[extension.id]['latest-minor'] ? ( - - {this.version(this.packageUpdates[extension.id]['latest-minor']!)} - - ) : null} - {this.packageUpdates[extension.id]['latest-major'] && !isCore ? ( - - {this.version(this.packageUpdates[extension.id]['latest-major']!)} - - ) : null} -
-
-
- -
-
- ); - } - - version(v: string) { - return 'v' + v.replace('v', ''); - } - - getExtensionUpdates() { + getExtensionUpdates(): Extension[] { this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => { - const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')]; + const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, ''); + + const extension = app.data.extensions[id]; const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); if (extension && safeToUpdate) { @@ -168,7 +162,7 @@ export default class Updater extends Component { return extension && safeToUpdate; }); - return Object.values(app.data.extensions).filter((extension: any) => this.packageUpdates[extension.id]); + return (Object.values(app.data.extensions) as Extension[]).filter((extension: Extension) => this.packageUpdates[extension.id]); } getCoreUpdate(): UpdatedPackage | undefined { diff --git a/extensions/package-manager/js/src/admin/components/WhyNotModal.tsx b/extensions/package-manager/js/src/admin/components/WhyNotModal.tsx new file mode 100644 index 000000000..352cc769a --- /dev/null +++ b/extensions/package-manager/js/src/admin/components/WhyNotModal.tsx @@ -0,0 +1,51 @@ +import app from 'flarum/admin/app'; +import Mithril from 'mithril'; +import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; +import LoadingIndicator from 'flarum/common/components/LoadingIndicator'; +import errorHandler from '../utils/errorHandler'; + +export interface WhyNotModalAttrs extends IInternalModalAttrs { + package: string; +} + +export default class WhyNotModal extends Modal { + loading: boolean = true; + whyNot: string | null = null; + + className() { + return 'Modal--large WhyNotModal'; + } + + title() { + return app.translator.trans('flarum-package-manager.admin.why_not_modal.title'); + } + + oncreate(vnode: Mithril.VnodeDOM) { + super.oncreate(vnode); + + this.requestWhyNot(); + } + + content() { + return
{this.loading ? :
{this.whyNot}
}
; + } + + requestWhyNot(): void { + app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/why-not`, + body: { + data: { + package: this.attrs.package, + }, + }, + errorHandler, + }) + .then((response: any) => { + this.loading = false; + this.whyNot = response.data.whyNot; + m.redraw(); + }); + } +} diff --git a/extensions/package-manager/js/src/admin/utils/errorHandler.ts b/extensions/package-manager/js/src/admin/utils/errorHandler.ts index db9cb9050..bf0681620 100755 --- a/extensions/package-manager/js/src/admin/utils/errorHandler.ts +++ b/extensions/package-manager/js/src/admin/utils/errorHandler.ts @@ -10,8 +10,10 @@ export default function (e: any) { switch (error.code) { case 'composer_command_failure': if (error.guessed_cause) { - app.alerts.show({type: 'error'}, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`)) + app.alerts.show({ type: 'error' }, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`)); app.modal.close(); + } else { + app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure')); } break; diff --git a/extensions/package-manager/js/yarn.lock b/extensions/package-manager/js/yarn.lock index e0d1f82a9..0e6bf7448 100755 --- a/extensions/package-manager/js/yarn.lock +++ b/extensions/package-manager/js/yarn.lock @@ -2,32 +2,32 @@ # yarn lockfile v1 -"@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== +"@babel/code-frame@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== dependencies: - "@babel/highlight" "^7.14.5" + "@babel/highlight" "^7.16.0" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== "@babel/core@^7.14.3": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.0.tgz#749e57c68778b73ad8082775561f67f5196aafa8" - integrity sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" + integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.0" - "@babel/helper-module-transforms" "^7.15.0" - "@babel/helpers" "^7.14.8" - "@babel/parser" "^7.15.0" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.0" + "@babel/helpers" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -35,64 +35,64 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" - integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== +"@babel/generator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" + integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== dependencies: - "@babel/types" "^7.15.0" + "@babel/types" "^7.16.0" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz#b939b43f8c37765443a19ae74ad8b15978e0a191" - integrity sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz#f1a686b92da794020c26582eb852e9accd0d7882" + integrity sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ== dependencies: - "@babel/helper-explode-assignable-expression" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-explode-assignable-expression" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5", "@babel/helper-compilation-targets@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" - integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.0", "@babel/helper-compilation-targets@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" + integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== dependencies: - "@babel/compat-data" "^7.15.0" + "@babel/compat-data" "^7.16.0" "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.0.tgz#c9a137a4d137b2d0e2c649acf536d7ba1a76c0f7" - integrity sha512-MdmDXgvTIi4heDVX/e9EFfeGpugqm9fobBVg/iioE8kueXrOHdRDe36FAY7SnE9xXLVeYCoJR/gdrBEIHRC83Q== +"@babel/helper-create-class-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz#090d4d166b342a03a9fec37ef4fd5aeb9c7c6a4b" + integrity sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.15.0" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.0" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-member-expression-to-functions" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== +"@babel/helper-create-regexp-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" + integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/helper-define-polyfill-provider@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" + integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -103,294 +103,301 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-explode-assignable-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" - integrity sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ== +"@babel/helper-explode-assignable-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" + integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" -"@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== +"@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== +"@babel/helper-get-function-arity@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" + integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== +"@babel/helper-hoist-variables@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" + integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" -"@babel/helper-member-expression-to-functions@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" - integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== +"@babel/helper-member-expression-to-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" + integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== dependencies: - "@babel/types" "^7.15.0" + "@babel/types" "^7.16.0" -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" - integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== +"@babel/helper-module-transforms@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" + integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.0" - "@babel/helper-simple-access" "^7.14.8" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== +"@babel/helper-optimise-call-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" + integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-remap-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz#51439c913612958f54a987a4ffc9ee587a2045d6" - integrity sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A== +"@babel/helper-remap-async-to-generator@^7.16.0", "@babel/helper-remap-async-to-generator@^7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz#5d7902f61349ff6b963e07f06a389ce139fbfe6e" + integrity sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-wrap-function" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-wrap-function" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" - integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== +"@babel/helper-replace-supers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" + integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.0" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/helper-member-expression-to-functions" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== +"@babel/helper-simple-access@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" + integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== dependencies: - "@babel/types" "^7.14.8" + "@babel/types" "^7.16.0" -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" - integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== +"@babel/helper-split-export-declaration@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" + integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.0" -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== +"@babel/helper-validator-identifier@^7.15.7": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== -"@babel/helper-wrap-function@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" - integrity sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== +"@babel/helper-wrap-function@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz#b3cf318afce774dfe75b86767cd6d68f3482e57c" + integrity sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g== dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helpers@^7.14.8": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.3.tgz#c96838b752b95dcd525b4e741ed40bb1dc2a1357" - integrity sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g== +"@babel/helpers@^7.16.0": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c" + integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w== dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.3" + "@babel/types" "^7.16.0" -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== +"@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.15.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.14.5", "@babel/parser@^7.15.0": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" - integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== +"@babel/parser@^7.16.0", "@babel/parser@^7.16.3": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" + integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" - integrity sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": + version "7.16.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" + integrity sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" -"@babel/plugin-proposal-async-generator-functions@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.9.tgz#7028dc4fa21dc199bbacf98b39bab1267d0eaf9a" - integrity sha512-d1lnh+ZnKrFKwtTYdw320+sQWCTwgkB9fmUhNXRADA4akR6wLjaruSGnIEUjpt9HCOwTr4ynFTKu19b7rFRpmw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2" + integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + +"@babel/plugin-proposal-async-generator-functions@^7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz#e606eb6015fec6fa5978c940f315eae4e300b081" + integrity sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.16.4" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz#c029618267ddebc7280fa286e0f8ca2a278a2d1a" + integrity sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz#158e9e10d449c3849ef3ecde94a03d9f1841b681" - integrity sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg== +"@babel/plugin-proposal-class-static-block@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz#5296942c564d8144c83eea347d0aa8a0b89170e7" + integrity sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-proposal-dynamic-import@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz#783eca61d50526202f9b296095453977e88659f1" + integrity sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-proposal-export-namespace-from@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz#9c01dee40b9d6b847b656aaf4a3976a71740f222" + integrity sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +"@babel/plugin-proposal-json-strings@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz#cae35a95ed1d2a7fa29c4dc41540b84a72e9ab25" + integrity sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz#a711b8ceb3ffddd3ef88d3a49e86dbd3cc7db3fd" + integrity sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz#44e1cce08fe2427482cf446a91bb451528ed0596" + integrity sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz#5d418e4fbbf8b9b7d03125d3a52730433a373734" + integrity sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" - integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== +"@babel/plugin-proposal-object-rest-spread@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz#5fb32f6d924d6e6712810362a60e12a2609872e6" + integrity sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg== dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" + "@babel/compat-data" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.5" + "@babel/plugin-transform-parameters" "^7.16.0" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz#5910085811ab4c28b00d6ebffa4ab0274d1e5f16" + integrity sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz#56dbc3970825683608e9efb55ea82c2a2d6c8dc0" + integrity sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.13.0", "@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-proposal-private-methods@^7.13.0", "@babel/plugin-proposal-private-methods@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz#b4dafb9c717e4301c5776b30d080d6383c89aff6" + integrity sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz#9f65a4d0493a940b4c01f8aa9d3f1894a587f636" - integrity sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q== +"@babel/plugin-proposal-private-property-in-object@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz#69e935b2c5c79d2488112d886f0c4e2790fee76f" + integrity sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== +"@babel/plugin-proposal-unicode-property-regex@^7.16.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz#890482dfc5ea378e42e19a71e709728cabf18612" + integrity sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-async-generators@^7.8.4": @@ -435,10 +442,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== +"@babel/plugin-syntax-jsx@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz#f9624394317365a9a88c82358d3f8471154698f1" + integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" @@ -498,347 +505,348 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== +"@babel/plugin-syntax-typescript@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz#2feeb13d9334cc582ea9111d3506f773174179bb" + integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-transform-arrow-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz#951706f8b449c834ed07bd474c0924c944b95a8e" + integrity sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-transform-async-to-generator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604" + integrity sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw== dependencies: - "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.16.0" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-block-scoped-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz#c618763233ad02847805abcac4c345ce9de7145d" + integrity sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-block-scoping@^7.14.5": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +"@babel/plugin-transform-block-scoping@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz#bcf433fb482fe8c3d3b4e8a66b1c4a8e77d37c16" + integrity sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-classes@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.9.tgz#2a391ffb1e5292710b00f2e2c210e1435e7d449f" - integrity sha512-NfZpTcxU3foGWbl4wxmZ35mTsYJy8oQocbeIMoDAGGFarAmSQlL+LWMkDx/tj6pNotpbX3rltIA4dprgAPOq5A== +"@babel/plugin-transform-classes@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz#54cf5ff0b2242c6573d753cd4bfc7077a8b282f5" + integrity sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-computed-properties@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz#e0c385507d21e1b0b076d66bed6d5231b85110b7" + integrity sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +"@babel/plugin-transform-destructuring@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz#ad3d7e74584ad5ea4eadb1e6642146c590dee33c" + integrity sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +"@babel/plugin-transform-dotall-regex@^7.16.0", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz#50bab00c1084b6162d0a58a818031cf57798e06f" + integrity sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz#8bc2e21813e3e89e5e5bf3b60aa5fc458575a176" + integrity sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-exponentiation-operator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz#a180cd2881e3533cef9d3901e48dad0fbeff4be4" + integrity sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-for-of@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz#dae384613de8f77c196a8869cbf602a44f7fc0eb" - integrity sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== +"@babel/plugin-transform-for-of@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz#f7abaced155260e2461359bbc7c7248aca5e6bd2" + integrity sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz#02e3699c284c6262236599f751065c5d5f1f400e" + integrity sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg== dependencies: - "@babel/helper-function-name" "^7.14.5" + "@babel/helper-function-name" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz#79711e670ffceb31bd298229d50f3621f7980cac" + integrity sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-member-expression-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz#5251b4cce01eaf8314403d21aedb269d79f5e64b" + integrity sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-modules-amd@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz#09abd41e18dcf4fd479c598c1cef7bd39eb1337e" + integrity sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw== dependencies: - "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.0.tgz#3305896e5835f953b5cdb363acd9e8c2219a5281" - integrity sha512-3H/R9s8cXcOGE8kgMlmjYYC9nqr5ELiPkJn4q0mypBrjhYQoc+5/Maq69vV4xRPWnkzZuwJPf5rArxpB/35Cig== +"@babel/plugin-transform-modules-commonjs@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz#add58e638c8ddc4875bd9a9ecb5c594613f6c922" + integrity sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ== dependencies: - "@babel/helper-module-transforms" "^7.15.0" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.8" + "@babel/helper-simple-access" "^7.16.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz#c75342ef8b30dcde4295d3401aae24e65638ed29" - integrity sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== +"@babel/plugin-transform-modules-systemjs@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz#a92cf240afeb605f4ca16670453024425e421ea4" + integrity sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg== dependencies: - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.15.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-modules-umd@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz#195f26c2ad6d6a391b70880effce18ce625e06a7" + integrity sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg== dependencies: - "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz#d3db61cc5d5b97986559967cd5ea83e5c32096ca" + integrity sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-new-target@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz#af823ab576f752215a49937779a41ca65825ab35" + integrity sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-object-assign@^7.12.13": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz#62537d54b6d85de04f4df48bfdba2eebff17b760" - integrity sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.0.tgz#750c726397f1f6402fb1ceffe9d8ff3595c8a0df" + integrity sha512-TftKY6Hxo5Uf/EIoC3BKQyLvlH46tbtK4xub90vzi9+yS8z1+O/52YHyywCZvYeLPOvv//1j3BPokLuHTWPcbg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-object-super@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz#fb20d5806dc6491a06296ac14ea8e8d6fedda72b" + integrity sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-replace-supers" "^7.16.0" -"@babel/plugin-transform-parameters@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" - integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== +"@babel/plugin-transform-parameters@^7.16.0", "@babel/plugin-transform-parameters@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz#fa9e4c874ee5223f891ee6fa8d737f4766d31d15" + integrity sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-property-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz#a95c552189a96a00059f6776dc4e00e3690c78d1" + integrity sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-react-display-name@^7.14.5": - version "7.15.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" - integrity sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q== +"@babel/plugin-transform-react-display-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz#9a0ad8aa8e8790883a7bd2736f66229a58125676" + integrity sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-react-jsx-development@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz#1a6c73e2f7ed2c42eebc3d2ad60b0c7494fcb9af" - integrity sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== +"@babel/plugin-transform-react-jsx-development@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz#1cb52874678d23ab11d0d16488d54730807303ef" + integrity sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw== dependencies: - "@babel/plugin-transform-react-jsx" "^7.14.5" + "@babel/plugin-transform-react-jsx" "^7.16.0" -"@babel/plugin-transform-react-jsx@^7.14.3", "@babel/plugin-transform-react-jsx@^7.14.5": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" - integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== +"@babel/plugin-transform-react-jsx@^7.14.3", "@babel/plugin-transform-react-jsx@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz#55b797d4960c3de04e07ad1c0476e2bc6a4889f1" + integrity sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/types" "^7.14.9" + "@babel/plugin-syntax-jsx" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/plugin-transform-react-pure-annotations@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz#18de612b84021e3a9802cbc212c9d9f46d0d11fc" - integrity sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== +"@babel/plugin-transform-react-pure-annotations@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz#23db6ddf558d8abde41b8ad9d59f48ad5532ccab" + integrity sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-regenerator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz#eaee422c84b0232d03aea7db99c97deeaf6125a4" + integrity sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-reserved-words@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz#fff4b9dcb19e12619394bda172d14f2d04c0379c" + integrity sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-runtime@^7.14.3": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" - integrity sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw== + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz#f9ba3c7034d429c581e1bd41b4952f3db3c2c7e8" + integrity sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A== dependencies: - "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-shorthand-properties@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz#090372e3141f7cc324ed70b3daf5379df2fa384d" + integrity sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-spread@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" - integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== +"@babel/plugin-transform-spread@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz#d21ca099bbd53ab307a8621e019a7bd0f40cdcfb" + integrity sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-sticky-regex@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz#c35ea31a02d86be485f6aa510184b677a91738fd" + integrity sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-template-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz#a8eced3a8e7b8e2d40ec4ec4548a45912630d302" + integrity sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-typeof-symbol@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz#8b19a244c6f8c9d668dca6a6f754ad6ead1128f2" + integrity sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-typescript@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.0.tgz#553f230b9d5385018716586fc48db10dd228eb7e" - integrity sha512-WIIEazmngMEEHDaPTx0IZY48SaAmjVWe3TRSX7cmJXn0bEv9midFzAjxiruOWYIVf5iQ10vFx7ASDpgEO08L5w== +"@babel/plugin-transform-typescript@^7.16.0": + version "7.16.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz#cc0670b2822b0338355bc1b3d2246a42b8166409" + integrity sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.0" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" + "@babel/plugin-syntax-typescript" "^7.16.0" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-unicode-escapes@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz#1a354064b4c45663a32334f46fa0cf6100b5b1f3" + integrity sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-unicode-regex@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz#293b80950177c8c85aede87cef280259fb995402" + integrity sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/preset-env@^7.14.2": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.0.tgz#e2165bf16594c9c05e52517a194bf6187d6fe464" - integrity sha512-FhEpCNFCcWW3iZLg0L2NPE9UerdtsCR6ZcsGHUX6Om6kbCQeL5QZDqFDmeNHC6/fy6UH3jEge7K4qG5uC9In0Q== + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.4.tgz#4f6ec33b2a3fe72d6bfdcdf3859500232563a2e3" + integrity sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.0" + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-async-generator-functions" "^7.14.9" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.14.5" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.14.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.14.5" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-async-generator-functions" "^7.16.4" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-class-static-block" "^7.16.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.0" + "@babel/plugin-proposal-export-namespace-from" "^7.16.0" + "@babel/plugin-proposal-json-strings" "^7.16.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-object-rest-spread" "^7.16.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-proposal-private-property-in-object" "^7.16.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.0" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -853,50 +861,50 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.14.5" - "@babel/plugin-transform-classes" "^7.14.9" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.14.5" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.0" - "@babel/plugin-transform-modules-systemjs" "^7.14.5" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.14.5" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.0" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" + "@babel/plugin-transform-arrow-functions" "^7.16.0" + "@babel/plugin-transform-async-to-generator" "^7.16.0" + "@babel/plugin-transform-block-scoped-functions" "^7.16.0" + "@babel/plugin-transform-block-scoping" "^7.16.0" + "@babel/plugin-transform-classes" "^7.16.0" + "@babel/plugin-transform-computed-properties" "^7.16.0" + "@babel/plugin-transform-destructuring" "^7.16.0" + "@babel/plugin-transform-dotall-regex" "^7.16.0" + "@babel/plugin-transform-duplicate-keys" "^7.16.0" + "@babel/plugin-transform-exponentiation-operator" "^7.16.0" + "@babel/plugin-transform-for-of" "^7.16.0" + "@babel/plugin-transform-function-name" "^7.16.0" + "@babel/plugin-transform-literals" "^7.16.0" + "@babel/plugin-transform-member-expression-literals" "^7.16.0" + "@babel/plugin-transform-modules-amd" "^7.16.0" + "@babel/plugin-transform-modules-commonjs" "^7.16.0" + "@babel/plugin-transform-modules-systemjs" "^7.16.0" + "@babel/plugin-transform-modules-umd" "^7.16.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.0" + "@babel/plugin-transform-new-target" "^7.16.0" + "@babel/plugin-transform-object-super" "^7.16.0" + "@babel/plugin-transform-parameters" "^7.16.3" + "@babel/plugin-transform-property-literals" "^7.16.0" + "@babel/plugin-transform-regenerator" "^7.16.0" + "@babel/plugin-transform-reserved-words" "^7.16.0" + "@babel/plugin-transform-shorthand-properties" "^7.16.0" + "@babel/plugin-transform-spread" "^7.16.0" + "@babel/plugin-transform-sticky-regex" "^7.16.0" + "@babel/plugin-transform-template-literals" "^7.16.0" + "@babel/plugin-transform-typeof-symbol" "^7.16.0" + "@babel/plugin-transform-unicode-escapes" "^7.16.0" + "@babel/plugin-transform-unicode-regex" "^7.16.0" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.0" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -905,63 +913,63 @@ esutils "^2.0.2" "@babel/preset-react@^7.13.13": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.14.5.tgz#0fbb769513f899c2c56f3a882fa79673c2d4ab3c" - integrity sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.0.tgz#f71d3e8dff5218478011df037fad52660ee6d82a" + integrity sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-react-display-name" "^7.14.5" - "@babel/plugin-transform-react-jsx" "^7.14.5" - "@babel/plugin-transform-react-jsx-development" "^7.14.5" - "@babel/plugin-transform-react-pure-annotations" "^7.14.5" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-react-jsx" "^7.16.0" + "@babel/plugin-transform-react-jsx-development" "^7.16.0" + "@babel/plugin-transform-react-pure-annotations" "^7.16.0" "@babel/preset-typescript@^7.13.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz#e8fca638a1a0f64f14e1119f7fe4500277840945" - integrity sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.0.tgz#b0b4f105b855fb3d631ec036cdc9d1ffd1fa5eac" + integrity sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-typescript" "^7.15.0" + "@babel/plugin-transform-typescript" "^7.16.0" "@babel/runtime@^7.14.0", "@babel/runtime@^7.8.4": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" - integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" + integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== +"@babel/template@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" - integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" + integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.0" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.3" + "@babel/types" "^7.16.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.14.9", "@babel/types@^7.15.0", "@babel/types@^7.4.4": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" - integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== +"@babel/types@^7.16.0", "@babel/types@^7.4.4": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== dependencies: - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" "@flarum/prettier-config@^1.0.0": @@ -970,14 +978,14 @@ integrity sha512-3/AcliIi5jPt4i7COb5hsLv6hm4EeXT9yI9I2EuEvhPi2QR+O9Y/8wrqRuO5mDkRzCIhUY+mjIL/f9770Zwfqg== "@polka/url@^1.0.0-next.20": - version "1.0.0-next.20" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.20.tgz#111b5db0f501aa89b05076fa31f0ea0e0c292cd3" - integrity sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q== + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== "@types/jquery@^3.5.5": - version "3.5.6" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.6.tgz#97ac8e36dccd8ad8ed3f3f3b48933614d9fd8cf0" - integrity sha512-SmgCQRzGPId4MZQKDj9Hqc6kSXFNWZFHpELkyK8AQhf8Zr6HKfCzFv9ZC1Fv3FyQttJZOlap3qYb12h61iZAIg== + version "3.5.8" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.8.tgz#83bfbcdf4e625c5471590f92703c06aadb052a09" + integrity sha512-cXk6NwqjDYg+UI9p2l3x0YmPa4m7RrXqmbK4IpVVpRJiYXU/QTo+UZrn54qfE1+9Gao4qpYqUnxm5ZCy2FTXAw== dependencies: "@types/sizzle" "*" @@ -1157,9 +1165,9 @@ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== acorn-walk@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" - integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^6.4.1: version "6.4.2" @@ -1167,9 +1175,9 @@ acorn@^6.4.1: integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^8.0.4: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + version "8.6.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" + integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== ajv-errors@^1.0.0: version "1.0.1" @@ -1285,9 +1293,9 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -1301,29 +1309,29 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" + integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz#68cb81316b0e8d9d721a92e0009ec6ecd4cd2ca9" - integrity sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ== +babel-plugin-polyfill-corejs3@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" + integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.14.0" + "@babel/helper-define-polyfill-provider" "^0.3.0" + core-js-compat "^3.18.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" + integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" balanced-match@^1.0.0: version "1.0.2" @@ -1482,16 +1490,16 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.16.6, browserslist@^4.16.8: - version "4.16.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.8.tgz#cb868b0b554f137ba6e33de0ecff2eda403c4fb0" - integrity sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ== +browserslist@^4.17.5, browserslist@^4.17.6: + version "4.18.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" + integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== dependencies: - caniuse-lite "^1.0.30001251" - colorette "^1.3.0" - electron-to-chromium "^1.3.811" + caniuse-lite "^1.0.30001280" + electron-to-chromium "^1.3.896" escalade "^3.1.1" - node-releases "^1.1.75" + node-releases "^2.0.1" + picocolors "^1.0.0" buffer-from@^1.0.0: version "1.1.2" @@ -1566,10 +1574,10 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001251: - version "1.0.30001252" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001252.tgz#cb16e4e3dafe948fc4a9bb3307aea054b912019a" - integrity sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw== +caniuse-lite@^1.0.30001280: + version "1.0.30001282" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" + integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" @@ -1691,20 +1699,15 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" - integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commondir@^1.0.1: version "1.0.1" @@ -1765,18 +1768,18 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.14.0, core-js-compat@^3.16.0: - version "3.16.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.16.4.tgz#cf28abe0e45a43645b04b2c1a073efa03d0b3b26" - integrity sha512-IzCSomxRdahCYb6G3HiN6pl3JCiM0NMunRcNa1pIeC7g17Vd6Ue3AT9anQiENPIm/svThUVer1pIbLMDERIsFw== +core-js-compat@^3.18.0, core-js-compat@^3.19.1: + version "3.19.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.1.tgz#fe598f1a9bf37310d77c3813968e9f7c7bb99476" + integrity sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g== dependencies: - browserslist "^4.16.8" + browserslist "^4.17.6" semver "7.0.0" core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== create-ecdh@^4.0.0: version "4.0.4" @@ -1843,9 +1846,9 @@ cyclist@^1.0.1: integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= dayjs@^1.10.4: - version "1.10.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.6.tgz#288b2aa82f2d8418a6c9d4df5898c0737ad02a63" - integrity sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw== + version "1.10.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" + integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -1942,10 +1945,10 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -electron-to-chromium@^1.3.811: - version "1.3.822" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.822.tgz#7036edc7f669b0aa79e9801dc5f56866c6ddc0b2" - integrity sha512-k7jG5oYYHxF4jx6PcqwHX3JVME/OjzolqOZiIogi9xtsfsmTjTdie4x88OakYFPEa8euciTgCCzvVNwvmjHb1Q== +electron-to-chromium@^1.3.896: + version "1.3.904" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz#52a353994faeb0f2a9fab3606b4e0614d1af7b58" + integrity sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw== elliptic@^6.5.3: version "6.5.4" @@ -2024,9 +2027,9 @@ estraverse@^4.1.1: integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" @@ -2142,9 +2145,9 @@ find-cache-dir@^2.1.0: pkg-dir "^3.0.0" find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" make-dir "^3.0.2" @@ -2176,9 +2179,9 @@ findup-sync@^3.0.0: resolve-dir "^1.0.1" flarum-tsconfig@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flarum-tsconfig/-/flarum-tsconfig-1.0.1.tgz#3b0fb6a09a65cb8189f194936bb149f80c260eb5" - integrity sha512-8zcsz1Gv6GFqqVZ8RrxwWeq6fBg8HbYBqSrugxBCLGlxdorREaY4jF9oZ9y2eYONb4fpr8owUUEouH7fwFnAmQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/flarum-tsconfig/-/flarum-tsconfig-1.0.2.tgz#1dda4d867a1dddc627c2afbc74af12d602371ecd" + integrity sha512-RUaN7D6noLK9vY1F86NIc+IlIP1YAA3bJ4jGR5pIm8UxvLBLW8qrAHzIosuQJgvnge7VgTA5c2LoNefUK/9EiQ== dependencies: "@types/jquery" "^3.5.5" "@types/mithril" "^2.0.7" @@ -2305,9 +2308,9 @@ glob-parent@~5.1.2: is-glob "^4.0.1" glob@^7.1.3, glob@^7.1.4: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2555,9 +2558,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-core-module@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" - integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== dependencies: has "^1.0.3" @@ -2623,9 +2626,9 @@ is-glob@^3.1.0: is-extglob "^2.1.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -2869,9 +2872,9 @@ miller-rabin@^4.0.0: brorand "^1.0.1" mime@^2.3.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" @@ -3009,10 +3012,10 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.75: - version "1.1.75" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe" - integrity sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== normalize-path@^2.1.1: version "2.1.1" @@ -3193,6 +3196,11 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -3223,9 +3231,9 @@ posix-character-classes@^0.1.0: integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= prettier@^2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" - integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" + integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== process-nextick-args@~2.0.0: version "2.0.1" @@ -3362,14 +3370,14 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +regenerate-unicode-properties@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== dependencies: - regenerate "^1.4.0" + regenerate "^1.4.2" -regenerate@^1.4.0: +regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -3395,26 +3403,26 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + version "4.8.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^9.0.0" + regjsgen "^0.5.2" + regjsparser "^0.7.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" -regjsgen@^0.5.1: +regjsgen@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== -regjsparser@^0.6.4: - version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== +regjsparser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== dependencies: jsesc "~0.5.0" @@ -3606,9 +3614,9 @@ shebang-regex@^1.0.0: integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= sirv@^1.0.7: - version "1.0.17" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.17.tgz#86e2c63c612da5a1dace1c16c46f524aaa26ac45" - integrity sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw== + version "1.0.18" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.18.tgz#105fab52fb656ce8a2bebbf36b11052005952899" + integrity sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA== dependencies: "@polka/url" "^1.0.0-next.20" mime "^2.3.1" @@ -3661,9 +3669,9 @@ source-map-resolve@^0.5.0: urix "^0.1.0" source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -3890,32 +3898,32 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^4.3.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86" - integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ== + version "4.5.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" + integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== union-value@^1.0.0: version "1.0.1" @@ -4027,14 +4035,14 @@ watchpack@^1.7.4: watchpack-chokidar2 "^2.0.1" webpack-bundle-analyzer@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz#39898cf6200178240910d629705f0f3493f7d666" - integrity sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" + integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== dependencies: acorn "^8.0.4" acorn-walk "^8.0.0" chalk "^4.1.0" - commander "^6.2.0" + commander "^7.2.0" gzip-size "^6.0.0" lodash "^4.17.20" opener "^1.5.2" @@ -4129,9 +4137,9 @@ wrappy@1: integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ws@^7.3.1: - version "7.5.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.4.tgz#56bfa20b167427e138a7795de68d134fe92e21f9" - integrity sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg== + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index 2f4fc32af..7dc590e93 100755 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -14,7 +14,7 @@ } .PackageManager-lastUpdatedAt { - color: @control-color; + color: var(--control-color); &-label { font-weight: bold; @@ -42,9 +42,9 @@ display: flex; align-items: center; gap: 8px; - background-color: @control-bg; + background-color: var(--control-bg); padding: 8px; - border-radius: @border-radius; + border-radius: var(--border-radius); &-controls { margin-left: auto; @@ -69,22 +69,28 @@ font-weight: bold; &--minor { - background-color: @alert-success-bg; - color: @alert-success-color; + background-color: var(--alert-success-bg); + color: var(--alert-success-color); } &--major { - background-color: @alert-bg; - color: @alert-color; + background-color: var(--alert-bg); + color: var(--alert-color); } } } &--core { + --bg-hover: darken(#e7672e, 5); background-color: #e7672e; color: #fff; --button-color: #fff; - --button-bg-hover: darken(#e7672e, 5); + --button-bg-hover: var(--bg-hover); + + .Button--danger { + color: #fff; + --button-bg-hover: var(--bg-hover); + } } &--core &-icon { @@ -92,19 +98,23 @@ background-color: transparent; filter: grayscale(1) brightness(3.5); } + + &--danger { + background-color: var(--control-danger-bg); + } } .PackageManager-majorUpdate { - border: 2px solid @control-danger-color; - border-radius: @border-radius; - padding: 16px; - background-color: lighten(@control-danger-bg, 5.5); + --space: 16px; + padding: var(--space); display: grid; grid-template-areas: - "logo title" - "logo helpText" - "logo controls"; - grid-gap: 0 16px; + "title logo" + "helpText logo" + "controls logo" + "extensions extensions" + "failure failure"; + grid-gap: 0 var(--space); align-items: center; > img { @@ -118,4 +128,30 @@ > .helpText { grid-area: helpText; } + + &-failure { + --border-radius: 0; + grid-area: failure; + margin: calc(~"0px - var(--space)"); + margin-top: var(--space); + } + + &-incompatibleExtensions { + grid-area: extensions; + margin-top: var(--space); + padding-top: var(--space); + border-top: 1px solid var(--control-bg); + } +} + +.Form-group--danger { + border: 2px solid var(--alert-error-bg); + border-radius: var(--border-radius); + background-color: transparent; +} + +.WhyNotModal { + &-contents { + overflow-x: auto; + } } diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 8099d37f0..972cf6027 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -1,6 +1,7 @@ flarum-package-manager: admin: exceptions: + composer_command_failure: Failed to execute. Check the composer logs in storage/logs/composer. extension_already_installed: Extension is already installed. extension_not_installed: Extension not found. @@ -11,6 +12,7 @@ flarum-package-manager: Please wait until the extensions are updated to be compatible by the authors, or remove them before proceeding. extensions: + check_why_it_failed_updating: Show why it did not update to the latest. install: Install a new extension install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions. proceed: Proceed @@ -26,6 +28,10 @@ flarum-package-manager: description: Major Flarum updates are not backwards compatible, meaning that some of your currently installed extensions, and manually made modifications might not work with this new version. dry_run: Dry Run dry_run_help: A dry run emulates the update to see if your current setup can safely update, this does not mean that your manual made custom modifications will work in the newer version. + failure: + desc: The last major update failed, some installed extensions are not compatible with the new major release. + why: Find out more + title: Flarum {version} Major Update Available update: Update @@ -42,3 +48,6 @@ flarum-package-manager: updater_help: Runs a check for new extension and Flarum updates. update_successful: Flarum successfully updated. + + why_not_modal: + title: Why Won't it Update diff --git a/extensions/package-manager/src/Api/Controller/WhyNotController.php b/extensions/package-manager/src/Api/Controller/WhyNotController.php new file mode 100755 index 000000000..4732a0ec4 --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/WhyNotController.php @@ -0,0 +1,47 @@ +bus = $bus; + } + + public function handle(ServerRequestInterface $request): ResponseInterface + { + $actor = RequestUtil::getActor($request); + $package = Arr::get($request->getParsedBody(), 'data.package', ''); + $version = Arr::get($request->getParsedBody(), 'data.version', '*'); + + $whyNot = $this->bus->dispatch( + new WhyNot($actor, $package, $version) + ); + + return new JsonResponse([ + 'data' => compact('whyNot') + ]); + } +} diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index ec004286a..1ba1d1f90 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -11,7 +11,7 @@ namespace Flarum\PackageManager\Command; use Flarum\PackageManager\Composer\ComposerAdapter; use Flarum\PackageManager\Exception\ComposerCommandFailedException; -use Flarum\PackageManager\LastUpdateCheck; +use Flarum\PackageManager\Settings\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; class CheckForUpdatesHandler @@ -22,7 +22,7 @@ class CheckForUpdatesHandler protected $composer; /** - * @var LastUpdateCheck + * @var \Flarum\PackageManager\Settings\LastUpdateCheck */ protected $lastUpdateCheck; @@ -95,7 +95,9 @@ class CheckForUpdatesHandler } } - return $this->lastUpdateCheck->save($firstOutput); + return $this->lastUpdateCheck + ->with('installed', $firstOutput['installed']) + ->save(); } /** diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php index c316b3729..ab2ffa2b7 100644 --- a/extensions/package-manager/src/Command/MajorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -15,7 +15,7 @@ use Flarum\PackageManager\Exception\MajorUpdateFailedException; use Flarum\PackageManager\Exception\NoNewMajorVersionException; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Event\FlarumUpdated; -use Flarum\PackageManager\LastUpdateCheck; +use Flarum\PackageManager\Settings\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; class MajorUpdateHandler @@ -68,6 +68,28 @@ class MajorUpdateHandler { $command->actor->assertAdmin(); + // @todo remove testing code + throw new MajorUpdateFailedException( + '*', + 'Loading composer repositories with package information +Updating dependencies +Your requirements could not be resolved to an installable set of packages. + + Problem 1 + - Root composer.json requires flarum/tags * -> satisfiable by flarum/tags[1.0.0]. + - flarum/tags 1.0.0 requires flarum/core >=0.1.0-beta.15 <0.1.0-beta.16 -> found flarum/core[v0.1.0-beta.15] but it conflicts with your root composer.json require (^1.1.1). + Problem 2 + - Root composer.json requires sycho/flarum-profile-cover * -> satisfiable by sycho/flarum-profile-cover[1.0.0]. + - sycho/flarum-profile-cover 1.0.0 requires flarum/core >=0.1.0-beta.15 <=0.1.0-beta.16 -> found flarum/core[v0.1.0-beta.15, v0.1.0-beta.16] but it conflicts with your root composer.json require (^1.1.1). + Problem 3 + - Root composer.json requires askvortsov/flarum-auto-moderator * -> satisfiable by askvortsov/flarum-auto-moderator[1.0.0]. + - askvortsov/flarum-auto-moderator 1.0.0 requires flarum/core 0.1.0-beta.15 -> found flarum/core[v0.1.0-beta.15] but it conflicts with your root composer.json require (^1.1.1). + +Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems. + ', + '2.0', + ); + $majorVersion = $this->lastUpdateCheck->getNewMajorVersion(); if (! $majorVersion) { @@ -91,6 +113,9 @@ class MajorUpdateHandler return true; } + /** + * @todo change minimum stability to 'stable' and any other similar params + */ protected function updateComposerJson(string $majorVersion): void { $versionNumber = str_replace('v', '', $majorVersion); diff --git a/extensions/package-manager/src/Command/MinorUpdateHandler.php b/extensions/package-manager/src/Command/MinorUpdateHandler.php index c5af1b869..16e5b3225 100755 --- a/extensions/package-manager/src/Command/MinorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorUpdateHandler.php @@ -14,7 +14,7 @@ use Flarum\PackageManager\Composer\ComposerJson; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; -use Flarum\PackageManager\LastUpdateCheck; +use Flarum\PackageManager\Settings\LastUpdateCheck; use Symfony\Component\Console\Input\StringInput; class MinorUpdateHandler @@ -25,7 +25,7 @@ class MinorUpdateHandler protected $composer; /** - * @var LastUpdateCheck + * @var \Flarum\PackageManager\Settings\LastUpdateCheck */ protected $lastUpdateCheck; diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index c0802e404..11f4f0b5e 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -16,7 +16,7 @@ use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\Exception\ExtensionNotInstalledException; use Flarum\PackageManager\Extension\Event\Updated; use Flarum\PackageManager\UpdateExtensionValidator; -use Flarum\PackageManager\LastUpdateCheck; +use Flarum\PackageManager\Settings\LastUpdateCheck; use Symfony\Component\Console\Input\StringInput; class UpdateExtensionHandler @@ -84,8 +84,6 @@ class UpdateExtensionHandler throw new ComposerUpdateFailedException($extension->name, $output->getContents()); } - $this->lastUpdateCheck->forget($extension->name); - $this->events->dispatch( new Updated($extension) ); diff --git a/extensions/package-manager/src/Command/WhyNot.php b/extensions/package-manager/src/Command/WhyNot.php new file mode 100755 index 000000000..924dde4cb --- /dev/null +++ b/extensions/package-manager/src/Command/WhyNot.php @@ -0,0 +1,37 @@ +actor = $actor; + $this->package = $package; + $this->version = $version; + } +} diff --git a/extensions/package-manager/src/Command/WhyNotHandler.php b/extensions/package-manager/src/Command/WhyNotHandler.php new file mode 100755 index 000000000..a8481516a --- /dev/null +++ b/extensions/package-manager/src/Command/WhyNotHandler.php @@ -0,0 +1,65 @@ +composer = $composer; + $this->validator = $validator; + $this->events = $events; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws \Exception + */ + public function handle(WhyNot $command) + { + $command->actor->assertAdmin(); + + $this->validator->assertValid([ + 'package' => $command->package, + 'version' => $command->version + ]); + + $output = $this->composer->run( + new StringInput("why-not $command->package $command->version") + ); + + if ($output->getExitCode() !== 0) { + throw new ComposerRequireFailedException($command->package, $output->getContents()); + } + + return $output->getContents(); + } +} diff --git a/extensions/package-manager/src/Composer/ComposerAdapter.php b/extensions/package-manager/src/Composer/ComposerAdapter.php index 8cdc827dc..5403b90d2 100644 --- a/extensions/package-manager/src/Composer/ComposerAdapter.php +++ b/extensions/package-manager/src/Composer/ComposerAdapter.php @@ -43,6 +43,8 @@ class ComposerAdapter public function run(InputInterface $input): ComposerOutput { + $this->application->resetComposer(); + $exitCode = $this->application->run($input, $this->output); $outputContents = $this->output->fetch(); diff --git a/extensions/package-manager/src/Event/FlarumUpdated.php b/extensions/package-manager/src/Event/FlarumUpdated.php index 85194666c..108d10ab9 100644 --- a/extensions/package-manager/src/Event/FlarumUpdated.php +++ b/extensions/package-manager/src/Event/FlarumUpdated.php @@ -14,8 +14,8 @@ use Flarum\User\User; class FlarumUpdated { public const GLOBAL = 'global'; - public const MAJOR = 'major'; public const MINOR = 'minor'; + public const MAJOR = 'major'; /** * @var User diff --git a/extensions/package-manager/src/Exception/MajorUpdateFailedException.php b/extensions/package-manager/src/Exception/MajorUpdateFailedException.php index d82517c22..e494176cf 100644 --- a/extensions/package-manager/src/Exception/MajorUpdateFailedException.php +++ b/extensions/package-manager/src/Exception/MajorUpdateFailedException.php @@ -1,8 +1,17 @@ for(FlarumUpdated::MAJOR) + ->with('status', LastUpdateRun::FAILURE) + ->with('incompatibleExtensions', $this->details['incompatible_extensions']) + ->save(); + return 'extensions_incompatible_with_new_major'; } diff --git a/extensions/package-manager/src/LastUpdateCheck.php b/extensions/package-manager/src/LastUpdateCheck.php deleted file mode 100755 index 752306f5b..000000000 --- a/extensions/package-manager/src/LastUpdateCheck.php +++ /dev/null @@ -1,78 +0,0 @@ -settings = $settings; - } - - public function save(array $updates): array - { - $lastUpdateCheck = [ - 'checkedAt' => Carbon::now(), - 'updates' => $updates, - ]; - - $this->settings->set(self::KEY, json_encode($lastUpdateCheck)); - - return $lastUpdateCheck; - } - - public function get(): array - { - return json_decode($this->settings->get(self::KEY), true); - } - - public function getNewMajorVersion(): ?string - { - $core = Arr::first(Arr::get($this->get(), 'updates.installed', []), function ($package) { - return $package['name'] === 'flarum/core'; - }); - - return $core ? $core['latest-major'] : null; - } - - public function forget(string $name): void - { - $lastUpdateCheck = $this->get(); - - if (isset($lastUpdateCheck['updates']) && ! empty($lastUpdateCheck['updates']['installed'])) { - $updatesListChanged = false; - - foreach ($lastUpdateCheck['updates']['installed'] as $k => $package) { - if ($package['name'] === $name) { - unset($lastUpdateCheck['updates']['installed'][$k]); - $updatesListChanged = true; - break; - } - } - - if ($updatesListChanged) { - $lastUpdateCheck['updates']['installed'] = array_values($lastUpdateCheck['updates']['installed']); - $this->settings->set(self::KEY, json_encode($lastUpdateCheck)); - } - } - } -} diff --git a/extensions/package-manager/src/Listener/FlarumUpdateListener.php b/extensions/package-manager/src/Listener/ClearCacheAfterUpdate.php similarity index 66% rename from extensions/package-manager/src/Listener/FlarumUpdateListener.php rename to extensions/package-manager/src/Listener/ClearCacheAfterUpdate.php index 57ff839aa..75a9417f0 100644 --- a/extensions/package-manager/src/Listener/FlarumUpdateListener.php +++ b/extensions/package-manager/src/Listener/ClearCacheAfterUpdate.php @@ -10,15 +10,13 @@ namespace Flarum\PackageManager\Listener; use Composer\Command\ClearCacheCommand; -use Flarum\Bus\Dispatcher; use Flarum\Database\Console\MigrateCommand; use Flarum\Foundation\Console\AssetsPublishCommand; -use Flarum\PackageManager\Command\CheckForUpdates; use Flarum\PackageManager\Event\FlarumUpdated; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\NullOutput; -class FlarumUpdateListener +class ClearCacheAfterUpdate { /** * @var ClearCacheCommand @@ -35,36 +33,20 @@ class FlarumUpdateListener */ private $migrate; - /** - * @var Dispatcher - */ - private $bus; - - /** - * @param ClearCacheCommand $clearCache - * @param AssetsPublishCommand $publishAssets - * @param MigrateCommand $migrate - * @param Dispatcher $bus - */ - public function __construct(ClearCacheCommand $clearCache, AssetsPublishCommand $publishAssets, MigrateCommand $migrate, Dispatcher $bus) + public function __construct(ClearCacheCommand $clearCache, AssetsPublishCommand $publishAssets, MigrateCommand $migrate) { $this->clearCache = $clearCache; $this->publishAssets = $publishAssets; $this->migrate = $migrate; - $this->bus = $bus; } /** * @throws \Exception */ - public function handle(FlarumUpdated $event) + public function handle(FlarumUpdated $event): void { $this->clearCache->run(new ArrayInput([]), new NullOutput()); $this->migrate->run(new ArrayInput([]), new NullOutput()); $this->publishAssets->run(new ArrayInput([]), new NullOutput()); - - $this->bus->dispatch( - new CheckForUpdates($event->actor) - ); } } diff --git a/extensions/package-manager/src/Listener/ReCheckForUpdates.php b/extensions/package-manager/src/Listener/ReCheckForUpdates.php new file mode 100644 index 000000000..dfb60dca1 --- /dev/null +++ b/extensions/package-manager/src/Listener/ReCheckForUpdates.php @@ -0,0 +1,68 @@ +lastUpdateRun = $lastUpdateRun; + $this->lastUpdateCheck = $lastUpdateCheck; + $this->bus = $bus; + } + + /** + * @param FlarumUpdated|Updated $event + */ + public function handle($event): void + { + $previousUpdateCheck = $this->lastUpdateCheck->get(); + + $lastUpdateCheck = $this->bus->dispatch( + new CheckForUpdates($event->actor) + ); + + if ($event instanceof FlarumUpdated) { + $mapPackageName = function (array $package) { + return $package['name']; + }; + + $previousPackages = array_map($mapPackageName, $previousUpdateCheck['updates']['installed']); + $lastPackages = array_map($mapPackageName, $lastUpdateCheck['updates']['installed']); + + $this->lastUpdateRun + ->for($event->type) + ->with('status', LastUpdateRun::SUCCESS) + ->with('limitedPackages', array_intersect($previousPackages, $lastPackages)) + ->save(); + } + } +} diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 1da9a1d2c..630bc9d53 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -17,6 +17,7 @@ use Flarum\Foundation\Paths; use Flarum\Frontend\RecompileFrontendAssets; use Flarum\Locale\LocaleManager; use Flarum\PackageManager\Composer\ComposerAdapter; +use Flarum\PackageManager\Listener\ReCheckForUpdates; use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Events\Dispatcher; use Monolog\Formatter\LineFormatter; @@ -24,7 +25,7 @@ use Monolog\Handler\RotatingFileHandler; use Monolog\Logger; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Extension\Event\Updated; -use Flarum\PackageManager\Listener\FlarumUpdateListener; +use Flarum\PackageManager\Listener\ClearCacheAfterUpdate; class PackageManagerServiceProvider extends AbstractServiceProvider { @@ -89,6 +90,7 @@ class PackageManagerServiceProvider extends AbstractServiceProvider } ); - $events->listen(FlarumUpdated::class, FlarumUpdateListener::class); + $events->listen(FlarumUpdated::class, ClearCacheAfterUpdate::class); + $events->listen([FlarumUpdated::class, Updated::class], ReCheckForUpdates::class); } } diff --git a/extensions/package-manager/src/RequirePackageValidator.php b/extensions/package-manager/src/RequirePackageValidator.php index 6667ce5d6..51fedf355 100755 --- a/extensions/package-manager/src/RequirePackageValidator.php +++ b/extensions/package-manager/src/RequirePackageValidator.php @@ -13,10 +13,12 @@ use Flarum\Foundation\AbstractValidator; class RequirePackageValidator extends AbstractValidator { + public const PACKAGE_NAME_REGEX = '/^[A-z0-9-_]+\/[A-z-0-9]+(?::[A-z-0-9.->=<_]+){0,1}$/i'; + /** * {@inheritdoc} */ protected $rules = [ - 'package' => ['required', 'string', 'regex:/^[A-z0-9-_]+\/[A-z-0-9]+(?::[A-z-0-9.->=<_]+){0,1}$/i'] + 'package' => ['required', 'string', 'regex:'.self::PACKAGE_NAME_REGEX] ]; } diff --git a/extensions/package-manager/src/Settings/JsonSetting.php b/extensions/package-manager/src/Settings/JsonSetting.php new file mode 100644 index 000000000..eb214a1c7 --- /dev/null +++ b/extensions/package-manager/src/Settings/JsonSetting.php @@ -0,0 +1,16 @@ +settings = $settings; + } + + public function with(string $key, $value): JsonSetting + { + $this->data[$key] = $value; + + return $this; + } + + public function save(): array + { + $lastUpdateCheck = [ + 'checkedAt' => Carbon::now(), + 'updates' => $this->data, + ]; + + $this->settings->set($this->key(), json_encode($lastUpdateCheck)); + + return $lastUpdateCheck; + } + + public function get(): array + { + return json_decode($this->settings->get($this->key()), true); + } + + public static function key(): string + { + return 'flarum-package-manager.last_update_check'; + } + + public static function default(): array + { + return [ + 'checkedAt' => null, + 'updates' => [ + 'installed' => [], + ], + ]; + } + + public function getNewMajorVersion(): ?string + { + $core = Arr::first(Arr::get($this->get(), 'updates.installed', []), function ($package) { + return $package['name'] === 'flarum/core'; + }); + + return $core ? $core['latest-major'] : null; + } +} diff --git a/extensions/package-manager/src/Settings/LastUpdateRun.php b/extensions/package-manager/src/Settings/LastUpdateRun.php new file mode 100644 index 000000000..0ccc773ed --- /dev/null +++ b/extensions/package-manager/src/Settings/LastUpdateRun.php @@ -0,0 +1,91 @@ +settings = $settings; + $this->data = self::default(); + } + + public function for(string $update): self + { + if (! in_array($update, [FlarumUpdated::MAJOR, FlarumUpdated::MINOR, FlarumUpdated::GLOBAL])) { + throw new \InvalidArgumentException("Last update runs can only be for one of: minor, major, global"); + } + + $this->activeUpdate = $update; + + return $this; + } + + public function with(string $key, $value): JsonSetting + { + $this->data[$this->activeUpdate][$key] = $value; + + return $this; + } + + public function save(): array + { + $this->data[$this->activeUpdate]['ranAt'] = Carbon::now(); + + $this->settings->set(self::key(), json_encode($this->data)); + + return $this->data; + } + + public function get(): array + { + return json_decode($this->settings->get(self::key()), true); + } + + public static function key(): string + { + return 'flarum-package-manager.last_update_run'; + } + + public static function default(): array + { + $defaultState = [ + 'ranAt' => null, + 'status' => null, + 'limitedPackages' => [], + 'incompatibleExtensions' => [], + ]; + + return [ + FlarumUpdated::GLOBAL => $defaultState, + FlarumUpdated::MINOR => $defaultState, + FlarumUpdated::MAJOR => $defaultState, + ]; + } +} diff --git a/extensions/package-manager/src/WhyNotValidator.php b/extensions/package-manager/src/WhyNotValidator.php new file mode 100644 index 000000000..d49a6dc4a --- /dev/null +++ b/extensions/package-manager/src/WhyNotValidator.php @@ -0,0 +1,16 @@ + ['required', 'string', 'regex:'.RequirePackageValidator::PACKAGE_NAME_REGEX], + 'version' => ['sometimes', 'string', 'regex:/(?:\*|[A-z0-9.-]+)/i'] + ]; +}