From 5d3804c7ca5d2ad28cedb24e89125426264c9033 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 1 Sep 2021 17:20:06 +0100 Subject: [PATCH 01/51] init --- extensions/package-manager/.editorconfig | 19 + .../package-manager/.github/workflows/js.yml | 91 + .../.github/workflows/test.yml | 78 + extensions/package-manager/.gitignore | 3 + extensions/package-manager/LICENSE.md | 21 + extensions/package-manager/README.md | 3 + extensions/package-manager/composer.json | 39 + extensions/package-manager/extend.php | 36 + extensions/package-manager/js/admin.js | 1 + extensions/package-manager/js/dist/admin.js | 373 ++ .../package-manager/js/dist/admin.js.map | 1 + extensions/package-manager/js/package.json | 22 + .../js/src/admin/components/Installer.tsx | 58 + .../package-manager/js/src/admin/index.js | 34 + extensions/package-manager/js/tsconfig.json | 11 + .../package-manager/js/webpack.config.js | 1 + extensions/package-manager/js/yarn.lock | 4173 +++++++++++++++++ extensions/package-manager/less/admin.less | 6 + extensions/package-manager/locale/en.yml | 7 + ...04_09_000000_create_bazaar_tasks_table.php | 19 + .../src/Api/Controller/ListTaskController.php | 25 + .../Controller/RemoveExtensionController.php | 39 + .../Controller/RequireExtensionController.php | 40 + .../Controller/UpdateExtensionController.php | 42 + .../src/Command/RemoveExtension.php | 24 + .../src/Command/RemoveExtensionHandler.php | 42 + .../src/Command/RequireExtension.php | 24 + .../src/Command/RequireExtensionHandler.php | 91 + .../src/Command/UpdateExtension.php | 24 + .../src/Command/UpdateExtensionHandler.php | 42 + .../src/ComposerEnvironmentProvider.php | 24 + .../src/Extension/Event/Installed.php | 18 + .../src/Extension/Event/Removed.php | 18 + .../src/Extension/Event/Updated.php | 18 + .../src/Extension/ExtensionUtils.php | 14 + .../src/RequirePackageValidator.php | 15 + 36 files changed, 5496 insertions(+) create mode 100644 extensions/package-manager/.editorconfig create mode 100644 extensions/package-manager/.github/workflows/js.yml create mode 100644 extensions/package-manager/.github/workflows/test.yml create mode 100644 extensions/package-manager/.gitignore create mode 100644 extensions/package-manager/LICENSE.md create mode 100644 extensions/package-manager/README.md create mode 100644 extensions/package-manager/composer.json create mode 100644 extensions/package-manager/extend.php create mode 100644 extensions/package-manager/js/admin.js create mode 100644 extensions/package-manager/js/dist/admin.js create mode 100644 extensions/package-manager/js/dist/admin.js.map create mode 100644 extensions/package-manager/js/package.json create mode 100644 extensions/package-manager/js/src/admin/components/Installer.tsx create mode 100644 extensions/package-manager/js/src/admin/index.js create mode 100644 extensions/package-manager/js/tsconfig.json create mode 100644 extensions/package-manager/js/webpack.config.js create mode 100644 extensions/package-manager/js/yarn.lock create mode 100644 extensions/package-manager/less/admin.less create mode 100644 extensions/package-manager/locale/en.yml create mode 100644 extensions/package-manager/migrations/2017_04_09_000000_create_bazaar_tasks_table.php create mode 100644 extensions/package-manager/src/Api/Controller/ListTaskController.php create mode 100644 extensions/package-manager/src/Api/Controller/RemoveExtensionController.php create mode 100644 extensions/package-manager/src/Api/Controller/RequireExtensionController.php create mode 100644 extensions/package-manager/src/Api/Controller/UpdateExtensionController.php create mode 100644 extensions/package-manager/src/Command/RemoveExtension.php create mode 100644 extensions/package-manager/src/Command/RemoveExtensionHandler.php create mode 100644 extensions/package-manager/src/Command/RequireExtension.php create mode 100644 extensions/package-manager/src/Command/RequireExtensionHandler.php create mode 100644 extensions/package-manager/src/Command/UpdateExtension.php create mode 100644 extensions/package-manager/src/Command/UpdateExtensionHandler.php create mode 100644 extensions/package-manager/src/ComposerEnvironmentProvider.php create mode 100644 extensions/package-manager/src/Extension/Event/Installed.php create mode 100644 extensions/package-manager/src/Extension/Event/Removed.php create mode 100644 extensions/package-manager/src/Extension/Event/Updated.php create mode 100644 extensions/package-manager/src/Extension/ExtensionUtils.php create mode 100644 extensions/package-manager/src/RequirePackageValidator.php diff --git a/extensions/package-manager/.editorconfig b/extensions/package-manager/.editorconfig new file mode 100644 index 000000000..a61a3ab36 --- /dev/null +++ b/extensions/package-manager/.editorconfig @@ -0,0 +1,19 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 2 + +[*.{diff,md}] +trim_trailing_whitespace = false + +[*.{php,xml,json}] +indent_size = 4 diff --git a/extensions/package-manager/.github/workflows/js.yml b/extensions/package-manager/.github/workflows/js.yml new file mode 100644 index 000000000..430886795 --- /dev/null +++ b/extensions/package-manager/.github/workflows/js.yml @@ -0,0 +1,91 @@ +name: JS + +on: [workflow_dispatch, push, pull_request] + +env: + NODE_VERSION: 16 + +jobs: + prettier: + name: Prettier + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + cache: "npm" + cache-dependency-path: js/package-lock.json + + - name: Install JS dependencies + run: npm ci + working-directory: ./js + + - name: Check JS formatting + run: npm run format-check + working-directory: ./js + + build-prod: + name: Build and commit + runs-on: ubuntu-latest + needs: [prettier] + + # Only commit JS on push to master branch + # Remember to change in `build-test` job too + if: github.ref == 'refs/heads/<%= mainGitBranch %>' && github.event_name == 'push' + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + cache: "npm" + cache-dependency-path: js/package-lock.json + + # Our action will install npm, cd into `./js`, run `npm run build` and + # `npm run build-typings`, then commit and upload any changes + - name: Build production JS + uses: flarum/action-build@2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + build_script: build + package_manager: yarn + # typings_script: build-typings + + build-test: + name: Test build + runs-on: ubuntu-latest + needs: [prettier] + + # Inverse check of `build-prod` + # Remember to change in `build-prod` job too + if: github.ref != 'refs/heads/<%= mainGitBranch %>' || github.event_name != 'push' + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + cache: "npm" + cache-dependency-path: js/package-lock.json + + # Our action will install npm, cd into `./js`, run `npm run build` and + # `npm run build-typings`, then commit and upload any changes + - name: Build production JS + uses: flarum/action-build@2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + build_script: build + package_manager: yarn + # typings_script: build-typings + do_not_commit: true diff --git a/extensions/package-manager/.github/workflows/test.yml b/extensions/package-manager/.github/workflows/test.yml new file mode 100644 index 000000000..d3cfc5a82 --- /dev/null +++ b/extensions/package-manager/.github/workflows/test.yml @@ -0,0 +1,78 @@ +name: Tests + +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + + strategy: + matrix: + php: [7.3, 7.4, '8.0'] + service: ['mysql:5.7', mariadb] + prefix: ['', flarum_] + + include: + - service: 'mysql:5.7' + db: MySQL + - service: mariadb + db: MariaDB + - prefix: flarum_ + prefixStr: (prefix) + + exclude: + - php: 7.3 + service: 'mysql:5.7' + prefix: flarum_ + - php: 7.3 + service: mariadb + prefix: flarum_ + - php: 8.0 + service: 'mysql:5.7' + prefix: flarum_ + - php: 8.0 + service: mariadb + prefix: flarum_ + + services: + mysql: + image: ${{ matrix.service }} + ports: + - 13306:3306 + + name: 'PHP ${{ matrix.php }} / ${{ matrix.db }} ${{ matrix.prefixStr }}' + + steps: + - uses: actions/checkout@master + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + coverage: xdebug + extensions: curl, dom, gd, json, mbstring, openssl, pdo_mysql, tokenizer, zip + tools: phpunit, composer:v2 + + # The authentication alter is necessary because newer mysql versions use the `caching_sha2_password` driver, + # which isn't supported prior to PHP7.4 + # When we drop support for PHP7.3, we should remove this from the setup. + - name: Create MySQL Database + run: | + sudo systemctl start mysql + mysql -uroot -proot -e 'CREATE DATABASE flarum_test;' --port 13306 + mysql -uroot -proot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';" --port 13306 + + - name: Install Composer dependencies + run: composer install + + - name: Setup Composer tests + run: composer test:setup + env: + DB_PORT: 13306 + DB_PASSWORD: root + DB_PREFIX: ${{ matrix.prefix }} + + - name: Run Composer tests + run: composer test + env: + COMPOSER_PROCESS_TIMEOUT: 600 diff --git a/extensions/package-manager/.gitignore b/extensions/package-manager/.gitignore new file mode 100644 index 000000000..5aaf9f39a --- /dev/null +++ b/extensions/package-manager/.gitignore @@ -0,0 +1,3 @@ +js/node_modules +vendor/ +composer.lock diff --git a/extensions/package-manager/LICENSE.md b/extensions/package-manager/LICENSE.md new file mode 100644 index 000000000..71a61da57 --- /dev/null +++ b/extensions/package-manager/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sami Mazouz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/extensions/package-manager/README.md b/extensions/package-manager/README.md new file mode 100644 index 000000000..caeb5823a --- /dev/null +++ b/extensions/package-manager/README.md @@ -0,0 +1,3 @@ +# Package Manager + +*An Experiment.* diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json new file mode 100644 index 000000000..e22fb1f51 --- /dev/null +++ b/extensions/package-manager/composer.json @@ -0,0 +1,39 @@ +{ + "name": "sycho/flarum-package-manager", + "description": "A Flarum Package Manager.", + "keywords": [ + "extensions", "composer", "packages", "manager", "updater" + ], + "type": "flarum-extension", + "license": "MIT", + "authors": [ + { + "name": "Sami Mazouz", + "email": "sami.mazouz@flarum.org", + "homepage": "https://sycho9.github.io" + } + ], + "support": { + "issues": "https://github.com/SychO9/flarum-package-manager/issues", + "source": "https://github.com/SychO9/flarum-package-manager" + }, + "require": { + "flarum/core": "^1.0.0", + "composer/composer": "^2.0" + }, + "extra": { + "flarum-extension": { + "title": "Package Manager", + "icon": { + "name": "fas fa-box-open", + "backgroundColor": "#117187", + "color": "#fff" + } + } + }, + "autoload": { + "psr-4": { + "SychO\\PackageManager\\": "src/" + } + } +} diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php new file mode 100644 index 000000000..e5c36603c --- /dev/null +++ b/extensions/package-manager/extend.php @@ -0,0 +1,36 @@ +post('/package-manager/extensions', 'package-manager.extensions.require', Api\Controller\RequireExtensionController::class) + ->patch('/package-manager/extensions/{id}', 'package-manager.extensions.update', Api\Controller\UpdateExtensionController::class) + ->delete('/package-manager/extensions/{id}', 'package-manager.extensions.remove', Api\Controller\RemoveExtensionController::class), + + (new Extend\Frontend('admin')) + ->css(__DIR__ . '/less/admin.less') + ->js(__DIR__ . '/js/dist/admin.js'), + + new Extend\Locales(__DIR__ . '/locale'), + + (new Extend\ServiceProvider) + ->register(ComposerEnvironmentProvider::class), + + (new Extend\Console) + ->schedule(TaskCommand::class, function (Event $event) { + $event + ->everyMinute() + ->withoutOverlapping() + ->appendOutputTo(resolve(Paths::class)->storage.'/logs/bazaar-tasks.log'); + }), +]; diff --git a/extensions/package-manager/js/admin.js b/extensions/package-manager/js/admin.js new file mode 100644 index 000000000..13dc041ce --- /dev/null +++ b/extensions/package-manager/js/admin.js @@ -0,0 +1 @@ +export * from './src/admin'; \ No newline at end of file diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js new file mode 100644 index 000000000..f9dc99389 --- /dev/null +++ b/extensions/package-manager/js/dist/admin.js @@ -0,0 +1,373 @@ +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./admin.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "../../core/js/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": +/*!***********************************************************************************************************!*\ + !*** /home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/inheritsLoose.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 _inheritsLoose; }); +/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ "../../core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js"); + +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + Object(_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__["default"])(subClass, superClass); +} + +/***/ }), + +/***/ "../../core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": +/*!************************************************************************************************************!*\ + !*** /home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.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 _setPrototypeOf; }); +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} + +/***/ }), + +/***/ "./admin.js": +/*!******************!*\ + !*** ./admin.js ***! + \******************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _src_admin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/admin */ "./src/admin/index.js"); +/* empty/unused harmony star reexport */ + +/***/ }), + +/***/ "./src/admin/components/Installer.tsx": +/*!********************************************!*\ + !*** ./src/admin/components/Installer.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 Installer; }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../../core/js/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_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); +/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/utils/Stream */ "flarum/common/utils/Stream"); +/* harmony import */ var flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4__); + + + + + + +var Installer = /*#__PURE__*/function (_Component) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(Installer, _Component); + + function Installer() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.packageName = void 0; + _this.isLoading = false; + return _this; + } + + var _proto = Installer.prototype; + + _proto.oninit = function oninit(vnode) { + _Component.prototype.oninit.call(this, vnode); + + this.packageName = flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4___default()(''); + }; + + _proto.view = function view() { + return m("div", { + className: "Form-group" + }, m("label", { + htmlFor: "install-extension" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.install')), m("p", { + className: "helpText" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.install_help', { + extiverse: m("a", { + href: "https://extiverse.com" + }, "extiverse.com") + })), m("div", { + className: "FormControl-container" + }, m("input", { + className: "FormControl", + id: "install-extension", + placeholder: "vendor/package-name", + bidi: this.packageName + }), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { + className: "Button", + icon: "fas fa-download", + onclick: this.onsubmit.bind(this), + loading: this.isLoading + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.proceed')))); + }; + + _proto.data = function data() { + return { + "package": this.packageName() + }; + }; + + _proto.onsubmit = function onsubmit() { + var _this2 = this; + + this.isLoading = true; + 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/extensions", + body: { + data: this.data() + } + }).then(function () { + _this2.isLoading = false; + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + type: 'success', + message: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('core.lib.success') + }); + m.redraw(); + })["catch"](function () { + _this2.isLoading = false; + m.redraw(); + }); + }; + + return Installer; +}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); + + + +/***/ }), + +/***/ "./src/admin/index.js": +/*!****************************!*\ + !*** ./src/admin/index.js ***! + \****************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/common/extend */ "flarum/common/extend"); +/* harmony import */ var flarum_common_extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__); +/* 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_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/admin/components/ExtensionPage */ "flarum/admin/components/ExtensionPage"); +/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); +/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _components_Installer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); + + + + + +flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho-package-manager', function (app) { + app.extensionData["for"]('sycho-package-manager').registerSetting(function () { + return m(_components_Installer__WEBPACK_IMPORTED_MODULE_4__["default"], null); + }); + Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2___default.a.prototype, 'topItems', function (items) { + var _this = this; + + items.add('remove', m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { + className: "Button Button--danger", + icon: "fas fa-times", + onclick: function onclick() { + app.request({ + url: app.forum.attribute('apiUrl') + "/package-manager/extensions/" + _this.extension.id, + method: 'DELETE' + }).then(function () { + app.alerts.show({ + type: 'success', + message: 'Success!' + }); + }); + } + }, "Remove")); + }); +}); + +/***/ }), + +/***/ "flarum/admin/app": +/*!**************************************************!*\ + !*** external "flarum.core.compat['admin/app']" ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/app']; + +/***/ }), + +/***/ "flarum/admin/components/ExtensionPage": +/*!***********************************************************************!*\ + !*** external "flarum.core.compat['admin/components/ExtensionPage']" ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/components/ExtensionPage']; + +/***/ }), + +/***/ "flarum/common/Component": +/*!*********************************************************!*\ + !*** external "flarum.core.compat['common/Component']" ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/Component']; + +/***/ }), + +/***/ "flarum/common/components/Button": +/*!*****************************************************************!*\ + !*** external "flarum.core.compat['common/components/Button']" ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Button']; + +/***/ }), + +/***/ "flarum/common/extend": +/*!******************************************************!*\ + !*** external "flarum.core.compat['common/extend']" ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/extend']; + +/***/ }), + +/***/ "flarum/common/utils/Stream": +/*!************************************************************!*\ + !*** external "flarum.core.compat['common/utils/Stream']" ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/utils/Stream']; + +/***/ }) + +/******/ }); +//# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map new file mode 100644 index 000000000..8eff59a5a --- /dev/null +++ b/extensions/package-manager/js/dist/admin.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager//home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager//home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"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","request","method","url","forum","attribute","body","then","alerts","show","type","message","m","redraw","Component","initializers","add","extensionData","registerSetting","extend","ExtensionPage","items","extension","id"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AACe,SAASA,cAAT,CAAwBC,QAAxB,EAAkCC,UAAlC,EAA8C;AAC3DD,UAAQ,CAACE,SAAT,GAAqBC,MAAM,CAACC,MAAP,CAAcH,UAAU,CAACC,SAAzB,CAArB;AACAF,UAAQ,CAACE,SAAT,CAAmBG,WAAnB,GAAiCL,QAAjC;AACAM,oEAAc,CAACN,QAAD,EAAWC,UAAX,CAAd;AACD,C;;;;;;;;;;;;ACLD;AAAA;AAAe,SAASM,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AAC5CF,iBAAe,GAAGJ,MAAM,CAACG,cAAP,IAAyB,SAASC,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AACxED,KAAC,CAACE,SAAF,GAAcD,CAAd;AACA,WAAOD,CAAP;AACD,GAHD;;AAKA,SAAOD,eAAe,CAACC,CAAD,EAAIC,CAAJ,CAAtB;AACD,C;;;;;;;;;;;;ACPD;AAAA;AAAA,wC;;;;;;;;;;;;;;;;;;;;;;;;ACCA;AACA;AACA;AACA;;IAEqBE,S;;;;;;;;;;;UACnBC,W;UACAC,S,GAAqB,K;;;;;;SAErBC,M,GAAA,gBAAOC,KAAP,EAAmC;AACjC,yBAAMD,MAAN,YAAaC,KAAb;;AAEA,SAAKH,WAAL,GAAmBI,iEAAM,CAAC,EAAD,CAAzB;AACD,G;;SAEDC,I,GAAA,gBAAyB;AACvB,WACE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,aAAO,EAAC;AAAf,OAAoCC,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CAApC,CADF,EAEE;AAAG,eAAS,EAAC;AAAb,OAAyBF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,qDAArB,EAA4E;AACnGC,eAAS,EAAE;AAAG,YAAI,EAAC;AAAR;AADwF,KAA5E,CAAzB,CAFF,EAKE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,eAAS,EAAC,aAAjB;AAA+B,QAAE,EAAC,mBAAlC;AAAsD,iBAAW,EAAC,qBAAlE;AAAwF,UAAI,EAAE,KAAKT;AAAnG,MADF,EAEE,EAAC,sEAAD;AAAQ,eAAS,EAAC,QAAlB;AAA2B,UAAI,EAAC,iBAAhC;AAAkD,aAAO,EAAE,KAAKU,QAAL,CAAcC,IAAd,CAAmB,IAAnB,CAA3D;AAAqF,aAAO,EAAE,KAAKV;AAAnG,OACGK,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CADH,CAFF,CALF,CADF;AAcD,G;;SAEDI,I,GAAA,gBAAY;AACV,WAAO;AACL,iBAAS,KAAKZ,WAAL;AADJ,KAAP;AAGD,G;;SAEDU,Q,GAAA,oBAAiB;AAAA;;AACf,SAAKT,SAAL,GAAiB,IAAjB;AAEAK,2DAAG,CAACO,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKT,uDAAG,CAACU,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,gCAFO;AAGVC,UAAI,EAAE;AACJN,YAAI,EAAE,KAAKA,IAAL;AADF;AAHI,KAAZ,EAMGO,IANH,CAMQ,YAAM;AACZ,YAAI,CAAClB,SAAL,GAAiB,KAAjB;AACAK,6DAAG,CAACc,MAAJ,CAAWC,IAAX,CAAgB;AAAEC,YAAI,EAAE,SAAR;AAAmBC,eAAO,EAAEjB,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,kBAArB;AAA5B,OAAhB;AACAgB,OAAC,CAACC,MAAF;AACD,KAVD,WAUS,YAAM;AACb,YAAI,CAACxB,SAAL,GAAiB,KAAjB;AACAuB,OAAC,CAACC,MAAF;AACD,KAbD;AAcD,G;;;EAlDoCC,8D;;;;;;;;;;;;;;ACNvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEApB,uDAAG,CAACqB,YAAJ,CAAiBC,GAAjB,CAAqB,uBAArB,EAA8C,UAACtB,GAAD,EAAS;AACrDA,KAAG,CAACuB,aAAJ,QACO,uBADP,EAEGC,eAFH,CAEmB,YAAM;AACnB,WACE,EAAC,6DAAD,OADF;AAGH,GANH;AAQAC,qEAAM,CAACC,4EAAa,CAAC1C,SAAf,EAA0B,UAA1B,EAAsC,UAAU2C,KAAV,EAAiB;AAAA;;AAC3DA,SAAK,CAACL,GAAN,CACE,QADF,EAEE,EAAC,sEAAD;AACE,eAAS,EAAC,uBADZ;AAEE,UAAI,EAAC,cAFP;AAGE,aAAO,EAAE,mBAAM;AACbtB,WAAG,CAACO,OAAJ,CAAY;AACVE,aAAG,EAAKT,GAAG,CAACU,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,oCAAiE,KAAI,CAACiB,SAAL,CAAeC,EADzE;AAEVrB,gBAAM,EAAE;AAFE,SAAZ,EAGGK,IAHH,CAGQ,YAAM;AACZb,aAAG,CAACc,MAAJ,CAAWC,IAAX,CAAgB;AAAEC,gBAAI,EAAE,SAAR;AAAmBC,mBAAO,EAAE;AAA5B,WAAhB;AACD,SALD;AAMD;AAVH,gBAFF;AAgBD,GAjBK,CAAN;AAkBD,CA3BD,E;;;;;;;;;;;ACNA,iD;;;;;;;;;;;ACAA,sE;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,qD;;;;;;;;;;;ACAA,2D","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","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}","export * from './src/admin';","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\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n }).then(() => {\n this.isLoading = false;\n app.alerts.show({ type: 'success', message: app.translator.trans('core.lib.success')});\n m.redraw();\n }).catch(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport Installer from \"./components/Installer\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n return (\n \n );\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success', message: 'Success!' });\n });\n }}>\n Remove\n \n );\n });\n});\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/utils/Stream'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/package.json b/extensions/package-manager/js/package.json new file mode 100644 index 000000000..e71f5d29b --- /dev/null +++ b/extensions/package-manager/js/package.json @@ -0,0 +1,22 @@ +{ + "name": "@sycho/flarum-package-manager", + "version": "0.0.0", + "private": true, + "prettier": "@flarum/prettier-config", + "dependencies": { + "flarum-webpack-config": "^1.0.0", + "flarum-tsconfig": "^1.0.0", + "@flarum/prettier-config": "^1.0.0", + "webpack": "^4.26.0", + "webpack-cli": "^3.0.7" + }, + "devDependencies": { + "prettier": "^2.3.0" + }, + "scripts": { + "dev": "webpack --mode development --watch", + "build": "webpack --mode production", + "format": "prettier --write src", + "format-check": "prettier --check src" + } +} diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx new file mode 100644 index 000000000..87d0c8e20 --- /dev/null +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -0,0 +1,58 @@ +import type Mithril from 'mithril'; +import app from 'flarum/admin/app'; +import Component from 'flarum/common/Component'; +import Button from "flarum/common/components/Button"; +import Stream from "flarum/common/utils/Stream"; + +export default class Installer extends Component { + packageName!: Stream; + isLoading: boolean = false; + + oninit(vnode: Mithril.Vnode): void { + super.oninit(vnode); + + this.packageName = Stream(''); + } + + view(): Mithril.Children { + return ( +
+ +

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', { + extiverse: extiverse.com + })}

+
+ + +
+
+ ); + } + + data(): any { + return { + package: this.packageName(), + }; + } + + onsubmit(): void { + this.isLoading = true; + + app.request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`, + body: { + data: this.data() + }, + }).then(() => { + this.isLoading = false; + app.alerts.show({ type: 'success', message: app.translator.trans('core.lib.success')}); + m.redraw(); + }).catch(() => { + this.isLoading = false; + m.redraw(); + }); + } +} diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js new file mode 100644 index 000000000..92a34ad1b --- /dev/null +++ b/extensions/package-manager/js/src/admin/index.js @@ -0,0 +1,34 @@ +import { extend } from 'flarum/common/extend'; +import app from 'flarum/admin/app'; +import ExtensionPage from 'flarum/admin/components/ExtensionPage'; +import Button from 'flarum/common/components/Button'; +import Installer from "./components/Installer"; + +app.initializers.add('sycho-package-manager', (app) => { + app.extensionData + .for('sycho-package-manager') + .registerSetting(() => { + return ( + + ); + }); + + extend(ExtensionPage.prototype, 'topItems', function (items) { + items.add( + 'remove', + + ); + }); +}); diff --git a/extensions/package-manager/js/tsconfig.json b/extensions/package-manager/js/tsconfig.json new file mode 100644 index 000000000..e8ff4074a --- /dev/null +++ b/extensions/package-manager/js/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "flarum-tsconfig", + "include": ["src/**/*"], + "compilerOptions": { + "declarationDir": "./dist-typings", + "baseUrl": ".", + "paths": { + "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"] + } + } +} diff --git a/extensions/package-manager/js/webpack.config.js b/extensions/package-manager/js/webpack.config.js new file mode 100644 index 000000000..ef35ea006 --- /dev/null +++ b/extensions/package-manager/js/webpack.config.js @@ -0,0 +1 @@ +module.exports = require('flarum-webpack-config')(); diff --git a/extensions/package-manager/js/yarn.lock b/extensions/package-manager/js/yarn.lock new file mode 100644 index 000000000..e0d1f82a9 --- /dev/null +++ b/extensions/package-manager/js/yarn.lock @@ -0,0 +1,4173 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# 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== + dependencies: + "@babel/highlight" "^7.14.5" + +"@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/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== + 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" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + 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== + dependencies: + "@babel/types" "^7.15.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== + dependencies: + "@babel/types" "^7.14.5" + +"@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== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.14.5" + "@babel/types" "^7.14.5" + +"@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== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + 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== + 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-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== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + 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== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + 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== + dependencies: + "@babel/types" "^7.14.5" + +"@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== + 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.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== + dependencies: + "@babel/types" "^7.14.5" + +"@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== + dependencies: + "@babel/types" "^7.14.5" + +"@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== + dependencies: + "@babel/types" "^7.15.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== + dependencies: + "@babel/types" "^7.14.5" + +"@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== + 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-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== + dependencies: + "@babel/types" "^7.14.5" + +"@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== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-wrap-function" "^7.14.5" + "@babel/types" "^7.14.5" + +"@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== + 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-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== + dependencies: + "@babel/types" "^7.14.8" + +"@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== + dependencies: + "@babel/types" "^7.14.5" + +"@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== + dependencies: + "@babel/types" "^7.14.5" + +"@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-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== + dependencies: + "@babel/helper-function-name" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@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== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.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== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + 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/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== + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.14.5" + "@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== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@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== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@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== + 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== + 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== + 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== + 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== + 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== + 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== + dependencies: + "@babel/compat-data" "^7.14.7" + "@babel/helper-compilation-targets" "^7.14.5" + "@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-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== + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@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== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@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== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@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== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + 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== + 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== + 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== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.14.5" + +"@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== + 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== + 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== + 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-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + 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== + 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== + 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== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@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== + 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== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" + "@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== + 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== + dependencies: + "@babel/helper-function-name" "^7.14.5" + "@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== + 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== + 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== + dependencies: + "@babel/helper-module-transforms" "^7.14.5" + "@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== + dependencies: + "@babel/helper-module-transforms" "^7.15.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-simple-access" "^7.14.8" + 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== + dependencies: + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.5" + 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== + dependencies: + "@babel/helper-module-transforms" "^7.14.5" + "@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== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + +"@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== + 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== + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + +"@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== + 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== + 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== + 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== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.14.5" + +"@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== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-jsx" "^7.14.5" + "@babel/types" "^7.14.9" + +"@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== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@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== + 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== + 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== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@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" + 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== + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + +"@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== + 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== + 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== + 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== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.15.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-typescript" "^7.14.5" + +"@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== + 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== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@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== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-compilation-targets" "^7.15.0" + "@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-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@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" + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + 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== + 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/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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-transform-typescript" "^7.15.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== + 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== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + +"@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== + 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" + 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== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + +"@flarum/prettier-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@flarum/prettier-config/-/prettier-config-1.0.0.tgz#3ce431fa376994e8133e313dbe7c4ee3d3fe1a39" + 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== + +"@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== + dependencies: + "@types/sizzle" "*" + +"@types/json-schema@^7.0.5": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/mithril@^2.0.7": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@types/mithril/-/mithril-2.0.8.tgz#b7b6f58bdc7b244802f5ff919805e947d8e45b4e" + integrity sha512-QzVV70DqUhWfLFpMFDBI9rRxtzeUUpbhiFDpUJYSV92AePgl+Qfficgv2MOb1Ceb+lBOQU8+L+Hjf2UielQjEw== + +"@types/sizzle@*": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" + integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + +"@types/throttle-debounce@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" + integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + 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== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + 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== + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + 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== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + 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== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.2.2" + 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== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + core-js-compat "^3.14.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== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + 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== + dependencies: + caniuse-lite "^1.0.30001251" + colorette "^1.3.0" + electron-to-chromium "^1.3.811" + escalade "^3.1.1" + node-releases "^1.1.75" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^5.0.0: + version "5.3.1" + 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== + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "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== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + 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== + dependencies: + browserslist "^4.16.8" + 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= + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + 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== + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0, debug@^4.1.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + 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== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + 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== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.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== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + 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== + dependencies: + "@types/jquery" "^3.5.5" + "@types/mithril" "^2.0.7" + "@types/throttle-debounce" "^2.1.0" + dayjs "^1.10.4" + +flarum-webpack-config@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flarum-webpack-config/-/flarum-webpack-config-1.0.0.tgz#daf76829d1a71d1af61b5ab6c98e6c61aa6f1b1a" + integrity sha512-T+olIRaIVetPJMP8xlbMnp7tzT/d/ZWI6Mr7twRBdsKbKO7dpKS2+fjnKL6QqNYgOLElT/TWrRSbTp7EiL1yXA== + dependencies: + "@babel/core" "^7.14.3" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-transform-object-assign" "^7.12.13" + "@babel/plugin-transform-react-jsx" "^7.14.3" + "@babel/plugin-transform-runtime" "^7.14.3" + "@babel/preset-env" "^7.14.2" + "@babel/preset-react" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/runtime" "^7.14.0" + babel-loader "^8.2.2" + typescript "^4.3.2" + webpack-bundle-analyzer "^4.4.2" + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + 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== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + 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== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + 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== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash@^4.17.20: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^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== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nan@^2.12.1: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + 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== + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + 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== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + 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== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.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== + 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" + +regjsgen@^0.5.1: + 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== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.14.2: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + 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== + dependencies: + "@polka/url" "^1.0.0-next.20" + mime "^2.3.1" + totalist "^1.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.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== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +totalist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + 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== + +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-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== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +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-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== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +v8-compile-cache@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + 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== + dependencies: + acorn "^8.0.4" + acorn-walk "^8.0.0" + chalk "^4.1.0" + commander "^6.2.0" + gzip-size "^6.0.0" + lodash "^4.17.20" + opener "^1.5.2" + sirv "^1.0.7" + ws "^7.3.1" + +webpack-cli@^3.0.7: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== + dependencies: + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" + +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.26.0: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + 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== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less new file mode 100644 index 000000000..a0b536357 --- /dev/null +++ b/extensions/package-manager/less/admin.less @@ -0,0 +1,6 @@ +.FormControl-container { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 4px; +} diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml new file mode 100644 index 000000000..8d5595eb0 --- /dev/null +++ b/extensions/package-manager/locale/en.yml @@ -0,0 +1,7 @@ +sycho-package-manager: + admin: + extensions: + install: Install a new extension + install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions. + proceed: Proceed + diff --git a/extensions/package-manager/migrations/2017_04_09_000000_create_bazaar_tasks_table.php b/extensions/package-manager/migrations/2017_04_09_000000_create_bazaar_tasks_table.php new file mode 100644 index 000000000..31c5322c9 --- /dev/null +++ b/extensions/package-manager/migrations/2017_04_09_000000_create_bazaar_tasks_table.php @@ -0,0 +1,19 @@ +increments('id'); + $table->string('status', 50)->nullable(); + $table->string('command', 50); + $table->string('command_class')->nullable(); + $table->string('package', 100)->nullable(); + $table->mediumText('output'); + $table->dateTime('created_at'); + $table->dateTime('started_at')->nullable(); + $table->dateTime('finished_at')->nullable(); + } +); diff --git a/extensions/package-manager/src/Api/Controller/ListTaskController.php b/extensions/package-manager/src/Api/Controller/ListTaskController.php new file mode 100644 index 000000000..943a0462f --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/ListTaskController.php @@ -0,0 +1,25 @@ +assertAdmin(); + + return Task::query()->orderBy('created_at', 'desc')->get(); + } +} diff --git a/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php b/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php new file mode 100644 index 000000000..0d3eef2e3 --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php @@ -0,0 +1,39 @@ +bus = $bus; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + */ + protected function delete(ServerRequestInterface $request) + { + $actor = RequestUtil::getActor($request); + $extensionId = Arr::get($request->getQueryParams(), 'id'); + + $this->bus->dispatch( + new RemoveExtension($actor, $extensionId) + ); + } +} diff --git a/extensions/package-manager/src/Api/Controller/RequireExtensionController.php b/extensions/package-manager/src/Api/Controller/RequireExtensionController.php new file mode 100644 index 000000000..2df0bdfec --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/RequireExtensionController.php @@ -0,0 +1,40 @@ +bus = $bus; + } + + protected function data(ServerRequestInterface $request, Document $document) + { + $actor = RequestUtil::getActor($request); + $package = Arr::get($request->getParsedBody(), 'data.package'); + + $this->bus->dispatch( + new RequireExtension($actor, $package) + ); + + return null; + } +} diff --git a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php new file mode 100644 index 000000000..a3101cd77 --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php @@ -0,0 +1,42 @@ +bus = $bus; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + */ + protected function data(ServerRequestInterface $request, Document $document) + { + $actor = RequestUtil::getActor($request); + $extensionId = Arr::get($request->getQueryParams(), 'id'); + + $this->bus->dispatch( + new UpdateExtension($actor, $extensionId) + ); + + return null; + } +} diff --git a/extensions/package-manager/src/Command/RemoveExtension.php b/extensions/package-manager/src/Command/RemoveExtension.php new file mode 100644 index 000000000..f5c125822 --- /dev/null +++ b/extensions/package-manager/src/Command/RemoveExtension.php @@ -0,0 +1,24 @@ +actor = $actor; + $this->extensionId = $extensionId; + } +} diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php new file mode 100644 index 000000000..4f5331f65 --- /dev/null +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -0,0 +1,42 @@ +extensions = $extensions; + $this->packages = $packages; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws \Exception + */ + public function handle(RemoveExtension $command) + { + $command->actor->assertAdmin(); + + $extension = $this->extensions->getExtension($command->extensionId); + + if (empty($extension)) { + // ... exception + } + + $this->packages->removePackage($extension->name); + } +} diff --git a/extensions/package-manager/src/Command/RequireExtension.php b/extensions/package-manager/src/Command/RequireExtension.php new file mode 100644 index 000000000..2c6a51517 --- /dev/null +++ b/extensions/package-manager/src/Command/RequireExtension.php @@ -0,0 +1,24 @@ +actor = $actor; + $this->package = $package; + } +} diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php new file mode 100644 index 000000000..047c6fdcb --- /dev/null +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -0,0 +1,91 @@ +extensions = $extensions; + $this->packages = $packages; + $this->command = $command; + $this->validator = $validator; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws \Exception + */ + public function handle(RequireExtension $command) + { + $command->actor->assertAdmin(); + + $this->validator->assertValid(['package' => $command->package]); + + $extensionId = ExtensionUtils::nameToId($command->package); + + if (! empty($this->extensions->getExtension($extensionId))) { + // ... exception + } + + // $this->packages->requirePackage($command->package); + $paths = resolve(Paths::class); + + putenv("COMPOSER_HOME={$paths->storage}/.composer"); + putenv("COMPOSER={$paths->base}/composer.json"); + Config::$defaultConfig['vendor-dir'] = $paths->base.'/vendor'; + + @ini_set('memory_limit', '1G'); + @set_time_limit(5 * 60); + + $application = new Application(); + $application->setAutoExit(false); + + $output = new BufferedOutput(); + + $input = new ArrayInput([ + 'command' => 'require', + 'packages' => [$command->package], + // '--dry-run' => true, + ]); + + $application->run($input, $output); + + error_log('nandeeeeeeeeeeeeeee'); + + throw new \Exception($output->fetch()); + } +} diff --git a/extensions/package-manager/src/Command/UpdateExtension.php b/extensions/package-manager/src/Command/UpdateExtension.php new file mode 100644 index 000000000..995200a26 --- /dev/null +++ b/extensions/package-manager/src/Command/UpdateExtension.php @@ -0,0 +1,24 @@ +actor = $actor; + $this->extensionId = $extensionId; + } +} diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php new file mode 100644 index 000000000..165e510a2 --- /dev/null +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -0,0 +1,42 @@ +extensions = $extensions; + $this->packages = $packages; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws \Exception + */ + public function handle(UpdateExtension $command) + { + $command->actor->assertAdmin(); + + $extension = $this->extensions->getExtension($command->extensionId); + + if (empty($extension)) { + // ... exception + } + + $this->packages->updatePackage($extension->name); + } +} diff --git a/extensions/package-manager/src/ComposerEnvironmentProvider.php b/extensions/package-manager/src/ComposerEnvironmentProvider.php new file mode 100644 index 000000000..87601480d --- /dev/null +++ b/extensions/package-manager/src/ComposerEnvironmentProvider.php @@ -0,0 +1,24 @@ +container->singleton(ComposerEnvironment::class, function(Container $container) { + return new ComposerEnvironment( + $container->make(Paths::class)->base, + $container->make(Paths::class)->storage.'/composer-home', + $container->make(Filesystem::class), + $container->make(Paths::class) + ); + }); + } +} diff --git a/extensions/package-manager/src/Extension/Event/Installed.php b/extensions/package-manager/src/Extension/Event/Installed.php new file mode 100644 index 000000000..19ba2c81a --- /dev/null +++ b/extensions/package-manager/src/Extension/Event/Installed.php @@ -0,0 +1,18 @@ +extension = $extension; + } +} diff --git a/extensions/package-manager/src/Extension/Event/Removed.php b/extensions/package-manager/src/Extension/Event/Removed.php new file mode 100644 index 000000000..758e0a3be --- /dev/null +++ b/extensions/package-manager/src/Extension/Event/Removed.php @@ -0,0 +1,18 @@ +extension = $extension; + } +} diff --git a/extensions/package-manager/src/Extension/Event/Updated.php b/extensions/package-manager/src/Extension/Event/Updated.php new file mode 100644 index 000000000..01a178dc9 --- /dev/null +++ b/extensions/package-manager/src/Extension/Event/Updated.php @@ -0,0 +1,18 @@ +extension = $extension; + } +} diff --git a/extensions/package-manager/src/Extension/ExtensionUtils.php b/extensions/package-manager/src/Extension/ExtensionUtils.php new file mode 100644 index 000000000..e98737de8 --- /dev/null +++ b/extensions/package-manager/src/Extension/ExtensionUtils.php @@ -0,0 +1,14 @@ + 'required|string' + ]; +} From 1d48c9878ba8b2425bf01e4041403a0dc8540b72 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 1 Sep 2021 19:49:44 +0100 Subject: [PATCH 02/51] Tweaks --- extensions/package-manager/extend.php | 12 +-- extensions/package-manager/js/dist/admin.js | 95 ++++++++++++------- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/Installer.tsx | 13 ++- .../package-manager/js/src/admin/index.js | 8 +- extensions/package-manager/locale/en.yml | 12 ++- .../Controller/RequireExtensionController.php | 4 +- .../Controller/UpdateExtensionController.php | 4 +- .../Api/Serializer/ExtensionSerializer.php | 27 ++++++ .../src/Command/RemoveExtensionHandler.php | 26 +++-- .../src/Command/RequireExtensionHandler.php | 50 +++------- .../src/PackageManagerServiceProvider.php | 38 ++++++++ 12 files changed, 179 insertions(+), 112 deletions(-) create mode 100644 extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php create mode 100644 extensions/package-manager/src/PackageManagerServiceProvider.php diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index e5c36603c..016fc7dd5 100644 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -9,7 +9,6 @@ namespace SychO\PackageManager; use Flarum\Extend; use Flarum\Foundation\Paths; use Illuminate\Console\Scheduling\Event; -use SychO\PackageManager\Console\TaskCommand; return [ (new Extend\Routes('api')) @@ -24,13 +23,6 @@ return [ new Extend\Locales(__DIR__ . '/locale'), (new Extend\ServiceProvider) - ->register(ComposerEnvironmentProvider::class), - - (new Extend\Console) - ->schedule(TaskCommand::class, function (Event $event) { - $event - ->everyMinute() - ->withoutOverlapping() - ->appendOutputTo(resolve(Paths::class)->storage.'/logs/bazaar-tasks.log'); - }), + ->register(ComposerEnvironmentProvider::class) + ->register(PackageManagerServiceProvider::class), ]; diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index f9dc99389..c6d8e99a8 100644 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -87,17 +87,31 @@ module.exports = /************************************************************************/ /******/ ({ -/***/ "../../core/js/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": -/*!***********************************************************************************************************!*\ - !*** /home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***! - \***********************************************************************************************************/ +/***/ "./admin.js": +/*!******************!*\ + !*** ./admin.js ***! + \******************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _src_admin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/admin */ "./src/admin/index.js"); +/* empty/unused harmony star reexport */ + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.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 _inheritsLoose; }); -/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ "../../core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js"); +/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js"); function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); @@ -107,10 +121,10 @@ function _inheritsLoose(subClass, superClass) { /***/ }), -/***/ "../../core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": -/*!************************************************************************************************************!*\ - !*** /home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js ***! - \************************************************************************************************************/ +/***/ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js ***! + \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -128,20 +142,6 @@ function _setPrototypeOf(o, p) { /***/ }), -/***/ "./admin.js": -/*!******************!*\ - !*** ./admin.js ***! - \******************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _src_admin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/admin */ "./src/admin/index.js"); -/* empty/unused harmony star reexport */ - -/***/ }), - /***/ "./src/admin/components/Installer.tsx": /*!********************************************!*\ !*** ./src/admin/components/Installer.tsx ***! @@ -152,7 +152,7 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Installer; }); -/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../../core/js/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* 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"); @@ -161,6 +161,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/utils/Stream */ "flarum/common/utils/Stream"); /* harmony import */ var flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4__); +/* 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__); + @@ -227,20 +230,23 @@ var Installer = /*#__PURE__*/function (_Component) { var _this2 = this; this.isLoading = true; + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); 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/extensions", body: { data: this.data() } - }).then(function () { - _this2.isLoading = false; + }).then(function (response) { + var extensionId = response.data.attributes.id; flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ - type: 'success', - message: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('core.lib.success') - }); - m.redraw(); - })["catch"](function () { + type: 'success' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.successful_install', { + extension: extensionId + })); + window.location.href = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('adminUrl') + "#/extension/" + extensionId; + window.location.reload(); + })["finally"](function () { _this2.isLoading = false; m.redraw(); }); @@ -270,7 +276,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); /* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _components_Installer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); +/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/admin/components/LoadingModal */ "flarum/admin/components/LoadingModal"); +/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _components_Installer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); + @@ -278,7 +287,7 @@ __webpack_require__.r(__webpack_exports__); flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho-package-manager', function (app) { app.extensionData["for"]('sycho-package-manager').registerSetting(function () { - return m(_components_Installer__WEBPACK_IMPORTED_MODULE_4__["default"], null); + return m(_components_Installer__WEBPACK_IMPORTED_MODULE_5__["default"], null); }); Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2___default.a.prototype, 'topItems', function (items) { var _this = this; @@ -287,14 +296,17 @@ flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho- className: "Button Button--danger", icon: "fas fa-times", onclick: function onclick() { + app.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4___default.a); app.request({ url: app.forum.attribute('apiUrl') + "/package-manager/extensions/" + _this.extension.id, method: 'DELETE' }).then(function () { app.alerts.show({ - type: 'success', - message: 'Success!' - }); + type: 'success' + }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove')); + window.location = app.forum.attribute('adminUrl'); + })["finally"](function () { + app.modal.close(); }); } }, "Remove")); @@ -325,6 +337,17 @@ module.exports = flarum.core.compat['admin/components/ExtensionPage']; /***/ }), +/***/ "flarum/admin/components/LoadingModal": +/*!**********************************************************************!*\ + !*** external "flarum.core.compat['admin/components/LoadingModal']" ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/components/LoadingModal']; + +/***/ }), + /***/ "flarum/common/Component": /*!*********************************************************!*\ !*** external "flarum.core.compat['common/Component']" ***! diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 8eff59a5a..3b8427201 100644 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager//home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager//home/samilyas/www/flarum/packages/core/js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"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","request","method","url","forum","attribute","body","then","alerts","show","type","message","m","redraw","Component","initializers","add","extensionData","registerSetting","extend","ExtensionPage","items","extension","id"],"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","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}","export * from './src/admin';","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\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n }).then(() => {\n this.isLoading = false;\n app.alerts.show({ type: 'success', message: app.translator.trans('core.lib.success')});\n m.redraw();\n }).catch(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport Installer from \"./components/Installer\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n return (\n \n );\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success', message: 'Success!' });\n });\n }}>\n Remove\n \n );\n });\n});\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/utils/Stream'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"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","then","response","extensionId","attributes","id","alerts","type","extension","window","location","href","reload","m","redraw","Component","initializers","add","extensionData","registerSetting","extend","ExtensionPage","items","close"],"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\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n }).then((response) => {\n const extensionId = response.data.attributes.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Installer from \"./components/Installer\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n return (\n \n );\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['common/Component'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/utils/Stream'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx index 87d0c8e20..b889978ed 100644 --- a/extensions/package-manager/js/src/admin/components/Installer.tsx +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -3,6 +3,7 @@ import app from 'flarum/admin/app'; import Component from 'flarum/common/Component'; import Button from "flarum/common/components/Button"; import Stream from "flarum/common/utils/Stream"; +import LoadingModal from "flarum/admin/components/LoadingModal"; export default class Installer extends Component { packageName!: Stream; @@ -39,6 +40,7 @@ export default class Installer extends Component { onsubmit(): void { this.isLoading = true; + app.modal.show(LoadingModal); app.request({ method: 'POST', @@ -46,11 +48,12 @@ export default class Installer extends Component { body: { data: this.data() }, - }).then(() => { - this.isLoading = false; - app.alerts.show({ type: 'success', message: app.translator.trans('core.lib.success')}); - m.redraw(); - }).catch(() => { + }).then((response) => { + const extensionId = response.data.attributes.id; + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId })); + window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`; + window.location.reload(); + }).finally(() => { this.isLoading = false; m.redraw(); }); diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js index 92a34ad1b..b2a9efbc7 100644 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.js @@ -2,6 +2,7 @@ import { extend } from 'flarum/common/extend'; import app from 'flarum/admin/app'; import ExtensionPage from 'flarum/admin/components/ExtensionPage'; import Button from 'flarum/common/components/Button'; +import LoadingModal from 'flarum/admin/components/LoadingModal'; import Installer from "./components/Installer"; app.initializers.add('sycho-package-manager', (app) => { @@ -20,11 +21,16 @@ app.initializers.add('sycho-package-manager', (app) => { className="Button Button--danger" icon="fas fa-times" onclick={() => { + app.modal.show(LoadingModal); + app.request({ url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`, method: 'DELETE', }).then(() => { - app.alerts.show({ type: 'success', message: 'Success!' }); + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove')); + window.location = app.forum.attribute('adminUrl'); + }).finally(() => { + app.modal.close(); }); }}> Remove diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 8d5595eb0..58d5f1fc5 100644 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -1,7 +1,9 @@ sycho-package-manager: - admin: - extensions: - install: Install a new extension - install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions. - proceed: Proceed + admin: + extensions: + install: Install a new extension + install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions. + proceed: Proceed + successful_install: "{extension} was installed successfully, redirecting.." + successful_remove: Extension removed successfully. diff --git a/extensions/package-manager/src/Api/Controller/RequireExtensionController.php b/extensions/package-manager/src/Api/Controller/RequireExtensionController.php index 2df0bdfec..88351212b 100644 --- a/extensions/package-manager/src/Api/Controller/RequireExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/RequireExtensionController.php @@ -31,10 +31,8 @@ class RequireExtensionController extends AbstractCreateController $actor = RequestUtil::getActor($request); $package = Arr::get($request->getParsedBody(), 'data.package'); - $this->bus->dispatch( + return $this->bus->dispatch( new RequireExtension($actor, $package) ); - - return null; } } diff --git a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php index a3101cd77..2e076299c 100644 --- a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php @@ -33,10 +33,8 @@ class UpdateExtensionController extends AbstractShowController $actor = RequestUtil::getActor($request); $extensionId = Arr::get($request->getQueryParams(), 'id'); - $this->bus->dispatch( + return $this->bus->dispatch( new UpdateExtension($actor, $extensionId) ); - - return null; } } diff --git a/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php b/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php new file mode 100644 index 000000000..1ef9c5957 --- /dev/null +++ b/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php @@ -0,0 +1,27 @@ +toArray(); + } +} diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php index 4f5331f65..27f094c38 100644 --- a/extensions/package-manager/src/Command/RemoveExtensionHandler.php +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -2,25 +2,27 @@ namespace SychO\PackageManager\Command; +use Composer\Console\Application; use Flarum\Extension\ExtensionManager; -use SychO\PackageManager\Extension\PackageManager; +use Symfony\Component\Console\Input\ArrayInput; +use Symfony\Component\Console\Output\BufferedOutput; class RemoveExtensionHandler { + /** + * @var Application + */ + protected $composer; + /** * @var ExtensionManager */ protected $extensions; - /** - * @var PackageManager - */ - protected $packages; - - public function __construct(ExtensionManager $extensions, PackageManager $packages) + public function __construct(Application $composer, ExtensionManager $extensions,) { + $this->composer = $composer; $this->extensions = $extensions; - $this->packages = $packages; } /** @@ -37,6 +39,12 @@ class RemoveExtensionHandler // ... exception } - $this->packages->removePackage($extension->name); + $output = new BufferedOutput(); + $input = new ArrayInput([ + 'command' => 'remove', + 'packages' => [$extension->name], + ]); + + $this->composer->run($input, $output); } } diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 047c6fdcb..57a9e5a1f 100644 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -2,46 +2,34 @@ namespace SychO\PackageManager\Command; -use Composer\Command\RequireCommand; -use Composer\Config; use Composer\Console\Application; use Flarum\Extension\ExtensionManager; -use Flarum\Foundation\Paths; -use Illuminate\Contracts\Console\Kernel; use SychO\PackageManager\Extension\ExtensionUtils; -use SychO\PackageManager\Extension\PackageManager; use SychO\PackageManager\RequirePackageValidator; use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Console\Output\BufferedOutput; class RequireExtensionHandler { + /** + * @var Application + */ + protected $composer; + /** * @var ExtensionManager */ protected $extensions; - /** - * @var PackageManager - */ - protected $packages; - - /** - * @var RequireCommand - */ - protected $command; - /** * @var RequirePackageValidator */ protected $validator; - public function __construct(ExtensionManager $extensions, PackageManager $packages, RequireCommand $command, RequirePackageValidator $validator) + public function __construct(Application $composer, ExtensionManager $extensions, RequirePackageValidator $validator) { + $this->composer = $composer; $this->extensions = $extensions; - $this->packages = $packages; - $this->command = $command; $this->validator = $validator; } @@ -56,36 +44,20 @@ class RequireExtensionHandler $this->validator->assertValid(['package' => $command->package]); $extensionId = ExtensionUtils::nameToId($command->package); + $extension = $this->extensions->getExtension($extensionId); - if (! empty($this->extensions->getExtension($extensionId))) { + if (! empty($extension)) { // ... exception } - // $this->packages->requirePackage($command->package); - $paths = resolve(Paths::class); - - putenv("COMPOSER_HOME={$paths->storage}/.composer"); - putenv("COMPOSER={$paths->base}/composer.json"); - Config::$defaultConfig['vendor-dir'] = $paths->base.'/vendor'; - - @ini_set('memory_limit', '1G'); - @set_time_limit(5 * 60); - - $application = new Application(); - $application->setAutoExit(false); - $output = new BufferedOutput(); - $input = new ArrayInput([ 'command' => 'require', 'packages' => [$command->package], - // '--dry-run' => true, ]); - $application->run($input, $output); + $this->composer->run($input, $output); - error_log('nandeeeeeeeeeeeeeee'); - - throw new \Exception($output->fetch()); + return ['id' => $extensionId]; } } diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php new file mode 100644 index 000000000..12eb77b5b --- /dev/null +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -0,0 +1,38 @@ +container->singleton(Application::class, function (Container $container) { + // This should only ever be resolved when running composer commands, + // because we modify other environment configurations. + $composer = new Application(); + $composer->setAutoExit(false); + + $paths = $container->make(Paths::class); + + putenv("COMPOSER_HOME={$paths->storage}/.composer"); + putenv("COMPOSER={$paths->base}/composer.json"); + Config::$defaultConfig['vendor-dir'] = $paths->base.'/vendor'; + + // When running simple require, update and remove commands on packages, + // composer 2 doesn't really need this much unless the extensions are very loaded dependency wise, + // but this is necessary for running flarum updates. + @ini_set('memory_limit', '1G'); + @set_time_limit(5 * 60); + + return $composer; + }); + + $this->container->alias(Application::class, 'flarum.composer'); + } +} From ae5fb2f253eaf82a8313c3b6bbb69fa001f0bebc Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 1 Sep 2021 20:01:36 +0100 Subject: [PATCH 03/51] Remove unnecessary provider --- .../src/ComposerEnvironmentProvider.php | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 extensions/package-manager/src/ComposerEnvironmentProvider.php diff --git a/extensions/package-manager/src/ComposerEnvironmentProvider.php b/extensions/package-manager/src/ComposerEnvironmentProvider.php deleted file mode 100644 index 87601480d..000000000 --- a/extensions/package-manager/src/ComposerEnvironmentProvider.php +++ /dev/null @@ -1,24 +0,0 @@ -container->singleton(ComposerEnvironment::class, function(Container $container) { - return new ComposerEnvironment( - $container->make(Paths::class)->base, - $container->make(Paths::class)->storage.'/composer-home', - $container->make(Filesystem::class), - $container->make(Paths::class) - ); - }); - } -} From 3d6a467de9f9abf42b00896ed2b4190cb5eb5146 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 1 Sep 2021 20:26:28 +0100 Subject: [PATCH 04/51] Remove unnecessary provider --- extensions/package-manager/extend.php | 1 - 1 file changed, 1 deletion(-) diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index 016fc7dd5..c4d79bcf4 100644 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -23,6 +23,5 @@ return [ new Extend\Locales(__DIR__ . '/locale'), (new Extend\ServiceProvider) - ->register(ComposerEnvironmentProvider::class) ->register(PackageManagerServiceProvider::class), ]; From ffaa88f5265491747b2d0081657ea2b606a87ac6 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 1 Sep 2021 20:30:00 +0100 Subject: [PATCH 05/51] Serializer ID --- .../src/Api/Serializer/ExtensionSerializer.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php b/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php index 1ef9c5957..8de86edc2 100644 --- a/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php +++ b/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php @@ -10,6 +10,11 @@ class ExtensionSerializer extends AbstractSerializer { protected $type = 'extensions'; + public function getId($model) + { + return is_array($model) ? $model['id'] : $model->getId(); + } + protected function getDefaultAttributes($model) { if (is_array($model)) { From 40e0a9672b20da4b9c0c9d65ed62c20fb686ac26 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 22 Sep 2021 22:08:51 +0100 Subject: [PATCH 06/51] File permissions alert and clear command failure message. --- extensions/package-manager/extend.php | 17 ++- extensions/package-manager/js/dist/admin.js | 133 ++++++++++++++++-- .../package-manager/js/dist/admin.js.map | 2 +- .../admin/components/ComposerFailureModal.tsx | 41 ++++++ .../js/src/admin/components/Installer.tsx | 10 ++ .../package-manager/js/src/admin/index.js | 12 ++ extensions/package-manager/less/admin.less | 4 + extensions/package-manager/locale/en.yml | 8 ++ .../Controller/RequireExtensionController.php | 13 +- .../src/Command/RequireExtensionHandler.php | 7 +- .../ComposerCommandFailedExceptionHandler.php | 48 +++++++ .../ComposerRequireFailedException.php | 24 ++++ 12 files changed, 299 insertions(+), 20 deletions(-) create mode 100644 extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx create mode 100644 extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php create mode 100644 extensions/package-manager/src/Exception/ComposerRequireFailedException.php diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index c4d79bcf4..75a168b86 100644 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -8,7 +8,9 @@ namespace SychO\PackageManager; use Flarum\Extend; use Flarum\Foundation\Paths; -use Illuminate\Console\Scheduling\Event; +use Flarum\Frontend\Document; +use SychO\PackageManager\Exception\ComposerCommandFailedExceptionHandler; +use SychO\PackageManager\Exception\ComposerRequireFailedException; return [ (new Extend\Routes('api')) @@ -18,10 +20,21 @@ return [ (new Extend\Frontend('admin')) ->css(__DIR__ . '/less/admin.less') - ->js(__DIR__ . '/js/dist/admin.js'), + ->js(__DIR__ . '/js/dist/admin.js') + ->content(function (Document $document) { + $paths = resolve(Paths::class); + + $document->payload['isRequiredDirectoriesWritable'] = is_writable($paths->vendor) + && is_writable($paths->storage.'/.composer') + && is_writable($paths->base.'/composer.json') + && is_writable($paths->base.'/composer.lock'); + }), new Extend\Locales(__DIR__ . '/locale'), (new Extend\ServiceProvider) ->register(PackageManagerServiceProvider::class), + + (new Extend\ErrorHandling) + ->handler(ComposerRequireFailedException::class, ComposerCommandFailedExceptionHandler::class), ]; diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index c6d8e99a8..a6e64a78d 100644 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -140,6 +140,68 @@ function _setPrototypeOf(o, p) { return _setPrototypeOf(o, p); } +/***/ }), + +/***/ "./src/admin/components/ComposerFailureModal.tsx": +/*!*******************************************************!*\ + !*** ./src/admin/components/ComposerFailureModal.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 ComposerFailureModal; }); +/* 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__); + + + + +var ComposerFailureModal = /*#__PURE__*/function (_Modal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(ComposerFailureModal, _Modal); + + function ComposerFailureModal() { + return _Modal.apply(this, arguments) || this; + } + + var _proto = ComposerFailureModal.prototype; + + _proto.oninit = function oninit(vnode) { + _Modal.prototype.oninit.call(this, vnode); + + if (this.attrs.error.guessed_cause) { + this.alertAttrs = { + type: 'error', + content: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans("sycho-package-manager.admin.failure_modal.guessed_cause." + this.attrs.error.guessed_cause) + }; + } + }; + + _proto.className = function className() { + return 'Modal--large ComposerFailureModal'; + }; + + _proto.title = function title() { + return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.failure_modal.title'); + }; + + _proto.content = function content() { + return m("div", { + className: "Modal-body" + }, m("details", null, m("summary", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')), m("pre", { + className: "ComposerFailureModal-output" + }, this.attrs.error.output))); + }; + + return ComposerFailureModal; +}(flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2___default.a); + + + /***/ }), /***/ "./src/admin/components/Installer.tsx": @@ -163,6 +225,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4__); /* 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 _ComposerFailureModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ComposerFailureModal */ "./src/admin/components/ComposerFailureModal.tsx"); + @@ -236,6 +300,17 @@ var Installer = /*#__PURE__*/function (_Component) { url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/extensions", body: { data: this.data() + }, + errorHandler: function errorHandler(e) { + var error = e.response.errors[0]; + + if (error.code !== 'composer_command_failure') { + throw e; + } + + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_6__["default"], { + error: error + }); } }).then(function (response) { var extensionId = response.data.attributes.id; @@ -272,13 +347,16 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_common_extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__); /* 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_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/admin/components/ExtensionPage */ "flarum/admin/components/ExtensionPage"); -/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); -/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/admin/components/LoadingModal */ "flarum/admin/components/LoadingModal"); -/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _components_Installer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); +/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/Alert */ "flarum/common/components/Alert"); +/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/admin/components/ExtensionPage */ "flarum/admin/components/ExtensionPage"); +/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_ExtensionPage__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_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 _components_Installer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); + @@ -287,16 +365,27 @@ __webpack_require__.r(__webpack_exports__); flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho-package-manager', function (app) { app.extensionData["for"]('sycho-package-manager').registerSetting(function () { - return m(_components_Installer__WEBPACK_IMPORTED_MODULE_5__["default"], null); + if (!app.data.isRequiredDirectoriesWritable) { + return m("div", { + className: "Form-group" + }, m(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2___default.a, { + type: "warning", + dismissible: false + }, app.translator.trans('sycho-package-manager.admin.file_permissions'))); + } + }).registerSetting(function () { + if (app.data.isRequiredDirectoriesWritable) { + return m(_components_Installer__WEBPACK_IMPORTED_MODULE_6__["default"], null); + } }); - Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_2___default.a.prototype, 'topItems', function (items) { + Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default.a.prototype, 'topItems', function (items) { var _this = this; - items.add('remove', m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { + items.add('remove', m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { className: "Button Button--danger", icon: "fas fa-times", onclick: function onclick() { - app.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_4___default.a); + app.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); app.request({ url: app.forum.attribute('apiUrl') + "/package-manager/extensions/" + _this.extension.id, method: 'DELETE' @@ -359,6 +448,17 @@ module.exports = flarum.core.compat['common/Component']; /***/ }), +/***/ "flarum/common/components/Alert": +/*!****************************************************************!*\ + !*** external "flarum.core.compat['common/components/Alert']" ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Alert']; + +/***/ }), + /***/ "flarum/common/components/Button": /*!*****************************************************************!*\ !*** external "flarum.core.compat['common/components/Button']" ***! @@ -370,6 +470,17 @@ module.exports = flarum.core.compat['common/components/Button']; /***/ }), +/***/ "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/extend": /*!******************************************************!*\ !*** external "flarum.core.compat['common/extend']" ***! diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 3b8427201..e5c4a111a 100644 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"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","then","response","extensionId","attributes","id","alerts","type","extension","window","location","href","reload","m","redraw","Component","initializers","add","extensionData","registerSetting","extend","ExtensionPage","items","close"],"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\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n }).then((response) => {\n const extensionId = response.data.attributes.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Installer from \"./components/Installer\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n return (\n \n );\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['common/Component'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/utils/Stream'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","e","response","errors","code","then","extensionId","attributes","id","alerts","extension","window","location","href","reload","m","redraw","Component","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","close"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.data.attributes.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\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\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['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/Modal'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/utils/Stream'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx b/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx new file mode 100644 index 000000000..5fd616aa7 --- /dev/null +++ b/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx @@ -0,0 +1,41 @@ +import app from 'flarum/admin/app'; +import Modal from 'flarum/common/components/Modal'; +import { ComponentAttrs } from "flarum/common/Component"; +import Alert from "flarum/common/components/Alert"; +import Mithril from "mithril"; + +interface Attrs extends ComponentAttrs { + output: string; +} + +export default class ComposerFailureModal extends Modal { + oninit(vnode: Mithril.Vnode) { + super.oninit(vnode); + + if (this.attrs.error.guessed_cause) { + this.alertAttrs = { + type: 'error', + content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`), + }; + } + } + + className() { + return 'Modal--large ComposerFailureModal'; + } + + title() { + return app.translator.trans('sycho-package-manager.admin.failure_modal.title'); + } + + content() { + return ( +
+
+ {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')} +
{this.attrs.error.output}
+
+
+ ); + } +} diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx index b889978ed..ab421b700 100644 --- a/extensions/package-manager/js/src/admin/components/Installer.tsx +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -4,6 +4,7 @@ import Component from 'flarum/common/Component'; import Button from "flarum/common/components/Button"; import Stream from "flarum/common/utils/Stream"; import LoadingModal from "flarum/admin/components/LoadingModal"; +import ComposerFailureModal from "./ComposerFailureModal"; export default class Installer extends Component { packageName!: Stream; @@ -48,6 +49,15 @@ export default class Installer extends Component { body: { data: this.data() }, + errorHandler: (e: any) => { + const error = e.response.errors[0]; + + if (error.code !== 'composer_command_failure') { + throw e; + } + + app.modal.show(ComposerFailureModal, { error }); + }, }).then((response) => { const extensionId = response.data.attributes.id; app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId })); diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js index b2a9efbc7..9d3f933ca 100644 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.js @@ -1,5 +1,6 @@ import { extend } from 'flarum/common/extend'; import app from 'flarum/admin/app'; +import Alert from 'flarum/common/components/Alert'; import ExtensionPage from 'flarum/admin/components/ExtensionPage'; import Button from 'flarum/common/components/Button'; import LoadingModal from 'flarum/admin/components/LoadingModal'; @@ -9,9 +10,20 @@ app.initializers.add('sycho-package-manager', (app) => { app.extensionData .for('sycho-package-manager') .registerSetting(() => { + if (!app.data.isRequiredDirectoriesWritable) { + return ( +
+ {app.translator.trans('sycho-package-manager.admin.file_permissions')} +
+ ); + } + }) + .registerSetting(() => { + if (app.data.isRequiredDirectoriesWritable) { return ( ); + } }); extend(ExtensionPage.prototype, 'topItems', function (items) { diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index a0b536357..bb5abb89f 100644 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -4,3 +4,7 @@ flex-wrap: wrap; gap: 4px; } + +.ComposerFailureModal-output { + white-space: break-spaces; +} diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 58d5f1fc5..a413eb9f6 100644 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -7,3 +7,11 @@ sycho-package-manager: successful_install: "{extension} was installed successfully, redirecting.." successful_remove: Extension removed successfully. + failure_modal: + title: Operation Failed + guessed_cause: + extension_incompatible_with_instance: The extension is most likely incompatible with your current Flarum instance. + show_composer_output: Show Advanced Details + + file_permissions: > + The package manager requires read and write permissions on the following files and directories: composer.json, composer.lock, vendor, storage/.composer diff --git a/extensions/package-manager/src/Api/Controller/RequireExtensionController.php b/extensions/package-manager/src/Api/Controller/RequireExtensionController.php index 88351212b..7213357c9 100644 --- a/extensions/package-manager/src/Api/Controller/RequireExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/RequireExtensionController.php @@ -3,6 +3,9 @@ namespace SychO\PackageManager\Api\Controller; use Flarum\Bus\Dispatcher; +use Laminas\Diactoros\Response\JsonResponse; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Server\RequestHandlerInterface; use SychO\PackageManager\Api\Serializer\ExtensionSerializer; use SychO\PackageManager\Command\RequireExtension; use SychO\PackageManager\Extension\ExtensionUtils; @@ -12,10 +15,8 @@ use Illuminate\Support\Arr; use Psr\Http\Message\ServerRequestInterface; use Tobscure\JsonApi\Document; -class RequireExtensionController extends AbstractCreateController +class RequireExtensionController implements RequestHandlerInterface { - public $serializer = ExtensionSerializer::class; - /** * @var Dispatcher */ @@ -26,13 +27,15 @@ class RequireExtensionController extends AbstractCreateController $this->bus = $bus; } - protected function data(ServerRequestInterface $request, Document $document) + public function handle(ServerRequestInterface $request): ResponseInterface { $actor = RequestUtil::getActor($request); $package = Arr::get($request->getParsedBody(), 'data.package'); - return $this->bus->dispatch( + $data = $this->bus->dispatch( new RequireExtension($actor, $package) ); + + return new JsonResponse($data); } } diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 57a9e5a1f..5d429f907 100644 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -4,6 +4,7 @@ namespace SychO\PackageManager\Command; use Composer\Console\Application; use Flarum\Extension\ExtensionManager; +use SychO\PackageManager\Exception\ComposerRequireFailedException; use SychO\PackageManager\Extension\ExtensionUtils; use SychO\PackageManager\RequirePackageValidator; use Symfony\Component\Console\Input\ArrayInput; @@ -56,7 +57,11 @@ class RequireExtensionHandler 'packages' => [$command->package], ]); - $this->composer->run($input, $output); + $exitCode = $this->composer->run($input, $output); + + if ($exitCode !== 0) { + throw new ComposerRequireFailedException($command->package, $output->fetch()); + } return ['id' => $extensionId]; } diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php new file mode 100644 index 000000000..7aaa72dc2 --- /dev/null +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php @@ -0,0 +1,48 @@ +withDetails($this->errorDetails($e)); + } + + protected function errorDetails(ComposerRequireFailedException $e): array + { + $details = [ + 'output' => $e->getMessage(), + ]; + + if ($guessedCause = $this->guessCause($e)) { + $details['guessed_cause'] = $guessedCause; + } + + return [$details]; + } + + protected function guessCause(ComposerRequireFailedException $e): ?string + { + error_log(str_replace('{PACKAGE_NAME}', preg_quote($e->packageName, '/'), self::INCOMPATIBLE_REGEX)); + $hasMatches = preg_match(str_replace('{PACKAGE_NAME}', preg_quote($e->packageName, '/'), self::INCOMPATIBLE_REGEX), $e->getMessage(), $matches); + + if ($hasMatches) { + return 'extension_incompatible_with_instance'; + } + + return null; + } +} diff --git a/extensions/package-manager/src/Exception/ComposerRequireFailedException.php b/extensions/package-manager/src/Exception/ComposerRequireFailedException.php new file mode 100644 index 000000000..cb68e21e7 --- /dev/null +++ b/extensions/package-manager/src/Exception/ComposerRequireFailedException.php @@ -0,0 +1,24 @@ +packageName = $packageName; + + parent::__construct($output); + } +} From 26e09d1e9d3788a6cb1f30710b1f3365f7fce79d Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sat, 25 Sep 2021 13:59:59 +0100 Subject: [PATCH 07/51] Add Update Checker --- extensions/package-manager/extend.php | 6 +- extensions/package-manager/js/dist/admin.js | 168 +++++++++++++++++- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/Installer.tsx | 2 +- .../js/src/admin/components/Updater.tsx | 102 +++++++++++ .../package-manager/js/src/admin/index.js | 8 + extensions/package-manager/less/admin.less | 57 ++++++ extensions/package-manager/locale/en.yml | 6 + .../Controller/CheckForUpdatesController.php | 40 +++++ .../src/Command/CheckForUpdates.php | 22 +++ .../src/Command/CheckForUpdatesHandler.php | 64 +++++++ 11 files changed, 473 insertions(+), 4 deletions(-) create mode 100644 extensions/package-manager/js/src/admin/components/Updater.tsx create mode 100644 extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php create mode 100644 extensions/package-manager/src/Command/CheckForUpdates.php create mode 100644 extensions/package-manager/src/Command/CheckForUpdatesHandler.php diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index 75a168b86..b79df3a43 100644 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -9,6 +9,7 @@ namespace SychO\PackageManager; use Flarum\Extend; use Flarum\Foundation\Paths; use Flarum\Frontend\Document; +use Flarum\Settings\SettingsRepositoryInterface; use SychO\PackageManager\Exception\ComposerCommandFailedExceptionHandler; use SychO\PackageManager\Exception\ComposerRequireFailedException; @@ -16,7 +17,8 @@ return [ (new Extend\Routes('api')) ->post('/package-manager/extensions', 'package-manager.extensions.require', Api\Controller\RequireExtensionController::class) ->patch('/package-manager/extensions/{id}', 'package-manager.extensions.update', Api\Controller\UpdateExtensionController::class) - ->delete('/package-manager/extensions/{id}', 'package-manager.extensions.remove', Api\Controller\RemoveExtensionController::class), + ->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), (new Extend\Frontend('admin')) ->css(__DIR__ . '/less/admin.less') @@ -28,6 +30,8 @@ return [ && is_writable($paths->storage.'/.composer') && is_writable($paths->base.'/composer.json') && is_writable($paths->base.'/composer.lock'); + + $document->payload['lastUpdateCheck'] = json_decode(resolve(SettingsRepositoryInterface::class)->get('sycho-package-manager.last_update_check', '{}'), true); }), new Extend\Locales(__DIR__ . '/locale'), diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index a6e64a78d..6cd92d981 100644 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -313,7 +313,7 @@ var Installer = /*#__PURE__*/function (_Component) { }); } }).then(function (response) { - var extensionId = response.data.attributes.id; + var extensionId = response.id; flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ type: 'success' }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.successful_install', { @@ -332,6 +332,144 @@ var Installer = /*#__PURE__*/function (_Component) { +/***/ }), + +/***/ "./src/admin/components/Updater.tsx": +/*!******************************************!*\ + !*** ./src/admin/components/Updater.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 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 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__); + + + + + + + +var Updater = /*#__PURE__*/function (_Component) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(Updater, _Component); + + function Updater() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.isLoading = false; + _this.lastUpdateCheck = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.lastUpdateCheck || {}; + return _this; + } + + var _proto = Updater.prototype; + + _proto.oninit = function oninit(vnode) { + _Component.prototype.oninit.call(this, vnode); + }; + + _proto.view = function view() { + var _this$lastUpdateCheck; + + var extensions = this.getExtensionUpdates(); // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension. + + return m("div", { + className: "Form-group" + }, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_title')), m("p", { + className: "helpText" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_help')), m("p", { + className: "PackageManager-lastUpdatedAt" + }, m("span", { + className: "PackageManager-lastUpdatedAt-label" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { + className: "Button", + icon: "fas fa-sync-alt", + onclick: this.checkForUpdates.bind(this), + loading: this.isLoading + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.check_for_updates')), extensions.length ? m("div", { + className: "PackageManager-extensions" + }, m("div", { + className: "PackageManager-extensions-grid" + }, extensions.map(function (extension) { + return m("div", { + className: "PackageManager-extension" + }, 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" + }, extension.version), m("span", { + className: "PackageManager-extension-version-latest Label" + }, extension.newPackageUpdate.latest))), m("div", { + className: "PackageManager-extension-controls" + }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { + icon: "fas fa-arrow-alt-circle-up", + className: "Button Button--icon Button--flat" + }))); + }))) : null); + }; + + _proto.getExtensionUpdates = function getExtensionUpdates() { + var _this$lastUpdateCheck2, _this$lastUpdateCheck3, _this$lastUpdateCheck4; + + var updates = (_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 safeToUpdate = composerPackage['latest-status'] === 'semver-safe-update'; + + if (extension && safeToUpdate) { + extension.newPackageUpdate = composerPackage; + } + + return extension && safeToUpdate; + }); + return Object.values(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions).filter(function (extension) { + return extension.newPackageUpdate; + }); + }; + + _proto.checkForUpdates = function checkForUpdates() { + var _this2 = this; + + this.isLoading = true; + 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/check-for-updates" + }).then(function (response) { + _this2.isLoading = false; + _this2.lastUpdateCheck = response; + m.redraw(); + }); + }; + + return Updater; +}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); + + + /***/ }), /***/ "./src/admin/index.js": @@ -356,6 +494,8 @@ __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 _components_Installer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); +/* harmony import */ var _components_Updater__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Updater */ "./src/admin/components/Updater.tsx"); + @@ -377,6 +517,10 @@ flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho- if (app.data.isRequiredDirectoriesWritable) { return m(_components_Installer__WEBPACK_IMPORTED_MODULE_6__["default"], null); } + }).registerSetting(function () { + if (app.data.isRequiredDirectoriesWritable) { + return m(_components_Updater__WEBPACK_IMPORTED_MODULE_7__["default"], null); + } }); Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default.a.prototype, 'topItems', function (items) { var _this = this; @@ -492,6 +636,28 @@ module.exports = flarum.core.compat['common/extend']; /***/ }), +/***/ "flarum/common/helpers/humanTime": +/*!*****************************************************************!*\ + !*** external "flarum.core.compat['common/helpers/humanTime']" ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/helpers/humanTime']; + +/***/ }), + +/***/ "flarum/common/helpers/icon": +/*!************************************************************!*\ + !*** external "flarum.core.compat['common/helpers/icon']" ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/helpers/icon']; + +/***/ }), + /***/ "flarum/common/utils/Stream": /*!************************************************************!*\ !*** external "flarum.core.compat['common/utils/Stream']" ***! diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index e5c4a111a..9dfc4954d 100644 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","e","response","errors","code","then","extensionId","attributes","id","alerts","extension","window","location","href","reload","m","redraw","Component","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","close"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.data.attributes.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\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\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['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/Modal'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/utils/Stream'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","e","response","errors","code","then","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","humanTime","checkedAt","checkForUpdates","length","map","icon","name","extra","version","newPackageUpdate","latest","updates","installed","filter","composerPackage","replace","safeToUpdate","values","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","close"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n\n // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension.\n\n return (\n
\n \n

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

\n

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

\n \n {extensions.length ? (\n
\n
\n {extensions.map((extension: any) => (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n
\n
\n ))}\n
\n
\n ) : null}\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')];\n const safeToUpdate = composerPackage['latest-status'] === 'semver-safe-update';\n\n if (extension && safeToUpdate) {\n extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n }).then((response) => {\n this.isLoading = false;\n this.lastUpdateCheck = response as LastUpdateCheck;\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\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['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/Modal'];","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'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx index ab421b700..fe424d2f7 100644 --- a/extensions/package-manager/js/src/admin/components/Installer.tsx +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -59,7 +59,7 @@ export default class Installer extends Component { app.modal.show(ComposerFailureModal, { error }); }, }).then((response) => { - const extensionId = response.data.attributes.id; + const extensionId = response.id; app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId })); window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`; window.location.reload(); diff --git a/extensions/package-manager/js/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx new file mode 100644 index 000000000..910866425 --- /dev/null +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -0,0 +1,102 @@ +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"; + +type UpdatedPackage = { + name: string; + version: string; + latest: string; + "latest-status": string; + description: string; +}; + +type ComposerUpdates = { + installed: UpdatedPackage[]; +}; + +type LastUpdateCheck = { + checkedAt: Date; + updates: ComposerUpdates; +}; + +export default class Updater extends Component { + isLoading: boolean = false; + lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {}; + + oninit(vnode) { + super.oninit(vnode); + } + + view() { + const extensions: any = this.getExtensionUpdates(); + + // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension. + + return ( +
+ +

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

+

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

+ + {extensions.length ? ( +
+
+ {extensions.map((extension: any) => ( +
+
+ {extension.icon ? icon(extension.icon.name) : ''} +
+
+
{extension.extra['flarum-extension'].title}
+
+ {extension.version} + {extension.newPackageUpdate.latest} +
+
+
+
+
+ ))} +
+
+ ) : null} +
+ ); + } + + getExtensionUpdates() { + const updates = this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => { + const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')]; + const safeToUpdate = composerPackage['latest-status'] === 'semver-safe-update'; + + if (extension && safeToUpdate) { + extension.newPackageUpdate = composerPackage; + } + + return extension && safeToUpdate; + }); + + return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate); + } + + checkForUpdates() { + this.isLoading = true; + + app.request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`, + }).then((response) => { + this.isLoading = false; + this.lastUpdateCheck = response as LastUpdateCheck; + m.redraw(); + }); + } +} diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js index 9d3f933ca..c0bcce2f6 100644 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.js @@ -5,6 +5,7 @@ import ExtensionPage from 'flarum/admin/components/ExtensionPage'; import Button from 'flarum/common/components/Button'; import LoadingModal from 'flarum/admin/components/LoadingModal'; import Installer from "./components/Installer"; +import Updater from "./components/Updater"; app.initializers.add('sycho-package-manager', (app) => { app.extensionData @@ -24,6 +25,13 @@ app.initializers.add('sycho-package-manager', (app) => { ); } + }) + .registerSetting(() => { + if (app.data.isRequiredDirectoriesWritable) { + return ( + + ); + } }); extend(ExtensionPage.prototype, 'topItems', function (items) { diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index bb5abb89f..a6cd8f170 100644 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -8,3 +8,60 @@ .ComposerFailureModal-output { white-space: break-spaces; } + +.sycho-package-manager-Page .ExtensionPage-settings .Form-group:last-child { + display: none; +} + +.PackageManager-lastUpdatedAt { + color: @control-color; + + &-label { + font-weight: bold; + } +} + +.PackageManager-extensions { + &-grid { + --gap: 12px; + display: grid; + grid-template-columns: repeat(auto-fit, calc(~"100% / 3 - var(--gap)")); + gap: var(--gap); + margin-top: 16px; + } +} + +.PackageManager-extension { + display: flex; + align-items: center; + gap: 8px; + background-color: @control-bg; + padding: 8px; + border-radius: @border-radius; + + &-controls { + margin-left: auto; + } + + &-icon { + --size: 40px; + } + + &-name { + font-weight: bold; + } + + &-version { + display: flex; + align-items: center; + gap: 8px; + + &-latest { + background: @alert-success-bg; + color: @alert-success-color; + border-radius: 30px; + padding: 0 6px; + font-weight: bold; + } + } +} diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index a413eb9f6..19f2ec522 100644 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -15,3 +15,9 @@ sycho-package-manager: file_permissions: > The package manager requires read and write permissions on the following files and directories: composer.json, composer.lock, vendor, storage/.composer + + updater: + check_for_updates: Check for updates + last_update_checked_at: "Last Update Check: " + updater_title: Updates + updater_help: Runs a check for new extension and Flarum updates. diff --git a/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php b/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php new file mode 100644 index 000000000..c71dc9c15 --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php @@ -0,0 +1,40 @@ +bus = $bus; + } + + public function handle(ServerRequestInterface $request): ResponseInterface + { + $actor = RequestUtil::getActor($request); + + $lastUpdateCheck = $this->bus->dispatch( + new CheckForUpdates($actor) + ); + + return new JsonResponse($lastUpdateCheck); + } +} diff --git a/extensions/package-manager/src/Command/CheckForUpdates.php b/extensions/package-manager/src/Command/CheckForUpdates.php new file mode 100644 index 000000000..d0a184368 --- /dev/null +++ b/extensions/package-manager/src/Command/CheckForUpdates.php @@ -0,0 +1,22 @@ +actor = $actor; + } +} diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php new file mode 100644 index 000000000..b79209ec9 --- /dev/null +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -0,0 +1,64 @@ +composer = $composer; + $this->settings = $settings; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + */ + public function handle(CheckForUpdates $command) + { + $actor = $command->actor; + + $actor->assertAdmin(); + + $output = new BufferedOutput(); + $input = new ArrayInput([ + 'command' => 'outdated', + '-D' => true, + '--format' => 'json', + ]); + + $this->composer->run($input, $output); + + $lastUpdateCheck = [ + 'checkedAt' => Carbon::now(), + 'updates' => json_decode($output->fetch(), true), + ]; + + $this->settings->set('sycho-package-manager.last_update_check', json_encode($lastUpdateCheck)); + + return $lastUpdateCheck; + } +} From b3a62bbac432458b3da8616d0c5e68ce77608eea Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sat, 25 Sep 2021 18:33:17 +0100 Subject: [PATCH 08/51] Add Extension Updating --- extensions/package-manager/js/dist/admin.js | 70 ++++++++++++++++--- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/Updater.tsx | 52 ++++++++++++-- extensions/package-manager/locale/en.yml | 2 + .../Controller/UpdateExtensionController.php | 20 +++--- .../src/Command/UpdateExtensionHandler.php | 66 +++++++++++++++-- .../ComposerCommandFailedException.php | 24 +++++++ .../ComposerCommandFailedExceptionHandler.php | 15 ++-- .../ComposerRequireFailedException.php | 16 +---- .../ComposerUpdateFailedException.php | 12 ++++ .../src/UpdateExtensionValidator.php | 15 ++++ 11 files changed, 242 insertions(+), 52 deletions(-) create mode 100644 extensions/package-manager/src/Exception/ComposerCommandFailedException.php create mode 100644 extensions/package-manager/src/Exception/ComposerUpdateFailedException.php create mode 100644 extensions/package-manager/src/UpdateExtensionValidator.php diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 6cd92d981..5501cd4aa 100644 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -355,6 +355,14 @@ __webpack_require__.r(__webpack_exports__); /* 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 _ComposerFailureModal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ComposerFailureModal */ "./src/admin/components/ComposerFailureModal.tsx"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_8__); + + + @@ -385,7 +393,8 @@ var Updater = /*#__PURE__*/function (_Component) { }; _proto.view = function view() { - var _this$lastUpdateCheck; + var _this$lastUpdateCheck, + _this2 = this; var extensions = this.getExtensionUpdates(); // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension. @@ -393,13 +402,13 @@ var Updater = /*#__PURE__*/function (_Component) { className: "Form-group" }, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_title')), m("p", { className: "helpText" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_help')), m("p", { + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_help')), Object.keys(this.lastUpdateCheck).length ? m("p", { className: "PackageManager-lastUpdatedAt" }, m("span", { className: "PackageManager-lastUpdatedAt-label" }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { + }, flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default()((_this$lastUpdateCheck = this.lastUpdateCheck) == null ? void 0 : _this$lastUpdateCheck.checkedAt))) : null, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { className: "Button", icon: "fas fa-sync-alt", onclick: this.checkForUpdates.bind(this), @@ -426,10 +435,14 @@ var Updater = /*#__PURE__*/function (_Component) { className: "PackageManager-extension-version-latest Label" }, extension.newPackageUpdate.latest))), m("div", { className: "PackageManager-extension-controls" + }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_8___default.a, { + text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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" - }))); + className: "Button Button--icon Button--flat", + onclick: _this2.update.bind(_this2, extension), + "aria-label": flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.update') + })))); }))) : null); }; @@ -438,7 +451,7 @@ var Updater = /*#__PURE__*/function (_Component) { var updates = (_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 safeToUpdate = composerPackage['latest-status'] === 'semver-safe-update'; + var safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); if (extension && safeToUpdate) { extension.newPackageUpdate = composerPackage; @@ -452,15 +465,43 @@ var Updater = /*#__PURE__*/function (_Component) { }; _proto.checkForUpdates = function checkForUpdates() { - var _this2 = this; + var _this3 = this; this.isLoading = true; 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/check-for-updates" }).then(function (response) { - _this2.isLoading = false; - _this2.lastUpdateCheck = response; + _this3.isLoading = false; + _this3.lastUpdateCheck = response; + m.redraw(); + }); + }; + + _proto.update = function update(extension) { + 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_1___default.a.request({ + method: 'PATCH', + url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/extensions/" + extension.id, + errorHandler: function errorHandler(e) { + var error = e.response.errors[0]; + + if (error.code !== 'composer_command_failure') { + throw e; + } + + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_7__["default"], { + error: error + }); + } + }).then(function () { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + type: 'success' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.successful_update', { + extension: extension.extra['flarum-extension'].title + })); + window.location.reload(); + })["finally"](function () { m.redraw(); }); }; @@ -625,6 +666,17 @@ module.exports = flarum.core.compat['common/components/Modal']; /***/ }), +/***/ "flarum/common/components/Tooltip": +/*!******************************************************************!*\ + !*** external "flarum.core.compat['common/components/Tooltip']" ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Tooltip']; + +/***/ }), + /***/ "flarum/common/extend": /*!******************************************************!*\ !*** external "flarum.core.compat['common/extend']" ***! diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 9dfc4954d..199eaf816 100644 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","e","response","errors","code","then","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","humanTime","checkedAt","checkForUpdates","length","map","icon","name","extra","version","newPackageUpdate","latest","updates","installed","filter","composerPackage","replace","safeToUpdate","values","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","close"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA,wC;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACe,SAASA,cAAT,CAAwBC,QAAxB,EAAkCC,UAAlC,EAA8C;AAC3DD,UAAQ,CAACE,SAAT,GAAqBC,MAAM,CAACC,MAAP,CAAcH,UAAU,CAACC,SAAzB,CAArB;AACAF,UAAQ,CAACE,SAAT,CAAmBG,WAAnB,GAAiCL,QAAjC;AACAM,oEAAc,CAACN,QAAD,EAAWC,UAAX,CAAd;AACD,C;;;;;;;;;;;;ACLD;AAAA;AAAe,SAASM,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AAC5CF,iBAAe,GAAGJ,MAAM,CAACG,cAAP,IAAyB,SAASC,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AACxED,KAAC,CAACE,SAAF,GAAcD,CAAd;AACA,WAAOD,CAAP;AACD,GAHD;;AAKA,SAAOD,eAAe,CAACC,CAAD,EAAIC,CAAJ,CAAtB;AACD,C;;;;;;;;;;;;;;;;;;;;ACPD;AACA;;IASqBE,oB;;;;;;;;;SACnBC,M,GAAA,gBAAOC,KAAP,EAAsC;AACpC,qBAAMD,MAAN,YAAaC,KAAb;;AAEA,QAAI,KAAKC,KAAL,CAAWC,KAAX,CAAiBC,aAArB,EAAoC;AAClC,WAAKC,UAAL,GAAkB;AAChBC,YAAI,EAAE,OADU;AAEhBC,eAAO,EAAEC,uDAAG,CAACC,UAAJ,CAAeC,KAAf,8DAAgF,KAAKR,KAAL,CAAWC,KAAX,CAAiBC,aAAjG;AAFO,OAAlB;AAID;AACF,G;;SAEDO,S,GAAA,qBAAY;AACV,WAAO,mCAAP;AACD,G;;SAEDC,K,GAAA,iBAAQ;AACN,WAAOJ,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,iDAArB,CAAP;AACD,G;;SAEDH,O,GAAA,mBAAU;AACR,WACE;AAAK,eAAS,EAAC;AAAf,OACE,mBACE,mBAAUC,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gEAArB,CAAV,CADF,EAEE;AAAK,eAAS,EAAC;AAAf,OAA8C,KAAKR,KAAL,CAAWC,KAAX,CAAiBU,MAA/D,CAFF,CADF,CADF;AAQD,G;;;EA7BwEC,qE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACT3E;AACA;AACA;AACA;AACA;AACA;;IAEqBC,S;;;;;;;;;;;UACnBC,W;UACAC,S,GAAqB,K;;;;;;SAErBjB,M,GAAA,gBAAOC,KAAP,EAAmC;AACjC,yBAAMD,MAAN,YAAaC,KAAb;;AAEA,SAAKe,WAAL,GAAmBE,iEAAM,CAAC,EAAD,CAAzB;AACD,G;;SAEDC,I,GAAA,gBAAyB;AACvB,WACE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,aAAO,EAAC;AAAf,OAAoCX,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CAApC,CADF,EAEE;AAAG,eAAS,EAAC;AAAb,OAAyBF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,qDAArB,EAA4E;AACnGU,eAAS,EAAE;AAAG,YAAI,EAAC;AAAR;AADwF,KAA5E,CAAzB,CAFF,EAKE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,eAAS,EAAC,aAAjB;AAA+B,QAAE,EAAC,mBAAlC;AAAsD,iBAAW,EAAC,qBAAlE;AAAwF,UAAI,EAAE,KAAKJ;AAAnG,MADF,EAEE,EAAC,sEAAD;AAAQ,eAAS,EAAC,QAAlB;AAA2B,UAAI,EAAC,iBAAhC;AAAkD,aAAO,EAAE,KAAKK,QAAL,CAAcC,IAAd,CAAmB,IAAnB,CAA3D;AAAqF,aAAO,EAAE,KAAKL;AAAnG,OACGT,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CADH,CAFF,CALF,CADF;AAcD,G;;SAEDa,I,GAAA,gBAAY;AACV,WAAO;AACL,iBAAS,KAAKP,WAAL;AADJ,KAAP;AAGD,G;;SAEDK,Q,GAAA,oBAAiB;AAAA;;AACf,SAAKJ,SAAL,GAAiB,IAAjB;AACAT,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,gCAFO;AAGVC,UAAI,EAAE;AACJT,YAAI,EAAE,KAAKA,IAAL;AADF,OAHI;AAMVU,kBAAY,EAAE,sBAACC,CAAD,EAAY;AACxB,YAAM/B,KAAK,GAAG+B,CAAC,CAACC,QAAF,CAAWC,MAAX,CAAkB,CAAlB,CAAd;;AAEA,YAAIjC,KAAK,CAACkC,IAAN,KAAe,0BAAnB,EAA+C;AAC7C,gBAAMH,CAAN;AACD;;AAED1B,+DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAe1B,6DAAf,EAAqC;AAAEI,eAAK,EAALA;AAAF,SAArC;AACD;AAdS,KAAZ,EAeGmC,IAfH,CAeQ,UAACH,QAAD,EAAc;AACpB,UAAMI,WAAW,GAAGJ,QAAQ,CAACK,EAA7B;AACAhC,6DAAG,CAACiC,MAAJ,CAAWhB,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,2DAArB,EAAkF;AAAEgC,iBAAS,EAAEH;AAAb,OAAlF,CAArC;AACAI,YAAM,CAACC,QAAP,CAAgBC,IAAhB,GAA0BrC,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,UAApB,CAA1B,oBAAwEQ,WAAxE;AACAI,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KApBD,aAoBW,YAAM;AACf,YAAI,CAAC7B,SAAL,GAAiB,KAAjB;AACA8B,OAAC,CAACC,MAAF;AACD,KAvBD;AAwBD,G;;;EA7DoCC,8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRvC;AACA;AACA;AACA;AACA;;IAmBqBC,O;;;;;;;;;;;UACnBjC,S,GAAqB,K;UACrBkC,e,GAAmC3C,uDAAG,CAACe,IAAJ,CAAS4B,eAAT,IAA4B,E;;;;;;SAE/DnD,M,GAAA,gBAAOC,KAAP,EAAc;AACZ,yBAAMD,MAAN,YAAaC,KAAb;AACD,G;;SAEDkB,I,GAAA,gBAAO;AAAA;;AACL,QAAMiC,UAAe,GAAG,KAAKC,mBAAL,EAAxB,CADK,CAGL;;AAEA,WACE;AAAK,eAAS,EAAC;AAAf,OACE,iBAAQ7C,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,mDAArB,CAAR,CADF,EAEE;AAAG,eAAS,EAAC;AAAb,OAAyBF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,kDAArB,CAAzB,CAFF,EAGE;AAAG,eAAS,EAAC;AAAb,OACE;AAAM,eAAS,EAAC;AAAhB,OAAsDF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,4DAArB,CAAtD,CADF,EAEE;AAAM,eAAS,EAAC;AAAhB,OAAsD4C,sEAAS,0BAAC,KAAKH,eAAN,qBAAC,sBAAsBI,SAAvB,CAA/D,CAFF,CAHF,EAOE,EAAC,sEAAD;AAAQ,eAAS,EAAC,QAAlB;AAA2B,UAAI,EAAC,iBAAhC;AAAkD,aAAO,EAAE,KAAKC,eAAL,CAAqBlC,IAArB,CAA0B,IAA1B,CAA3D;AAA4F,aAAO,EAAE,KAAKL;AAA1G,OACGT,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,CADH,CAPF,EAUG0C,UAAU,CAACK,MAAX,GACC;AAAK,eAAS,EAAC;AAAf,OACE;AAAK,eAAS,EAAC;AAAf,OACGL,UAAU,CAACM,GAAX,CAAe,UAAChB,SAAD;AAAA,aACd;AAAK,iBAAS,EAAC;AAAf,SACE;AAAK,iBAAS,EAAC,6CAAf;AAA6D,aAAK,EAAEA,SAAS,CAACiB;AAA9E,SACGjB,SAAS,CAACiB,IAAV,GAAiBA,iEAAI,CAACjB,SAAS,CAACiB,IAAV,CAAeC,IAAhB,CAArB,GAA6C,EADhD,CADF,EAIE;AAAK,iBAAS,EAAC;AAAf,SACE;AAAK,iBAAS,EAAC;AAAf,SAAgDlB,SAAS,CAACmB,KAAV,CAAgB,kBAAhB,EAAoCjD,KAApF,CADF,EAEE;AAAK,iBAAS,EAAC;AAAf,SACE;AAAM,iBAAS,EAAC;AAAhB,SAA4D8B,SAAS,CAACoB,OAAtE,CADF,EAEE;AAAM,iBAAS,EAAC;AAAhB,SAAiEpB,SAAS,CAACqB,gBAAV,CAA2BC,MAA5F,CAFF,CAFF,CAJF,EAWE;AAAK,iBAAS,EAAC;AAAf,SACE,EAAC,sEAAD;AAAQ,YAAI,EAAC,4BAAb;AAA0C,iBAAS,EAAC;AAApD,QADF,CAXF,CADc;AAAA,KAAf,CADH,CADF,CADD,GAsBG,IAhCN,CADF;AAoCD,G;;SAEDX,mB,GAAA,+BAAsB;AAAA;;AACpB,QAAMY,OAAO,6BAAG,KAAKd,eAAR,+CAAG,uBAAsBc,OAAzB,+CAAG,uBAA+BC,SAAlC,qBAAG,uBAA0CC,MAA1C,CAAiD,UAACC,eAAD,EAAqC;AACpG,UAAM1B,SAAS,GAAGlC,uDAAG,CAACe,IAAJ,CAAS6B,UAAT,CAAoBgB,eAAe,CAACR,IAAhB,CAAqBS,OAArB,CAA6B,GAA7B,EAAkC,GAAlC,EAAuCA,OAAvC,CAA+C,yBAA/C,EAA0E,EAA1E,CAApB,CAAlB;AACA,UAAMC,YAAY,GAAGF,eAAe,CAAC,eAAD,CAAf,KAAqC,oBAA1D;;AAEA,UAAI1B,SAAS,IAAI4B,YAAjB,EAA+B;AAC7B5B,iBAAS,CAACqB,gBAAV,GAA6BK,eAA7B;AACD;;AAED,aAAO1B,SAAS,IAAI4B,YAApB;AACD,KATe,CAAhB;AAWA,WAAO/E,MAAM,CAACgF,MAAP,CAAc/D,uDAAG,CAACe,IAAJ,CAAS6B,UAAvB,EAAmCe,MAAnC,CAA0C,UAACzB,SAAD;AAAA,aAAoBA,SAAS,CAACqB,gBAA9B;AAAA,KAA1C,CAAP;AACD,G;;SAEDP,e,GAAA,2BAAkB;AAAA;;AAChB,SAAKvC,SAAL,GAAiB,IAAjB;AAEAT,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL;AAFO,KAAZ,EAGGO,IAHH,CAGQ,UAACH,QAAD,EAAc;AACpB,YAAI,CAAClB,SAAL,GAAiB,KAAjB;AACA,YAAI,CAACkC,eAAL,GAAuBhB,QAAvB;AACAY,OAAC,CAACC,MAAF;AACD,KAPD;AAQD,G;;;EA7EkCC,8D;;;;;;;;;;;;;;ACvBrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAzC,uDAAG,CAACgE,YAAJ,CAAiBC,GAAjB,CAAqB,uBAArB,EAA8C,UAACjE,GAAD,EAAS;AACrDA,KAAG,CAACkE,aAAJ,QACO,uBADP,EAEGC,eAFH,CAEmB,YAAM;AACrB,QAAI,CAACnE,GAAG,CAACe,IAAJ,CAASqD,6BAAd,EAA6C;AAC3C,aACE;AAAK,iBAAS,EAAC;AAAf,SACE,EAAC,qEAAD;AAAO,YAAI,EAAC,SAAZ;AAAsB,mBAAW,EAAE;AAAnC,SAA2CpE,GAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,8CAArB,CAA3C,CADF,CADF;AAKD;AACF,GAVH,EAWGiE,eAXH,CAWmB,YAAM;AACrB,QAAInE,GAAG,CAACe,IAAJ,CAASqD,6BAAb,EAA4C;AAC1C,aACE,EAAC,6DAAD,OADF;AAGD;AACF,GAjBH,EAkBGD,eAlBH,CAkBmB,YAAM;AACrB,QAAInE,GAAG,CAACe,IAAJ,CAASqD,6BAAb,EAA4C;AAC1C,aACE,EAAC,2DAAD,OADF;AAGD;AACF,GAxBH;AA0BAC,qEAAM,CAACC,4EAAa,CAACxF,SAAf,EAA0B,UAA1B,EAAsC,UAAUyF,KAAV,EAAiB;AAAA;;AAC3DA,SAAK,CAACN,GAAN,CACE,QADF,EAEE,EAAC,sEAAD;AACE,eAAS,EAAC,uBADZ;AAEE,UAAI,EAAC,cAFP;AAGE,aAAO,EAAE,mBAAM;AACbjE,WAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,WAAG,CAACmB,OAAJ,CAAY;AACVE,aAAG,EAAKrB,GAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,oCAAiE,KAAI,CAACW,SAAL,CAAeF,EADzE;AAEVZ,gBAAM,EAAE;AAFE,SAAZ,EAGGU,IAHH,CAGQ,YAAM;AACZ9B,aAAG,CAACiC,MAAJ,CAAWhB,IAAX,CAAgB;AAAEnB,gBAAI,EAAE;AAAR,WAAhB,EAAqCE,GAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,0DAArB,CAArC;AACAiC,gBAAM,CAACC,QAAP,GAAkBpC,GAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,UAApB,CAAlB;AACD,SAND,aAMW,YAAM;AACfvB,aAAG,CAACgB,KAAJ,CAAUwD,KAAV;AACD,SARD;AASD;AAfH,gBAFF;AAqBD,GAtBK,CAAN;AAuBD,CAlDD,E;;;;;;;;;;;ACTA,iD;;;;;;;;;;;ACAA,sE;;;;;;;;;;;ACAA,qE;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,qD;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,2D","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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n\n // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension.\n\n return (\n
\n \n

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

\n

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

\n \n {extensions.length ? (\n
\n
\n {extensions.map((extension: any) => (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n
\n
\n ))}\n
\n
\n ) : null}\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')];\n const safeToUpdate = composerPackage['latest-status'] === 'semver-safe-update';\n\n if (extension && safeToUpdate) {\n extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n }).then((response) => {\n this.isLoading = false;\n this.lastUpdateCheck = response as LastUpdateCheck;\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\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['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/Modal'];","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'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","e","response","errors","code","then","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","keys","length","humanTime","checkedAt","checkForUpdates","map","icon","name","extra","version","newPackageUpdate","latest","update","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","close"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n\n // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension.\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {extensions.map((extension: any) => (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n ))}\n
\n
\n ) : null}\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n }).then((response) => {\n this.isLoading = false;\n this.lastUpdateCheck = response as LastUpdateCheck;\n m.redraw();\n });\n }\n\n update(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['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/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'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index 910866425..d0e1f6fa8 100644 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -3,6 +3,9 @@ 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 ComposerFailureModal from "./ComposerFailureModal"; +import Tooltip from "flarum/common/components/Tooltip"; type UpdatedPackage = { name: string; @@ -38,11 +41,17 @@ export default class Updater extends Component {

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

-

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

- {extensions.length ? ( @@ -61,7 +70,13 @@ export default class Updater extends Component {
-
))} @@ -75,7 +90,7 @@ export default class Updater extends Component { getExtensionUpdates() { const updates = this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => { const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')]; - const safeToUpdate = composerPackage['latest-status'] === 'semver-safe-update'; + const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); if (extension && safeToUpdate) { extension.newPackageUpdate = composerPackage; @@ -99,4 +114,27 @@ export default class Updater extends Component { m.redraw(); }); } + + update(extension: any) { + app.modal.show(LoadingModal); + + app.request({ + method: 'PATCH', + url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`, + errorHandler: (e: any) => { + const error = e.response.errors[0]; + + if (error.code !== 'composer_command_failure') { + throw e; + } + + app.modal.show(ComposerFailureModal, { error }); + }, + }).then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })); + window.location.reload(); + }).finally(() => { + m.redraw(); + }); + } } diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 19f2ec522..d3844f917 100644 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -6,6 +6,8 @@ sycho-package-manager: proceed: Proceed successful_install: "{extension} was installed successfully, redirecting.." successful_remove: Extension removed successfully. + successful_update: "{extension} was updated successfully, redirecting.." + update: Update failure_modal: title: Operation Failed diff --git a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php index 2e076299c..dc5a67c9d 100644 --- a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php @@ -1,20 +1,22 @@ getQueryParams(), 'id'); - return $this->bus->dispatch( + $this->bus->dispatch( new UpdateExtension($actor, $extensionId) ); + + return new EmptyResponse(); } } diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index 165e510a2..90e8e3368 100644 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -1,26 +1,47 @@ composer = $composer; $this->extensions = $extensions; - $this->packages = $packages; + $this->validator = $validator; + $this->settings = $settings; } /** @@ -31,12 +52,45 @@ class UpdateExtensionHandler { $command->actor->assertAdmin(); + $this->validator->assertValid(['extensionId' => $command->extensionId]); + $extension = $this->extensions->getExtension($command->extensionId); if (empty($extension)) { // ... exception } - $this->packages->updatePackage($extension->name); + $output = new BufferedOutput(); + $input = new ArrayInput([ + 'command' => 'require', + 'packages' => ["$extension->name:*"], + ]); + + $exitCode = $this->composer->run($input, $output); + + if ($exitCode !== 0) { + throw new ComposerUpdateFailedException($extension->name, $output->fetch()); + } + + $lastUpdateCheck = json_decode($this->settings->get('sycho-package-manager.last_update_check', '{}'), true); + + if (isset($lastUpdateCheck['updates']) && ! empty($lastUpdateCheck['updates']['installed'])) { + $updatesListChanged = false; + + foreach ($lastUpdateCheck['updates']['installed'] as $k => $package) { + if ($package['name'] === $extension->name) { + unset($lastUpdateCheck['updates']['installed'][$k]); + $updatesListChanged = true; + break; + } + } + + if ($updatesListChanged) { + $lastUpdateCheck['updates']['installed'] = array_values($lastUpdateCheck['updates']['installed']); + $this->settings->set('sycho-package-manager.last_update_check', json_encode($lastUpdateCheck)); + } + } + + return true; } } diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php new file mode 100644 index 000000000..d45b94792 --- /dev/null +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php @@ -0,0 +1,24 @@ +packageName = $packageName; + + parent::__construct($output); + } +} diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php index 7aaa72dc2..4f97fc25b 100644 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php @@ -12,7 +12,7 @@ class ComposerCommandFailedExceptionHandler { protected const INCOMPATIBLE_REGEX = '/ +- {PACKAGE_NAME} v[0-9.]+ requires flarum\/core/m'; - public function handle(ComposerRequireFailedException $e): HandledError + public function handle(ComposerCommandFailedException $e): HandledError { return (new HandledError( $e, @@ -21,7 +21,7 @@ class ComposerCommandFailedExceptionHandler ))->withDetails($this->errorDetails($e)); } - protected function errorDetails(ComposerRequireFailedException $e): array + protected function errorDetails(ComposerCommandFailedException $e): array { $details = [ 'output' => $e->getMessage(), @@ -34,13 +34,14 @@ class ComposerCommandFailedExceptionHandler return [$details]; } - protected function guessCause(ComposerRequireFailedException $e): ?string + protected function guessCause(ComposerCommandFailedException $e): ?string { - error_log(str_replace('{PACKAGE_NAME}', preg_quote($e->packageName, '/'), self::INCOMPATIBLE_REGEX)); - $hasMatches = preg_match(str_replace('{PACKAGE_NAME}', preg_quote($e->packageName, '/'), self::INCOMPATIBLE_REGEX), $e->getMessage(), $matches); + if ($e instanceof ComposerRequireFailedException) { + $hasMatches = preg_match(str_replace('{PACKAGE_NAME}', preg_quote($e->packageName, '/'), self::INCOMPATIBLE_REGEX), $e->getMessage(), $matches); - if ($hasMatches) { - return 'extension_incompatible_with_instance'; + if ($hasMatches) { + return 'extension_incompatible_with_instance'; + } } return null; diff --git a/extensions/package-manager/src/Exception/ComposerRequireFailedException.php b/extensions/package-manager/src/Exception/ComposerRequireFailedException.php index cb68e21e7..40765f83f 100644 --- a/extensions/package-manager/src/Exception/ComposerRequireFailedException.php +++ b/extensions/package-manager/src/Exception/ComposerRequireFailedException.php @@ -6,19 +6,7 @@ namespace SychO\PackageManager\Exception; -use Exception; - -class ComposerRequireFailedException extends Exception +class ComposerRequireFailedException extends ComposerCommandFailedException { - /** - * @var string - */ - public $packageName; - - public function __construct(string $packageName, string $output) - { - $this->packageName = $packageName; - - parent::__construct($output); - } + // ... } diff --git a/extensions/package-manager/src/Exception/ComposerUpdateFailedException.php b/extensions/package-manager/src/Exception/ComposerUpdateFailedException.php new file mode 100644 index 000000000..06a9c7bf9 --- /dev/null +++ b/extensions/package-manager/src/Exception/ComposerUpdateFailedException.php @@ -0,0 +1,12 @@ + 'required|string' + ]; +} From 2812eada2cf9a0dda9ec3701ae5376dc09c83456 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sat, 25 Sep 2021 20:42:44 +0100 Subject: [PATCH 09/51] show remove option only when extension is disabled and isn't the package manager --- extensions/package-manager/js/dist/admin.js | 18 ++++++++++++++++++ .../package-manager/js/dist/admin.js.map | 2 +- .../package-manager/js/src/admin/index.js | 5 +++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 5501cd4aa..077633019 100644 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -536,6 +536,9 @@ __webpack_require__.r(__webpack_exports__); /* 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 _components_Installer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); /* harmony import */ var _components_Updater__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Updater */ "./src/admin/components/Updater.tsx"); +/* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/admin/utils/isExtensionEnabled */ "flarum/admin/utils/isExtensionEnabled"); +/* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__); + @@ -566,6 +569,10 @@ flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho- Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default.a.prototype, 'topItems', function (items) { var _this = this; + if (this.extension.id === 'sycho-package-manager' || flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8___default()(this.extension.id)) { + return; + } + items.add('remove', m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { className: "Button Button--danger", icon: "fas fa-times", @@ -622,6 +629,17 @@ module.exports = flarum.core.compat['admin/components/LoadingModal']; /***/ }), +/***/ "flarum/admin/utils/isExtensionEnabled": +/*!***********************************************************************!*\ + !*** external "flarum.core.compat['admin/utils/isExtensionEnabled']" ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/utils/isExtensionEnabled']; + +/***/ }), + /***/ "flarum/common/Component": /*!*********************************************************!*\ !*** external "flarum.core.compat['common/Component']" ***! diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 199eaf816..b12babf37 100644 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","e","response","errors","code","then","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","keys","length","humanTime","checkedAt","checkForUpdates","map","icon","name","extra","version","newPackageUpdate","latest","update","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","close"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n\n // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension.\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {extensions.map((extension: any) => (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n ))}\n
\n
\n ) : null}\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n }).then((response) => {\n this.isLoading = false;\n this.lastUpdateCheck = response as LastUpdateCheck;\n m.redraw();\n });\n }\n\n update(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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\";\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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['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/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'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","e","response","errors","code","then","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","keys","length","humanTime","checkedAt","checkForUpdates","map","icon","name","extra","version","newPackageUpdate","latest","update","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n\n // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension.\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {extensions.map((extension: any) => (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n ))}\n
\n
\n ) : null}\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n }).then((response) => {\n this.isLoading = false;\n this.lastUpdateCheck = response as LastUpdateCheck;\n m.redraw();\n });\n }\n\n update(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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/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'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js index c0bcce2f6..0e71bffb0 100644 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.js @@ -6,6 +6,7 @@ import Button from 'flarum/common/components/Button'; import LoadingModal from 'flarum/admin/components/LoadingModal'; import Installer from "./components/Installer"; import Updater from "./components/Updater"; +import isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled'; app.initializers.add('sycho-package-manager', (app) => { app.extensionData @@ -35,6 +36,10 @@ app.initializers.add('sycho-package-manager', (app) => { }); extend(ExtensionPage.prototype, 'topItems', function (items) { + if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) { + return; + } + items.add( 'remove', \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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n\n // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension.\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {extensions.map((extension: any) => (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n ))}\n
\n
\n ) : null}\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n }).then((response) => {\n this.isLoading = false;\n this.lastUpdateCheck = response as LastUpdateCheck;\n m.redraw();\n });\n }\n\n update(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\n },\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\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/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'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA,wC;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACe,SAASA,cAAT,CAAwBC,QAAxB,EAAkCC,UAAlC,EAA8C;AAC3DD,UAAQ,CAACE,SAAT,GAAqBC,MAAM,CAACC,MAAP,CAAcH,UAAU,CAACC,SAAzB,CAArB;AACAF,UAAQ,CAACE,SAAT,CAAmBG,WAAnB,GAAiCL,QAAjC;AACAM,oEAAc,CAACN,QAAD,EAAWC,UAAX,CAAd;AACD,C;;;;;;;;;;;;ACLD;AAAA;AAAe,SAASM,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AAC5CF,iBAAe,GAAGJ,MAAM,CAACG,cAAP,IAAyB,SAASC,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AACxED,KAAC,CAACE,SAAF,GAAcD,CAAd;AACA,WAAOD,CAAP;AACD,GAHD;;AAKA,SAAOD,eAAe,CAACC,CAAD,EAAIC,CAAJ,CAAtB;AACD,C;;;;;;;;;;;;;;;;;;;;ACPD;AACA;;IASqBE,oB;;;;;;;;;SACnBC,M,GAAA,gBAAOC,KAAP,EAAsC;AACpC,qBAAMD,MAAN,YAAaC,KAAb;;AAEA,QAAI,KAAKC,KAAL,CAAWC,KAAX,CAAiBC,aAArB,EAAoC;AAClC,WAAKC,UAAL,GAAkB;AAChBC,YAAI,EAAE,OADU;AAEhBC,eAAO,EAAEC,uDAAG,CAACC,UAAJ,CAAeC,KAAf,8DAAgF,KAAKR,KAAL,CAAWC,KAAX,CAAiBC,aAAjG;AAFO,OAAlB;AAID;AACF,G;;SAEDO,S,GAAA,qBAAY;AACV,WAAO,mCAAP;AACD,G;;SAEDC,K,GAAA,iBAAQ;AACN,WAAOJ,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,iDAArB,CAAP;AACD,G;;SAEDH,O,GAAA,mBAAU;AACR,WACE;AAAK,eAAS,EAAC;AAAf,OACE,mBACE,mBAAUC,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gEAArB,CAAV,CADF,EAEE;AAAK,eAAS,EAAC;AAAf,OAA8C,KAAKR,KAAL,CAAWC,KAAX,CAAiBU,MAA/D,CAFF,CADF,CADF;AAQD,G;;;EA7BwEC,qE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACT3E;AACA;AACA;AACA;AACA;AAEA;;IAEqBC,S;;;;;;;;;;;UACnBC,W;UACAC,S,GAAqB,K;;;;;;SAErBjB,M,GAAA,gBAAOC,KAAP,EAAmC;AACjC,yBAAMD,MAAN,YAAaC,KAAb;;AAEA,SAAKe,WAAL,GAAmBE,iEAAM,CAAC,EAAD,CAAzB;AACD,G;;SAEDC,I,GAAA,gBAAyB;AACvB,WACE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,aAAO,EAAC;AAAf,OAAoCX,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CAApC,CADF,EAEE;AAAG,eAAS,EAAC;AAAb,OAAyBF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,qDAArB,EAA4E;AACnGU,eAAS,EAAE;AAAG,YAAI,EAAC;AAAR;AADwF,KAA5E,CAAzB,CAFF,EAKE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,eAAS,EAAC,aAAjB;AAA+B,QAAE,EAAC,mBAAlC;AAAsD,iBAAW,EAAC,qBAAlE;AAAwF,UAAI,EAAE,KAAKJ;AAAnG,MADF,EAEE,EAAC,sEAAD;AAAQ,eAAS,EAAC,QAAlB;AAA2B,UAAI,EAAC,iBAAhC;AAAkD,aAAO,EAAE,KAAKK,QAAL,CAAcC,IAAd,CAAmB,IAAnB,CAA3D;AAAqF,aAAO,EAAE,KAAKL;AAAnG,OACGT,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CADH,CAFF,CALF,CADF;AAcD,G;;SAEDa,I,GAAA,gBAAY;AACV,WAAO;AACL,iBAAS,KAAKP,WAAL;AADJ,KAAP;AAGD,G;;SAEDK,Q,GAAA,oBAAiB;AAAA;;AACf,SAAKJ,SAAL,GAAiB,IAAjB;AACAT,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,gCAFO;AAGVC,UAAI,EAAE;AACJT,YAAI,EAAE,KAAKA,IAAL;AADF,OAHI;AAMVU,kBAAY,EAAZA,2DAAYA;AANF,KAAZ,EAOGC,IAPH,CAOQ,UAACC,QAAD,EAAc;AACpB,UAAMC,WAAW,GAAGD,QAAQ,CAACE,EAA7B;AACA7B,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,2DAArB,EAAkF;AAAE6B,iBAAS,EAAEH;AAAb,OAAlF,CAArC;AACAI,YAAM,CAACC,QAAP,CAAgBC,IAAhB,GAA0BlC,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,UAApB,CAA1B,oBAAwEK,WAAxE;AACAI,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KAZD,aAYW,YAAM;AACf,YAAI,CAAC1B,SAAL,GAAiB,KAAjB;AACA2B,OAAC,CAACC,MAAF;AACD,KAfD;AAgBD,G;;;EArDoCC,8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTvC;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;IAmBqBC,O;;;;;;;;;;;UACnB9B,S,GAAqB,K;UACrB+B,e,GAAmCxC,uDAAG,CAACe,IAAJ,CAASyB,eAAT,IAA4B,E;;;;;;SAE/DhD,M,GAAA,gBAAOC,KAAP,EAAc;AACZ,yBAAMD,MAAN,YAAaC,KAAb;AACD,G;;SAEDkB,I,GAAA,gBAAO;AAAA;AAAA;;AACL,QAAM8B,UAAe,GAAG,KAAKC,mBAAL,EAAxB;AACA,QAAMC,UAAoC,GAAG,KAAKC,aAAL,EAA7C;AACA,QAAIC,IAAI,GAAG,IAAX;;AAEA,QAAIF,UAAJ,EAAgB;AACdE,UAAI,GAAG;AACLzC,aAAK,EAAEJ,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CADF;AAEL4C,eAAO,EAAE9C,uDAAG,CAACe,IAAJ,CAASgC,QAAT,CAAkBD,OAFtB;AAGLE,YAAI,EAAE;AACJC,yBAAe,WAASjD,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,SAApB,CAAT;AADX,SAHD;AAML2B,wBAAgB,EAAEP;AANb,OAAP;AAQD;;AAED,WACE;AAAK,eAAS,EAAC;AAAf,OACE,iBAAQ3C,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,mDAArB,CAAR,CADF,EAEE;AAAG,eAAS,EAAC;AAAb,OAAyBF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,kDAArB,CAAzB,CAFF,EAGGnB,MAAM,CAACoE,IAAP,CAAY,KAAKX,eAAjB,EAAkCY,MAAlC,GACC;AAAG,eAAS,EAAC;AAAb,OACE;AAAM,eAAS,EAAC;AAAhB,OAAsDpD,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,4DAArB,CAAtD,CADF,EAEE;AAAM,eAAS,EAAC;AAAhB,OAAsDmD,sEAAS,0BAAC,KAAKb,eAAN,qBAAC,sBAAsBc,SAAvB,CAA/D,CAFF,CADD,GAKG,IARN,EASE,EAAC,sEAAD;AACE,eAAS,EAAC,QADZ;AAEE,UAAI,EAAC,iBAFP;AAGE,aAAO,EAAE,KAAKC,eAAL,CAAqBzC,IAArB,CAA0B,IAA1B,CAHX;AAIE,aAAO,EAAE,KAAKL;AAJhB,OAKGT,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,CALH,CATF,EAgBGuC,UAAU,CAACW,MAAX,GACC;AAAK,eAAS,EAAC;AAAf,OACE;AAAK,eAAS,EAAC;AAAf,OACGP,IAAI,GAAG,KAAKW,aAAL,CAAmBX,IAAnB,EAAyB,IAAzB,CAAH,GAAoC,IAD3C,EAEGJ,UAAU,CAACgB,GAAX,CAAe,UAAC1B,SAAD;AAAA,aAAoB,MAAI,CAACyB,aAAL,CAAmBzB,SAAnB,CAApB;AAAA,KAAf,CAFH,CADF,CADD,GAOG,IAvBN,CADF;AA2BD,G;;SAEDyB,a,GAAA,uBAAczB,SAAd,EAA8B2B,MAA9B,EAAuD;AAAA,QAAzBA,MAAyB;AAAzBA,YAAyB,GAAP,KAAO;AAAA;;AACrD,WACE;AAAK,eAAS,EAAEC,oEAAS,CAAC;AAAC,oCAA4B,IAA7B;AAAmC,0CAAkCD;AAArE,OAAD;AAAzB,OACE;AAAK,eAAS,EAAC,6CAAf;AAA6D,WAAK,EAAE3B,SAAS,CAACiB;AAA9E,OACGjB,SAAS,CAACiB,IAAV,GAAiBA,iEAAI,CAACjB,SAAS,CAACiB,IAAV,CAAeY,IAAhB,CAArB,GAA6C,EADhD,CADF,EAIE;AAAK,eAAS,EAAC;AAAf,OACE;AAAK,eAAS,EAAC;AAAf,OAAgD7B,SAAS,CAAC3B,KAAV,IAAmB2B,SAAS,CAAC8B,KAAV,CAAgB,kBAAhB,EAAoCzD,KAAvG,CADF,EAEE;AAAK,eAAS,EAAC;AAAf,OACE;AAAM,eAAS,EAAC;AAAhB,OAA4D2B,SAAS,CAACe,OAAtE,CADF,EAEE;AAAM,eAAS,EAAC;AAAhB,OAAiEf,SAAS,CAACmB,gBAAV,CAA2BY,MAA5F,CAFF,CAFF,CAJF,EAWE;AAAK,eAAS,EAAC;AAAf,OACE,EAAC,uEAAD;AAAS,UAAI,EAAE9D,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,+CAArB;AAAf,OACE,EAAC,sEAAD;AACE,UAAI,EAAC,4BADP;AAEE,eAAS,EAAC,kCAFZ;AAGE,aAAO,EAAEwD,MAAM,GAAG,KAAKK,eAAL,CAAqBjD,IAArB,CAA0B,IAA1B,CAAH,GAAqC,KAAKkD,eAAL,CAAqBlD,IAArB,CAA0B,IAA1B,EAAgCiB,SAAhC,CAHtD;AAIE,oBAAY/B,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,+CAArB;AAJd,MADF,CADF,CAXF,CADF;AAuBD,G;;SAEDwC,mB,GAAA,+BAAsB;AAAA;;AACpB,QAAMuB,OAAO,6BAAG,KAAKzB,eAAR,+CAAG,uBAAsByB,OAAzB,+CAAG,uBAA+BC,SAAlC,qBAAG,uBAA0CC,MAA1C,CAAiD,UAACC,eAAD,EAAqC;AACpG,UAAMrC,SAAS,GAAG/B,uDAAG,CAACe,IAAJ,CAAS0B,UAAT,CAAoB2B,eAAe,CAACR,IAAhB,CAAqBS,OAArB,CAA6B,GAA7B,EAAkC,GAAlC,EAAuCA,OAAvC,CAA+C,yBAA/C,EAA0E,EAA1E,CAApB,CAAlB;AACA,UAAMC,YAAY,GAAG,CAAC,oBAAD,EAAuB,iBAAvB,EAA0CC,QAA1C,CAAmDH,eAAe,CAAC,eAAD,CAAlE,CAArB;;AAEA,UAAIrC,SAAS,IAAIuC,YAAjB,EAA+B;AAC7BvC,iBAAS,CAACmB,gBAAV,GAA6BkB,eAA7B;AACD;;AAED,aAAOrC,SAAS,IAAIuC,YAApB;AACD,KATe,CAAhB;AAWA,WAAOvF,MAAM,CAACyF,MAAP,CAAcxE,uDAAG,CAACe,IAAJ,CAAS0B,UAAvB,EAAmC0B,MAAnC,CAA0C,UAACpC,SAAD;AAAA,aAAoBA,SAAS,CAACmB,gBAA9B;AAAA,KAA1C,CAAP;AACD,G;;SAEDN,a,GAAA,yBAA0C;AAAA;;AACxC,qCAAO,KAAKJ,eAAZ,+CAAO,uBAAsByB,OAA7B,+CAAO,uBAA+BC,SAAtC,qBAAO,uBAA0CC,MAA1C,CAAiD,UAACC,eAAD;AAAA,aAA0BA,eAAe,CAACR,IAAhB,KAAyB,aAAnD;AAAA,KAAjD,EAAmHa,GAAnH,EAAP;AACD,G;;SAEDlB,e,GAAA,2BAAkB;AAAA;;AAChB,SAAK9C,SAAL,GAAiB,IAAjB;AAEAT,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,uCAFO;AAGVE,kBAAY,EAAZA,2DAAYA;AAHF,KAAZ,EAIGC,IAJH,CAIQ,UAACC,QAAD,EAAc;AACpB,YAAI,CAACa,eAAL,GAAuBb,QAAvB;AACD,KAND,aAMW,YAAM;AACf,YAAI,CAAClB,SAAL,GAAiB,KAAjB;AACA2B,OAAC,CAACC,MAAF;AACD,KATD;AAUD,G;;SAED0B,e,GAAA,2BAAkB;AAChB/D,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,kCAFO;AAGVE,kBAAY,EAAZA,2DAAYA;AAHF,KAAZ,EAIGC,IAJH,CAIQ,YAAM;AACZ1B,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,6DAArB,CAArC;AACA8B,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KAPD,aAOW,YAAM;AACfC,OAAC,CAACC,MAAF;AACD,KATD;AAUD,G;;SAED2B,e,GAAA,yBAAgBjC,SAAhB,EAAgC;AAC9B/B,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,OADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,oCAAiEQ,SAAS,CAACF,EAFpE;AAGVJ,kBAAY,EAAZA,2DAAYA;AAHF,KAAZ,EAIGC,IAJH,CAIQ,YAAM;AACZ1B,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,0DAArB,EAAiF;AAAE6B,iBAAS,EAAEA,SAAS,CAAC8B,KAAV,CAAgB,kBAAhB,EAAoCzD;AAAjD,OAAjF,CAArC;AACA4B,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KAPD,aAOW,YAAM;AACfC,OAAC,CAACC,MAAF;AACD,KATD;AAUD,G;;;EA7IkCC,8D;;;;;;;;;;;;;;AC5BrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAtC,uDAAG,CAAC0E,YAAJ,CAAiBC,GAAjB,CAAqB,uBAArB,EAA8C,UAAC3E,GAAD,EAAS;AACrDA,KAAG,CAAC4E,aAAJ,QACO,uBADP,EAEGC,eAFH,CAEmB,YAAM;AACrB,QAAI,CAAC7E,GAAG,CAACe,IAAJ,CAAS+D,6BAAd,EAA6C;AAC3C,aACE;AAAK,iBAAS,EAAC;AAAf,SACE,EAAC,qEAAD;AAAO,YAAI,EAAC,SAAZ;AAAsB,mBAAW,EAAE;AAAnC,SAA2C9E,GAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,8CAArB,CAA3C,CADF,CADF;AAKD;AACF,GAVH,EAWG2E,eAXH,CAWmB,YAAM;AACrB,QAAI7E,GAAG,CAACe,IAAJ,CAAS+D,6BAAb,EAA4C;AAC1C,aACE,EAAC,6DAAD,OADF;AAGD;AACF,GAjBH,EAkBGD,eAlBH,CAkBmB,YAAM;AACrB,QAAI7E,GAAG,CAACe,IAAJ,CAAS+D,6BAAb,EAA4C;AAC1C,aACE,EAAC,2DAAD,OADF;AAGD;AACF,GAxBH;AA0BAC,qEAAM,CAACC,4EAAa,CAAClG,SAAf,EAA0B,UAA1B,EAAsC,UAAUmG,KAAV,EAAiB;AAAA;;AAC3D,QAAI,KAAKlD,SAAL,CAAeF,EAAf,KAAsB,uBAAtB,IAAiDqD,4EAAkB,CAAC,KAAKnD,SAAL,CAAeF,EAAhB,CAAvE,EAA4F;AAC1F;AACD;;AAEDoD,SAAK,CAACN,GAAN,CACE,QADF,EAEE,EAAC,sEAAD;AACE,eAAS,EAAC,uBADZ;AAEE,UAAI,EAAC,cAFP;AAGE,aAAO,EAAE,mBAAM;AACb3E,WAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,WAAG,CAACmB,OAAJ,CAAY;AACVE,aAAG,EAAKrB,GAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,oCAAiE,KAAI,CAACQ,SAAL,CAAeF,EADzE;AAEVT,gBAAM,EAAE;AAFE,SAAZ,EAGGM,IAHH,CAGQ,YAAM;AACZ1B,aAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,gBAAI,EAAE;AAAR,WAAhB,EAAqCE,GAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,0DAArB,CAArC;AACA8B,gBAAM,CAACC,QAAP,GAAkBjC,GAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,UAApB,CAAlB;AACD,SAND,aAMW,YAAM;AACfvB,aAAG,CAACgB,KAAJ,CAAUmE,KAAV;AACD,SARD;AASD;AAfH,gBAFF;AAqBD,GA1BK,CAAN;AA2BD,CAtDD,E;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AACA;AAEe,yEAAUC,CAAV,EAAkB;AAC/B,MAAMzF,KAAK,GAAGyF,CAAC,CAACzD,QAAF,CAAW0D,MAAX,CAAkB,CAAlB,CAAd;;AAEA,MAAI1F,KAAK,CAAC2F,IAAN,KAAe,0BAAnB,EAA+C;AAC7C,UAAMF,CAAN;AACD;;AAEDpF,yDAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAe1B,wEAAf,EAAqC;AAAEI,SAAK,EAALA;AAAF,GAArC;AACD,C;;;;;;;;;;;ACXD,iD;;;;;;;;;;;ACAA,sE;;;;;;;;;;;ACAA,qE;;;;;;;;;;;ACAA,sE;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,iE;;;;;;;;;;;ACAA,qD;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,8D","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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\nimport errorHandler from \"../utils/errorHandler\";\nimport classList from \"flarum/common/utils/classList\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null}\n
\n );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\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/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 old mode 100644 new mode 100755 diff --git a/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx b/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx old mode 100644 new mode 100755 diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx old mode 100644 new mode 100755 index fe424d2f7..cac506a4e --- a/extensions/package-manager/js/src/admin/components/Installer.tsx +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -5,6 +5,7 @@ import Button from "flarum/common/components/Button"; import Stream from "flarum/common/utils/Stream"; import LoadingModal from "flarum/admin/components/LoadingModal"; import ComposerFailureModal from "./ComposerFailureModal"; +import errorHandler from "../utils/errorHandler"; export default class Installer extends Component { packageName!: Stream; @@ -49,15 +50,7 @@ export default class Installer extends Component { body: { data: this.data() }, - errorHandler: (e: any) => { - const error = e.response.errors[0]; - - if (error.code !== 'composer_command_failure') { - throw e; - } - - app.modal.show(ComposerFailureModal, { error }); - }, + errorHandler, }).then((response) => { const extensionId = response.id; app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId })); diff --git a/extensions/package-manager/js/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx old mode 100644 new mode 100755 index d0e1f6fa8..6bb43d634 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -6,6 +6,8 @@ import humanTime from "flarum/common/helpers/humanTime"; import LoadingModal from "flarum/admin/components/LoadingModal"; import ComposerFailureModal from "./ComposerFailureModal"; import Tooltip from "flarum/common/components/Tooltip"; +import errorHandler from "../utils/errorHandler"; +import classList from "flarum/common/utils/classList"; type UpdatedPackage = { name: string; @@ -34,8 +36,19 @@ export default class Updater extends Component { view() { const extensions: any = this.getExtensionUpdates(); + const coreUpdate: UpdatedPackage|undefined = this.getCoreUpdate(); + let core = null; - // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension. + if (coreUpdate) { + core = { + title: app.translator.trans('sycho-package-manager.admin.updater.flarum'), + version: app.data.settings.version, + icon: { + backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`, + }, + newPackageUpdate: coreUpdate, + }; + } return (
@@ -57,29 +70,8 @@ export default class Updater extends Component { {extensions.length ? (
- {extensions.map((extension: any) => ( -
-
- {extension.icon ? icon(extension.icon.name) : ''} -
-
-
{extension.extra['flarum-extension'].title}
-
- {extension.version} - {extension.newPackageUpdate.latest} -
-
-
- -
-
- ))} + {core ? this.extensionItem(core, true) : null} + {extensions.map((extension: any) => this.extensionItem(extension))}
) : null} @@ -87,6 +79,32 @@ export default class Updater extends Component { ); } + extensionItem(extension: any, isCore: boolean = false) { + return ( +
+
+ {extension.icon ? icon(extension.icon.name) : ''} +
+
+
{extension.title || extension.extra['flarum-extension'].title}
+
+ {extension.version} + {extension.newPackageUpdate.latest} +
+
+
+ +
+
+ ); + } + getExtensionUpdates() { const updates = this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => { const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')]; @@ -102,34 +120,47 @@ export default class Updater extends Component { return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate); } + getCoreUpdate(): UpdatedPackage|undefined { + return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop(); + } + checkForUpdates() { this.isLoading = true; app.request({ method: 'POST', url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`, + errorHandler, }).then((response) => { - this.isLoading = false; this.lastUpdateCheck = response as LastUpdateCheck; + }).finally(() => { + this.isLoading = false; m.redraw(); }); } - update(extension: any) { + updateCoreMinor() { + app.modal.show(LoadingModal); + + app.request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`, + errorHandler, + }).then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); + window.location.reload(); + }).finally(() => { + m.redraw(); + }); + } + + updateExtension(extension: any) { app.modal.show(LoadingModal); app.request({ method: 'PATCH', url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`, - errorHandler: (e: any) => { - const error = e.response.errors[0]; - - if (error.code !== 'composer_command_failure') { - throw e; - } - - app.modal.show(ComposerFailureModal, { error }); - }, + errorHandler, }).then(() => { app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })); window.location.reload(); diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js old mode 100644 new mode 100755 diff --git a/extensions/package-manager/js/src/admin/utils/errorHandler.ts b/extensions/package-manager/js/src/admin/utils/errorHandler.ts new file mode 100755 index 000000000..594581161 --- /dev/null +++ b/extensions/package-manager/js/src/admin/utils/errorHandler.ts @@ -0,0 +1,12 @@ +import app from "flarum/admin/app"; +import ComposerFailureModal from "../components/ComposerFailureModal"; + +export default function (e: any) { + const error = e.response.errors[0]; + + if (error.code !== 'composer_command_failure') { + throw e; + } + + app.modal.show(ComposerFailureModal, { error }); +} diff --git a/extensions/package-manager/js/tsconfig.json b/extensions/package-manager/js/tsconfig.json old mode 100644 new mode 100755 diff --git a/extensions/package-manager/js/webpack.config.js b/extensions/package-manager/js/webpack.config.js old mode 100644 new mode 100755 diff --git a/extensions/package-manager/js/yarn.lock b/extensions/package-manager/js/yarn.lock old mode 100644 new mode 100755 diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less old mode 100644 new mode 100755 index a6cd8f170..065b374eb --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -64,4 +64,17 @@ font-weight: bold; } } + + &--core { + background-color: #e7672e; + color: #fff; + --button-color: #fff; + --button-bg-hover: darken(#e7672e, 5); + } + + &--core &-icon { + background-size: 100%; + background-color: transparent; + filter: grayscale(1) brightness(3.5); + } } diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml old mode 100644 new mode 100755 index d3844f917..6042aa723 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -20,6 +20,8 @@ sycho-package-manager: updater: check_for_updates: Check for updates + flarum: Flarum Core last_update_checked_at: "Last Update Check: " + minor_update_successful: Flarum successfully updated. updater_title: Updates updater_help: Runs a check for new extension and Flarum updates. diff --git a/extensions/package-manager/migrations/2017_04_09_000000_create_bazaar_tasks_table.php b/extensions/package-manager/migrations/2017_04_09_000000_create_bazaar_tasks_table.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php b/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Api/Controller/ListTaskController.php b/extensions/package-manager/src/Api/Controller/ListTaskController.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Api/Controller/MinorFlarumUpdateController.php b/extensions/package-manager/src/Api/Controller/MinorFlarumUpdateController.php new file mode 100755 index 000000000..f0cd1ee40 --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/MinorFlarumUpdateController.php @@ -0,0 +1,42 @@ +bus = $bus; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $actor = RequestUtil::getActor($request); + + $this->bus->dispatch( + new MinorFlarumUpdate($actor) + ); + + return new EmptyResponse(); + } +} diff --git a/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php b/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Api/Controller/RequireExtensionController.php b/extensions/package-manager/src/Api/Controller/RequireExtensionController.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php b/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Command/CheckForUpdates.php b/extensions/package-manager/src/Command/CheckForUpdates.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php old mode 100644 new mode 100755 index b79209ec9..3e8541d10 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -9,6 +9,8 @@ namespace SychO\PackageManager\Command; use Carbon\Carbon; use Composer\Console\Application; use Flarum\Settings\SettingsRepositoryInterface; +use SychO\PackageManager\Exception\ComposerCommandFailedException; +use SychO\PackageManager\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -20,22 +22,23 @@ class CheckForUpdatesHandler protected $composer; /** - * @var SettingsRepositoryInterface + * @var LastUpdateCheck */ - protected $settings; + protected $lastUpdateCheck; /** * @param Application $composer - * @param SettingsRepositoryInterface $settings + * @param LastUpdateCheck $lastUpdateCheck */ - public function __construct(Application $composer, SettingsRepositoryInterface $settings) + public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck) { $this->composer = $composer; - $this->settings = $settings; + $this->lastUpdateCheck = $lastUpdateCheck; } /** * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws ComposerCommandFailedException */ public function handle(CheckForUpdates $command) { @@ -50,15 +53,12 @@ class CheckForUpdatesHandler '--format' => 'json', ]); - $this->composer->run($input, $output); + $exitCode = $this->composer->run($input, $output); - $lastUpdateCheck = [ - 'checkedAt' => Carbon::now(), - 'updates' => json_decode($output->fetch(), true), - ]; + if ($exitCode !== 0) { + throw new ComposerCommandFailedException('', $output->fetch()); + } - $this->settings->set('sycho-package-manager.last_update_check', json_encode($lastUpdateCheck)); - - return $lastUpdateCheck; + return $this->lastUpdateCheck->save(json_decode($output->fetch(), true)); } } diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdate.php b/extensions/package-manager/src/Command/MinorFlarumUpdate.php new file mode 100755 index 000000000..8dc3061d4 --- /dev/null +++ b/extensions/package-manager/src/Command/MinorFlarumUpdate.php @@ -0,0 +1,18 @@ +actor = $actor; + } +} diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php new file mode 100755 index 000000000..26224beb5 --- /dev/null +++ b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php @@ -0,0 +1,65 @@ +composer = $composer; + $this->lastUpdateCheck = $lastUpdateCheck; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws ComposerUpdateFailedException + */ + public function handle(MinorFlarumUpdate $command) + { + $command->actor->assertAdmin(); + + $output = new BufferedOutput(); + $input = new ArrayInput([ + 'command' => 'update', + 'packages' => ["flarum/*"], + '--prefer-dist' => true, + '--no-dev' => true, + '-a' => true, + '--with-all-dependencies' => true, + ]); + + $exitCode = $this->composer->run($input, $output); + + if ($exitCode !== 0) { + throw new ComposerUpdateFailedException('flarum/*', $output->fetch()); + } + + $this->lastUpdateCheck->forget('flarum/*', true); + + return true; + } +} diff --git a/extensions/package-manager/src/Command/RemoveExtension.php b/extensions/package-manager/src/Command/RemoveExtension.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Command/RequireExtension.php b/extensions/package-manager/src/Command/RequireExtension.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Command/UpdateExtension.php b/extensions/package-manager/src/Command/UpdateExtension.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php old mode 100644 new mode 100755 index 90e8e3368..a07413514 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -11,6 +11,7 @@ use Flarum\Extension\ExtensionManager; use Flarum\Settings\SettingsRepositoryInterface; use SychO\PackageManager\Exception\ComposerUpdateFailedException; use SychO\PackageManager\UpdateExtensionValidator; +use SychO\PackageManager\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -32,16 +33,16 @@ class UpdateExtensionHandler protected $validator; /** - * @var SettingsRepositoryInterface + * @var LastUpdateCheck */ - protected $settings; + protected $lastUpdateCheck; - public function __construct(Application $composer, ExtensionManager $extensions, UpdateExtensionValidator $validator, SettingsRepositoryInterface $settings) + public function __construct(Application $composer, ExtensionManager $extensions, UpdateExtensionValidator $validator, LastUpdateCheck $lastUpdateCheck) { $this->composer = $composer; $this->extensions = $extensions; $this->validator = $validator; - $this->settings = $settings; + $this->lastUpdateCheck = $lastUpdateCheck; } /** @@ -72,24 +73,7 @@ class UpdateExtensionHandler throw new ComposerUpdateFailedException($extension->name, $output->fetch()); } - $lastUpdateCheck = json_decode($this->settings->get('sycho-package-manager.last_update_check', '{}'), true); - - if (isset($lastUpdateCheck['updates']) && ! empty($lastUpdateCheck['updates']['installed'])) { - $updatesListChanged = false; - - foreach ($lastUpdateCheck['updates']['installed'] as $k => $package) { - if ($package['name'] === $extension->name) { - unset($lastUpdateCheck['updates']['installed'][$k]); - $updatesListChanged = true; - break; - } - } - - if ($updatesListChanged) { - $lastUpdateCheck['updates']['installed'] = array_values($lastUpdateCheck['updates']['installed']); - $this->settings->set('sycho-package-manager.last_update_check', json_encode($lastUpdateCheck)); - } - } + $this->lastUpdateCheck->forget($extension->name); return true; } diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Exception/ComposerRequireFailedException.php b/extensions/package-manager/src/Exception/ComposerRequireFailedException.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Exception/ComposerUpdateFailedException.php b/extensions/package-manager/src/Exception/ComposerUpdateFailedException.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Extension/Event/Installed.php b/extensions/package-manager/src/Extension/Event/Installed.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Extension/Event/Removed.php b/extensions/package-manager/src/Extension/Event/Removed.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Extension/Event/Updated.php b/extensions/package-manager/src/Extension/Event/Updated.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/Extension/ExtensionUtils.php b/extensions/package-manager/src/Extension/ExtensionUtils.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/LastUpdateCheck.php b/extensions/package-manager/src/LastUpdateCheck.php new file mode 100755 index 000000000..53bfa5326 --- /dev/null +++ b/extensions/package-manager/src/LastUpdateCheck.php @@ -0,0 +1,69 @@ +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 forget(string $name, bool $wildcard = false): void + { + $lastUpdateCheck = json_decode($this->settings->get(self::KEY, '{}'), true); + + if (isset($lastUpdateCheck['updates']) && ! empty($lastUpdateCheck['updates']['installed'])) { + $updatesListChanged = false; + $pattern = str_replace('*', '.*', preg_quote($name)); + + foreach ($lastUpdateCheck['updates']['installed'] as $k => $package) { + if (($wildcard && Str::of($package['name'])->test("/($pattern)/")) || $package['name'] === $name) { + unset($lastUpdateCheck['updates']['installed'][$k]); + $updatesListChanged = true; + + if (! $wildcard) { + 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/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/RequirePackageValidator.php b/extensions/package-manager/src/RequirePackageValidator.php old mode 100644 new mode 100755 diff --git a/extensions/package-manager/src/UpdateExtensionValidator.php b/extensions/package-manager/src/UpdateExtensionValidator.php old mode 100644 new mode 100755 From e19c9ea67cf9ecbcd2b136eddb86f5326377eb70 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 29 Sep 2021 10:40:40 +0100 Subject: [PATCH 11/51] Post Composer Actions (Fixes #3) --- .../src/Command/MinorFlarumUpdateHandler.php | 15 +++++- .../src/Command/RemoveExtensionHandler.php | 18 ++++++- .../src/Command/RequireExtensionHandler.php | 18 ++++++- .../src/Command/UpdateExtensionHandler.php | 14 +++++- .../src/Event/FlarumUpdated.php | 8 ++++ .../src/Extension/Event/Installed.php | 14 +++--- .../src/Extension/Event/Removed.php | 4 ++ .../src/Extension/Event/Updated.php | 4 ++ .../src/Extension/ExtensionUtils.php | 4 ++ .../src/Listener/PostUpdateListener.php | 48 +++++++++++++++++++ .../src/PackageManagerServiceProvider.php | 35 ++++++++++++++ 11 files changed, 172 insertions(+), 10 deletions(-) create mode 100644 extensions/package-manager/src/Event/FlarumUpdated.php create mode 100644 extensions/package-manager/src/Listener/PostUpdateListener.php diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php index 26224beb5..5a15709be 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php @@ -7,6 +7,8 @@ namespace SychO\PackageManager\Command; use Composer\Console\Application; +use Illuminate\Contracts\Events\Dispatcher; +use SychO\PackageManager\Event\FlarumUpdated; use SychO\PackageManager\Exception\ComposerUpdateFailedException; use SychO\PackageManager\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; @@ -24,14 +26,21 @@ class MinorFlarumUpdateHandler */ protected $lastUpdateCheck; + /** + * @var Dispatcher + */ + protected $events; + /** * @param Application $composer * @param LastUpdateCheck $lastUpdateCheck + * @param Dispatcher $events */ - public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck) + public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; + $this->events = $events; } /** @@ -60,6 +69,10 @@ class MinorFlarumUpdateHandler $this->lastUpdateCheck->forget('flarum/*', true); + $this->events->dispatch( + new FlarumUpdated() + ); + return true; } } diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php index 27f094c38..e7eecf0c1 100755 --- a/extensions/package-manager/src/Command/RemoveExtensionHandler.php +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -1,9 +1,15 @@ composer = $composer; $this->extensions = $extensions; + $this->events = $events; } /** @@ -46,5 +58,9 @@ class RemoveExtensionHandler ]); $this->composer->run($input, $output); + + $this->events->dispatch( + new Removed($extension) + ); } } diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 5d429f907..7bd403827 100755 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -1,10 +1,16 @@ composer = $composer; $this->extensions = $extensions; $this->validator = $validator; + $this->events = $events; } /** @@ -63,6 +75,10 @@ class RequireExtensionHandler throw new ComposerRequireFailedException($command->package, $output->fetch()); } + $this->events->dispatch( + new Installed($extensionId) + ); + return ['id' => $extensionId]; } } diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index a07413514..a464d882a 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -9,7 +9,9 @@ namespace SychO\PackageManager\Command; use Composer\Console\Application; use Flarum\Extension\ExtensionManager; use Flarum\Settings\SettingsRepositoryInterface; +use Illuminate\Contracts\Events\Dispatcher; use SychO\PackageManager\Exception\ComposerUpdateFailedException; +use SychO\PackageManager\Extension\Event\Updated; use SychO\PackageManager\UpdateExtensionValidator; use SychO\PackageManager\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; @@ -37,12 +39,18 @@ class UpdateExtensionHandler */ protected $lastUpdateCheck; - public function __construct(Application $composer, ExtensionManager $extensions, UpdateExtensionValidator $validator, LastUpdateCheck $lastUpdateCheck) + /** + * @var Dispatcher + */ + protected $events; + + public function __construct(Application $composer, ExtensionManager $extensions, UpdateExtensionValidator $validator, LastUpdateCheck $lastUpdateCheck, Dispatcher $events) { $this->composer = $composer; $this->extensions = $extensions; $this->validator = $validator; $this->lastUpdateCheck = $lastUpdateCheck; + $this->events = $events; } /** @@ -75,6 +83,10 @@ class UpdateExtensionHandler $this->lastUpdateCheck->forget($extension->name); + $this->events->dispatch( + new Updated($extension) + ); + return true; } } diff --git a/extensions/package-manager/src/Event/FlarumUpdated.php b/extensions/package-manager/src/Event/FlarumUpdated.php new file mode 100644 index 000000000..428f59c58 --- /dev/null +++ b/extensions/package-manager/src/Event/FlarumUpdated.php @@ -0,0 +1,8 @@ +extension = $extension; + $this->extensionId = $extensionId; } } diff --git a/extensions/package-manager/src/Extension/Event/Removed.php b/extensions/package-manager/src/Extension/Event/Removed.php index 758e0a3be..f04a54756 100755 --- a/extensions/package-manager/src/Extension/Event/Removed.php +++ b/extensions/package-manager/src/Extension/Event/Removed.php @@ -1,5 +1,9 @@ clearCache = $clearCache; + $this->publishAssets = $publishAssets; + $this->migrate = $migrate; + } + + /** + * @throws \Exception + */ + public function handle($event) + { + $this->clearCache->run(new ArrayInput([]), new NullOutput()); + $this->migrate->run(new ArrayInput([]), new NullOutput()); + $this->publishAssets->run(new ArrayInput([]), new NullOutput()); + } +} diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 12eb77b5b..4d6ab640b 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -1,12 +1,25 @@ container->alias(Application::class, 'flarum.composer'); } + + public function boot(Container $container) + { + /** @var Dispatcher $events */ + $events = $container->make('events'); + + $events->listen( + [Updated::class], + function (Updated $event) use ($container) { + $recompile = new RecompileFrontendAssets( + $container->make('flarum.assets.forum'), + $container->make(LocaleManager::class) + ); + $recompile->flush(); + + $container->make(ExtensionManager::class)->migrate($event->extension); + $event->extension->copyAssetsTo($container->make('filesystem')->disk('flarum-assets')); + } + ); + + $events->listen(FlarumUpdated::class, PostUpdateListener::class); + } } From 77f0dca47e30c62c7483571437e80cd25c88a61f Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 29 Sep 2021 11:03:13 +0100 Subject: [PATCH 12/51] Extension state exceptions --- extensions/package-manager/extend.php | 8 +++++- extensions/package-manager/js/dist/admin.js | 25 ++++++++++++++++--- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/utils/errorHandler.ts | 17 +++++++++++-- extensions/package-manager/locale/en.yml | 4 +++ .../src/Command/RemoveExtensionHandler.php | 3 ++- .../src/Command/RequireExtensionHandler.php | 3 ++- .../src/Command/UpdateExtensionHandler.php | 3 ++- .../ExtensionAlreadyInstalledException.php | 24 ++++++++++++++++++ .../ExtensionNotInstalledException.php | 23 +++++++++++++++++ 10 files changed, 101 insertions(+), 11 deletions(-) create mode 100755 extensions/package-manager/src/Exception/ExtensionAlreadyInstalledException.php create mode 100755 extensions/package-manager/src/Exception/ExtensionNotInstalledException.php diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index 086223c6f..60fef8e8a 100755 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -13,6 +13,8 @@ use SychO\PackageManager\Exception\ComposerCommandFailedException; use SychO\PackageManager\Exception\ComposerCommandFailedExceptionHandler; use SychO\PackageManager\Exception\ComposerRequireFailedException; use SychO\PackageManager\Exception\ComposerUpdateFailedException; +use SychO\PackageManager\Exception\ExtensionAlreadyInstalledException; +use SychO\PackageManager\Exception\ExtensionNotInstalledException; return [ (new Extend\Routes('api')) @@ -44,5 +46,9 @@ return [ (new Extend\ErrorHandling) ->handler(ComposerCommandFailedException::class, ComposerCommandFailedExceptionHandler::class) ->handler(ComposerRequireFailedException::class, ComposerCommandFailedExceptionHandler::class) - ->handler(ComposerUpdateFailedException::class, ComposerCommandFailedExceptionHandler::class), + ->handler(ComposerUpdateFailedException::class, ComposerCommandFailedExceptionHandler::class) + ->type(ExtensionAlreadyInstalledException::class, 'extension_already_installed') + ->status('extension_already_installed', 409) + ->type(ExtensionNotInstalledException::class, 'extension_not_installed') + ->status('extension_not_installed', 409), ]; diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 938a6c304..7a4311d8c 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -646,13 +646,30 @@ __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (function (e) { var error = e.response.errors[0]; - if (error.code !== 'composer_command_failure') { + if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) { throw e; } - flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.show(_components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__["default"], { - error: error - }); + switch (error.code) { + case 'composer_command_failure': + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.show(_components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__["default"], { + error: error + }); + break; + + case 'extension_already_installed': + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({ + type: 'error' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed')); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); + break; + + case 'extension_not_installed': + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({ + type: 'error' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed')); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); + } }); /***/ }), diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 79efbb5f2..7c228a9d3 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://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\nimport errorHandler from \"../utils/errorHandler\";\nimport classList from \"flarum/common/utils/classList\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null}\n
\n );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (error.code !== 'composer_command_failure') {\n throw e;\n }\n\n app.modal.show(ComposerFailureModal, { error });\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/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 +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\nimport errorHandler from \"../utils/errorHandler\";\nimport classList from \"flarum/common/utils/classList\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null}\n
\n );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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/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/src/admin/utils/errorHandler.ts b/extensions/package-manager/js/src/admin/utils/errorHandler.ts index 594581161..a5aff2a93 100755 --- a/extensions/package-manager/js/src/admin/utils/errorHandler.ts +++ b/extensions/package-manager/js/src/admin/utils/errorHandler.ts @@ -4,9 +4,22 @@ import ComposerFailureModal from "../components/ComposerFailureModal"; export default function (e: any) { const error = e.response.errors[0]; - if (error.code !== 'composer_command_failure') { + if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) { throw e; } - app.modal.show(ComposerFailureModal, { error }); + switch (error.code) { + case 'composer_command_failure': + app.modal.show(ComposerFailureModal, { error }); + break; + + case 'extension_already_installed': + app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed')); + app.modal.close(); + break; + + case 'extension_not_installed': + app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed')); + app.modal.close(); + } } diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 6042aa723..40256fdb2 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -1,5 +1,9 @@ sycho-package-manager: admin: + exceptions: + extension_already_installed: Extension is already installed. + extension_not_installed: Extension not found. + extensions: install: Install a new extension install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions. diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php index e7eecf0c1..052f2195a 100755 --- a/extensions/package-manager/src/Command/RemoveExtensionHandler.php +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -9,6 +9,7 @@ namespace SychO\PackageManager\Command; use Composer\Console\Application; use Flarum\Extension\ExtensionManager; use Illuminate\Contracts\Events\Dispatcher; +use SychO\PackageManager\Exception\ExtensionNotInstalledException; use SychO\PackageManager\Extension\Event\Removed; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -48,7 +49,7 @@ class RemoveExtensionHandler $extension = $this->extensions->getExtension($command->extensionId); if (empty($extension)) { - // ... exception + throw new ExtensionNotInstalledException($command->extensionId); } $output = new BufferedOutput(); diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 7bd403827..84c983086 100755 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -10,6 +10,7 @@ use Composer\Console\Application; use Flarum\Extension\ExtensionManager; use Illuminate\Contracts\Events\Dispatcher; use SychO\PackageManager\Exception\ComposerRequireFailedException; +use SychO\PackageManager\Exception\ExtensionAlreadyInstalledException; use SychO\PackageManager\Extension\Event\Installed; use SychO\PackageManager\Extension\ExtensionUtils; use SychO\PackageManager\RequirePackageValidator; @@ -60,7 +61,7 @@ class RequireExtensionHandler $extension = $this->extensions->getExtension($extensionId); if (! empty($extension)) { - // ... exception + throw new ExtensionAlreadyInstalledException($extension); } $output = new BufferedOutput(); diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index a464d882a..e955ea883 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -11,6 +11,7 @@ use Flarum\Extension\ExtensionManager; use Flarum\Settings\SettingsRepositoryInterface; use Illuminate\Contracts\Events\Dispatcher; use SychO\PackageManager\Exception\ComposerUpdateFailedException; +use SychO\PackageManager\Exception\ExtensionNotInstalledException; use SychO\PackageManager\Extension\Event\Updated; use SychO\PackageManager\UpdateExtensionValidator; use SychO\PackageManager\LastUpdateCheck; @@ -66,7 +67,7 @@ class UpdateExtensionHandler $extension = $this->extensions->getExtension($command->extensionId); if (empty($extension)) { - // ... exception + throw new ExtensionNotInstalledException($command->extensionId); } $output = new BufferedOutput(); diff --git a/extensions/package-manager/src/Exception/ExtensionAlreadyInstalledException.php b/extensions/package-manager/src/Exception/ExtensionAlreadyInstalledException.php new file mode 100755 index 000000000..cdcee9f54 --- /dev/null +++ b/extensions/package-manager/src/Exception/ExtensionAlreadyInstalledException.php @@ -0,0 +1,24 @@ +getTitle()} is already installed."); + } + + public function getType(): string + { + return 'extension_already_installed'; + } +} diff --git a/extensions/package-manager/src/Exception/ExtensionNotInstalledException.php b/extensions/package-manager/src/Exception/ExtensionNotInstalledException.php new file mode 100755 index 000000000..295b43f82 --- /dev/null +++ b/extensions/package-manager/src/Exception/ExtensionNotInstalledException.php @@ -0,0 +1,23 @@ + Date: Wed, 29 Sep 2021 12:07:53 +0100 Subject: [PATCH 13/51] Global Update (Fixes #2) --- extensions/package-manager/extend.php | 3 +- extensions/package-manager/js/dist/admin.js | 65 ++++++++++++++-- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/Updater.tsx | 62 +++++++++++---- extensions/package-manager/less/admin.less | 6 ++ extensions/package-manager/locale/en.yml | 2 + .../Api/Controller/GlobalUpdateController.php | 42 ++++++++++ .../src/Command/GlobalUpdate.php | 22 ++++++ .../src/Command/GlobalUpdateHandler.php | 78 +++++++++++++++++++ .../src/Command/MinorFlarumUpdate.php | 4 + .../src/Command/MinorFlarumUpdateHandler.php | 2 +- .../src/Command/RemoveExtension.php | 4 + .../src/Command/RequireExtension.php | 4 + .../src/Command/UpdateExtension.php | 4 + .../src/Event/FlarumUpdated.php | 12 +++ 15 files changed, 290 insertions(+), 22 deletions(-) create mode 100755 extensions/package-manager/src/Api/Controller/GlobalUpdateController.php create mode 100644 extensions/package-manager/src/Command/GlobalUpdate.php create mode 100644 extensions/package-manager/src/Command/GlobalUpdateHandler.php diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index 60fef8e8a..d327df409 100755 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -22,7 +22,8 @@ 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/minor-update', 'package-manager.minor-update', Api\Controller\MinorFlarumUpdateController::class), + ->post('/package-manager/minor-update', 'package-manager.minor-update', Api\Controller\MinorFlarumUpdateController::class) + ->post('/package-manager/global-update', 'package-manager.global-update', Api\Controller\GlobalUpdateController::class), (new Extend\Frontend('admin')) ->css(__DIR__ . '/less/admin.less') diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 7a4311d8c..62b37b440 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -352,6 +352,9 @@ __webpack_require__.r(__webpack_exports__); /* 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__); + @@ -374,7 +377,7 @@ var Updater = /*#__PURE__*/function (_Component) { } _this = _Component.call.apply(_Component, [this].concat(args)) || this; - _this.isLoading = false; + _this.isLoading = null; _this.lastUpdateCheck = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.lastUpdateCheck || {}; return _this; } @@ -414,12 +417,23 @@ var Updater = /*#__PURE__*/function (_Component) { className: "PackageManager-lastUpdatedAt-label" }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { + }, flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default()((_this$lastUpdateCheck = this.lastUpdateCheck) == null ? void 0 : _this$lastUpdateCheck.checkedAt))) : null, m("div", { + className: "PackageManager-updaterControls" + }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { className: "Button", icon: "fas fa-sync-alt", onclick: this.checkForUpdates.bind(this), - loading: this.isLoading - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.check_for_updates')), extensions.length ? m("div", { + loading: this.isLoading === 'check', + disabled: this.isLoading !== null && this.isLoading !== 'check' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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('sycho-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 ? m("div", { className: "PackageManager-extensions" }, m("div", { className: "PackageManager-extensions-grid" @@ -492,7 +506,7 @@ var Updater = /*#__PURE__*/function (_Component) { _proto.checkForUpdates = function checkForUpdates() { var _this3 = this; - this.isLoading = true; + this.isLoading = 'check'; 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/check-for-updates", @@ -500,13 +514,16 @@ var Updater = /*#__PURE__*/function (_Component) { }).then(function (response) { _this3.lastUpdateCheck = response; })["finally"](function () { - _this3.isLoading = false; + _this3.isLoading = null; m.redraw(); }); }; _proto.updateCoreMinor = function updateCoreMinor() { + var _this4 = this; + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ method: 'POST', url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/minor-update", @@ -517,12 +534,16 @@ var Updater = /*#__PURE__*/function (_Component) { }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); window.location.reload(); })["finally"](function () { + _this4.isLoading = null; m.redraw(); }); }; _proto.updateExtension = function updateExtension(extension) { + var _this5 = this; + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ method: 'PATCH', url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/extensions/" + extension.id, @@ -535,6 +556,27 @@ var Updater = /*#__PURE__*/function (_Component) { })); window.location.reload(); })["finally"](function () { + _this5.isLoading = null; + m.redraw(); + }); + }; + + _proto.updateGlobally = function updateGlobally() { + var _this6 = this; + + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ + 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"] + }).then(function () { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + type: 'success' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.global_update_successful')); + window.location.reload(); + })["finally"](function () { + _this6.isLoading = null; m.redraw(); }); }; @@ -751,6 +793,17 @@ module.exports = flarum.core.compat['common/components/Button']; /***/ }), +/***/ "flarum/common/components/LoadingIndicator": +/*!***************************************************************************!*\ + !*** external "flarum.core.compat['common/components/LoadingIndicator']" ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/LoadingIndicator']; + +/***/ }), + /***/ "flarum/common/components/Modal": /*!****************************************************************!*\ !*** external "flarum.core.compat['common/components/Modal']" ***! diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 7c228a9d3..8d73fd8a8 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://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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 ComposerFailureModal from \"./ComposerFailureModal\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\nimport errorHandler from \"../utils/errorHandler\";\nimport classList from \"flarum/common/utils/classList\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: boolean = false;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n {extensions.length ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null}\n
\n );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = true;\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\n }).finally(() => {\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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/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 +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : (extensions.length ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null)}\n
\n );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index 6bb43d634..dcef9a1fd 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -4,10 +4,10 @@ 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 ComposerFailureModal from "./ComposerFailureModal"; 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"; type UpdatedPackage = { name: string; @@ -27,7 +27,7 @@ type LastUpdateCheck = { }; export default class Updater extends Component { - isLoading: boolean = false; + isLoading: string|null = null; lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {}; oninit(vnode) { @@ -60,21 +60,36 @@ export default class Updater extends Component { {humanTime(this.lastUpdateCheck?.checkedAt)}

) : null} - - {extensions.length ? ( +
+ + +
+ {this.isLoading !== null ? ( +
+ +
+ ) : (extensions.length ? (
{core ? this.extensionItem(core, true) : null} {extensions.map((extension: any) => this.extensionItem(extension))}
- ) : null} + ) : null)}
); } @@ -125,7 +140,7 @@ export default class Updater extends Component { } checkForUpdates() { - this.isLoading = true; + this.isLoading = 'check'; app.request({ method: 'POST', @@ -134,13 +149,14 @@ export default class Updater extends Component { }).then((response) => { this.lastUpdateCheck = response as LastUpdateCheck; }).finally(() => { - this.isLoading = false; + this.isLoading = null; m.redraw(); }); } updateCoreMinor() { app.modal.show(LoadingModal); + this.isLoading = 'minor-update'; app.request({ method: 'POST', @@ -150,12 +166,14 @@ export default class Updater extends Component { app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); window.location.reload(); }).finally(() => { + this.isLoading = null; m.redraw(); }); } updateExtension(extension: any) { app.modal.show(LoadingModal); + this.isLoading = 'extension-update'; app.request({ method: 'PATCH', @@ -165,6 +183,24 @@ export default class Updater extends Component { app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })); window.location.reload(); }).finally(() => { + this.isLoading = null; + m.redraw(); + }); + } + + updateGlobally() { + app.modal.show(LoadingModal); + this.isLoading = 'global-update'; + + app.request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`, + errorHandler, + }).then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful')); + window.location.reload(); + }).finally(() => { + this.isLoading = null; m.redraw(); }); } diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index 065b374eb..0c7126a81 100755 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -21,6 +21,12 @@ } } +.PackageManager-updaterControls { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + .PackageManager-extensions { &-grid { --gap: 12px; diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 40256fdb2..f15e94bf8 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -25,7 +25,9 @@ sycho-package-manager: updater: check_for_updates: Check for updates flarum: Flarum Core + global_update_successful: Successfully updated all packages. last_update_checked_at: "Last Update Check: " minor_update_successful: Flarum successfully updated. + run_global_update: Run Global Update updater_title: Updates updater_help: Runs a check for new extension and Flarum updates. diff --git a/extensions/package-manager/src/Api/Controller/GlobalUpdateController.php b/extensions/package-manager/src/Api/Controller/GlobalUpdateController.php new file mode 100755 index 000000000..378d14bf4 --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/GlobalUpdateController.php @@ -0,0 +1,42 @@ +bus = $bus; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $actor = RequestUtil::getActor($request); + + $this->bus->dispatch( + new GlobalUpdate($actor) + ); + + return new EmptyResponse(); + } +} diff --git a/extensions/package-manager/src/Command/GlobalUpdate.php b/extensions/package-manager/src/Command/GlobalUpdate.php new file mode 100644 index 000000000..ca4e62f02 --- /dev/null +++ b/extensions/package-manager/src/Command/GlobalUpdate.php @@ -0,0 +1,22 @@ +actor = $actor; + } +} diff --git a/extensions/package-manager/src/Command/GlobalUpdateHandler.php b/extensions/package-manager/src/Command/GlobalUpdateHandler.php new file mode 100644 index 000000000..f3055698b --- /dev/null +++ b/extensions/package-manager/src/Command/GlobalUpdateHandler.php @@ -0,0 +1,78 @@ +composer = $composer; + $this->events = $events; + $this->commandDispatcher = $commandDispatcher; + } + + /** + * @throws \Flarum\User\Exception\PermissionDeniedException|ComposerUpdateFailedException + */ + public function handle(GlobalUpdate $command) + { + $command->actor->assertAdmin(); + + $output = new BufferedOutput(); + $input = new ArrayInput([ + 'command' => 'update', + '--prefer-dist' => true, + '--no-dev' => true, + '-a' => true, + '--with-all-dependencies' => true, + ]); + + $exitCode = $this->composer->run($input, $output); + + if ($exitCode !== 0) { + throw new ComposerUpdateFailedException('*', $output->fetch()); + } + + $this->commandDispatcher->dispatch( + new CheckForUpdates($command->actor) + ); + + $this->events->dispatch( + new FlarumUpdated(FlarumUpdated::GLOBAL) + ); + + return true; + } +} diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdate.php b/extensions/package-manager/src/Command/MinorFlarumUpdate.php index 8dc3061d4..e9c13fff7 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdate.php +++ b/extensions/package-manager/src/Command/MinorFlarumUpdate.php @@ -1,5 +1,9 @@ lastUpdateCheck->forget('flarum/*', true); $this->events->dispatch( - new FlarumUpdated() + new FlarumUpdated(FlarumUpdated::MINOR) ); return true; diff --git a/extensions/package-manager/src/Command/RemoveExtension.php b/extensions/package-manager/src/Command/RemoveExtension.php index f5c125822..f7fb6f4da 100755 --- a/extensions/package-manager/src/Command/RemoveExtension.php +++ b/extensions/package-manager/src/Command/RemoveExtension.php @@ -1,5 +1,9 @@ type = $type; + } } From 1b65c6862eae2321cfda29ce42a5e704801456f0 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 29 Sep 2021 13:00:36 +0100 Subject: [PATCH 14/51] Log composer command outputs (Fixes #5) --- .../src/Command/CheckForUpdatesHandler.php | 11 +++++--- .../src/Command/GlobalUpdateHandler.php | 12 ++++++--- .../src/Command/MinorFlarumUpdateHandler.php | 12 ++++++--- .../src/Command/RemoveExtensionHandler.php | 13 +++++++-- .../src/Command/RequireExtensionHandler.php | 11 +++++++- .../src/Command/UpdateExtensionHandler.php | 17 +++++++++++- .../package-manager/src/OutputLogger.php | 27 +++++++++++++++++++ .../src/PackageManagerServiceProvider.php | 15 +++++++++-- 8 files changed, 101 insertions(+), 17 deletions(-) create mode 100644 extensions/package-manager/src/OutputLogger.php diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index 3e8541d10..dbd95719f 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -11,6 +11,7 @@ use Composer\Console\Application; use Flarum\Settings\SettingsRepositoryInterface; use SychO\PackageManager\Exception\ComposerCommandFailedException; use SychO\PackageManager\LastUpdateCheck; +use SychO\PackageManager\OutputLogger; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -27,13 +28,15 @@ class CheckForUpdatesHandler protected $lastUpdateCheck; /** - * @param Application $composer - * @param LastUpdateCheck $lastUpdateCheck + * @var OutputLogger */ - public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck) + protected $logger; + + public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, OutputLogger $logger) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; + $this->logger = $logger; } /** @@ -55,6 +58,8 @@ class CheckForUpdatesHandler $exitCode = $this->composer->run($input, $output); + $this->logger->log($output->fetch(), $exitCode); + if ($exitCode !== 0) { throw new ComposerCommandFailedException('', $output->fetch()); } diff --git a/extensions/package-manager/src/Command/GlobalUpdateHandler.php b/extensions/package-manager/src/Command/GlobalUpdateHandler.php index f3055698b..53bc1331e 100644 --- a/extensions/package-manager/src/Command/GlobalUpdateHandler.php +++ b/extensions/package-manager/src/Command/GlobalUpdateHandler.php @@ -11,6 +11,7 @@ use Flarum\Bus\Dispatcher as FlarumDispatcher; use Illuminate\Contracts\Events\Dispatcher; use SychO\PackageManager\Event\FlarumUpdated; use SychO\PackageManager\Exception\ComposerUpdateFailedException; +use SychO\PackageManager\OutputLogger; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -32,15 +33,16 @@ class GlobalUpdateHandler protected $commandDispatcher; /** - * @param Application $composer - * @param Dispatcher $events - * @param FlarumDispatcher $commandDispatcher + * @var OutputLogger */ - public function __construct(Application $composer, Dispatcher $events, FlarumDispatcher $commandDispatcher) + protected $logger; + + public function __construct(Application $composer, Dispatcher $events, FlarumDispatcher $commandDispatcher, OutputLogger $logger) { $this->composer = $composer; $this->events = $events; $this->commandDispatcher = $commandDispatcher; + $this->logger = $logger; } /** @@ -61,6 +63,8 @@ class GlobalUpdateHandler $exitCode = $this->composer->run($input, $output); + $this->logger->log($output->fetch(), $exitCode); + if ($exitCode !== 0) { throw new ComposerUpdateFailedException('*', $output->fetch()); } diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php index d49612e43..8e43aa62e 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php @@ -11,6 +11,7 @@ use Illuminate\Contracts\Events\Dispatcher; use SychO\PackageManager\Event\FlarumUpdated; use SychO\PackageManager\Exception\ComposerUpdateFailedException; use SychO\PackageManager\LastUpdateCheck; +use SychO\PackageManager\OutputLogger; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -32,15 +33,16 @@ class MinorFlarumUpdateHandler protected $events; /** - * @param Application $composer - * @param LastUpdateCheck $lastUpdateCheck - * @param Dispatcher $events + * @var OutputLogger */ - public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events) + protected $logger; + + public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, OutputLogger $logger) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; $this->events = $events; + $this->logger = $logger; } /** @@ -63,6 +65,8 @@ class MinorFlarumUpdateHandler $exitCode = $this->composer->run($input, $output); + $this->logger->log($output->fetch(), $exitCode); + if ($exitCode !== 0) { throw new ComposerUpdateFailedException('flarum/*', $output->fetch()); } diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php index 052f2195a..dfaf29b6e 100755 --- a/extensions/package-manager/src/Command/RemoveExtensionHandler.php +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -11,6 +11,7 @@ use Flarum\Extension\ExtensionManager; use Illuminate\Contracts\Events\Dispatcher; use SychO\PackageManager\Exception\ExtensionNotInstalledException; use SychO\PackageManager\Extension\Event\Removed; +use SychO\PackageManager\OutputLogger; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -31,11 +32,17 @@ class RemoveExtensionHandler */ protected $events; - public function __construct(Application $composer, ExtensionManager $extensions, Dispatcher $events) + /** + * @var OutputLogger + */ + protected $logger; + + public function __construct(Application $composer, ExtensionManager $extensions, Dispatcher $events, OutputLogger $logger) { $this->composer = $composer; $this->extensions = $extensions; $this->events = $events; + $this->logger = $logger; } /** @@ -58,7 +65,9 @@ class RemoveExtensionHandler 'packages' => [$extension->name], ]); - $this->composer->run($input, $output); + $exitCode = $this->composer->run($input, $output); + + $this->logger->log($output->fetch(), $exitCode); $this->events->dispatch( new Removed($extension) diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 84c983086..10dfd1658 100755 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -13,6 +13,7 @@ use SychO\PackageManager\Exception\ComposerRequireFailedException; use SychO\PackageManager\Exception\ExtensionAlreadyInstalledException; use SychO\PackageManager\Extension\Event\Installed; use SychO\PackageManager\Extension\ExtensionUtils; +use SychO\PackageManager\OutputLogger; use SychO\PackageManager\RequirePackageValidator; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; @@ -39,12 +40,18 @@ class RequireExtensionHandler */ protected $events; - public function __construct(Application $composer, ExtensionManager $extensions, RequirePackageValidator $validator, Dispatcher $events) + /** + * @var OutputLogger + */ + protected $logger; + + public function __construct(Application $composer, ExtensionManager $extensions, RequirePackageValidator $validator, Dispatcher $events, OutputLogger $logger) { $this->composer = $composer; $this->extensions = $extensions; $this->validator = $validator; $this->events = $events; + $this->logger = $logger; } /** @@ -72,6 +79,8 @@ class RequireExtensionHandler $exitCode = $this->composer->run($input, $output); + $this->logger->log($output->fetch(), $exitCode); + if ($exitCode !== 0) { throw new ComposerRequireFailedException($command->package, $output->fetch()); } diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index e955ea883..b3c3e4d1f 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -13,6 +13,7 @@ use Illuminate\Contracts\Events\Dispatcher; use SychO\PackageManager\Exception\ComposerUpdateFailedException; use SychO\PackageManager\Exception\ExtensionNotInstalledException; use SychO\PackageManager\Extension\Event\Updated; +use SychO\PackageManager\OutputLogger; use SychO\PackageManager\UpdateExtensionValidator; use SychO\PackageManager\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; @@ -45,13 +46,25 @@ class UpdateExtensionHandler */ protected $events; - public function __construct(Application $composer, ExtensionManager $extensions, UpdateExtensionValidator $validator, LastUpdateCheck $lastUpdateCheck, Dispatcher $events) + /** + * @var OutputLogger + */ + protected $logger; + + public function __construct( + Application $composer, + ExtensionManager $extensions, + UpdateExtensionValidator $validator, + LastUpdateCheck $lastUpdateCheck, + Dispatcher $events, + OutputLogger $logger) { $this->composer = $composer; $this->extensions = $extensions; $this->validator = $validator; $this->lastUpdateCheck = $lastUpdateCheck; $this->events = $events; + $this->logger = $logger; } /** @@ -78,6 +91,8 @@ class UpdateExtensionHandler $exitCode = $this->composer->run($input, $output); + $this->logger->log($output->fetch(), $exitCode); + if ($exitCode !== 0) { throw new ComposerUpdateFailedException($extension->name, $output->fetch()); } diff --git a/extensions/package-manager/src/OutputLogger.php b/extensions/package-manager/src/OutputLogger.php new file mode 100644 index 000000000..1af49467b --- /dev/null +++ b/extensions/package-manager/src/OutputLogger.php @@ -0,0 +1,27 @@ +logger = $logger; + } + + public function log(string $output, int $exitCode): void + { + if ($exitCode === 0) { + $this->logger->info($output); + } else { + $this->logger->error($output); + } + } +} diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 4d6ab640b..f30662a15 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -8,7 +8,6 @@ namespace SychO\PackageManager; use Composer\Config; use Composer\Console\Application; -use Flarum\Extension\Extension; use Flarum\Extension\ExtensionManager; use Flarum\Foundation\AbstractServiceProvider; use Flarum\Foundation\Paths; @@ -16,8 +15,10 @@ use Flarum\Frontend\RecompileFrontendAssets; use Flarum\Locale\LocaleManager; use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Events\Dispatcher; +use Monolog\Formatter\LineFormatter; +use Monolog\Handler\RotatingFileHandler; +use Monolog\Logger; use SychO\PackageManager\Event\FlarumUpdated; -use SychO\PackageManager\Extension\Event\Installed; use SychO\PackageManager\Extension\Event\Updated; use SychO\PackageManager\Listener\PostUpdateListener; @@ -47,6 +48,16 @@ class PackageManagerServiceProvider extends AbstractServiceProvider }); $this->container->alias(Application::class, 'flarum.composer'); + + $this->container->singleton(OutputLogger::class, function (Container $container) { + $logPath = $container->make(Paths::class)->storage.'/logs/composer/output.log'; + $handler = new RotatingFileHandler($logPath, Logger::INFO); + $handler->setFormatter(new LineFormatter(null, null, true, true)); + + $logger = new Logger('composer', [$handler]); + + return new OutputLogger($logger); + }); } public function boot(Container $container) From 79b562912563f2c5b7a74040bbccaf488658411e Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 29 Sep 2021 14:04:53 +0100 Subject: [PATCH 15/51] fix: Buffer output --- .../src/Command/CheckForUpdatesHandler.php | 7 ++++--- .../package-manager/src/Command/GlobalUpdateHandler.php | 5 +++-- .../src/Command/MinorFlarumUpdateHandler.php | 5 +++-- .../src/Command/RemoveExtensionHandler.php | 9 ++++++++- .../src/Command/RequireExtensionHandler.php | 5 +++-- .../src/Command/UpdateExtensionHandler.php | 5 +++-- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index dbd95719f..a4cd34a54 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -57,13 +57,14 @@ class CheckForUpdatesHandler ]); $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); - $this->logger->log($output->fetch(), $exitCode); + $this->logger->log($output, $exitCode); if ($exitCode !== 0) { - throw new ComposerCommandFailedException('', $output->fetch()); + throw new ComposerCommandFailedException('', $output); } - return $this->lastUpdateCheck->save(json_decode($output->fetch(), true)); + return $this->lastUpdateCheck->save(json_decode($output, true)); } } diff --git a/extensions/package-manager/src/Command/GlobalUpdateHandler.php b/extensions/package-manager/src/Command/GlobalUpdateHandler.php index 53bc1331e..5e644a8b5 100644 --- a/extensions/package-manager/src/Command/GlobalUpdateHandler.php +++ b/extensions/package-manager/src/Command/GlobalUpdateHandler.php @@ -62,11 +62,12 @@ class GlobalUpdateHandler ]); $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); - $this->logger->log($output->fetch(), $exitCode); + $this->logger->log($output, $exitCode); if ($exitCode !== 0) { - throw new ComposerUpdateFailedException('*', $output->fetch()); + throw new ComposerUpdateFailedException('*', $output); } $this->commandDispatcher->dispatch( diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php index 8e43aa62e..858dee4b1 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php @@ -64,11 +64,12 @@ class MinorFlarumUpdateHandler ]); $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); - $this->logger->log($output->fetch(), $exitCode); + $this->logger->log($output, $exitCode); if ($exitCode !== 0) { - throw new ComposerUpdateFailedException('flarum/*', $output->fetch()); + throw new ComposerUpdateFailedException('flarum/*', $output); } $this->lastUpdateCheck->forget('flarum/*', true); diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php index dfaf29b6e..ef76c84c8 100755 --- a/extensions/package-manager/src/Command/RemoveExtensionHandler.php +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -9,6 +9,8 @@ namespace SychO\PackageManager\Command; use Composer\Console\Application; use Flarum\Extension\ExtensionManager; use Illuminate\Contracts\Events\Dispatcher; +use SychO\PackageManager\Exception\ComposerCommandFailedException; +use SychO\PackageManager\Exception\ComposerUpdateFailedException; use SychO\PackageManager\Exception\ExtensionNotInstalledException; use SychO\PackageManager\Extension\Event\Removed; use SychO\PackageManager\OutputLogger; @@ -66,8 +68,13 @@ class RemoveExtensionHandler ]); $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); - $this->logger->log($output->fetch(), $exitCode); + $this->logger->log($output, $exitCode); + + if ($exitCode !== 0) { + throw new ComposerCommandFailedException($extension->name, $output); + } $this->events->dispatch( new Removed($extension) diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 10dfd1658..216f0c712 100755 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -78,11 +78,12 @@ class RequireExtensionHandler ]); $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); - $this->logger->log($output->fetch(), $exitCode); + $this->logger->log($output, $exitCode); if ($exitCode !== 0) { - throw new ComposerRequireFailedException($command->package, $output->fetch()); + throw new ComposerRequireFailedException($command->package, $output); } $this->events->dispatch( diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index b3c3e4d1f..0e99e34c1 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -90,11 +90,12 @@ class UpdateExtensionHandler ]); $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); - $this->logger->log($output->fetch(), $exitCode); + $this->logger->log($output, $exitCode); if ($exitCode !== 0) { - throw new ComposerUpdateFailedException($extension->name, $output->fetch()); + throw new ComposerUpdateFailedException($extension->name, $output); } $this->lastUpdateCheck->forget($extension->name); From 2b8a85c9333d77fd68fbf9c2f2c8f7924261371b Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 29 Sep 2021 14:19:02 +0100 Subject: [PATCH 16/51] fix: Only core update available not showing up --- extensions/package-manager/js/dist/admin.js | 2 +- extensions/package-manager/js/dist/admin.js.map | 2 +- extensions/package-manager/js/src/admin/components/Updater.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 62b37b440..b2635ade8 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -433,7 +433,7 @@ var Updater = /*#__PURE__*/function (_Component) { disabled: this.isLoading !== null && this.isLoading !== 'global-update' }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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 ? m("div", { + }, m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10___default.a, null)) : extensions.length || core ? m("div", { className: "PackageManager-extensions" }, m("div", { className: "PackageManager-extensions-grid" diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 8d73fd8a8..63a9d4f8e 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://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : (extensions.length ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null)}\n
\n );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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 +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-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 );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index dcef9a1fd..bada011eb 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -82,7 +82,7 @@ export default class Updater extends Component {
- ) : (extensions.length ? ( + ) : (extensions.length || core ? (
{core ? this.extensionItem(core, true) : null} From 670a4dd26a8e724166188eed882b9a95da7c4cd3 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 29 Sep 2021 14:31:07 +0100 Subject: [PATCH 17/51] Add docs link --- extensions/package-manager/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/package-manager/README.md b/extensions/package-manager/README.md index caeb5823a..bb2076933 100755 --- a/extensions/package-manager/README.md +++ b/extensions/package-manager/README.md @@ -1,3 +1,5 @@ # Package Manager *An Experiment.* + +Read: https://github.com/SychO9/flarum-package-manager/wiki From 68a3133bbb3b5177b2209aacf35314ecc4fe48dc Mon Sep 17 00:00:00 2001 From: SychO9 Date: Thu, 30 Sep 2021 21:44:27 +0100 Subject: [PATCH 18/51] Prepend input to composer output log (Fixes #7) --- .../src/Command/CheckForUpdatesHandler.php | 2 +- .../package-manager/src/Command/GlobalUpdateHandler.php | 2 +- .../src/Command/MinorFlarumUpdateHandler.php | 2 +- .../src/Command/RemoveExtensionHandler.php | 2 +- .../src/Command/RequireExtensionHandler.php | 2 +- .../src/Command/UpdateExtensionHandler.php | 2 +- extensions/package-manager/src/OutputLogger.php | 8 +++++--- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index a4cd34a54..a1908383e 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -59,7 +59,7 @@ class CheckForUpdatesHandler $exitCode = $this->composer->run($input, $output); $output = $output->fetch(); - $this->logger->log($output, $exitCode); + $this->logger->log($input->__toString(), $output, $exitCode); if ($exitCode !== 0) { throw new ComposerCommandFailedException('', $output); diff --git a/extensions/package-manager/src/Command/GlobalUpdateHandler.php b/extensions/package-manager/src/Command/GlobalUpdateHandler.php index 5e644a8b5..e7e5bfd92 100644 --- a/extensions/package-manager/src/Command/GlobalUpdateHandler.php +++ b/extensions/package-manager/src/Command/GlobalUpdateHandler.php @@ -64,7 +64,7 @@ class GlobalUpdateHandler $exitCode = $this->composer->run($input, $output); $output = $output->fetch(); - $this->logger->log($output, $exitCode); + $this->logger->log($input->__toString(), $output, $exitCode); if ($exitCode !== 0) { throw new ComposerUpdateFailedException('*', $output); diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php index 858dee4b1..18ae1f7bf 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php @@ -66,7 +66,7 @@ class MinorFlarumUpdateHandler $exitCode = $this->composer->run($input, $output); $output = $output->fetch(); - $this->logger->log($output, $exitCode); + $this->logger->log($input->__toString(), $output, $exitCode); if ($exitCode !== 0) { throw new ComposerUpdateFailedException('flarum/*', $output); diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php index ef76c84c8..3895e2bf0 100755 --- a/extensions/package-manager/src/Command/RemoveExtensionHandler.php +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -70,7 +70,7 @@ class RemoveExtensionHandler $exitCode = $this->composer->run($input, $output); $output = $output->fetch(); - $this->logger->log($output, $exitCode); + $this->logger->log($input->__toString(), $output, $exitCode); if ($exitCode !== 0) { throw new ComposerCommandFailedException($extension->name, $output); diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 216f0c712..70d1c1505 100755 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -80,7 +80,7 @@ class RequireExtensionHandler $exitCode = $this->composer->run($input, $output); $output = $output->fetch(); - $this->logger->log($output, $exitCode); + $this->logger->log($input->__toString(), $output, $exitCode); if ($exitCode !== 0) { throw new ComposerRequireFailedException($command->package, $output); diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index 0e99e34c1..c0c0c4e31 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -92,7 +92,7 @@ class UpdateExtensionHandler $exitCode = $this->composer->run($input, $output); $output = $output->fetch(); - $this->logger->log($output, $exitCode); + $this->logger->log($input->__toString(), $output, $exitCode); if ($exitCode !== 0) { throw new ComposerUpdateFailedException($extension->name, $output); diff --git a/extensions/package-manager/src/OutputLogger.php b/extensions/package-manager/src/OutputLogger.php index 1af49467b..9041f8769 100644 --- a/extensions/package-manager/src/OutputLogger.php +++ b/extensions/package-manager/src/OutputLogger.php @@ -16,12 +16,14 @@ class OutputLogger $this->logger = $logger; } - public function log(string $output, int $exitCode): void + public function log(string $input, string $output, int $exitCode): void { + $content = "$input\n$output"; + if ($exitCode === 0) { - $this->logger->info($output); + $this->logger->info($content); } else { - $this->logger->error($output); + $this->logger->error($content); } } } From 0aed124911cbd1d699c98576f6e1559909e6d8a1 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Thu, 30 Sep 2021 21:45:09 +0100 Subject: [PATCH 19/51] yarn format --- .../admin/components/ComposerFailureModal.tsx | 6 +- .../js/src/admin/components/Installer.tsx | 58 ++++--- .../js/src/admin/components/Updater.tsx | 144 ++++++++++-------- .../package-manager/js/src/admin/index.js | 40 ++--- .../js/src/admin/utils/errorHandler.ts | 4 +- 5 files changed, 141 insertions(+), 111 deletions(-) diff --git a/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx b/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx index 5fd616aa7..49afeac8e 100755 --- a/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx +++ b/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx @@ -1,8 +1,8 @@ import app from 'flarum/admin/app'; import Modal from 'flarum/common/components/Modal'; -import { ComponentAttrs } from "flarum/common/Component"; -import Alert from "flarum/common/components/Alert"; -import Mithril from "mithril"; +import { ComponentAttrs } from 'flarum/common/Component'; +import Alert from 'flarum/common/components/Alert'; +import Mithril from 'mithril'; interface Attrs extends ComponentAttrs { output: string; diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx index cac506a4e..71840c0e4 100755 --- a/extensions/package-manager/js/src/admin/components/Installer.tsx +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -1,11 +1,11 @@ import type Mithril from 'mithril'; import app from 'flarum/admin/app'; import Component from 'flarum/common/Component'; -import Button from "flarum/common/components/Button"; -import Stream from "flarum/common/utils/Stream"; -import LoadingModal from "flarum/admin/components/LoadingModal"; -import ComposerFailureModal from "./ComposerFailureModal"; -import errorHandler from "../utils/errorHandler"; +import Button from 'flarum/common/components/Button'; +import Stream from 'flarum/common/utils/Stream'; +import LoadingModal from 'flarum/admin/components/LoadingModal'; +import ComposerFailureModal from './ComposerFailureModal'; +import errorHandler from '../utils/errorHandler'; export default class Installer extends Component { packageName!: Stream; @@ -21,11 +21,13 @@ export default class Installer extends Component { return (
-

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

+

+ {app.translator.trans('sycho-package-manager.admin.extensions.install_help', { + extiverse: extiverse.com, + })} +

- + @@ -44,21 +46,27 @@ export default class Installer extends Component { this.isLoading = true; app.modal.show(LoadingModal); - app.request({ - method: 'POST', - url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`, - body: { - data: this.data() - }, - errorHandler, - }).then((response) => { - const extensionId = response.id; - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId })); - window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`; - window.location.reload(); - }).finally(() => { - this.isLoading = false; - m.redraw(); - }); + app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`, + body: { + data: this.data(), + }, + errorHandler, + }) + .then((response) => { + const extensionId = response.id; + app.alerts.show( + { type: 'success' }, + app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }) + ); + window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`; + window.location.reload(); + }) + .finally(() => { + this.isLoading = false; + 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 bada011eb..1fb30e76f 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -1,19 +1,19 @@ 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 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'; type UpdatedPackage = { name: string; version: string; latest: string; - "latest-status": string; + 'latest-status': string; description: string; }; @@ -27,7 +27,7 @@ type LastUpdateCheck = { }; export default class Updater extends Component { - isLoading: string|null = null; + isLoading: string | null = null; lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {}; oninit(vnode) { @@ -36,7 +36,7 @@ export default class Updater extends Component { view() { const extensions: any = this.getExtensionUpdates(); - const coreUpdate: UpdatedPackage|undefined = this.getCoreUpdate(); + const coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate(); let core = null; if (coreUpdate) { @@ -56,7 +56,9 @@ export default class Updater extends Component {

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

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

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

) : null} @@ -66,7 +68,8 @@ export default class Updater extends Component { icon="fas fa-sync-alt" onclick={this.checkForUpdates.bind(this)} loading={this.isLoading === 'check'} - disabled={this.isLoading !== null && this.isLoading !== 'check'}> + disabled={this.isLoading !== null && this.isLoading !== 'check'} + > {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}
@@ -82,21 +86,21 @@ export default class Updater extends Component {
- ) : (extensions.length || core ? ( + ) : extensions.length || core ? (
{core ? this.extensionItem(core, true) : null} {extensions.map((extension: any) => this.extensionItem(extension))}
- ) : null)} + ) : null}
); } extensionItem(extension: any, isCore: boolean = false) { return ( -
+
{extension.icon ? icon(extension.icon.name) : ''}
@@ -113,7 +117,8 @@ export default class Updater extends Component { 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={app.translator.trans('sycho-package-manager.admin.extensions.update')} /> + aria-label={app.translator.trans('sycho-package-manager.admin.extensions.update')} + />
@@ -135,73 +140,88 @@ export default class Updater extends Component { return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate); } - getCoreUpdate(): UpdatedPackage|undefined { + getCoreUpdate(): UpdatedPackage | undefined { return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop(); } checkForUpdates() { this.isLoading = 'check'; - app.request({ - method: 'POST', - url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`, - errorHandler, - }).then((response) => { - this.lastUpdateCheck = response as LastUpdateCheck; - }).finally(() => { - this.isLoading = null; - m.redraw(); - }); + app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`, + errorHandler, + }) + .then((response) => { + this.lastUpdateCheck = response as LastUpdateCheck; + }) + .finally(() => { + this.isLoading = null; + m.redraw(); + }); } updateCoreMinor() { app.modal.show(LoadingModal); this.isLoading = 'minor-update'; - app.request({ - method: 'POST', - url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`, - errorHandler, - }).then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); - window.location.reload(); - }).finally(() => { - this.isLoading = null; - m.redraw(); - }); + app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`, + errorHandler, + }) + .then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); + window.location.reload(); + }) + .finally(() => { + this.isLoading = null; + m.redraw(); + }); } updateExtension(extension: any) { app.modal.show(LoadingModal); this.isLoading = 'extension-update'; - app.request({ - method: 'PATCH', - url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`, - errorHandler, - }).then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })); - window.location.reload(); - }).finally(() => { - this.isLoading = null; - m.redraw(); - }); + app + .request({ + method: 'PATCH', + url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`, + errorHandler, + }) + .then(() => { + app.alerts.show( + { type: 'success' }, + app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }) + ); + window.location.reload(); + }) + .finally(() => { + this.isLoading = null; + m.redraw(); + }); } updateGlobally() { app.modal.show(LoadingModal); this.isLoading = 'global-update'; - app.request({ - method: 'POST', - url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`, - errorHandler, - }).then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful')); - window.location.reload(); - }).finally(() => { - this.isLoading = null; - m.redraw(); - }); + app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`, + errorHandler, + }) + .then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful')); + window.location.reload(); + }) + .finally(() => { + this.isLoading = null; + m.redraw(); + }); } } diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js index 0e71bffb0..99571479a 100755 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.js @@ -4,8 +4,8 @@ import Alert from 'flarum/common/components/Alert'; import ExtensionPage from 'flarum/admin/components/ExtensionPage'; import Button from 'flarum/common/components/Button'; import LoadingModal from 'flarum/admin/components/LoadingModal'; -import Installer from "./components/Installer"; -import Updater from "./components/Updater"; +import Installer from './components/Installer'; +import Updater from './components/Updater'; import isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled'; app.initializers.add('sycho-package-manager', (app) => { @@ -15,23 +15,21 @@ app.initializers.add('sycho-package-manager', (app) => { if (!app.data.isRequiredDirectoriesWritable) { return (
- {app.translator.trans('sycho-package-manager.admin.file_permissions')} + + {app.translator.trans('sycho-package-manager.admin.file_permissions')} +
); } }) .registerSetting(() => { if (app.data.isRequiredDirectoriesWritable) { - return ( - - ); + return ; } }) .registerSetting(() => { if (app.data.isRequiredDirectoriesWritable) { - return ( - - ); + return ; } }); @@ -48,16 +46,20 @@ app.initializers.add('sycho-package-manager', (app) => { onclick={() => { app.modal.show(LoadingModal); - app.request({ - url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`, - method: 'DELETE', - }).then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove')); - window.location = app.forum.attribute('adminUrl'); - }).finally(() => { - app.modal.close(); - }); - }}> + app + .request({ + url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`, + method: 'DELETE', + }) + .then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove')); + window.location = app.forum.attribute('adminUrl'); + }) + .finally(() => { + app.modal.close(); + }); + }} + > Remove ); diff --git a/extensions/package-manager/js/src/admin/utils/errorHandler.ts b/extensions/package-manager/js/src/admin/utils/errorHandler.ts index a5aff2a93..679fa9e8d 100755 --- a/extensions/package-manager/js/src/admin/utils/errorHandler.ts +++ b/extensions/package-manager/js/src/admin/utils/errorHandler.ts @@ -1,5 +1,5 @@ -import app from "flarum/admin/app"; -import ComposerFailureModal from "../components/ComposerFailureModal"; +import app from 'flarum/admin/app'; +import ComposerFailureModal from '../components/ComposerFailureModal'; export default function (e: any) { const error = e.response.errors[0]; From 2ce28f8e5c260b76155fc08402484635060c7854 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Fri, 1 Oct 2021 17:52:15 +0100 Subject: [PATCH 20/51] Improve update checking and add UI for major flarum update --- extensions/package-manager/js/dist/admin.js | 88 +++++++++++++++++-- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/MajorUpdater.tsx | 32 +++++++ .../js/src/admin/components/Updater.tsx | 40 +++++++-- .../package-manager/js/src/admin/index.js | 1 + extensions/package-manager/less/admin.less | 39 +++++++- extensions/package-manager/locale/en.yml | 7 ++ .../src/Command/CheckForUpdatesHandler.php | 68 ++++++++++++-- .../package-manager/src/LastUpdateCheck.php | 2 +- 9 files changed, 255 insertions(+), 24 deletions(-) create mode 100644 extensions/package-manager/js/src/admin/components/MajorUpdater.tsx diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index b2635ade8..111b8d4e9 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -322,6 +322,70 @@ var Installer = /*#__PURE__*/function (_Component) { +/***/ }), + +/***/ "./src/admin/components/MajorUpdater.tsx": +/*!***********************************************!*\ + !*** ./src/admin/components/MajorUpdater.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 MajorUpdater; }); +/* 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_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); +/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__); + + + + + + +var MajorUpdater = /*#__PURE__*/function (_Component) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(MajorUpdater, _Component); + + function MajorUpdater() { + return _Component.apply(this, arguments) || this; + } + + var _proto = MajorUpdater.prototype; + + _proto.view = function view(vnode) { + return m("div", { + className: "Form-group PackageManager-majorUpdate" + }, m("img", { + alt: "flarum logo", + src: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('baseUrl') + '/assets/extensions/sycho-package-manager/flarum.svg' + }), m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.title', { + version: this.attrs.coreUpdate['latest-major'] + })), m("p", { + className: "helpText" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.description')), m("div", { + className: "PackageManager-updaterControls" + }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4___default.a, { + text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run_help') + }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { + className: "Button", + icon: "fas fa-vial" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run'))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { + className: "Button", + icon: "fas fa-play" + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.update')))); + }; + + return MajorUpdater; +}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); + + + /***/ }), /***/ "./src/admin/components/Updater.tsx": @@ -354,6 +418,8 @@ __webpack_require__.r(__webpack_exports__); /* 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"); + @@ -407,7 +473,7 @@ var Updater = /*#__PURE__*/function (_Component) { }; } - return m("div", { + return [m("div", { className: "Form-group" }, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_title')), m("p", { className: "helpText" @@ -439,7 +505,9 @@ var Updater = /*#__PURE__*/function (_Component) { className: "PackageManager-extensions-grid" }, core ? this.extensionItem(core, true) : null, extensions.map(function (extension) { return _this2.extensionItem(extension); - }))) : null); + }))) : null), coreUpdate && coreUpdate['latest-major'] ? m(_MajorUpdater__WEBPACK_IMPORTED_MODULE_11__["default"], { + coreUpdate: coreUpdate + }) : null]; }; _proto.extensionItem = function extensionItem(extension, isCore) { @@ -463,9 +531,11 @@ var Updater = /*#__PURE__*/function (_Component) { className: "PackageManager-extension-version" }, m("span", { className: "PackageManager-extension-version-current" - }, extension.version), m("span", { - className: "PackageManager-extension-version-latest Label" - }, extension.newPackageUpdate.latest))), m("div", { + }, this.version(extension.version)), extension.newPackageUpdate['latest-minor'] ? m("span", { + className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--minor" + }, this.version(extension.newPackageUpdate['latest-minor'])) : null, extension.newPackageUpdate['latest-major'] && !isCore ? m("span", { + className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--major" + }, this.version(extension.newPackageUpdate['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('sycho-package-manager.admin.extensions.update') @@ -477,10 +547,14 @@ var Updater = /*#__PURE__*/function (_Component) { })))); }; + _proto.version = function version(v) { + return 'v' + v.replace('v', ''); + }; + _proto.getExtensionUpdates = function getExtensionUpdates() { var _this$lastUpdateCheck2, _this$lastUpdateCheck3, _this$lastUpdateCheck4; - var updates = (_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) { + (_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 safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); @@ -613,6 +687,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _components_Updater__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Updater */ "./src/admin/components/Updater.tsx"); /* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/admin/utils/isExtensionEnabled */ "flarum/admin/utils/isExtensionEnabled"); /* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var _components_MajorUpdater__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/MajorUpdater */ "./src/admin/components/MajorUpdater.tsx"); + diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 63a9d4f8e..d16e4909e 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://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","Updater","lastUpdateCheck","extensions","getExtensionUpdates","coreUpdate","getCoreUpdate","core","version","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","latest","updateCoreMinor","updateExtension","updates","installed","filter","composerPackage","replace","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA,wC;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACe,SAASA,cAAT,CAAwBC,QAAxB,EAAkCC,UAAlC,EAA8C;AAC3DD,UAAQ,CAACE,SAAT,GAAqBC,MAAM,CAACC,MAAP,CAAcH,UAAU,CAACC,SAAzB,CAArB;AACAF,UAAQ,CAACE,SAAT,CAAmBG,WAAnB,GAAiCL,QAAjC;AACAM,oEAAc,CAACN,QAAD,EAAWC,UAAX,CAAd;AACD,C;;;;;;;;;;;;ACLD;AAAA;AAAe,SAASM,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AAC5CF,iBAAe,GAAGJ,MAAM,CAACG,cAAP,IAAyB,SAASC,eAAT,CAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;AACxED,KAAC,CAACE,SAAF,GAAcD,CAAd;AACA,WAAOD,CAAP;AACD,GAHD;;AAKA,SAAOD,eAAe,CAACC,CAAD,EAAIC,CAAJ,CAAtB;AACD,C;;;;;;;;;;;;;;;;;;;;ACPD;AACA;;IASqBE,oB;;;;;;;;;SACnBC,M,GAAA,gBAAOC,KAAP,EAAsC;AACpC,qBAAMD,MAAN,YAAaC,KAAb;;AAEA,QAAI,KAAKC,KAAL,CAAWC,KAAX,CAAiBC,aAArB,EAAoC;AAClC,WAAKC,UAAL,GAAkB;AAChBC,YAAI,EAAE,OADU;AAEhBC,eAAO,EAAEC,uDAAG,CAACC,UAAJ,CAAeC,KAAf,8DAAgF,KAAKR,KAAL,CAAWC,KAAX,CAAiBC,aAAjG;AAFO,OAAlB;AAID;AACF,G;;SAEDO,S,GAAA,qBAAY;AACV,WAAO,mCAAP;AACD,G;;SAEDC,K,GAAA,iBAAQ;AACN,WAAOJ,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,iDAArB,CAAP;AACD,G;;SAEDH,O,GAAA,mBAAU;AACR,WACE;AAAK,eAAS,EAAC;AAAf,OACE,mBACE,mBAAUC,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gEAArB,CAAV,CADF,EAEE;AAAK,eAAS,EAAC;AAAf,OAA8C,KAAKR,KAAL,CAAWC,KAAX,CAAiBU,MAA/D,CAFF,CADF,CADF;AAQD,G;;;EA7BwEC,qE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACT3E;AACA;AACA;AACA;AACA;AAEA;;IAEqBC,S;;;;;;;;;;;UACnBC,W;UACAC,S,GAAqB,K;;;;;;SAErBjB,M,GAAA,gBAAOC,KAAP,EAAmC;AACjC,yBAAMD,MAAN,YAAaC,KAAb;;AAEA,SAAKe,WAAL,GAAmBE,iEAAM,CAAC,EAAD,CAAzB;AACD,G;;SAEDC,I,GAAA,gBAAyB;AACvB,WACE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,aAAO,EAAC;AAAf,OAAoCX,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CAApC,CADF,EAEE;AAAG,eAAS,EAAC;AAAb,OAAyBF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,qDAArB,EAA4E;AACnGU,eAAS,EAAE;AAAG,YAAI,EAAC;AAAR;AADwF,KAA5E,CAAzB,CAFF,EAKE;AAAK,eAAS,EAAC;AAAf,OACE;AAAO,eAAS,EAAC,aAAjB;AAA+B,QAAE,EAAC,mBAAlC;AAAsD,iBAAW,EAAC,qBAAlE;AAAwF,UAAI,EAAE,KAAKJ;AAAnG,MADF,EAEE,EAAC,sEAAD;AAAQ,eAAS,EAAC,QAAlB;AAA2B,UAAI,EAAC,iBAAhC;AAAkD,aAAO,EAAE,KAAKK,QAAL,CAAcC,IAAd,CAAmB,IAAnB,CAA3D;AAAqF,aAAO,EAAE,KAAKL;AAAnG,OACGT,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CADH,CAFF,CALF,CADF;AAcD,G;;SAEDa,I,GAAA,gBAAY;AACV,WAAO;AACL,iBAAS,KAAKP,WAAL;AADJ,KAAP;AAGD,G;;SAEDK,Q,GAAA,oBAAiB;AAAA;;AACf,SAAKJ,SAAL,GAAiB,IAAjB;AACAT,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,gCAFO;AAGVC,UAAI,EAAE;AACJT,YAAI,EAAE,KAAKA,IAAL;AADF,OAHI;AAMVU,kBAAY,EAAZA,2DAAYA;AANF,KAAZ,EAOGC,IAPH,CAOQ,UAACC,QAAD,EAAc;AACpB,UAAMC,WAAW,GAAGD,QAAQ,CAACE,EAA7B;AACA7B,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,2DAArB,EAAkF;AAAE6B,iBAAS,EAAEH;AAAb,OAAlF,CAArC;AACAI,YAAM,CAACC,QAAP,CAAgBC,IAAhB,GAA0BlC,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,UAApB,CAA1B,oBAAwEK,WAAxE;AACAI,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KAZD,aAYW,YAAM;AACf,YAAI,CAAC1B,SAAL,GAAiB,KAAjB;AACA2B,OAAC,CAACC,MAAF;AACD,KAfD;AAgBD,G;;;EArDoCC,8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IAmBqBC,O;;;;;;;;;;;UACnB9B,S,GAAyB,I;UACzB+B,e,GAAmCxC,uDAAG,CAACe,IAAJ,CAASyB,eAAT,IAA4B,E;;;;;;SAE/DhD,M,GAAA,gBAAOC,KAAP,EAAc;AACZ,yBAAMD,MAAN,YAAaC,KAAb;AACD,G;;SAEDkB,I,GAAA,gBAAO;AAAA;AAAA;;AACL,QAAM8B,UAAe,GAAG,KAAKC,mBAAL,EAAxB;AACA,QAAMC,UAAoC,GAAG,KAAKC,aAAL,EAA7C;AACA,QAAIC,IAAI,GAAG,IAAX;;AAEA,QAAIF,UAAJ,EAAgB;AACdE,UAAI,GAAG;AACLzC,aAAK,EAAEJ,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CADF;AAEL4C,eAAO,EAAE9C,uDAAG,CAACe,IAAJ,CAASgC,QAAT,CAAkBD,OAFtB;AAGLE,YAAI,EAAE;AACJC,yBAAe,WAASjD,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,SAApB,CAAT;AADX,SAHD;AAML2B,wBAAgB,EAAEP;AANb,OAAP;AAQD;;AAED,WACE;AAAK,eAAS,EAAC;AAAf,OACE,iBAAQ3C,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,mDAArB,CAAR,CADF,EAEE;AAAG,eAAS,EAAC;AAAb,OAAyBF,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,kDAArB,CAAzB,CAFF,EAGGnB,MAAM,CAACoE,IAAP,CAAY,KAAKX,eAAjB,EAAkCY,MAAlC,GACC;AAAG,eAAS,EAAC;AAAb,OACE;AAAM,eAAS,EAAC;AAAhB,OAAsDpD,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,4DAArB,CAAtD,CADF,EAEE;AAAM,eAAS,EAAC;AAAhB,OAAsDmD,sEAAS,0BAAC,KAAKb,eAAN,qBAAC,sBAAsBc,SAAvB,CAA/D,CAFF,CADD,GAKG,IARN,EASE;AAAK,eAAS,EAAC;AAAf,OACE,EAAC,sEAAD;AACE,eAAS,EAAC,QADZ;AAEE,UAAI,EAAC,iBAFP;AAGE,aAAO,EAAE,KAAKC,eAAL,CAAqBzC,IAArB,CAA0B,IAA1B,CAHX;AAIE,aAAO,EAAE,KAAKL,SAAL,KAAmB,OAJ9B;AAKE,cAAQ,EAAE,KAAKA,SAAL,KAAmB,IAAnB,IAA2B,KAAKA,SAAL,KAAmB;AAL1D,OAMGT,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,CANH,CADF,EASE,EAAC,sEAAD;AACE,eAAS,EAAC,QADZ;AAEE,UAAI,EAAC,aAFP;AAGE,aAAO,EAAE,KAAKsD,cAAL,CAAoB1C,IAApB,CAAyB,IAAzB,CAHX;AAIE,aAAO,EAAE,KAAKL,SAAL,KAAmB,eAJ9B;AAKE,cAAQ,EAAE,KAAKA,SAAL,KAAmB,IAAnB,IAA2B,KAAKA,SAAL,KAAmB;AAL1D,OAMGT,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,CANH,CATF,CATF,EA2BG,KAAKO,SAAL,KAAmB,IAAnB,GACC;AAAK,eAAS,EAAC;AAAf,OACE,EAAC,iFAAD,OADF,CADD,GAIIgC,UAAU,CAACW,MAAX,IAAqBP,IAArB,GACH;AAAK,eAAS,EAAC;AAAf,OACE;AAAK,eAAS,EAAC;AAAf,OACGA,IAAI,GAAG,KAAKY,aAAL,CAAmBZ,IAAnB,EAAyB,IAAzB,CAAH,GAAoC,IAD3C,EAEGJ,UAAU,CAACiB,GAAX,CAAe,UAAC3B,SAAD;AAAA,aAAoB,MAAI,CAAC0B,aAAL,CAAmB1B,SAAnB,CAApB;AAAA,KAAf,CAFH,CADF,CADG,GAOD,IAtCN,CADF;AA0CD,G;;SAED0B,a,GAAA,uBAAc1B,SAAd,EAA8B4B,MAA9B,EAAuD;AAAA,QAAzBA,MAAyB;AAAzBA,YAAyB,GAAP,KAAO;AAAA;;AACrD,WACE;AAAK,eAAS,EAAEC,oEAAS,CAAC;AAAC,oCAA4B,IAA7B;AAAmC,0CAAkCD;AAArE,OAAD;AAAzB,OACE;AAAK,eAAS,EAAC,6CAAf;AAA6D,WAAK,EAAE5B,SAAS,CAACiB;AAA9E,OACGjB,SAAS,CAACiB,IAAV,GAAiBA,iEAAI,CAACjB,SAAS,CAACiB,IAAV,CAAea,IAAhB,CAArB,GAA6C,EADhD,CADF,EAIE;AAAK,eAAS,EAAC;AAAf,OACE;AAAK,eAAS,EAAC;AAAf,OAAgD9B,SAAS,CAAC3B,KAAV,IAAmB2B,SAAS,CAAC+B,KAAV,CAAgB,kBAAhB,EAAoC1D,KAAvG,CADF,EAEE;AAAK,eAAS,EAAC;AAAf,OACE;AAAM,eAAS,EAAC;AAAhB,OAA4D2B,SAAS,CAACe,OAAtE,CADF,EAEE;AAAM,eAAS,EAAC;AAAhB,OAAiEf,SAAS,CAACmB,gBAAV,CAA2Ba,MAA5F,CAFF,CAFF,CAJF,EAWE;AAAK,eAAS,EAAC;AAAf,OACE,EAAC,uEAAD;AAAS,UAAI,EAAE/D,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,+CAArB;AAAf,OACE,EAAC,sEAAD;AACE,UAAI,EAAC,4BADP;AAEE,eAAS,EAAC,kCAFZ;AAGE,aAAO,EAAEyD,MAAM,GAAG,KAAKK,eAAL,CAAqBlD,IAArB,CAA0B,IAA1B,CAAH,GAAqC,KAAKmD,eAAL,CAAqBnD,IAArB,CAA0B,IAA1B,EAAgCiB,SAAhC,CAHtD;AAIE,oBAAY/B,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,+CAArB;AAJd,MADF,CADF,CAXF,CADF;AAuBD,G;;SAEDwC,mB,GAAA,+BAAsB;AAAA;;AACpB,QAAMwB,OAAO,6BAAG,KAAK1B,eAAR,+CAAG,uBAAsB0B,OAAzB,+CAAG,uBAA+BC,SAAlC,qBAAG,uBAA0CC,MAA1C,CAAiD,UAACC,eAAD,EAAqC;AACpG,UAAMtC,SAAS,GAAG/B,uDAAG,CAACe,IAAJ,CAAS0B,UAAT,CAAoB4B,eAAe,CAACR,IAAhB,CAAqBS,OAArB,CAA6B,GAA7B,EAAkC,GAAlC,EAAuCA,OAAvC,CAA+C,yBAA/C,EAA0E,EAA1E,CAApB,CAAlB;AACA,UAAMC,YAAY,GAAG,CAAC,oBAAD,EAAuB,iBAAvB,EAA0CC,QAA1C,CAAmDH,eAAe,CAAC,eAAD,CAAlE,CAArB;;AAEA,UAAItC,SAAS,IAAIwC,YAAjB,EAA+B;AAC7BxC,iBAAS,CAACmB,gBAAV,GAA6BmB,eAA7B;AACD;;AAED,aAAOtC,SAAS,IAAIwC,YAApB;AACD,KATe,CAAhB;AAWA,WAAOxF,MAAM,CAAC0F,MAAP,CAAczE,uDAAG,CAACe,IAAJ,CAAS0B,UAAvB,EAAmC2B,MAAnC,CAA0C,UAACrC,SAAD;AAAA,aAAoBA,SAAS,CAACmB,gBAA9B;AAAA,KAA1C,CAAP;AACD,G;;SAEDN,a,GAAA,yBAA0C;AAAA;;AACxC,qCAAO,KAAKJ,eAAZ,+CAAO,uBAAsB0B,OAA7B,+CAAO,uBAA+BC,SAAtC,qBAAO,uBAA0CC,MAA1C,CAAiD,UAACC,eAAD;AAAA,aAA0BA,eAAe,CAACR,IAAhB,KAAyB,aAAnD;AAAA,KAAjD,EAAmHa,GAAnH,EAAP;AACD,G;;SAEDnB,e,GAAA,2BAAkB;AAAA;;AAChB,SAAK9C,SAAL,GAAiB,OAAjB;AAEAT,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,uCAFO;AAGVE,kBAAY,EAAZA,2DAAYA;AAHF,KAAZ,EAIGC,IAJH,CAIQ,UAACC,QAAD,EAAc;AACpB,YAAI,CAACa,eAAL,GAAuBb,QAAvB;AACD,KAND,aAMW,YAAM;AACf,YAAI,CAAClB,SAAL,GAAiB,IAAjB;AACA2B,OAAC,CAACC,MAAF;AACD,KATD;AAUD,G;;SAED2B,e,GAAA,2BAAkB;AAAA;;AAChBhE,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AACA,SAAKT,SAAL,GAAiB,cAAjB;AAEAT,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,kCAFO;AAGVE,kBAAY,EAAZA,2DAAYA;AAHF,KAAZ,EAIGC,IAJH,CAIQ,YAAM;AACZ1B,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,6DAArB,CAArC;AACA8B,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KAPD,aAOW,YAAM;AACf,YAAI,CAAC1B,SAAL,GAAiB,IAAjB;AACA2B,OAAC,CAACC,MAAF;AACD,KAVD;AAWD,G;;SAED4B,e,GAAA,yBAAgBlC,SAAhB,EAAgC;AAAA;;AAC9B/B,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AACA,SAAKT,SAAL,GAAiB,kBAAjB;AAEAT,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,OADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,oCAAiEQ,SAAS,CAACF,EAFpE;AAGVJ,kBAAY,EAAZA,2DAAYA;AAHF,KAAZ,EAIGC,IAJH,CAIQ,YAAM;AACZ1B,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,0DAArB,EAAiF;AAAE6B,iBAAS,EAAEA,SAAS,CAAC+B,KAAV,CAAgB,kBAAhB,EAAoC1D;AAAjD,OAAjF,CAArC;AACA4B,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KAPD,aAOW,YAAM;AACf,YAAI,CAAC1B,SAAL,GAAiB,IAAjB;AACA2B,OAAC,CAACC,MAAF;AACD,KAVD;AAWD,G;;SAEDmB,c,GAAA,0BAAiB;AAAA;;AACfxD,2DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AACA,SAAKT,SAAL,GAAiB,eAAjB;AAEAT,2DAAG,CAACmB,OAAJ,CAAY;AACVC,YAAM,EAAE,MADE;AAEVC,SAAG,EAAKrB,uDAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,mCAFO;AAGVE,kBAAY,EAAZA,2DAAYA;AAHF,KAAZ,EAIGC,IAJH,CAIQ,YAAM;AACZ1B,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAqCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,8DAArB,CAArC;AACA8B,YAAM,CAACC,QAAP,CAAgBE,MAAhB;AACD,KAPD,aAOW,YAAM;AACf,YAAI,CAAC1B,SAAL,GAAiB,IAAjB;AACA2B,OAAC,CAACC,MAAF;AACD,KAVD;AAWD,G;;;EAjLkCC,8D;;;;;;;;;;;;;;AC5BrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAtC,uDAAG,CAAC2E,YAAJ,CAAiBC,GAAjB,CAAqB,uBAArB,EAA8C,UAAC5E,GAAD,EAAS;AACrDA,KAAG,CAAC6E,aAAJ,QACO,uBADP,EAEGC,eAFH,CAEmB,YAAM;AACrB,QAAI,CAAC9E,GAAG,CAACe,IAAJ,CAASgE,6BAAd,EAA6C;AAC3C,aACE;AAAK,iBAAS,EAAC;AAAf,SACE,EAAC,qEAAD;AAAO,YAAI,EAAC,SAAZ;AAAsB,mBAAW,EAAE;AAAnC,SAA2C/E,GAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,8CAArB,CAA3C,CADF,CADF;AAKD;AACF,GAVH,EAWG4E,eAXH,CAWmB,YAAM;AACrB,QAAI9E,GAAG,CAACe,IAAJ,CAASgE,6BAAb,EAA4C;AAC1C,aACE,EAAC,6DAAD,OADF;AAGD;AACF,GAjBH,EAkBGD,eAlBH,CAkBmB,YAAM;AACrB,QAAI9E,GAAG,CAACe,IAAJ,CAASgE,6BAAb,EAA4C;AAC1C,aACE,EAAC,2DAAD,OADF;AAGD;AACF,GAxBH;AA0BAC,qEAAM,CAACC,4EAAa,CAACnG,SAAf,EAA0B,UAA1B,EAAsC,UAAUoG,KAAV,EAAiB;AAAA;;AAC3D,QAAI,KAAKnD,SAAL,CAAeF,EAAf,KAAsB,uBAAtB,IAAiDsD,4EAAkB,CAAC,KAAKpD,SAAL,CAAeF,EAAhB,CAAvE,EAA4F;AAC1F;AACD;;AAEDqD,SAAK,CAACN,GAAN,CACE,QADF,EAEE,EAAC,sEAAD;AACE,eAAS,EAAC,uBADZ;AAEE,UAAI,EAAC,cAFP;AAGE,aAAO,EAAE,mBAAM;AACb5E,WAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAeC,2EAAf;AAEAlB,WAAG,CAACmB,OAAJ,CAAY;AACVE,aAAG,EAAKrB,GAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,QAApB,CAAL,oCAAiE,KAAI,CAACQ,SAAL,CAAeF,EADzE;AAEVT,gBAAM,EAAE;AAFE,SAAZ,EAGGM,IAHH,CAGQ,YAAM;AACZ1B,aAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,gBAAI,EAAE;AAAR,WAAhB,EAAqCE,GAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,0DAArB,CAArC;AACA8B,gBAAM,CAACC,QAAP,GAAkBjC,GAAG,CAACsB,KAAJ,CAAUC,SAAV,CAAoB,UAApB,CAAlB;AACD,SAND,aAMW,YAAM;AACfvB,aAAG,CAACgB,KAAJ,CAAUoE,KAAV;AACD,SARD;AASD;AAfH,gBAFF;AAqBD,GA1BK,CAAN;AA2BD,CAtDD,E;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AACA;AAEe,yEAAUC,CAAV,EAAkB;AAC/B,MAAM1F,KAAK,GAAG0F,CAAC,CAAC1D,QAAF,CAAW2D,MAAX,CAAkB,CAAlB,CAAd;;AAEA,MAAI,CAAC,CAAC,0BAAD,EAA6B,6BAA7B,EAA4D,yBAA5D,EAAuFd,QAAvF,CAAgG7E,KAAK,CAAC4F,IAAtG,CAAL,EAAkH;AAChH,UAAMF,CAAN;AACD;;AAED,UAAQ1F,KAAK,CAAC4F,IAAd;AACE,SAAK,0BAAL;AACEvF,6DAAG,CAACgB,KAAJ,CAAUC,IAAV,CAAe1B,wEAAf,EAAqC;AAAEI,aAAK,EAALA;AAAF,OAArC;AACA;;AAEF,SAAK,6BAAL;AACEK,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAmCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,oEAArB,CAAnC;AACAF,6DAAG,CAACgB,KAAJ,CAAUoE,KAAV;AACA;;AAEF,SAAK,yBAAL;AACEpF,6DAAG,CAAC8B,MAAJ,CAAWb,IAAX,CAAgB;AAAEnB,YAAI,EAAE;AAAR,OAAhB,EAAmCE,uDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gEAArB,CAAnC;AACAF,6DAAG,CAACgB,KAAJ,CAAUoE,KAAV;AAZJ;AAcD,C;;;;;;;;;;;ACxBD,iD;;;;;;;;;;;ACAA,sE;;;;;;;;;;;ACAA,qE;;;;;;;;;;;ACAA,sE;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,0E;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,iE;;;;;;;;;;;ACAA,qD;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,8D","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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from \"flarum/common/Component\";\nimport Alert from \"flarum/common/components/Alert\";\nimport Mithril from \"mithril\";\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from \"./ComposerFailureModal\";\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

{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data()\n },\n errorHandler,\n }).then((response) => {\n const extensionId = response.id;\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }));\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }).finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import 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\";\n\ntype UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n \"latest-status\": string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return (\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-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 );\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n
\n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {extension.version}\n {extension.newPackageUpdate.latest}\n
\n
\n
\n \n \n \n
\n
\n );\n }\n\n getExtensionUpdates() {\n const updates = 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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage|undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n }).then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n }).finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }));\n window.location.reload();\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.request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\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('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return (\n \n );\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app.request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n }).then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }).finally(() => {\n app.modal.close();\n });\n }}>\n Remove\n \n );\n });\n});\n","import app from \"flarum/admin/app\";\nimport ComposerFailureModal from \"../components/ComposerFailureModal\";\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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 +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","Updater","lastUpdateCheck","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","updateCoreMinor","updateExtension","v","replace","updates","installed","filter","composerPackage","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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('sycho-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('sycho-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';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n}\n\nexport default class MajorUpdater extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n return (\n
\n \"flarum\n \n

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

\n
\n \n \n \n \n
\n
\n );\n }\n}\n","import 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';\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\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return [\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-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: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\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 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('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\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('sycho-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('sycho-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';\nimport MajorUpdater from './components/MajorUpdater';\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n \n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-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('sycho-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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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/src/admin/components/MajorUpdater.tsx b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx new file mode 100644 index 000000000..1ce5bfb0b --- /dev/null +++ b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx @@ -0,0 +1,32 @@ +import app from 'flarum/admin/app'; +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'; + +interface MajorUpdaterAttrs extends ComponentAttrs { + coreUpdate: UpdatedPackage; +} + +export default class MajorUpdater extends Component { + view(vnode: Mithril.Vnode): Mithril.Children { + return ( +
+ flarum logo + +

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

+
+ + + + +
+
+ ); + } +} diff --git a/extensions/package-manager/js/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index 1fb30e76f..20a354e0e 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -8,11 +8,14 @@ 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'; -type UpdatedPackage = { +export type UpdatedPackage = { name: string; version: string; latest: string; + 'latest-minor': string | null; + 'latest-major': string | null; 'latest-status': string; description: string; }; @@ -50,7 +53,7 @@ export default class Updater extends Component { }; } - return ( + return [

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

@@ -94,21 +97,36 @@ export default class Updater extends Component {
) : null} - - ); + , + coreUpdate && coreUpdate['latest-major'] ? : null, + ]; } extensionItem(extension: any, isCore: boolean = false) { return ( -
+
{extension.icon ? icon(extension.icon.name) : ''}
{extension.title || extension.extra['flarum-extension'].title}
- {extension.version} - {extension.newPackageUpdate.latest} + {this.version(extension.version)} + {extension.newPackageUpdate['latest-minor'] ? ( + + {this.version(extension.newPackageUpdate['latest-minor'])} + + ) : null} + {extension.newPackageUpdate['latest-major'] && !isCore ? ( + + {this.version(extension.newPackageUpdate['latest-major'])} + + ) : null}
@@ -125,8 +143,12 @@ export default class Updater extends Component { ); } + version(v: string) { + return 'v' + v.replace('v', ''); + } + getExtensionUpdates() { - const updates = this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => { + this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => { const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')]; const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); @@ -141,7 +163,7 @@ export default class Updater extends Component { } getCoreUpdate(): UpdatedPackage | undefined { - return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: any) => composerPackage.name === 'flarum/core').pop(); + return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop(); } checkForUpdates() { diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js index 99571479a..d1dec656e 100755 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.js @@ -7,6 +7,7 @@ import LoadingModal from 'flarum/admin/components/LoadingModal'; import Installer from './components/Installer'; import Updater from './components/Updater'; import isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled'; +import MajorUpdater from './components/MajorUpdater'; app.initializers.add('sycho-package-manager', (app) => { app.extensionData diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index 0c7126a81..047c88435 100755 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -25,6 +25,7 @@ display: flex; flex-wrap: wrap; gap: 8px; + grid-area: controls; } .PackageManager-extensions { @@ -63,11 +64,19 @@ gap: 8px; &-latest { - background: @alert-success-bg; - color: @alert-success-color; border-radius: 30px; padding: 0 6px; font-weight: bold; + + &--minor { + background-color: @alert-success-bg; + color: @alert-success-color; + } + + &--major { + background-color: @alert-bg; + color: @alert-color; + } } } @@ -84,3 +93,29 @@ filter: grayscale(1) brightness(3.5); } } + +.PackageManager-majorUpdate { + border: 2px solid @control-danger-color; + border-radius: @border-radius; + padding: 16px; + background-color: lighten(@control-danger-bg, 5.5); + display: grid; + grid-template-areas: + "logo title" + "logo helpText" + "logo controls"; + grid-gap: 0 16px; + align-items: center; + + > img { + grid-area: logo; + } + + > label { + grid-area: title; + } + + > .helpText { + grid-area: helpText; + } +} diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index f15e94bf8..096dd9eb5 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -22,6 +22,13 @@ sycho-package-manager: file_permissions: > The package manager requires read and write permissions on the following files and directories: composer.json, composer.lock, vendor, storage/.composer + major_updater: + 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. + title: Flarum {version} Major Update Available + update: Update + updater: check_for_updates: Check for updates flarum: Flarum Core diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index a1908383e..c1adecc89 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -6,9 +6,7 @@ namespace SychO\PackageManager\Command; -use Carbon\Carbon; use Composer\Console\Application; -use Flarum\Settings\SettingsRepositoryInterface; use SychO\PackageManager\Exception\ComposerCommandFailedException; use SychO\PackageManager\LastUpdateCheck; use SychO\PackageManager\OutputLogger; @@ -40,8 +38,22 @@ class CheckForUpdatesHandler } /** - * @throws \Flarum\User\Exception\PermissionDeniedException - * @throws ComposerCommandFailedException + * We run two commands here + * + * `composer outdated -D --format json` + * This queries latest versions for all direct packages, so it can include major updates, + * that are not necessarily compatible with the current flarum version. + * That includes flarum/core itself, so for example if we are on flarum/core v1.8.0 + * and there are v1.8.1 and v2.0.0 available, the command would only let us know of v2.0.0. + * + * `composer outdated -D --minor-only --format json` + * This only lists latest minor updates, we need to run this as well not only to be able to know + * of these minor versions in addition to major ones, but especially for the flarum/core, as explained above + * we need to know of minor core updates, even if there is a major version available. + * + * The results from both commands are properly processed and merged to have new key values `latest-minor` and `latest-major`. + * + * @throws \Flarum\User\Exception\PermissionDeniedException|ComposerCommandFailedException */ public function handle(CheckForUpdates $command) { @@ -49,10 +61,56 @@ class CheckForUpdatesHandler $actor->assertAdmin(); + $firstOutput = $this->runComposerCommand(false); + $firstOutput = json_decode($firstOutput, true); + + $majorUpdates = false; + + foreach ($firstOutput['installed'] as $package) { + if ($package['latest-status'] === 'update-possible') { + $majorUpdates = true; + break; + } + } + + if ($majorUpdates) { + $secondOutput = $this->runComposerCommand(true); + $secondOutput = json_decode($secondOutput, true); + } else { + $secondOutput = ['installed' => []]; + } + + foreach ($firstOutput['installed'] as &$mainPackageUpdate) { + $mainPackageUpdate['latest-minor'] = $mainPackageUpdate['latest-major'] = null; + + if ($mainPackageUpdate['latest-status'] === 'update-possible') { + $mainPackageUpdate['latest-major'] = $mainPackageUpdate['latest']; + + $minorPackageUpdate = array_filter($secondOutput['installed'], function ($package) use ($mainPackageUpdate) { + return $package['name'] === $mainPackageUpdate['name']; + })[0] ?? null; + + if ($minorPackageUpdate) { + $mainPackageUpdate['latest-minor'] = $minorPackageUpdate['latest']; + } + } else { + $mainPackageUpdate['latest-minor'] = $mainPackageUpdate['latest']; + } + } + + return $this->lastUpdateCheck->save($firstOutput); + } + + /** + * @throws ComposerCommandFailedException + */ + protected function runComposerCommand(bool $minorOnly): string + { $output = new BufferedOutput(); $input = new ArrayInput([ 'command' => 'outdated', '-D' => true, + '--minor-only' => $minorOnly, '--format' => 'json', ]); @@ -65,6 +123,6 @@ class CheckForUpdatesHandler throw new ComposerCommandFailedException('', $output); } - return $this->lastUpdateCheck->save(json_decode($output, true)); + return $output; } } diff --git a/extensions/package-manager/src/LastUpdateCheck.php b/extensions/package-manager/src/LastUpdateCheck.php index 53bfa5326..23579f59d 100755 --- a/extensions/package-manager/src/LastUpdateCheck.php +++ b/extensions/package-manager/src/LastUpdateCheck.php @@ -47,7 +47,7 @@ class LastUpdateCheck if (isset($lastUpdateCheck['updates']) && ! empty($lastUpdateCheck['updates']['installed'])) { $updatesListChanged = false; - $pattern = str_replace('*', '.*', preg_quote($name)); + $pattern = preg_quote(str_replace('*', '.*', $name)); foreach ($lastUpdateCheck['updates']['installed'] as $k => $package) { if (($wildcard && Str::of($package['name'])->test("/($pattern)/")) || $package['name'] === $name) { From 7e174dd08a012e3489b9afbd1fbf9aa09dfd523b Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sun, 3 Oct 2021 10:58:17 +0100 Subject: [PATCH 21/51] [untested] Major Update handler (#1) --- extensions/package-manager/js/dist/admin.js | 48 +++++- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/MajorUpdater.tsx | 31 +++- .../js/src/admin/components/Updater.tsx | 2 +- extensions/package-manager/locale/en.yml | 3 +- .../Api/Controller/MajorUpdateController.php | 41 +++++ .../Controller/UpdateExtensionController.php | 3 - .../src/Command/MajorUpdate.php | 24 +++ .../src/Command/MajorUpdateHandler.php | 152 ++++++++++++++++++ .../src/Listener/PostUpdateListener.php | 3 +- 10 files changed, 296 insertions(+), 13 deletions(-) create mode 100755 extensions/package-manager/src/Api/Controller/MajorUpdateController.php create mode 100644 extensions/package-manager/src/Command/MajorUpdate.php create mode 100644 extensions/package-manager/src/Command/MajorUpdateHandler.php diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 111b8d4e9..f17a14182 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -343,6 +343,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); /* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__); +/* 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"); + + @@ -353,7 +358,15 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(MajorUpdater, _Component); function MajorUpdater() { - return _Component.apply(this, arguments) || this; + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.isLoading = null; + return _this; } var _proto = MajorUpdater.prototype; @@ -374,13 +387,40 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run_help') }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { className: "Button", - icon: "fas fa-vial" + icon: "fas fa-vial", + onclick: this.update.bind(this, true) }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run'))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { className: "Button", - icon: "fas fa-play" + icon: "fas fa-play", + onclick: this.update.bind(this, false) }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.update')))); }; + _proto.update = function update(dryRun) { + var _this2 = this; + + this.isLoading = "update-" + (dryRun ? 'dry-run' : 'run'); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); + 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/major-update", + body: { + data: { + dryRun: dryRun + } + }, + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_6__["default"] + }).then(function () { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + type: 'success' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.update_successful')); + window.location.reload(); + })["finally"](function () { + _this2.isLoading = null; + m.redraw(); + }); + }; + return MajorUpdater; }(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); @@ -605,7 +645,7 @@ var Updater = /*#__PURE__*/function (_Component) { }).then(function () { flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.update_successful')); window.location.reload(); })["finally"](function () { _this4.isLoading = null; diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index d16e4909e..e34f60c90 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://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","Updater","lastUpdateCheck","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","updateCoreMinor","updateExtension","v","replace","updates","installed","filter","composerPackage","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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('sycho-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('sycho-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';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n}\n\nexport default class MajorUpdater extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n return (\n
\n \"flarum\n \n

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

\n
\n \n \n \n \n
\n
\n );\n }\n}\n","import 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';\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\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return [\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-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: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\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 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('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\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('sycho-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('sycho-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';\nimport MajorUpdater from './components/MajorUpdater';\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n \n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-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('sycho-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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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 +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","update","dryRun","Updater","lastUpdateCheck","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","updateCoreMinor","updateExtension","v","replace","updates","installed","filter","composerPackage","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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('sycho-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('sycho-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('sycho-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('sycho-package-manager.admin.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 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';\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\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return [\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-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: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\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 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('sycho-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\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('sycho-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('sycho-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';\nimport MajorUpdater from './components/MajorUpdater';\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n \n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-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('sycho-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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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/src/admin/components/MajorUpdater.tsx b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx index 1ce5bfb0b..873ea6c00 100644 --- a/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx +++ b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx @@ -4,12 +4,16 @@ import Mithril from 'mithril'; import Button from 'flarum/common/components/Button'; import Tooltip from 'flarum/common/components/Tooltip'; import { UpdatedPackage } from './Updater'; +import LoadingModal from 'flarum/admin/components/LoadingModal'; +import errorHandler from '../utils/errorHandler'; interface MajorUpdaterAttrs extends ComponentAttrs { coreUpdate: UpdatedPackage; } export default class MajorUpdater extends Component { + isLoading: string | null = null; + view(vnode: Mithril.Vnode): Mithril.Children { return (
@@ -18,15 +22,38 @@ export default class MajorUpdater{app.translator.trans('sycho-package-manager.admin.major_updater.description')}

- -
); } + + update(dryRun: boolean) { + this.isLoading = `update-${dryRun ? 'dry-run' : 'run'}`; + app.modal.show(LoadingModal); + + app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`, + body: { + data: { dryRun }, + }, + errorHandler, + }) + .then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful')); + window.location.reload(); + }) + .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 20a354e0e..4adf8dc25 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -195,7 +195,7 @@ export default class Updater extends Component { errorHandler, }) .then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful')); window.location.reload(); }) .finally(() => { diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 096dd9eb5..4eda79983 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -34,7 +34,8 @@ sycho-package-manager: flarum: Flarum Core global_update_successful: Successfully updated all packages. last_update_checked_at: "Last Update Check: " - minor_update_successful: Flarum successfully updated. run_global_update: Run Global Update updater_title: Updates updater_help: Runs a check for new extension and Flarum updates. + + update_successful: Flarum successfully updated. diff --git a/extensions/package-manager/src/Api/Controller/MajorUpdateController.php b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php new file mode 100755 index 000000000..98c8af5ca --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php @@ -0,0 +1,41 @@ +bus = $bus; + } + + public function handle(ServerRequestInterface $request): ResponseInterface + { + $actor = RequestUtil::getActor($request); + $dryRun = (bool) (int) Arr::get($request->getParsedBody(), 'data.dryRun'); + + $this->bus->dispatch( + new MajorUpdate($actor, $dryRun) + ); + + return new EmptyResponse(); + } +} diff --git a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php index dc5a67c9d..018048ce9 100755 --- a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php @@ -27,9 +27,6 @@ class UpdateExtensionController implements RequestHandlerInterface $this->bus = $bus; } - /** - * @throws \Flarum\User\Exception\PermissionDeniedException - */ public function handle(ServerRequestInterface $request): ResponseInterface { $actor = RequestUtil::getActor($request); diff --git a/extensions/package-manager/src/Command/MajorUpdate.php b/extensions/package-manager/src/Command/MajorUpdate.php new file mode 100644 index 000000000..8fd479d49 --- /dev/null +++ b/extensions/package-manager/src/Command/MajorUpdate.php @@ -0,0 +1,24 @@ +actor = $actor; + $this->dryRun = $dryRun; + } +} diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php new file mode 100644 index 000000000..4a961b5f6 --- /dev/null +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -0,0 +1,152 @@ +composer = $composer; + $this->lastUpdateCheck = $lastUpdateCheck; + $this->events = $events; + $this->logger = $logger; + $this->paths = $paths; + } + + /** + * Set the version constraint for all directly required packages in the root composer.json to *. + * Set flarum/core version constraint to new major version. + * Run composer update --prefer-dist --no-plugins --no-dev -a --with-all-dependencies. + * Clear cache. + * Run migrations. + * + * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws ComposerUpdateFailedException + */ + public function handle(MajorUpdate $command) + { + $command->actor->assertAdmin(); + + $majorVersion = $this->getNewMajorVersion(); + + if (! $majorVersion) { + return false; + } + + $this->updateComposerJson($majorVersion); + + $this->runCommand($command->dryRun); + + if ($command->dryRun) { + $this->revertComposerJson(); + + return true; + } + + $this->lastUpdateCheck->forget('flarum/*', true); + + $this->events->dispatch( + new FlarumUpdated(FlarumUpdated::MAJOR) + ); + + return true; + } + + protected function getNewMajorVersion(): ?string + { + $core = Arr::first($this->lastUpdateCheck->get()['updates']['installed'], function ($package) { + return $package['name'] === 'flarum/core'; + }); + + return $core ? $core['latest-major'] : null; + } + + protected function updateComposerJson(string $majorVersion): void + { + $composerJsonPath = $this->paths->base . '/composer.json'; + $this->composerJson = $newComposerJson = json_decode(file_get_contents($composerJsonPath), true); + + foreach ($newComposerJson['require'] as $name => &$version) { + if ($name === 'flarum/core') { + $version = '^'.str_replace('v', '', $majorVersion); + } else { + $version = '*'; + } + } + + file_put_contents($composerJsonPath, json_encode($newComposerJson)); + } + + protected function revertComposerJson(): void + { + $composerJsonPath = $this->paths->base . '/composer.json'; + file_put_contents($composerJsonPath, $this->composerJson); + } + + /** + * @throws ComposerUpdateFailedException + */ + protected function runCommand(bool $dryRun): void + { + $output = new BufferedOutput(); + $input = new ArrayInput([ + 'command' => 'update', + '--prefer-dist' => true, + '--no-plugins' => true, + '--no-dev' => true, + '-a' => true, + '--with-all-dependencies' => true, + '--dry-run' => $dryRun, + ]); + + $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); + + $this->logger->log($input->__toString(), $output, $exitCode); + + if ($exitCode !== 0) { + throw new ComposerUpdateFailedException('*', $output); + } + } +} diff --git a/extensions/package-manager/src/Listener/PostUpdateListener.php b/extensions/package-manager/src/Listener/PostUpdateListener.php index 0d541fb9b..06ebbb785 100644 --- a/extensions/package-manager/src/Listener/PostUpdateListener.php +++ b/extensions/package-manager/src/Listener/PostUpdateListener.php @@ -9,6 +9,7 @@ namespace SychO\PackageManager\Listener; use Composer\Command\ClearCacheCommand; use Flarum\Database\Console\MigrateCommand; use Flarum\Foundation\Console\AssetsPublishCommand; +use SychO\PackageManager\Event\FlarumUpdated; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\NullOutput; @@ -39,7 +40,7 @@ class PostUpdateListener /** * @throws \Exception */ - public function handle($event) + public function handle(FlarumUpdated $event) { $this->clearCache->run(new ArrayInput([]), new NullOutput()); $this->migrate->run(new ArrayInput([]), new NullOutput()); From a144c026f3dba4b3608ab405018b6e88bf5a3d78 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Thu, 21 Oct 2021 10:52:51 +0100 Subject: [PATCH 22/51] Move to flarum --- extensions/package-manager/.gitignore | 2 + extensions/package-manager/README.md | 2 +- extensions/package-manager/composer.json | 40 +++++++++++++++---- extensions/package-manager/extend.php | 19 +++++---- extensions/package-manager/js/package.json | 2 +- .../admin/components/ComposerFailureModal.tsx | 6 +-- .../js/src/admin/components/Installer.tsx | 8 ++-- .../js/src/admin/components/MajorUpdater.tsx | 14 +++---- .../js/src/admin/components/Updater.tsx | 24 +++++------ .../package-manager/js/src/admin/index.js | 10 ++--- .../js/src/admin/utils/errorHandler.ts | 4 +- extensions/package-manager/less/admin.less | 2 +- extensions/package-manager/locale/en.yml | 2 +- .../Controller/CheckForUpdatesController.php | 9 +++-- .../Api/Controller/GlobalUpdateController.php | 9 +++-- .../src/Api/Controller/ListTaskController.php | 13 ++++-- .../Api/Controller/MajorUpdateController.php | 9 +++-- .../MinorFlarumUpdateController.php | 9 +++-- .../Controller/RemoveExtensionController.php | 13 ++++-- .../Controller/RequireExtensionController.php | 15 +++++-- .../Controller/UpdateExtensionController.php | 9 +++-- .../Api/Serializer/ExtensionSerializer.php | 9 ++++- .../src/Command/CheckForUpdates.php | 7 +++- .../src/Command/CheckForUpdatesHandler.php | 13 +++--- .../src/Command/GlobalUpdate.php | 7 +++- .../src/Command/GlobalUpdateHandler.php | 13 +++--- .../src/Command/MajorUpdate.php | 9 ++++- .../src/Command/MajorUpdateHandler.php | 17 +++++--- .../src/Command/MinorFlarumUpdate.php | 7 +++- .../src/Command/MinorFlarumUpdateHandler.php | 15 ++++--- .../src/Command/RemoveExtension.php | 7 +++- .../src/Command/RemoveExtensionHandler.php | 17 ++++---- .../src/Command/RequireExtension.php | 7 +++- .../src/Command/RequireExtensionHandler.php | 19 +++++---- .../src/Command/UpdateExtension.php | 7 +++- .../src/Command/UpdateExtensionHandler.php | 19 +++++---- .../src/Event/FlarumUpdated.php | 9 ++++- .../ComposerCommandFailedException.php | 7 +++- .../ComposerCommandFailedExceptionHandler.php | 7 +++- .../ComposerRequireFailedException.php | 7 +++- .../ComposerUpdateFailedException.php | 7 +++- .../ExtensionAlreadyInstalledException.php | 7 +++- .../ExtensionNotInstalledException.php | 7 +++- .../src/Extension/Event/Installed.php | 7 +++- .../src/Extension/Event/Removed.php | 7 +++- .../src/Extension/Event/Updated.php | 7 +++- .../src/Extension/ExtensionUtils.php | 7 +++- .../package-manager/src/LastUpdateCheck.php | 9 +++-- .../src/Listener/PostUpdateListener.php | 9 +++-- .../package-manager/src/OutputLogger.php | 9 ++++- .../src/PackageManagerServiceProvider.php | 16 +++++--- .../src/RequirePackageValidator.php | 9 ++++- .../src/UpdateExtensionValidator.php | 9 ++++- 53 files changed, 363 insertions(+), 171 deletions(-) diff --git a/extensions/package-manager/.gitignore b/extensions/package-manager/.gitignore index 5aaf9f39a..cb0813cde 100755 --- a/extensions/package-manager/.gitignore +++ b/extensions/package-manager/.gitignore @@ -1,3 +1,5 @@ js/node_modules vendor/ composer.lock +tests/tmp/ +.phpunit.result.cache diff --git a/extensions/package-manager/README.md b/extensions/package-manager/README.md index bb2076933..036b90a83 100755 --- a/extensions/package-manager/README.md +++ b/extensions/package-manager/README.md @@ -2,4 +2,4 @@ *An Experiment.* -Read: https://github.com/SychO9/flarum-package-manager/wiki +Read: https://github.com/flarum/package-manager/wiki diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json index e22fb1f51..d747d9be9 100755 --- a/extensions/package-manager/composer.json +++ b/extensions/package-manager/composer.json @@ -1,5 +1,5 @@ { - "name": "sycho/flarum-package-manager", + "name": "flarum/package-manager", "description": "A Flarum Package Manager.", "keywords": [ "extensions", "composer", "packages", "manager", "updater" @@ -8,19 +8,22 @@ "license": "MIT", "authors": [ { - "name": "Sami Mazouz", - "email": "sami.mazouz@flarum.org", - "homepage": "https://sycho9.github.io" + "name": "Flarum", + "email": "info@flarum.org", + "homepage": "https://flarum.org/team" } ], "support": { - "issues": "https://github.com/SychO9/flarum-package-manager/issues", - "source": "https://github.com/SychO9/flarum-package-manager" + "issues": "https://github.com/flarum/package-manager/issues", + "source": "https://github.com/flarum/package-manager" }, "require": { "flarum/core": "^1.0.0", "composer/composer": "^2.0" }, + "require-dev": { + "flarum/testing": "^1.0.0" + }, "extra": { "flarum-extension": { "title": "Package Manager", @@ -33,7 +36,30 @@ }, "autoload": { "psr-4": { - "SychO\\PackageManager\\": "src/" + "Flarum\\PackageManager\\": "src/" } + }, + "autoload-dev": { + "psr-4": { + "Flarum\\PackageManager\\Tests\\": "tests/" + } + }, + "scripts": { + "test": [ + "@test:unit", + "@test:integration" + ], + "test:unit": "phpunit -c tests/phpunit.unit.xml", + "test:integration": "phpunit -c tests/phpunit.integration.xml", + "test:setup": [ + "@php tests/integration/setup.php", + "cd $FLARUM_TEST_TMP_DIR_LOCAL && composer install" + ] + }, + "scripts-descriptions": { + "test": "Runs all tests.", + "test:unit": "Runs all unit tests.", + "test:integration": "Runs all integration tests.", + "test:setup": "Sets up a database for use with integration tests. Execute this only once." } } diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index d327df409..59bbad1a1 100755 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -1,20 +1,23 @@ extends Modal if (this.attrs.error.guessed_cause) { this.alertAttrs = { type: 'error', - content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`), + content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`), }; } } @@ -25,14 +25,14 @@ export default class ComposerFailureModal extends Modal } title() { - return app.translator.trans('sycho-package-manager.admin.failure_modal.title'); + return app.translator.trans('flarum-package-manager.admin.failure_modal.title'); } content() { return (
- {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')} + {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')}
{this.attrs.error.output}
diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx index 71840c0e4..08fd69162 100755 --- a/extensions/package-manager/js/src/admin/components/Installer.tsx +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -20,16 +20,16 @@ export default class Installer extends Component { view(): Mithril.Children { return (
- +

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

@@ -59,7 +59,7 @@ export default class Installer extends Component { const extensionId = response.id; app.alerts.show( { type: 'success' }, - app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId }) + app.translator.trans('flarum-package-manager.admin.extensions.successful_install', { extension: extensionId }) ); window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`; window.location.reload(); diff --git a/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx index 873ea6c00..7bd2f253d 100644 --- a/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx +++ b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx @@ -17,17 +17,17 @@ export default class MajorUpdater): Mithril.Children { return (
- flarum logo - -

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

+ flarum logo + +

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

- +
@@ -48,7 +48,7 @@ export default class MajorUpdater { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful')); + app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful')); window.location.reload(); }) .finally(() => { diff --git a/extensions/package-manager/js/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index 4adf8dc25..d7676e0f0 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -44,10 +44,10 @@ export default class Updater extends Component { if (coreUpdate) { core = { - title: app.translator.trans('sycho-package-manager.admin.updater.flarum'), + title: app.translator.trans('flarum-package-manager.admin.updater.flarum'), version: app.data.settings.version, icon: { - backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`, + backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`, }, newPackageUpdate: coreUpdate, }; @@ -55,12 +55,12 @@ export default class Updater extends Component { return [
- -

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

+ +

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

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

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

@@ -73,7 +73,7 @@ export default class Updater extends Component { loading={this.isLoading === 'check'} disabled={this.isLoading !== null && this.isLoading !== 'check'} > - {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')} + {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}
{this.isLoading !== null ? ( @@ -130,12 +130,12 @@ export default class Updater extends Component {
- +
@@ -195,7 +195,7 @@ export default class Updater extends Component { errorHandler, }) .then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful')); + app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful')); window.location.reload(); }) .finally(() => { @@ -217,7 +217,7 @@ export default class Updater extends Component { .then(() => { app.alerts.show( { type: 'success' }, - app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }) + app.translator.trans('flarum-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title }) ); window.location.reload(); }) @@ -238,7 +238,7 @@ export default class Updater extends Component { errorHandler, }) .then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful')); + app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.updater.global_update_successful')); window.location.reload(); }) .finally(() => { diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.js index d1dec656e..32b7f3500 100755 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.js @@ -9,15 +9,15 @@ import Updater from './components/Updater'; import isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled'; import MajorUpdater from './components/MajorUpdater'; -app.initializers.add('sycho-package-manager', (app) => { +app.initializers.add('flarum-package-manager', (app) => { app.extensionData - .for('sycho-package-manager') + .for('flarum-package-manager') .registerSetting(() => { if (!app.data.isRequiredDirectoriesWritable) { return (
- {app.translator.trans('sycho-package-manager.admin.file_permissions')} + {app.translator.trans('flarum-package-manager.admin.file_permissions')}
); @@ -35,7 +35,7 @@ app.initializers.add('sycho-package-manager', (app) => { }); extend(ExtensionPage.prototype, 'topItems', function (items) { - if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) { + if (this.extension.id === 'flarum-package-manager' || isExtensionEnabled(this.extension.id)) { return; } @@ -53,7 +53,7 @@ app.initializers.add('sycho-package-manager', (app) => { method: 'DELETE', }) .then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove')); + app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.extensions.successful_remove')); window.location = app.forum.attribute('adminUrl'); }) .finally(() => { diff --git a/extensions/package-manager/js/src/admin/utils/errorHandler.ts b/extensions/package-manager/js/src/admin/utils/errorHandler.ts index 679fa9e8d..bf216d187 100755 --- a/extensions/package-manager/js/src/admin/utils/errorHandler.ts +++ b/extensions/package-manager/js/src/admin/utils/errorHandler.ts @@ -14,12 +14,12 @@ export default function (e: any) { break; case 'extension_already_installed': - app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed')); + app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed')); app.modal.close(); break; case 'extension_not_installed': - app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed')); + app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed')); app.modal.close(); } } diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index 047c88435..2f4fc32af 100755 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -9,7 +9,7 @@ white-space: break-spaces; } -.sycho-package-manager-Page .ExtensionPage-settings .Form-group:last-child { +.flarum-package-manager-Page .ExtensionPage-settings .Form-group:last-child { display: none; } diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 4eda79983..195082c1e 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -1,4 +1,4 @@ -sycho-package-manager: +flarum-package-manager: admin: exceptions: extension_already_installed: Extension is already installed. diff --git a/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php b/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php index c71dc9c15..3f0333b85 100755 --- a/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php +++ b/extensions/package-manager/src/Api/Controller/CheckForUpdatesController.php @@ -1,10 +1,13 @@ setAutoExit(false); + /** @var Paths $paths */ $paths = $container->make(Paths::class); putenv("COMPOSER_HOME={$paths->storage}/.composer"); putenv("COMPOSER={$paths->base}/composer.json"); - Config::$defaultConfig['vendor-dir'] = $paths->base.'/vendor'; + Config::$defaultConfig['vendor-dir'] = $paths->vendor; // When running simple require, update and remove commands on packages, // composer 2 doesn't really need this much unless the extensions are very loaded dependency wise, diff --git a/extensions/package-manager/src/RequirePackageValidator.php b/extensions/package-manager/src/RequirePackageValidator.php index 62762c4bb..ec5599d41 100755 --- a/extensions/package-manager/src/RequirePackageValidator.php +++ b/extensions/package-manager/src/RequirePackageValidator.php @@ -1,6 +1,13 @@ Date: Wed, 3 Nov 2021 08:39:59 +0100 Subject: [PATCH 23/51] fix: use yarn in CI workflows (#10) --- .../package-manager/.github/workflows/js.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/extensions/package-manager/.github/workflows/js.yml b/extensions/package-manager/.github/workflows/js.yml index 430886795..84e1aa42c 100755 --- a/extensions/package-manager/.github/workflows/js.yml +++ b/extensions/package-manager/.github/workflows/js.yml @@ -18,15 +18,15 @@ jobs: uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - cache: "npm" - cache-dependency-path: js/package-lock.json + cache: "yarn" + cache-dependency-path: js/yarn.lock - name: Install JS dependencies - run: npm ci + run: yarn install --frozen-lockfile working-directory: ./js - name: Check JS formatting - run: npm run format-check + run: yarn run format-check working-directory: ./js build-prod: @@ -46,8 +46,8 @@ jobs: uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - cache: "npm" - cache-dependency-path: js/package-lock.json + cache: "yarn" + cache-dependency-path: js/yarn.lock # Our action will install npm, cd into `./js`, run `npm run build` and # `npm run build-typings`, then commit and upload any changes @@ -76,8 +76,8 @@ jobs: uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - cache: "npm" - cache-dependency-path: js/package-lock.json + cache: "yarn" + cache-dependency-path: js/yarn.lock # Our action will install npm, cd into `./js`, run `npm run build` and # `npm run build-typings`, then commit and upload any changes From a9ff884231552c830122f895ad14f7d5dbbbda20 Mon Sep 17 00:00:00 2001 From: Sami Mazouz Date: Mon, 8 Nov 2021 20:22:07 +0100 Subject: [PATCH 24/51] Extension Tests (#9) --- extensions/package-manager/.gitattributes | 5 + .../.github/workflows/test.yml | 1 + extensions/package-manager/composer.json | 3 +- extensions/package-manager/js/dist/admin.js | 1001 +---------------- .../package-manager/js/dist/admin.js.map | 2 +- .../ComposerCommandFailedExceptionHandler.php | 2 +- .../package-manager/tests/fixtures/.gitkeep | 0 .../integration/RefreshComposerSetup.php | 18 + .../tests/integration/SetupComposer.php | 34 + .../tests/integration/TestCase.php | 96 ++ .../api/extensions/RemoveExtensionTest.php | 55 + .../api/extensions/RequireExtensionTest.php | 85 ++ .../api/extensions/UpdateExtensionTest.php | 55 + .../tests/integration/setup.php | 21 + .../tests/phpunit.integration.xml | 27 + .../package-manager/tests/phpunit.unit.xml | 27 + .../package-manager/tests/unit/.gitkeep | 0 17 files changed, 429 insertions(+), 1003 deletions(-) create mode 100644 extensions/package-manager/.gitattributes create mode 100644 extensions/package-manager/tests/fixtures/.gitkeep create mode 100644 extensions/package-manager/tests/integration/RefreshComposerSetup.php create mode 100644 extensions/package-manager/tests/integration/SetupComposer.php create mode 100644 extensions/package-manager/tests/integration/TestCase.php create mode 100644 extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php create mode 100644 extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php create mode 100644 extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php create mode 100644 extensions/package-manager/tests/integration/setup.php create mode 100644 extensions/package-manager/tests/phpunit.integration.xml create mode 100644 extensions/package-manager/tests/phpunit.unit.xml create mode 100644 extensions/package-manager/tests/unit/.gitkeep diff --git a/extensions/package-manager/.gitattributes b/extensions/package-manager/.gitattributes new file mode 100644 index 000000000..67d307d04 --- /dev/null +++ b/extensions/package-manager/.gitattributes @@ -0,0 +1,5 @@ +js/src export-ignore +.git* export-ignore + +js/dist/*.js -diff +tests/* diff --git a/extensions/package-manager/.github/workflows/test.yml b/extensions/package-manager/.github/workflows/test.yml index d3cfc5a82..3f30e72bb 100755 --- a/extensions/package-manager/.github/workflows/test.yml +++ b/extensions/package-manager/.github/workflows/test.yml @@ -71,6 +71,7 @@ jobs: DB_PORT: 13306 DB_PASSWORD: root DB_PREFIX: ${{ matrix.prefix }} + FLARUM_TEST_TMP_DIR_LOCAL: tests/tmp - name: Run Composer tests run: composer test diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json index d747d9be9..fc260867d 100755 --- a/extensions/package-manager/composer.json +++ b/extensions/package-manager/composer.json @@ -22,7 +22,8 @@ "composer/composer": "^2.0" }, "require-dev": { - "flarum/testing": "^1.0.0" + "flarum/testing": "^1.0.0", + "flarum/tags": "*" }, "extra": { "flarum-extension": { diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index f17a14182..d0f139ff4 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -1,1001 +1,2 @@ -module.exports = -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./admin.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./admin.js": -/*!******************!*\ - !*** ./admin.js ***! - \******************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _src_admin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/admin */ "./src/admin/index.js"); -/* empty/unused harmony star reexport */ - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": -/*!******************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.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 _inheritsLoose; }); -/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js"); - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - Object(_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__["default"])(subClass, superClass); -} - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.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 _setPrototypeOf; }); -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); -} - -/***/ }), - -/***/ "./src/admin/components/ComposerFailureModal.tsx": -/*!*******************************************************!*\ - !*** ./src/admin/components/ComposerFailureModal.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 ComposerFailureModal; }); -/* 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__); - - - - -var ComposerFailureModal = /*#__PURE__*/function (_Modal) { - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(ComposerFailureModal, _Modal); - - function ComposerFailureModal() { - return _Modal.apply(this, arguments) || this; - } - - var _proto = ComposerFailureModal.prototype; - - _proto.oninit = function oninit(vnode) { - _Modal.prototype.oninit.call(this, vnode); - - if (this.attrs.error.guessed_cause) { - this.alertAttrs = { - type: 'error', - content: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans("sycho-package-manager.admin.failure_modal.guessed_cause." + this.attrs.error.guessed_cause) - }; - } - }; - - _proto.className = function className() { - return 'Modal--large ComposerFailureModal'; - }; - - _proto.title = function title() { - return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.failure_modal.title'); - }; - - _proto.content = function content() { - return m("div", { - className: "Modal-body" - }, m("details", null, m("summary", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')), m("pre", { - className: "ComposerFailureModal-output" - }, this.attrs.error.output))); - }; - - return ComposerFailureModal; -}(flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2___default.a); - - - -/***/ }), - -/***/ "./src/admin/components/Installer.tsx": -/*!********************************************!*\ - !*** ./src/admin/components/Installer.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 Installer; }); -/* 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_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); -/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/utils/Stream */ "flarum/common/utils/Stream"); -/* harmony import */ var flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4__); -/* 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"); - - - - - - - - -var Installer = /*#__PURE__*/function (_Component) { - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(Installer, _Component); - - function Installer() { - var _this; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _this = _Component.call.apply(_Component, [this].concat(args)) || this; - _this.packageName = void 0; - _this.isLoading = false; - return _this; - } - - var _proto = Installer.prototype; - - _proto.oninit = function oninit(vnode) { - _Component.prototype.oninit.call(this, vnode); - - this.packageName = flarum_common_utils_Stream__WEBPACK_IMPORTED_MODULE_4___default()(''); - }; - - _proto.view = function view() { - return m("div", { - className: "Form-group" - }, m("label", { - htmlFor: "install-extension" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.install')), m("p", { - className: "helpText" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.install_help', { - extiverse: m("a", { - href: "https://extiverse.com" - }, "extiverse.com") - })), m("div", { - className: "FormControl-container" - }, m("input", { - className: "FormControl", - id: "install-extension", - placeholder: "vendor/package-name", - bidi: this.packageName - }), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { - className: "Button", - icon: "fas fa-download", - onclick: this.onsubmit.bind(this), - loading: this.isLoading - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.proceed')))); - }; - - _proto.data = function data() { - return { - "package": this.packageName() - }; - }; - - _proto.onsubmit = function onsubmit() { - var _this2 = this; - - this.isLoading = true; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); - 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/extensions", - body: { - data: this.data() - }, - errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_6__["default"] - }).then(function (response) { - var extensionId = response.id; - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ - type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.successful_install', { - extension: extensionId - })); - window.location.href = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('adminUrl') + "#/extension/" + extensionId; - window.location.reload(); - })["finally"](function () { - _this2.isLoading = false; - m.redraw(); - }); - }; - - return Installer; -}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); - - - -/***/ }), - -/***/ "./src/admin/components/MajorUpdater.tsx": -/*!***********************************************!*\ - !*** ./src/admin/components/MajorUpdater.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 MajorUpdater; }); -/* 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_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button"); -/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__); -/* 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"); - - - - - - - - -var MajorUpdater = /*#__PURE__*/function (_Component) { - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(MajorUpdater, _Component); - - function MajorUpdater() { - var _this; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _this = _Component.call.apply(_Component, [this].concat(args)) || this; - _this.isLoading = null; - return _this; - } - - var _proto = MajorUpdater.prototype; - - _proto.view = function view(vnode) { - return m("div", { - className: "Form-group PackageManager-majorUpdate" - }, m("img", { - alt: "flarum logo", - src: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('baseUrl') + '/assets/extensions/sycho-package-manager/flarum.svg' - }), m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.title', { - version: this.attrs.coreUpdate['latest-major'] - })), m("p", { - className: "helpText" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.description')), m("div", { - className: "PackageManager-updaterControls" - }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4___default.a, { - text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run_help') - }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { - className: "Button", - icon: "fas fa-vial", - onclick: this.update.bind(this, true) - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run'))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { - className: "Button", - icon: "fas fa-play", - onclick: this.update.bind(this, false) - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.update')))); - }; - - _proto.update = function update(dryRun) { - var _this2 = this; - - this.isLoading = "update-" + (dryRun ? 'dry-run' : 'run'); - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); - 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/major-update", - body: { - data: { - dryRun: dryRun - } - }, - errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_6__["default"] - }).then(function () { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ - type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.update_successful')); - window.location.reload(); - })["finally"](function () { - _this2.isLoading = null; - m.redraw(); - }); - }; - - return MajorUpdater; -}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); - - - -/***/ }), - -/***/ "./src/admin/components/Updater.tsx": -/*!******************************************!*\ - !*** ./src/admin/components/Updater.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 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 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"); - - - - - - - - - - - - - -var Updater = /*#__PURE__*/function (_Component) { - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(Updater, _Component); - - function Updater() { - var _this; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _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 || {}; - return _this; - } - - var _proto = Updater.prototype; - - _proto.oninit = function oninit(vnode) { - _Component.prototype.oninit.call(this, vnode); - }; - - _proto.view = function view() { - var _this$lastUpdateCheck, - _this2 = this; - - var extensions = this.getExtensionUpdates(); - var coreUpdate = this.getCoreUpdate(); - var core = null; - - if (coreUpdate) { - core = { - title: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.flarum'), - version: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.settings.version, - icon: { - backgroundImage: "url(" + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('baseUrl') + "/assets/extensions/sycho-package-manager/flarum.svg" - }, - newPackageUpdate: coreUpdate - }; - } - - return [m("div", { - className: "Form-group" - }, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_title')), m("p", { - className: "helpText" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_help')), Object.keys(this.lastUpdateCheck).length ? m("p", { - className: "PackageManager-lastUpdatedAt" - }, m("span", { - className: "PackageManager-lastUpdatedAt-label" - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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", { - className: "PackageManager-updaterControls" - }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { - className: "Button", - icon: "fas fa-sync-alt", - 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('sycho-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('sycho-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", { - 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 - }) : 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.title || extension.extra['flarum-extension'].title), m("div", { - className: "PackageManager-extension-version" - }, m("span", { - className: "PackageManager-extension-version-current" - }, this.version(extension.version)), extension.newPackageUpdate['latest-minor'] ? m("span", { - className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--minor" - }, this.version(extension.newPackageUpdate['latest-minor'])) : null, extension.newPackageUpdate['latest-major'] && !isCore ? m("span", { - className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--major" - }, this.version(extension.newPackageUpdate['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('sycho-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('sycho-package-manager.admin.extensions.update') - })))); - }; - - _proto.version = function version(v) { - return 'v' + v.replace('v', ''); - }; - - _proto.getExtensionUpdates = function getExtensionUpdates() { - var _this$lastUpdateCheck2, _this$lastUpdateCheck3, _this$lastUpdateCheck4; - - (_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 safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); - - if (extension && safeToUpdate) { - extension.newPackageUpdate = composerPackage; - } - - return extension && safeToUpdate; - }); - return Object.values(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions).filter(function (extension) { - return extension.newPackageUpdate; - }); - }; - - _proto.getCoreUpdate = function getCoreUpdate() { - var _this$lastUpdateCheck5, _this$lastUpdateCheck6, _this$lastUpdateCheck7; - - return (_this$lastUpdateCheck5 = this.lastUpdateCheck) == null ? void 0 : (_this$lastUpdateCheck6 = _this$lastUpdateCheck5.updates) == null ? void 0 : (_this$lastUpdateCheck7 = _this$lastUpdateCheck6.installed) == null ? void 0 : _this$lastUpdateCheck7.filter(function (composerPackage) { - return composerPackage.name === 'flarum/core'; - }).pop(); - }; - - _proto.checkForUpdates = function checkForUpdates() { - var _this3 = this; - - this.isLoading = 'check'; - 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/check-for-updates", - errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"] - }).then(function (response) { - _this3.lastUpdateCheck = response; - })["finally"](function () { - _this3.isLoading = null; - m.redraw(); - }); - }; - - _proto.updateCoreMinor = function updateCoreMinor() { - var _this4 = this; - - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ - 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"] - }).then(function () { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ - type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.update_successful')); - window.location.reload(); - })["finally"](function () { - _this4.isLoading = null; - m.redraw(); - }); - }; - - _proto.updateExtension = function updateExtension(extension) { - var _this5 = this; - - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ - 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"] - }).then(function () { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ - type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.successful_update', { - extension: extension.extra['flarum-extension'].title - })); - window.location.reload(); - })["finally"](function () { - _this5.isLoading = null; - m.redraw(); - }); - }; - - _proto.updateGlobally = function updateGlobally() { - var _this6 = this; - - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ - 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"] - }).then(function () { - flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ - type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.global_update_successful')); - window.location.reload(); - })["finally"](function () { - _this6.isLoading = null; - m.redraw(); - }); - }; - - return Updater; -}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); - - - -/***/ }), - -/***/ "./src/admin/index.js": -/*!****************************!*\ - !*** ./src/admin/index.js ***! - \****************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/common/extend */ "flarum/common/extend"); -/* harmony import */ var flarum_common_extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__); -/* 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_Alert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/Alert */ "flarum/common/components/Alert"); -/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/admin/components/ExtensionPage */ "flarum/admin/components/ExtensionPage"); -/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_ExtensionPage__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_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 _components_Installer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); -/* harmony import */ var _components_Updater__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Updater */ "./src/admin/components/Updater.tsx"); -/* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/admin/utils/isExtensionEnabled */ "flarum/admin/utils/isExtensionEnabled"); -/* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var _components_MajorUpdater__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/MajorUpdater */ "./src/admin/components/MajorUpdater.tsx"); - - - - - - - - - - -flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho-package-manager', function (app) { - app.extensionData["for"]('sycho-package-manager').registerSetting(function () { - if (!app.data.isRequiredDirectoriesWritable) { - return m("div", { - className: "Form-group" - }, m(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2___default.a, { - type: "warning", - dismissible: false - }, app.translator.trans('sycho-package-manager.admin.file_permissions'))); - } - }).registerSetting(function () { - if (app.data.isRequiredDirectoriesWritable) { - return m(_components_Installer__WEBPACK_IMPORTED_MODULE_6__["default"], null); - } - }).registerSetting(function () { - if (app.data.isRequiredDirectoriesWritable) { - return m(_components_Updater__WEBPACK_IMPORTED_MODULE_7__["default"], null); - } - }); - Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default.a.prototype, 'topItems', function (items) { - var _this = this; - - if (this.extension.id === 'sycho-package-manager' || flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8___default()(this.extension.id)) { - return; - } - - items.add('remove', m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { - className: "Button Button--danger", - icon: "fas fa-times", - onclick: function onclick() { - app.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); - app.request({ - url: app.forum.attribute('apiUrl') + "/package-manager/extensions/" + _this.extension.id, - method: 'DELETE' - }).then(function () { - app.alerts.show({ - type: 'success' - }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove')); - window.location = app.forum.attribute('adminUrl'); - })["finally"](function () { - app.modal.close(); - }); - } - }, "Remove")); - }); -}); - -/***/ }), - -/***/ "./src/admin/utils/errorHandler.ts": -/*!*****************************************!*\ - !*** ./src/admin/utils/errorHandler.ts ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); -/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/ComposerFailureModal */ "./src/admin/components/ComposerFailureModal.tsx"); - - -/* harmony default export */ __webpack_exports__["default"] = (function (e) { - var error = e.response.errors[0]; - - if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) { - throw e; - } - - switch (error.code) { - case 'composer_command_failure': - flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.show(_components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__["default"], { - error: error - }); - break; - - case 'extension_already_installed': - flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({ - type: 'error' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed')); - flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); - break; - - case 'extension_not_installed': - flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({ - type: 'error' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed')); - flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); - } -}); - -/***/ }), - -/***/ "flarum/admin/app": -/*!**************************************************!*\ - !*** external "flarum.core.compat['admin/app']" ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['admin/app']; - -/***/ }), - -/***/ "flarum/admin/components/ExtensionPage": -/*!***********************************************************************!*\ - !*** external "flarum.core.compat['admin/components/ExtensionPage']" ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['admin/components/ExtensionPage']; - -/***/ }), - -/***/ "flarum/admin/components/LoadingModal": -/*!**********************************************************************!*\ - !*** external "flarum.core.compat['admin/components/LoadingModal']" ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['admin/components/LoadingModal']; - -/***/ }), - -/***/ "flarum/admin/utils/isExtensionEnabled": -/*!***********************************************************************!*\ - !*** external "flarum.core.compat['admin/utils/isExtensionEnabled']" ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['admin/utils/isExtensionEnabled']; - -/***/ }), - -/***/ "flarum/common/Component": -/*!*********************************************************!*\ - !*** external "flarum.core.compat['common/Component']" ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/Component']; - -/***/ }), - -/***/ "flarum/common/components/Alert": -/*!****************************************************************!*\ - !*** external "flarum.core.compat['common/components/Alert']" ***! - \****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/components/Alert']; - -/***/ }), - -/***/ "flarum/common/components/Button": -/*!*****************************************************************!*\ - !*** external "flarum.core.compat['common/components/Button']" ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/components/Button']; - -/***/ }), - -/***/ "flarum/common/components/LoadingIndicator": -/*!***************************************************************************!*\ - !*** external "flarum.core.compat['common/components/LoadingIndicator']" ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -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']" ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/components/Tooltip']; - -/***/ }), - -/***/ "flarum/common/extend": -/*!******************************************************!*\ - !*** external "flarum.core.compat['common/extend']" ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/extend']; - -/***/ }), - -/***/ "flarum/common/helpers/humanTime": -/*!*****************************************************************!*\ - !*** external "flarum.core.compat['common/helpers/humanTime']" ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/helpers/humanTime']; - -/***/ }), - -/***/ "flarum/common/helpers/icon": -/*!************************************************************!*\ - !*** external "flarum.core.compat['common/helpers/icon']" ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/helpers/icon']; - -/***/ }), - -/***/ "flarum/common/utils/Stream": -/*!************************************************************!*\ - !*** external "flarum.core.compat['common/utils/Stream']" ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/utils/Stream']; - -/***/ }), - -/***/ "flarum/common/utils/classList": -/*!***************************************************************!*\ - !*** external "flarum.core.compat['common/utils/classList']" ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = flarum.core.compat['common/utils/classList']; - -/***/ }) - -/******/ }); +module.exports=function(a){var e={};function t(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return a[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}return t.m=a,t.c=e,t.d=function(a,e,n){t.o(a,e)||Object.defineProperty(a,e,{enumerable:!0,get:n})},t.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},t.t=function(a,e){if(1&e&&(a=t(a)),8&e)return a;if(4&e&&"object"==typeof a&&a&&a.__esModule)return a;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:a}),2&e&&"string"!=typeof a)for(var r in a)t.d(n,r,function(e){return a[e]}.bind(null,r));return n},t.n=function(a){var e=a&&a.__esModule?function(){return a.default}:function(){return a};return t.d(e,"a",e),e},t.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},t.p="",t(t.s=15)}([function(a,e){a.exports=flarum.core.compat["admin/app"]},function(a,e){a.exports=flarum.core.compat["common/components/Button"]},function(a,e){a.exports=flarum.core.compat["admin/components/LoadingModal"]},function(a,e){a.exports=flarum.core.compat["common/Component"]},function(a,e){a.exports=flarum.core.compat["common/components/Tooltip"]},function(a,e){a.exports=flarum.core.compat["common/extend"]},function(a,e){a.exports=flarum.core.compat["common/components/Alert"]},function(a,e){a.exports=flarum.core.compat["admin/components/ExtensionPage"]},function(a,e){a.exports=flarum.core.compat["common/utils/Stream"]},function(a,e){a.exports=flarum.core.compat["common/components/Modal"]},function(a,e){a.exports=flarum.core.compat["common/helpers/icon"]},function(a,e){a.exports=flarum.core.compat["common/helpers/humanTime"]},function(a,e){a.exports=flarum.core.compat["common/utils/classList"]},function(a,e){a.exports=flarum.core.compat["common/components/LoadingIndicator"]},function(a,e){a.exports=flarum.core.compat["admin/utils/isExtensionEnabled"]},function(a,e,t){"use strict";t.r(e);var n=t(5),r=t(0),o=t.n(r),s=t(6),i=t.n(s),l=t(7),c=t.n(l),u=t(1),d=t.n(u),p=t(2),f=t.n(p);function g(a,e){return(g=Object.setPrototypeOf||function(a,e){return a.__proto__=e,a})(a,e)}function h(a,e){a.prototype=Object.create(e.prototype),a.prototype.constructor=a,g(a,e)}var k=t(3),x=t.n(k),v=t(8),b=t.n(v),y=t(9),_=function(a){function e(){return a.apply(this,arguments)||this}h(e,a);var t=e.prototype;return t.oninit=function(e){a.prototype.oninit.call(this,e),this.attrs.error.guessed_cause&&(this.alertAttrs={type:"error",content:o.a.translator.trans("flarum-package-manager.admin.failure_modal.guessed_cause."+this.attrs.error.guessed_cause)})},t.className=function(){return"Modal--large ComposerFailureModal"},t.title=function(){return o.a.translator.trans("flarum-package-manager.admin.failure_modal.title")},t.content=function(){return m("div",{className:"Modal-body"},m("details",null,m("summary",null,o.a.translator.trans("flarum-package-manager.admin.failure_modal.show_composer_output")),m("pre",{className:"ComposerFailureModal-output"},this.attrs.error.output)))},e}(t.n(y).a),w=function(a){var e=a.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(e.code))throw a;switch(e.code){case"composer_command_failure":o.a.modal.show(_,{error:e});break;case"extension_already_installed":o.a.alerts.show({type:"error"},o.a.translator.trans("flarum-package-manager.admin.exceptions.extension_already_installed")),o.a.modal.close();break;case"extension_not_installed":o.a.alerts.show({type:"error"},o.a.translator.trans("flarum-package-manager.admin.exceptions.extension_not_installed")),o.a.modal.close()}},P=function(a){function e(){for(var e,t=arguments.length,n=new Array(t),r=0;r extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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('sycho-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('sycho-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('sycho-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('sycho-package-manager.admin.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 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';\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\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return [\n
\n \n

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

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

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

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-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: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\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 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('sycho-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\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('sycho-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('sycho-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';\nimport MajorUpdater from './components/MajorUpdater';\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n \n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-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('sycho-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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-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('sycho-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 +{"version":3,"sources":["webpack://@flarum/package-manager/webpack/bootstrap","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/Component']\"","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/components/Alert']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","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.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","constructor","ComposerFailureModal","oninit","vnode","this","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","e","response","errors","includes","code","modal","show","alerts","close","Installer","packageName","isLoading","Stream","view","htmlFor","extiverse","href","id","placeholder","bidi","icon","onclick","onsubmit","loading","data","package","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","extensionId","extension","window","location","reload","redraw","Component","MajorUpdater","alt","src","version","coreUpdate","text","update","dryRun","Updater","lastUpdateCheck","extensions","getExtensionUpdates","getCoreUpdate","settings","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","disabled","updateGlobally","extensionItem","map","isCore","classList","style","extra","updateCoreMinor","updateExtension","aria-label","v","replace","updates","installed","filter","composerPackage","safeToUpdate","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","dismissible","extend","ExtensionPage","items","isExtensionEnabled"],"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 = 15);\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['admin/components/LoadingModal'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/components/Alert'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['common/components/Modal'];","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/helpers/humanTime'];","module.exports = flarum.core.compat['common/utils/classList'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['admin/utils/isExtensionEnabled'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\n }\n}\n","import app from 'flarum/admin/app';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport ComposerFailureModal from './ComposerFailureModal';\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 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';\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\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('flarum-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\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: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\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 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 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';\nimport MajorUpdater from './components/MajorUpdater';\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 .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\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"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php index 3f9efa600..75e7d040e 100755 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php @@ -13,7 +13,7 @@ use Flarum\Foundation\ErrorHandling\HandledError; class ComposerCommandFailedExceptionHandler { - protected const INCOMPATIBLE_REGEX = '/ +- {PACKAGE_NAME} v[0-9.]+ requires flarum\/core/m'; + protected const INCOMPATIBLE_REGEX = '/(?:(?: +- {PACKAGE_NAME} v[0-9A-z.-]+ requires flarum\/core)|(?:Could not find a version of package {PACKAGE_NAME} matching your minim))/m'; public function handle(ComposerCommandFailedException $e): HandledError { diff --git a/extensions/package-manager/tests/fixtures/.gitkeep b/extensions/package-manager/tests/fixtures/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/extensions/package-manager/tests/integration/RefreshComposerSetup.php b/extensions/package-manager/tests/integration/RefreshComposerSetup.php new file mode 100644 index 000000000..8009f0386 --- /dev/null +++ b/extensions/package-manager/tests/integration/RefreshComposerSetup.php @@ -0,0 +1,18 @@ +tmpDir().'/composer.lock'); + + $composerSetup->run(); + + $this->composer('install'); + + parent::tearDown(); + } +} diff --git a/extensions/package-manager/tests/integration/SetupComposer.php b/extensions/package-manager/tests/integration/SetupComposer.php new file mode 100644 index 000000000..58ee1b2df --- /dev/null +++ b/extensions/package-manager/tests/integration/SetupComposer.php @@ -0,0 +1,34 @@ +tmpDir().'/composer.json'; + + file_put_contents($filePath, json_encode([ + 'require' => [ + 'flarum/core' => '1.0.0', + 'flarum/tags' => '1.0.3', + 'flarum/lang-english' => '*', + ], + 'config' => [ + 'preferred-install' => 'dist', + 'sort-packages' => true, + ], + ], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + } +} diff --git a/extensions/package-manager/tests/integration/TestCase.php b/extensions/package-manager/tests/integration/TestCase.php new file mode 100644 index 000000000..92d1efc95 --- /dev/null +++ b/extensions/package-manager/tests/integration/TestCase.php @@ -0,0 +1,96 @@ +extension('flarum-package-manager', 'flarum-tags'); + + $tmp = $this->tmpDir(); + + $this->app()->getContainer()->instance('flarum.paths', new Paths([ + 'base' => $tmp, + 'public' => "$tmp/public", + 'storage' => "$tmp/storage", + 'vendor' => "$tmp/vendor", + ])); + } + + protected function assertExtension(string $id, bool $exists) + { + $installed = json_decode(file_get_contents($this->app()->getContainer()->make(Paths::class)->vendor.'/composer/installed.json'), true); + $installedExtensions = Arr::where($installed['packages'] ?? $installed, function (array $package) { + return $package['type'] === 'flarum-extension'; + }); + $installedExtensionIds = array_map(function (string $name) { + return ExtensionUtils::nameToId($name); + }, Arr::pluck($installedExtensions, 'name')); + + if ($exists) { + $this->assertTrue(in_array($id, $installedExtensionIds), "Failed asserting that extension $id is installed"); + } else { + $this->assertFalse(in_array($id, $installedExtensionIds), "Failed asserting that extension $id is not installed"); + } + } + + protected function assertExtensionExists(string $id) + { + $this->assertExtension($id, true); + } + + protected function assertExtensionNotExists(string $id) + { + $this->assertExtension($id, false); + } + + protected function requireExtension(string $package) + { + $this->composer("require $package"); + } + + protected function removeExtension(string $package) + { + $this->composer("remove $package"); + } + + protected function composer(string $command): void + { + /** @var Application $composer */ + $composer = $this->app()->getContainer()->make(Application::class); + $output = new NullOutput(); + $composer->run(new StringInput($command), $output); + } + + protected function guessedCause(ResponseInterface $response): ?string + { + $json = json_decode($response->getBody()->getContents(), true); + + return $json['errors'] ? ($json['errors'][0]['guessed_cause'] ?? null) : null; + } +} diff --git a/extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php b/extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php new file mode 100644 index 000000000..c7a457abc --- /dev/null +++ b/extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php @@ -0,0 +1,55 @@ +assertExtensionExists('flarum-tags'); + } + + /** + * @test + */ + public function removing_an_extension_works() + { + $response = $this->send( + $this->request('DELETE', '/api/package-manager/extensions/flarum-tags', [ + 'authenticatedAs' => 1 + ]) + ); + + $this->assertEquals(204, $response->getStatusCode()); + $this->assertExtensionNotExists('flarum-tags'); + } + + /** + * @test + */ + public function removing_a_non_existant_extension_fails() + { + $response = $this->send( + $this->request('DELETE', '/api/package-manager/extensions/flarum-potato', [ + 'authenticatedAs' => 1 + ]) + ); + + $this->assertEquals(409, $response->getStatusCode()); + } +} diff --git a/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php b/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php new file mode 100644 index 000000000..3a41af0e1 --- /dev/null +++ b/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php @@ -0,0 +1,85 @@ +assertExtensionNotExists('v17development-blog'); + } + + /** + * @test + */ + public function requiring_an_existing_extension_fails() + { + $response = $this->send( + $this->request('POST', '/api/package-manager/extensions', [ + 'authenticatedAs' => 1, + 'json' => [ + 'data' => [ + 'package' => 'flarum/tags' + ] + ] + ]) + ); + + $this->assertEquals(409, $response->getStatusCode()); + } + + /** + * @test + */ + public function requiring_a_compatible_extension_works() + { + $response = $this->send( + $this->request('POST', '/api/package-manager/extensions', [ + 'authenticatedAs' => 1, + 'json' => [ + 'data' => [ + 'package' => 'v17development/flarum-blog' + ] + ] + ]) + ); + + $this->assertEquals(200, $response->getStatusCode()); + $this->assertExtensionExists('v17development-blog'); + } + + /** + * @test + */ + public function requiring_an_uncompatible_extension_fails() + { + $response = $this->send( + $this->request('POST', '/api/package-manager/extensions', [ + 'authenticatedAs' => 1, + 'json' => [ + 'data' => [ + 'package' => 'flarum/auth-github' + ] + ] + ]) + ); + + $this->assertEquals(409, $response->getStatusCode()); + $this->assertEquals('extension_incompatible_with_instance', $this->guessedCause($response)); + } +} diff --git a/extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php b/extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php new file mode 100644 index 000000000..d19f91e9d --- /dev/null +++ b/extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php @@ -0,0 +1,55 @@ +assertExtensionExists('flarum-tags'); + } + + /** + * @test + */ + public function updating_an_existing_extension_works() + { + $response = $this->send( + $this->request('PATCH', '/api/package-manager/extensions/flarum-tags', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->assertEquals(204, $response->getStatusCode()); + $this->assertExtensionExists('flarum-tags'); + } + + /** + * @test + */ + public function updating_a_non_existing_extension_fails() + { + $response = $this->send( + $this->request('PATCH', '/api/package-manager/extensions/flarum-potato', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->assertEquals(409, $response->getStatusCode()); + } +} diff --git a/extensions/package-manager/tests/integration/setup.php b/extensions/package-manager/tests/integration/setup.php new file mode 100644 index 000000000..b740c090b --- /dev/null +++ b/extensions/package-manager/tests/integration/setup.php @@ -0,0 +1,21 @@ +run(); + +$setupComposer = new SetupComposer(); + +$setupComposer->run(); diff --git a/extensions/package-manager/tests/phpunit.integration.xml b/extensions/package-manager/tests/phpunit.integration.xml new file mode 100644 index 000000000..4602db3fd --- /dev/null +++ b/extensions/package-manager/tests/phpunit.integration.xml @@ -0,0 +1,27 @@ + + + + + ../src/ + + + + + ./integration + + + + + + diff --git a/extensions/package-manager/tests/phpunit.unit.xml b/extensions/package-manager/tests/phpunit.unit.xml new file mode 100644 index 000000000..d3a4a3e3d --- /dev/null +++ b/extensions/package-manager/tests/phpunit.unit.xml @@ -0,0 +1,27 @@ + + + + + ../src/ + + + + + ./unit + + + + + + diff --git a/extensions/package-manager/tests/unit/.gitkeep b/extensions/package-manager/tests/unit/.gitkeep new file mode 100644 index 000000000..e69de29bb From c3f8a58f97e88cb5ed013d9258e0fc7ba3dd3522 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Mon, 8 Nov 2021 22:07:30 +0100 Subject: [PATCH 25/51] Only run migrations for enabled extensions --- .../src/PackageManagerServiceProvider.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 012999b54..2ab914c33 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -72,14 +72,19 @@ class PackageManagerServiceProvider extends AbstractServiceProvider $events->listen( [Updated::class], function (Updated $event) use ($container) { - $recompile = new RecompileFrontendAssets( - $container->make('flarum.assets.forum'), - $container->make(LocaleManager::class) - ); - $recompile->flush(); + /** @var ExtensionManager $extensions */ + $extensions = $container->make(ExtensionManager::class); - $container->make(ExtensionManager::class)->migrate($event->extension); - $event->extension->copyAssetsTo($container->make('filesystem')->disk('flarum-assets')); + if ($extensions->isEnabled($event->extension->getId())) { + $recompile = new RecompileFrontendAssets( + $container->make('flarum.assets.forum'), + $container->make(LocaleManager::class) + ); + $recompile->flush(); + + $extensions->migrate($event->extension); + $event->extension->copyAssetsTo($container->make('filesystem')->disk('flarum-assets')); + } } ); From 594bbe4f349221785a85ef5c4a0ad041c67993f5 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Tue, 9 Nov 2021 17:38:47 +0100 Subject: [PATCH 26/51] Use an adapter class for composer --- .../src/Command/CheckForUpdatesHandler.php | 40 ++++++---------- .../src/Command/GlobalUpdateHandler.php | 36 ++++---------- .../src/Command/MajorUpdateHandler.php | 45 +++++++----------- .../src/Command/MinorFlarumUpdateHandler.php | 37 ++++----------- .../src/Command/RemoveExtensionHandler.php | 34 ++++---------- .../src/Command/RequireExtensionHandler.php | 33 ++++--------- .../src/Command/UpdateExtensionHandler.php | 37 ++++----------- .../src/Composer/ComposerAdapter.php | 47 +++++++++++++++++++ .../src/Composer/ComposerOutput.php | 39 +++++++++++++++ .../src/PackageManagerServiceProvider.php | 7 +-- .../src/RequirePackageValidator.php | 2 +- .../tests/integration/TestCase.php | 14 ++---- 12 files changed, 172 insertions(+), 199 deletions(-) create mode 100644 extensions/package-manager/src/Composer/ComposerAdapter.php create mode 100644 extensions/package-manager/src/Composer/ComposerOutput.php diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index b2cd64c4a..e4dab09dc 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -9,17 +9,15 @@ namespace Flarum\PackageManager\Command; -use Composer\Console\Application; +use Flarum\PackageManager\Composer\ComposerAdapter; use Flarum\PackageManager\Exception\ComposerCommandFailedException; use Flarum\PackageManager\LastUpdateCheck; -use Flarum\PackageManager\OutputLogger; use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; class CheckForUpdatesHandler { /** - * @var Application + * @var ComposerAdapter */ protected $composer; @@ -28,16 +26,10 @@ class CheckForUpdatesHandler */ protected $lastUpdateCheck; - /** - * @var OutputLogger - */ - protected $logger; - - public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, OutputLogger $logger) + public function __construct(ComposerAdapter $composer, LastUpdateCheck $lastUpdateCheck) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; - $this->logger = $logger; } /** @@ -109,23 +101,19 @@ class CheckForUpdatesHandler */ protected function runComposerCommand(bool $minorOnly): string { - $output = new BufferedOutput(); - $input = new ArrayInput([ - 'command' => 'outdated', - '-D' => true, - '--minor-only' => $minorOnly, - '--format' => 'json', - ]); + $output = $this->composer->run( + new ArrayInput([ + 'command' => 'outdated', + '-D' => true, + '--minor-only' => $minorOnly, + '--format' => 'json', + ]) + ); - $exitCode = $this->composer->run($input, $output); - $output = $output->fetch(); - - $this->logger->log($input->__toString(), $output, $exitCode); - - if ($exitCode !== 0) { - throw new ComposerCommandFailedException('', $output); + if ($output->getExitCode() !== 0) { + throw new ComposerCommandFailedException('', $output->getContents()); } - return $output; + return $output->getContents(); } } diff --git a/extensions/package-manager/src/Command/GlobalUpdateHandler.php b/extensions/package-manager/src/Command/GlobalUpdateHandler.php index 5a67f94c7..d5032bf9a 100644 --- a/extensions/package-manager/src/Command/GlobalUpdateHandler.php +++ b/extensions/package-manager/src/Command/GlobalUpdateHandler.php @@ -9,19 +9,17 @@ namespace Flarum\PackageManager\Command; -use Composer\Console\Application; use Flarum\Bus\Dispatcher as FlarumDispatcher; +use Flarum\PackageManager\Composer\ComposerAdapter; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; -use Flarum\PackageManager\OutputLogger; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; +use Symfony\Component\Console\Input\StringInput; class GlobalUpdateHandler { /** - * @var Application + * @var ComposerAdapter */ protected $composer; @@ -35,17 +33,11 @@ class GlobalUpdateHandler */ protected $commandDispatcher; - /** - * @var OutputLogger - */ - protected $logger; - - public function __construct(Application $composer, Dispatcher $events, FlarumDispatcher $commandDispatcher, OutputLogger $logger) + public function __construct(ComposerAdapter $composer, Dispatcher $events, FlarumDispatcher $commandDispatcher) { $this->composer = $composer; $this->events = $events; $this->commandDispatcher = $commandDispatcher; - $this->logger = $logger; } /** @@ -55,22 +47,12 @@ class GlobalUpdateHandler { $command->actor->assertAdmin(); - $output = new BufferedOutput(); - $input = new ArrayInput([ - 'command' => 'update', - '--prefer-dist' => true, - '--no-dev' => true, - '-a' => true, - '--with-all-dependencies' => true, - ]); + $output = $this->composer->run( + new StringInput("update --prefer-dist --no-dev -a --with-all-dependencies") + ); - $exitCode = $this->composer->run($input, $output); - $output = $output->fetch(); - - $this->logger->log($input->__toString(), $output, $exitCode); - - if ($exitCode !== 0) { - throw new ComposerUpdateFailedException('*', $output); + if ($output->getExitCode() !== 0) { + throw new ComposerUpdateFailedException('*', $output->getContents()); } $this->commandDispatcher->dispatch( diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php index f59006776..a1dd5d89f 100644 --- a/extensions/package-manager/src/Command/MajorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -9,21 +9,19 @@ namespace Flarum\PackageManager\Command; -use Composer\Console\Application; use Flarum\Foundation\Paths; +use Flarum\PackageManager\Composer\ComposerAdapter; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Support\Arr; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\LastUpdateCheck; -use Flarum\PackageManager\OutputLogger; use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; class MajorUpdateHandler { /** - * @var Application + * @var ComposerAdapter */ protected $composer; @@ -37,11 +35,6 @@ class MajorUpdateHandler */ protected $events; - /** - * @var OutputLogger - */ - protected $logger; - /** * @var Paths */ @@ -52,12 +45,11 @@ class MajorUpdateHandler */ protected $composerJson; - public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, OutputLogger $logger, Paths $paths) + public function __construct(ComposerAdapter $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, Paths $paths) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; $this->events = $events; - $this->logger = $logger; $this->paths = $paths; } @@ -128,6 +120,7 @@ class MajorUpdateHandler protected function revertComposerJson(): void { $composerJsonPath = $this->paths->base . '/composer.json'; + // @todo use filesystem for all file_get_contents file_put_contents($composerJsonPath, $this->composerJson); } @@ -136,24 +129,20 @@ class MajorUpdateHandler */ protected function runCommand(bool $dryRun): void { - $output = new BufferedOutput(); - $input = new ArrayInput([ - 'command' => 'update', - '--prefer-dist' => true, - '--no-plugins' => true, - '--no-dev' => true, - '-a' => true, - '--with-all-dependencies' => true, - '--dry-run' => $dryRun, - ]); + $output = $this->composer->run( + new ArrayInput([ + 'command' => 'update', + '--prefer-dist' => true, + '--no-plugins' => true, + '--no-dev' => true, + '-a' => true, + '--with-all-dependencies' => true, + '--dry-run' => $dryRun, + ]) + ); - $exitCode = $this->composer->run($input, $output); - $output = $output->fetch(); - - $this->logger->log($input->__toString(), $output, $exitCode); - - if ($exitCode !== 0) { - throw new ComposerUpdateFailedException('*', $output); + if ($output->getExitCode() !== 0) { + throw new ComposerUpdateFailedException('*', $output->getContents()); } } } diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php index af3c045f4..01e5a3bb7 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php @@ -9,19 +9,17 @@ namespace Flarum\PackageManager\Command; -use Composer\Console\Application; +use Flarum\PackageManager\Composer\ComposerAdapter; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\LastUpdateCheck; -use Flarum\PackageManager\OutputLogger; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; +use Symfony\Component\Console\Input\StringInput; class MinorFlarumUpdateHandler { /** - * @var Application + * @var ComposerAdapter */ protected $composer; @@ -35,17 +33,11 @@ class MinorFlarumUpdateHandler */ protected $events; - /** - * @var OutputLogger - */ - protected $logger; - - public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, OutputLogger $logger) + public function __construct(ComposerAdapter $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; $this->events = $events; - $this->logger = $logger; } /** @@ -56,23 +48,12 @@ class MinorFlarumUpdateHandler { $command->actor->assertAdmin(); - $output = new BufferedOutput(); - $input = new ArrayInput([ - 'command' => 'update', - 'packages' => ["flarum/*"], - '--prefer-dist' => true, - '--no-dev' => true, - '-a' => true, - '--with-all-dependencies' => true, - ]); + $output = $this->composer->run( + new StringInput("update flarum/* --prefer-dist --no-dev -a --with-all-dependencies") + ); - $exitCode = $this->composer->run($input, $output); - $output = $output->fetch(); - - $this->logger->log($input->__toString(), $output, $exitCode); - - if ($exitCode !== 0) { - throw new ComposerUpdateFailedException('flarum/*', $output); + if ($output->getExitCode() !== 0) { + throw new ComposerUpdateFailedException('flarum/*', $output->getContents()); } $this->lastUpdateCheck->forget('flarum/*', true); diff --git a/extensions/package-manager/src/Command/RemoveExtensionHandler.php b/extensions/package-manager/src/Command/RemoveExtensionHandler.php index 2b0db42fa..9b3fd229c 100755 --- a/extensions/package-manager/src/Command/RemoveExtensionHandler.php +++ b/extensions/package-manager/src/Command/RemoveExtensionHandler.php @@ -9,21 +9,18 @@ namespace Flarum\PackageManager\Command; -use Composer\Console\Application; use Flarum\Extension\ExtensionManager; +use Flarum\PackageManager\Composer\ComposerAdapter; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Exception\ComposerCommandFailedException; -use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\Exception\ExtensionNotInstalledException; use Flarum\PackageManager\Extension\Event\Removed; -use Flarum\PackageManager\OutputLogger; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; +use Symfony\Component\Console\Input\StringInput; class RemoveExtensionHandler { /** - * @var Application + * @var ComposerAdapter */ protected $composer; @@ -37,17 +34,11 @@ class RemoveExtensionHandler */ protected $events; - /** - * @var OutputLogger - */ - protected $logger; - - public function __construct(Application $composer, ExtensionManager $extensions, Dispatcher $events, OutputLogger $logger) + public function __construct(ComposerAdapter $composer, ExtensionManager $extensions, Dispatcher $events) { $this->composer = $composer; $this->extensions = $extensions; $this->events = $events; - $this->logger = $logger; } /** @@ -64,19 +55,12 @@ class RemoveExtensionHandler throw new ExtensionNotInstalledException($command->extensionId); } - $output = new BufferedOutput(); - $input = new ArrayInput([ - 'command' => 'remove', - 'packages' => [$extension->name], - ]); + $output = $this->composer->run( + new StringInput("remove $extension->name") + ); - $exitCode = $this->composer->run($input, $output); - $output = $output->fetch(); - - $this->logger->log($input->__toString(), $output, $exitCode); - - if ($exitCode !== 0) { - throw new ComposerCommandFailedException($extension->name, $output); + if ($output->getExitCode() !== 0) { + throw new ComposerCommandFailedException($extension->name, $output->getContents()); } $this->events->dispatch( diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index 801a8f9ef..f900f3235 100755 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -9,22 +9,20 @@ namespace Flarum\PackageManager\Command; -use Composer\Console\Application; use Flarum\Extension\ExtensionManager; +use Flarum\PackageManager\Composer\ComposerAdapter; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Exception\ComposerRequireFailedException; use Flarum\PackageManager\Exception\ExtensionAlreadyInstalledException; use Flarum\PackageManager\Extension\Event\Installed; use Flarum\PackageManager\Extension\ExtensionUtils; -use Flarum\PackageManager\OutputLogger; use Flarum\PackageManager\RequirePackageValidator; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; +use Symfony\Component\Console\Input\StringInput; class RequireExtensionHandler { /** - * @var Application + * @var ComposerAdapter */ protected $composer; @@ -43,18 +41,12 @@ class RequireExtensionHandler */ protected $events; - /** - * @var OutputLogger - */ - protected $logger; - - public function __construct(Application $composer, ExtensionManager $extensions, RequirePackageValidator $validator, Dispatcher $events, OutputLogger $logger) + public function __construct(ComposerAdapter $composer, ExtensionManager $extensions, RequirePackageValidator $validator, Dispatcher $events) { $this->composer = $composer; $this->extensions = $extensions; $this->validator = $validator; $this->events = $events; - $this->logger = $logger; } /** @@ -74,19 +66,12 @@ class RequireExtensionHandler throw new ExtensionAlreadyInstalledException($extension); } - $output = new BufferedOutput(); - $input = new ArrayInput([ - 'command' => 'require', - 'packages' => [$command->package], - ]); + $output = $this->composer->run( + new StringInput("require $command->package") + ); - $exitCode = $this->composer->run($input, $output); - $output = $output->fetch(); - - $this->logger->log($input->__toString(), $output, $exitCode); - - if ($exitCode !== 0) { - throw new ComposerRequireFailedException($command->package, $output); + if ($output->getExitCode() !== 0) { + throw new ComposerRequireFailedException($command->package, $output->getContents()); } $this->events->dispatch( diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index 9f53d474e..c0802e404 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -9,23 +9,20 @@ namespace Flarum\PackageManager\Command; -use Composer\Console\Application; use Flarum\Extension\ExtensionManager; -use Flarum\Settings\SettingsRepositoryInterface; +use Flarum\PackageManager\Composer\ComposerAdapter; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\Exception\ExtensionNotInstalledException; use Flarum\PackageManager\Extension\Event\Updated; -use Flarum\PackageManager\OutputLogger; use Flarum\PackageManager\UpdateExtensionValidator; use Flarum\PackageManager\LastUpdateCheck; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; +use Symfony\Component\Console\Input\StringInput; class UpdateExtensionHandler { /** - * @var Application + * @var ComposerAdapter */ protected $composer; @@ -49,25 +46,18 @@ class UpdateExtensionHandler */ protected $events; - /** - * @var OutputLogger - */ - protected $logger; - public function __construct( - Application $composer, + ComposerAdapter $composer, ExtensionManager $extensions, UpdateExtensionValidator $validator, LastUpdateCheck $lastUpdateCheck, - Dispatcher $events, - OutputLogger $logger) + Dispatcher $events) { $this->composer = $composer; $this->extensions = $extensions; $this->validator = $validator; $this->lastUpdateCheck = $lastUpdateCheck; $this->events = $events; - $this->logger = $logger; } /** @@ -86,19 +76,12 @@ class UpdateExtensionHandler throw new ExtensionNotInstalledException($command->extensionId); } - $output = new BufferedOutput(); - $input = new ArrayInput([ - 'command' => 'require', - 'packages' => ["$extension->name:*"], - ]); + $output = $this->composer->run( + new StringInput("require $extension->name:*") + ); - $exitCode = $this->composer->run($input, $output); - $output = $output->fetch(); - - $this->logger->log($input->__toString(), $output, $exitCode); - - if ($exitCode !== 0) { - throw new ComposerUpdateFailedException($extension->name, $output); + if ($output->getExitCode() !== 0) { + throw new ComposerUpdateFailedException($extension->name, $output->getContents()); } $this->lastUpdateCheck->forget($extension->name); diff --git a/extensions/package-manager/src/Composer/ComposerAdapter.php b/extensions/package-manager/src/Composer/ComposerAdapter.php new file mode 100644 index 000000000..c94aaa0e1 --- /dev/null +++ b/extensions/package-manager/src/Composer/ComposerAdapter.php @@ -0,0 +1,47 @@ +application = $application; + $this->logger = $logger; + } + + public function run(InputInterface $input): ComposerOutput + { + $output = new BufferedOutput(); + + $exitCode = $this->application->run($input, $output); + + $outputContents = $output->fetch(); + + $this->logger->log($input->__toString(), $outputContents, $exitCode); + + return new ComposerOutput($exitCode, $outputContents); + } +} diff --git a/extensions/package-manager/src/Composer/ComposerOutput.php b/extensions/package-manager/src/Composer/ComposerOutput.php new file mode 100644 index 000000000..87719880a --- /dev/null +++ b/extensions/package-manager/src/Composer/ComposerOutput.php @@ -0,0 +1,39 @@ +exitCode = $exitCode; + $this->contents = $contents; + } + + public function getExitCode(): int + { + return $this->exitCode; + } + + public function getContents(): string + { + return $this->contents; + } +} diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 2ab914c33..7c65a6e05 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -16,6 +16,7 @@ use Flarum\Foundation\AbstractServiceProvider; use Flarum\Foundation\Paths; use Flarum\Frontend\RecompileFrontendAssets; use Flarum\Locale\LocaleManager; +use Flarum\PackageManager\Composer\ComposerAdapter; use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Events\Dispatcher; use Monolog\Formatter\LineFormatter; @@ -29,7 +30,7 @@ class PackageManagerServiceProvider extends AbstractServiceProvider { public function register() { - $this->container->singleton(Application::class, function (Container $container) { + $this->container->singleton(ComposerAdapter::class, function (Container $container) { // This should only ever be resolved when running composer commands, // because we modify other environment configurations. $composer = new Application(); @@ -48,10 +49,10 @@ class PackageManagerServiceProvider extends AbstractServiceProvider @ini_set('memory_limit', '1G'); @set_time_limit(5 * 60); - return $composer; + return new ComposerAdapter($composer, $container->make(OutputLogger::class)); }); - $this->container->alias(Application::class, 'flarum.composer'); + $this->container->alias(ComposerAdapter::class, 'flarum.composer'); $this->container->singleton(OutputLogger::class, function (Container $container) { $logPath = $container->make(Paths::class)->storage.'/logs/composer/output.log'; diff --git a/extensions/package-manager/src/RequirePackageValidator.php b/extensions/package-manager/src/RequirePackageValidator.php index ec5599d41..6667ce5d6 100755 --- a/extensions/package-manager/src/RequirePackageValidator.php +++ b/extensions/package-manager/src/RequirePackageValidator.php @@ -17,6 +17,6 @@ class RequirePackageValidator extends AbstractValidator * {@inheritdoc} */ protected $rules = [ - 'package' => 'required|string' + 'package' => ['required', 'string', 'regex:/^[A-z0-9-_]+\/[A-z-0-9]+(?::[A-z-0-9.->=<_]+){0,1}$/i'] ]; } diff --git a/extensions/package-manager/tests/integration/TestCase.php b/extensions/package-manager/tests/integration/TestCase.php index 92d1efc95..1adaa1de8 100644 --- a/extensions/package-manager/tests/integration/TestCase.php +++ b/extensions/package-manager/tests/integration/TestCase.php @@ -9,18 +9,13 @@ namespace Flarum\PackageManager\Tests\integration; -use Composer\Config; -use Composer\Console\Application; -use Flarum\Extension\ExtensionManager; use Flarum\Foundation\Paths; +use Flarum\PackageManager\Composer\ComposerAdapter; use Flarum\PackageManager\Extension\ExtensionUtils; use Flarum\Testing\integration\RetrievesAuthorizedUsers; -use Illuminate\Contracts\Container\Container; use Illuminate\Support\Arr; use Psr\Http\Message\ResponseInterface; -use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\StringInput; -use Symfony\Component\Console\Output\NullOutput; class TestCase extends \Flarum\Testing\integration\TestCase { @@ -81,10 +76,9 @@ class TestCase extends \Flarum\Testing\integration\TestCase protected function composer(string $command): void { - /** @var Application $composer */ - $composer = $this->app()->getContainer()->make(Application::class); - $output = new NullOutput(); - $composer->run(new StringInput($command), $output); + /** @var ComposerAdapter $composer */ + $composer = $this->app()->getContainer()->make(ComposerAdapter::class); + $composer->run(new StringInput($command)); } protected function guessedCause(ResponseInterface $response): ?string From 7f5f5687dba53c42c9bb7eaed3060f5fa7aa8419 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Tue, 9 Nov 2021 20:06:03 +0100 Subject: [PATCH 27/51] Auto append `:*` when installing an extension if not specifying a version --- .../src/Command/RequireExtensionHandler.php | 11 ++++- .../ComposerCommandFailedExceptionHandler.php | 6 ++- .../api/extensions/RequireExtensionTest.php | 40 +++++++++++++++++++ 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/extensions/package-manager/src/Command/RequireExtensionHandler.php b/extensions/package-manager/src/Command/RequireExtensionHandler.php index f900f3235..d0ed401b4 100755 --- a/extensions/package-manager/src/Command/RequireExtensionHandler.php +++ b/extensions/package-manager/src/Command/RequireExtensionHandler.php @@ -66,12 +66,19 @@ class RequireExtensionHandler throw new ExtensionAlreadyInstalledException($extension); } + $packageName = $command->package; + + // Auto append :* if not requiring a specific version. + if (strpos($packageName, ':') === false) { + $packageName .= ":*"; + } + $output = $this->composer->run( - new StringInput("require $command->package") + new StringInput("require $packageName") ); if ($output->getExitCode() !== 0) { - throw new ComposerRequireFailedException($command->package, $output->getContents()); + throw new ComposerRequireFailedException($packageName, $output->getContents()); } $this->events->dispatch( diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php index 75e7d040e..01e5ec558 100755 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php @@ -13,7 +13,7 @@ use Flarum\Foundation\ErrorHandling\HandledError; class ComposerCommandFailedExceptionHandler { - protected const INCOMPATIBLE_REGEX = '/(?:(?: +- {PACKAGE_NAME} v[0-9A-z.-]+ requires flarum\/core)|(?:Could not find a version of package {PACKAGE_NAME} matching your minim))/m'; + protected const INCOMPATIBLE_REGEX = '/(?:(?: +- {PACKAGE_NAME}(?: v[0-9A-z.-]+ requires|\[[^\[\]]+\] require) flarum\/core)|(?:Could not find a version of package {PACKAGE_NAME} matching your minim)|(?: +- Root composer.json requires {PACKAGE_NAME} [^,]+, found {PACKAGE_NAME}\[[^\[\]]+\]+ but it does not match your minimum-stability))/m'; public function handle(ComposerCommandFailedException $e): HandledError { @@ -39,8 +39,10 @@ class ComposerCommandFailedExceptionHandler protected function guessCause(ComposerCommandFailedException $e): ?string { + $rawPackageName = preg_replace('/^([A-z0-9-_\/]+)(?::.*|)$/i', '$1', $e->packageName); + if ($e instanceof ComposerRequireFailedException) { - $hasMatches = preg_match(str_replace('{PACKAGE_NAME}', preg_quote($e->packageName, '/'), self::INCOMPATIBLE_REGEX), $e->getMessage(), $matches); + $hasMatches = preg_match(str_replace('{PACKAGE_NAME}', preg_quote($rawPackageName, '/'), self::INCOMPATIBLE_REGEX), $e->getMessage(), $matches); if ($hasMatches) { return 'extension_incompatible_with_instance'; diff --git a/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php b/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php index 3a41af0e1..001e8a6eb 100644 --- a/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php +++ b/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php @@ -63,6 +63,26 @@ class RequireExtensionTest extends TestCase $this->assertExtensionExists('v17development-blog'); } + /** + * @test + */ + public function requiring_a_compatible_extension_with_specific_version_works() + { + $response = $this->send( + $this->request('POST', '/api/package-manager/extensions', [ + 'authenticatedAs' => 1, + 'json' => [ + 'data' => [ + 'package' => 'v17development/flarum-blog:0.4.0' + ] + ] + ]) + ); + + $this->assertEquals(200, $response->getStatusCode()); + $this->assertExtensionExists('v17development-blog'); + } + /** * @test */ @@ -82,4 +102,24 @@ class RequireExtensionTest extends TestCase $this->assertEquals(409, $response->getStatusCode()); $this->assertEquals('extension_incompatible_with_instance', $this->guessedCause($response)); } + + /** + * @test + */ + public function requiring_an_uncompatible_extension_with_specific_version_fails() + { + $response = $this->send( + $this->request('POST', '/api/package-manager/extensions', [ + 'authenticatedAs' => 1, + 'json' => [ + 'data' => [ + 'package' => 'flarum/auth-github:0.1.0-beta.9' + ] + ] + ]) + ); + + $this->assertEquals(409, $response->getStatusCode()); + $this->assertEquals('extension_incompatible_with_instance', $this->guessedCause($response)); + } } From 3bd2dd4813b9e0fe5d1834963e2c2f453c835036 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Tue, 9 Nov 2021 20:32:09 +0100 Subject: [PATCH 28/51] Move exception cause guessing out of handler --- .../ComposerCommandFailedException.php | 10 ++++++++++ .../ComposerCommandFailedExceptionHandler.php | 14 +------------- .../ComposerRequireFailedException.php | 17 ++++++++++++++++- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php index 452fcd03f..601ac859b 100755 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php @@ -24,4 +24,14 @@ class ComposerCommandFailedException extends Exception parent::__construct($output); } + + public function guessCause(): ?string + { + + } + + protected function getRawPackageName(): string + { + return preg_replace('/^([A-z0-9-_\/]+)(?::.*|)$/i', '$1', $this->packageName); + } } diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php index 01e5ec558..13cd5e100 100755 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php @@ -13,8 +13,6 @@ use Flarum\Foundation\ErrorHandling\HandledError; class ComposerCommandFailedExceptionHandler { - protected const INCOMPATIBLE_REGEX = '/(?:(?: +- {PACKAGE_NAME}(?: v[0-9A-z.-]+ requires|\[[^\[\]]+\] require) flarum\/core)|(?:Could not find a version of package {PACKAGE_NAME} matching your minim)|(?: +- Root composer.json requires {PACKAGE_NAME} [^,]+, found {PACKAGE_NAME}\[[^\[\]]+\]+ but it does not match your minimum-stability))/m'; - public function handle(ComposerCommandFailedException $e): HandledError { return (new HandledError( @@ -39,16 +37,6 @@ class ComposerCommandFailedExceptionHandler protected function guessCause(ComposerCommandFailedException $e): ?string { - $rawPackageName = preg_replace('/^([A-z0-9-_\/]+)(?::.*|)$/i', '$1', $e->packageName); - - if ($e instanceof ComposerRequireFailedException) { - $hasMatches = preg_match(str_replace('{PACKAGE_NAME}', preg_quote($rawPackageName, '/'), self::INCOMPATIBLE_REGEX), $e->getMessage(), $matches); - - if ($hasMatches) { - return 'extension_incompatible_with_instance'; - } - } - - return null; + return $e->guessCause(); } } diff --git a/extensions/package-manager/src/Exception/ComposerRequireFailedException.php b/extensions/package-manager/src/Exception/ComposerRequireFailedException.php index 135e4abc8..8046ee204 100755 --- a/extensions/package-manager/src/Exception/ComposerRequireFailedException.php +++ b/extensions/package-manager/src/Exception/ComposerRequireFailedException.php @@ -11,5 +11,20 @@ namespace Flarum\PackageManager\Exception; class ComposerRequireFailedException extends ComposerCommandFailedException { - // ... + protected const INCOMPATIBLE_REGEX = '/(?:(?: +- {PACKAGE_NAME}(?: v[0-9A-z.-]+ requires|\[[^\[\]]+\] require) flarum\/core)|(?:Could not find a version of package {PACKAGE_NAME} matching your minim)|(?: +- Root composer.json requires {PACKAGE_NAME} [^,]+, found {PACKAGE_NAME}\[[^\[\]]+\]+ but it does not match your minimum-stability))/m'; + + public function guessCause(): ?string + { + $hasMatches = preg_match( + str_replace('{PACKAGE_NAME}', preg_quote($this->getRawPackageName(), '/'), self::INCOMPATIBLE_REGEX), + $this->getMessage(), + $matches + ); + + if ($hasMatches) { + return 'extension_incompatible_with_instance'; + } + + return null; + } } From 71e812c386b75818194ca2fe7ae76d5af9eedc30 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 17 Nov 2021 20:53:27 +0100 Subject: [PATCH 29/51] Split responsibilities across different classes. --- .../src/Command/MajorUpdateHandler.php | 54 ++++-------- .../src/Composer/ComposerJson.php | 83 +++++++++++++++++++ .../ComposerCommandFailedException.php | 2 +- .../package-manager/src/LastUpdateCheck.php | 10 +++ 4 files changed, 108 insertions(+), 41 deletions(-) create mode 100644 extensions/package-manager/src/Composer/ComposerJson.php diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php index a1dd5d89f..7c9f1da2b 100644 --- a/extensions/package-manager/src/Command/MajorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -9,10 +9,9 @@ namespace Flarum\PackageManager\Command; -use Flarum\Foundation\Paths; use Flarum\PackageManager\Composer\ComposerAdapter; +use Flarum\PackageManager\Composer\ComposerJson; use Illuminate\Contracts\Events\Dispatcher; -use Illuminate\Support\Arr; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\LastUpdateCheck; @@ -36,21 +35,22 @@ class MajorUpdateHandler protected $events; /** - * @var Paths - */ - protected $paths; - - /** - * @var array + * @var ComposerJson */ protected $composerJson; - public function __construct(ComposerAdapter $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, Paths $paths) + /** + * @param ComposerAdapter $composer + * @param LastUpdateCheck $lastUpdateCheck + * @param Dispatcher $events + * @param ComposerJson $composerJson + */ + public function __construct(ComposerAdapter $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, ComposerJson $composerJson) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; $this->events = $events; - $this->paths = $paths; + $this->composerJson = $composerJson; } /** @@ -67,7 +67,7 @@ class MajorUpdateHandler { $command->actor->assertAdmin(); - $majorVersion = $this->getNewMajorVersion(); + $majorVersion = $this->lastUpdateCheck->getNewMajorVersion(); if (! $majorVersion) { return false; @@ -78,7 +78,7 @@ class MajorUpdateHandler $this->runCommand($command->dryRun); if ($command->dryRun) { - $this->revertComposerJson(); + $this->composerJson->revert(); return true; } @@ -92,36 +92,10 @@ class MajorUpdateHandler return true; } - protected function getNewMajorVersion(): ?string - { - $core = Arr::first($this->lastUpdateCheck->get()['updates']['installed'], function ($package) { - return $package['name'] === 'flarum/core'; - }); - - return $core ? $core['latest-major'] : null; - } - protected function updateComposerJson(string $majorVersion): void { - $composerJsonPath = $this->paths->base . '/composer.json'; - $this->composerJson = $newComposerJson = json_decode(file_get_contents($composerJsonPath), true); - - foreach ($newComposerJson['require'] as $name => &$version) { - if ($name === 'flarum/core') { - $version = '^'.str_replace('v', '', $majorVersion); - } else { - $version = '*'; - } - } - - file_put_contents($composerJsonPath, json_encode($newComposerJson)); - } - - protected function revertComposerJson(): void - { - $composerJsonPath = $this->paths->base . '/composer.json'; - // @todo use filesystem for all file_get_contents - file_put_contents($composerJsonPath, $this->composerJson); + $this->composerJson->require('*', '*'); + $this->composerJson->require('flarum/core', '^'.str_replace('v', '', $majorVersion)); } /** diff --git a/extensions/package-manager/src/Composer/ComposerJson.php b/extensions/package-manager/src/Composer/ComposerJson.php new file mode 100644 index 000000000..e0a56c020 --- /dev/null +++ b/extensions/package-manager/src/Composer/ComposerJson.php @@ -0,0 +1,83 @@ +paths = $paths; + $this->filesystem = $filesystem; + } + + public function require(string $packageName, string $version): void + { + $composerJson = $this->getComposerJson(); + + if (strpos($packageName, '*') === false) { + $composerJson['require'][$packageName] = $version; + } else { + foreach ($composerJson['require'] as $p => $v) { + if (preg_match(preg_quote(str_replace('*', '.*', $packageName), '/'), $p, $matches)) { + $composerJson['require'][$p] = $version; + } + } + } + + $this->setComposerJson($composerJson); + } + + public function revert(): void + { + $this->setComposerJson($this->initialJson); + } + + protected function getComposerJsonPath(): string + { + return $this->paths->base . '/composer.json'; + } + + /** + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + protected function getComposerJson(): array + { + $json = json_decode($this->filesystem->get($this->getComposerJsonPath()), true); + + if (! $this->initialJson) { + $this->initialJson = $json; + } + + return $json; + } + + protected function setComposerJson(array $json): void + { + $this->filesystem->put($this->getComposerJsonPath(), json_encode($json, JSON_PRETTY_PRINT)); + } +} diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php index 601ac859b..42c65502f 100755 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php @@ -27,7 +27,7 @@ class ComposerCommandFailedException extends Exception public function guessCause(): ?string { - + return null; } protected function getRawPackageName(): string diff --git a/extensions/package-manager/src/LastUpdateCheck.php b/extensions/package-manager/src/LastUpdateCheck.php index aa93d2f42..8466c2f62 100755 --- a/extensions/package-manager/src/LastUpdateCheck.php +++ b/extensions/package-manager/src/LastUpdateCheck.php @@ -11,6 +11,7 @@ namespace Flarum\PackageManager; use Carbon\Carbon; use Flarum\Settings\SettingsRepositoryInterface; +use Illuminate\Support\Arr; use Illuminate\Support\Str; class LastUpdateCheck @@ -44,6 +45,15 @@ class LastUpdateCheck return json_decode($this->settings->get(self::KEY, '{}'), true); } + public function getNewMajorVersion(): ?string + { + $core = Arr::first($this->get()['updates']['installed'], function ($package) { + return $package['name'] === 'flarum/core'; + }); + + return $core ? $core['latest-major'] : null; + } + public function forget(string $name, bool $wildcard = false): void { $lastUpdateCheck = json_decode($this->settings->get(self::KEY, '{}'), true); From 38cd56c351c8c765e6a811e878a85aa41c1f9612 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Thu, 18 Nov 2021 15:14:22 +0100 Subject: [PATCH 30/51] Change minor updating to update everything as is currently --- extensions/package-manager/js/dist/admin.js | 1015 ++++++++++++++++- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/Updater.tsx | 75 +- .../js/src/admin/{index.js => index.tsx} | 7 +- extensions/package-manager/js/tsconfig.json | 21 +- extensions/package-manager/less/admin.less | 9 + extensions/package-manager/locale/en.yml | 3 + .../src/Command/MajorUpdateHandler.php | 2 +- .../src/Command/MinorFlarumUpdateHandler.php | 18 +- .../src/Composer/ComposerJson.php | 15 +- .../package-manager/src/LastUpdateCheck.php | 7 +- 11 files changed, 1120 insertions(+), 54 deletions(-) rename extensions/package-manager/js/src/admin/{index.js => index.tsx} (97%) diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index d0f139ff4..9882e4612 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -1,2 +1,1015 @@ -module.exports=function(a){var e={};function t(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return a[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}return t.m=a,t.c=e,t.d=function(a,e,n){t.o(a,e)||Object.defineProperty(a,e,{enumerable:!0,get:n})},t.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},t.t=function(a,e){if(1&e&&(a=t(a)),8&e)return a;if(4&e&&"object"==typeof a&&a&&a.__esModule)return a;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:a}),2&e&&"string"!=typeof a)for(var r in a)t.d(n,r,function(e){return a[e]}.bind(null,r));return n},t.n=function(a){var e=a&&a.__esModule?function(){return a.default}:function(){return a};return t.d(e,"a",e),e},t.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},t.p="",t(t.s=15)}([function(a,e){a.exports=flarum.core.compat["admin/app"]},function(a,e){a.exports=flarum.core.compat["common/components/Button"]},function(a,e){a.exports=flarum.core.compat["admin/components/LoadingModal"]},function(a,e){a.exports=flarum.core.compat["common/Component"]},function(a,e){a.exports=flarum.core.compat["common/components/Tooltip"]},function(a,e){a.exports=flarum.core.compat["common/extend"]},function(a,e){a.exports=flarum.core.compat["common/components/Alert"]},function(a,e){a.exports=flarum.core.compat["admin/components/ExtensionPage"]},function(a,e){a.exports=flarum.core.compat["common/utils/Stream"]},function(a,e){a.exports=flarum.core.compat["common/components/Modal"]},function(a,e){a.exports=flarum.core.compat["common/helpers/icon"]},function(a,e){a.exports=flarum.core.compat["common/helpers/humanTime"]},function(a,e){a.exports=flarum.core.compat["common/utils/classList"]},function(a,e){a.exports=flarum.core.compat["common/components/LoadingIndicator"]},function(a,e){a.exports=flarum.core.compat["admin/utils/isExtensionEnabled"]},function(a,e,t){"use strict";t.r(e);var n=t(5),r=t(0),o=t.n(r),s=t(6),i=t.n(s),l=t(7),c=t.n(l),u=t(1),d=t.n(u),p=t(2),f=t.n(p);function g(a,e){return(g=Object.setPrototypeOf||function(a,e){return a.__proto__=e,a})(a,e)}function h(a,e){a.prototype=Object.create(e.prototype),a.prototype.constructor=a,g(a,e)}var k=t(3),x=t.n(k),v=t(8),b=t.n(v),y=t(9),_=function(a){function e(){return a.apply(this,arguments)||this}h(e,a);var t=e.prototype;return t.oninit=function(e){a.prototype.oninit.call(this,e),this.attrs.error.guessed_cause&&(this.alertAttrs={type:"error",content:o.a.translator.trans("flarum-package-manager.admin.failure_modal.guessed_cause."+this.attrs.error.guessed_cause)})},t.className=function(){return"Modal--large ComposerFailureModal"},t.title=function(){return o.a.translator.trans("flarum-package-manager.admin.failure_modal.title")},t.content=function(){return m("div",{className:"Modal-body"},m("details",null,m("summary",null,o.a.translator.trans("flarum-package-manager.admin.failure_modal.show_composer_output")),m("pre",{className:"ComposerFailureModal-output"},this.attrs.error.output)))},e}(t.n(y).a),w=function(a){var e=a.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(e.code))throw a;switch(e.code){case"composer_command_failure":o.a.modal.show(_,{error:e});break;case"extension_already_installed":o.a.alerts.show({type:"error"},o.a.translator.trans("flarum-package-manager.admin.exceptions.extension_already_installed")),o.a.modal.close();break;case"extension_not_installed":o.a.alerts.show({type:"error"},o.a.translator.trans("flarum-package-manager.admin.exceptions.extension_not_installed")),o.a.modal.close()}},P=function(a){function e(){for(var e,t=arguments.length,n=new Array(t),r=0;r { + app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful')); + window.location.reload(); + }) + .finally(() => { + this.isLoading = null; + m.redraw(); + });*/ + } + }; + + _proto.updateExtension = function updateExtension(extension) { + var _this5 = this; + + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ + 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"] + }).then(function () { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + type: 'success' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.successful_update', { + extension: extension.extra['flarum-extension'].title + })); + window.location.reload(); + })["finally"](function () { + _this5.isLoading = null; + m.redraw(); + }); + }; + + _proto.updateGlobally = function updateGlobally() { + var _this6 = this; + + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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({ + 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"] + }).then(function () { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___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')); + window.location.reload(); + })["finally"](function () { + _this6.isLoading = null; + m.redraw(); + }); + }; + + return Updater; +}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); + + + +/***/ }), + +/***/ "./src/admin/index.tsx": +/*!*****************************!*\ + !*** ./src/admin/index.tsx ***! + \*****************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/common/extend */ "flarum/common/extend"); +/* harmony import */ var flarum_common_extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__); +/* 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_Alert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/Alert */ "flarum/common/components/Alert"); +/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/admin/components/ExtensionPage */ "flarum/admin/components/ExtensionPage"); +/* harmony import */ var flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_ExtensionPage__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_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 _components_Installer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx"); +/* harmony import */ var _components_Updater__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Updater */ "./src/admin/components/Updater.tsx"); +/* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/admin/utils/isExtensionEnabled */ "flarum/admin/utils/isExtensionEnabled"); +/* harmony import */ var flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8__); + + + + + + + + + +flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('flarum-package-manager', function (app) { + app.extensionData["for"]('flarum-package-manager').registerSetting(function () { + if (!app.data.isRequiredDirectoriesWritable) { + return m("div", { + className: "Form-group" + }, m(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_2___default.a, { + type: "warning", + dismissible: false + }, app.translator.trans('flarum-package-manager.admin.file_permissions'))); + } + + return null; + }).registerSetting(function () { + if (app.data.isRequiredDirectoriesWritable) { + return m(_components_Installer__WEBPACK_IMPORTED_MODULE_6__["default"], null); + } + + return null; + }).registerSetting(function () { + if (app.data.isRequiredDirectoriesWritable) { + return m(_components_Updater__WEBPACK_IMPORTED_MODULE_7__["default"], null); + } + + return null; + }); + Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default.a.prototype, 'topItems', function (items) { + var _this = this; + + if (this.extension.id === 'flarum-package-manager' || flarum_admin_utils_isExtensionEnabled__WEBPACK_IMPORTED_MODULE_8___default()(this.extension.id)) { + return; + } + + items.add('remove', m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, { + className: "Button Button--danger", + icon: "fas fa-times", + onclick: function onclick() { + app.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); + app.request({ + url: app.forum.attribute('apiUrl') + "/package-manager/extensions/" + _this.extension.id, + method: 'DELETE' + }).then(function () { + app.alerts.show({ + type: 'success' + }, app.translator.trans('flarum-package-manager.admin.extensions.successful_remove')); + window.location = app.forum.attribute('adminUrl'); + })["finally"](function () { + app.modal.close(); + }); + } + }, "Remove")); + }); +}); + +/***/ }), + +/***/ "./src/admin/utils/errorHandler.ts": +/*!*****************************************!*\ + !*** ./src/admin/utils/errorHandler.ts ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/ComposerFailureModal */ "./src/admin/components/ComposerFailureModal.tsx"); + + +/* harmony default export */ __webpack_exports__["default"] = (function (e) { + var error = e.response.errors[0]; + + if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) { + throw e; + } + + switch (error.code) { + case 'composer_command_failure': + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.show(_components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__["default"], { + error: error + }); + break; + + case 'extension_already_installed': + 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.extension_already_installed')); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); + break; + + case 'extension_not_installed': + 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.extension_not_installed')); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); + } +}); + +/***/ }), + +/***/ "flarum/admin/app": +/*!**************************************************!*\ + !*** external "flarum.core.compat['admin/app']" ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/app']; + +/***/ }), + +/***/ "flarum/admin/components/ExtensionPage": +/*!***********************************************************************!*\ + !*** external "flarum.core.compat['admin/components/ExtensionPage']" ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/components/ExtensionPage']; + +/***/ }), + +/***/ "flarum/admin/components/LoadingModal": +/*!**********************************************************************!*\ + !*** external "flarum.core.compat['admin/components/LoadingModal']" ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/components/LoadingModal']; + +/***/ }), + +/***/ "flarum/admin/utils/isExtensionEnabled": +/*!***********************************************************************!*\ + !*** external "flarum.core.compat['admin/utils/isExtensionEnabled']" ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/utils/isExtensionEnabled']; + +/***/ }), + +/***/ "flarum/common/Component": +/*!*********************************************************!*\ + !*** external "flarum.core.compat['common/Component']" ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/Component']; + +/***/ }), + +/***/ "flarum/common/components/Alert": +/*!****************************************************************!*\ + !*** external "flarum.core.compat['common/components/Alert']" ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Alert']; + +/***/ }), + +/***/ "flarum/common/components/Button": +/*!*****************************************************************!*\ + !*** external "flarum.core.compat['common/components/Button']" ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Button']; + +/***/ }), + +/***/ "flarum/common/components/LoadingIndicator": +/*!***************************************************************************!*\ + !*** external "flarum.core.compat['common/components/LoadingIndicator']" ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +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']" ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Tooltip']; + +/***/ }), + +/***/ "flarum/common/extend": +/*!******************************************************!*\ + !*** external "flarum.core.compat['common/extend']" ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/extend']; + +/***/ }), + +/***/ "flarum/common/helpers/humanTime": +/*!*****************************************************************!*\ + !*** external "flarum.core.compat['common/helpers/humanTime']" ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/helpers/humanTime']; + +/***/ }), + +/***/ "flarum/common/helpers/icon": +/*!************************************************************!*\ + !*** external "flarum.core.compat['common/helpers/icon']" ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/helpers/icon']; + +/***/ }), + +/***/ "flarum/common/utils/Stream": +/*!************************************************************!*\ + !*** external "flarum.core.compat['common/utils/Stream']" ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/utils/Stream']; + +/***/ }), + +/***/ "flarum/common/utils/classList": +/*!***************************************************************!*\ + !*** external "flarum.core.compat['common/utils/classList']" ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/utils/classList']; + +/***/ }) + +/******/ }); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index a02317d8a..ac922d289 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/external \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/Component']\"","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/components/Alert']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","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.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","constructor","ComposerFailureModal","oninit","vnode","this","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","e","response","errors","includes","code","modal","show","alerts","close","Installer","packageName","isLoading","Stream","view","htmlFor","extiverse","href","id","placeholder","bidi","icon","onclick","onsubmit","loading","data","package","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","extensionId","extension","window","location","reload","redraw","Component","MajorUpdater","alt","src","version","coreUpdate","text","update","dryRun","Updater","lastUpdateCheck","extensions","getExtensionUpdates","getCoreUpdate","settings","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","disabled","updateGlobally","extensionItem","map","isCore","classList","style","extra","updateCoreMinor","updateExtension","aria-label","v","replace","updates","installed","filter","composerPackage","safeToUpdate","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","dismissible","extend","ExtensionPage","items","isExtensionEnabled"],"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 = 15);\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['admin/components/LoadingModal'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/components/Alert'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['common/components/Modal'];","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/helpers/humanTime'];","module.exports = flarum.core.compat['common/utils/classList'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['admin/utils/isExtensionEnabled'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\n }\n}\n","import app from 'flarum/admin/app';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport ComposerFailureModal from './ComposerFailureModal';\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 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';\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\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype 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 || {};\n\n oninit(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 = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('flarum-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\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: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['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 extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\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 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 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';\nimport MajorUpdater from './components/MajorUpdater';\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 .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\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"],"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/inheritsLoose.js","webpack://@flarum/package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/./src/admin/components/ComposerFailureModal.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/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":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","update","dryRun","Updater","lastUpdateCheck","packageUpdates","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","extra","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","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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\";\nimport MinorUpdateWarningModal from \"./MinorUpdateWarningModal\";\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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\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/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index d7676e0f0..9dfb6db61 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -1,3 +1,4 @@ +import Mithril from "mithril"; import app from 'flarum/admin/app'; import Component from 'flarum/common/Component'; import icon from 'flarum/common/helpers/icon'; @@ -9,6 +10,7 @@ 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"; export type UpdatedPackage = { name: string; @@ -20,37 +22,44 @@ export type UpdatedPackage = { description: string; }; -type ComposerUpdates = { +export type ComposerUpdates = { installed: UpdatedPackage[]; }; -type LastUpdateCheck = { +export type LastUpdateCheck = { checkedAt: Date; updates: ComposerUpdates; }; -export default class Updater extends Component { +export default class Updater extends Component { isLoading: string | null = null; - lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {}; + lastUpdateCheck: LastUpdateCheck = (app.data.lastUpdateCheck as LastUpdateCheck) || {}; + packageUpdates: Record = {}; - oninit(vnode) { + oninit(vnode: Mithril.Vnode) { super.oninit(vnode); } view() { const extensions: any = this.getExtensionUpdates(); const coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate(); - let core = null; + let core: any = null; if (coreUpdate) { core = { - title: app.translator.trans('flarum-package-manager.admin.updater.flarum'), + id: "flarum-core", version: app.data.settings.version, icon: { backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`, }, - newPackageUpdate: coreUpdate, + extra: { + 'flarum-extension': { + title: app.translator.trans('flarum-package-manager.admin.updater.flarum'), + } + } }; + + this.packageUpdates['flarum-core'] = coreUpdate; } return [ @@ -102,7 +111,7 @@ export default class Updater extends Component { ]; } - extensionItem(extension: any, isCore: boolean = false) { + extensionItem(extension: Extension, isCore: boolean = false) { return (
-
{extension.title || extension.extra['flarum-extension'].title}
+
{extension.extra['flarum-extension'].title}
{this.version(extension.version)} - {extension.newPackageUpdate['latest-minor'] ? ( + {this.packageUpdates[extension.id]['latest-minor'] ? ( - {this.version(extension.newPackageUpdate['latest-minor'])} + {this.version(this.packageUpdates[extension.id]['latest-minor']!)} ) : null} - {extension.newPackageUpdate['latest-major'] && !isCore ? ( + {this.packageUpdates[extension.id]['latest-major'] && !isCore ? ( - {this.version(extension.newPackageUpdate['latest-major'])} + {this.version(this.packageUpdates[extension.id]['latest-major']!)} ) : null}
@@ -153,13 +162,13 @@ export default class Updater extends Component { const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']); if (extension && safeToUpdate) { - extension.newPackageUpdate = composerPackage; + this.packageUpdates[extension.id] = composerPackage; } return extension && safeToUpdate; }); - return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate); + return Object.values(app.data.extensions).filter((extension: any) => this.packageUpdates[extension.id]); } getCoreUpdate(): UpdatedPackage | undefined { @@ -185,23 +194,25 @@ export default class Updater extends Component { } updateCoreMinor() { - app.modal.show(LoadingModal); - this.isLoading = 'minor-update'; + if (confirm(app.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content'))) { + app.modal.show(LoadingModal); + this.isLoading = 'minor-update'; - app - .request({ - method: 'POST', - url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`, - errorHandler, - }) - .then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful')); - window.location.reload(); - }) - .finally(() => { - this.isLoading = null; - m.redraw(); - }); + /*app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`, + errorHandler, + }) + .then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful')); + window.location.reload(); + }) + .finally(() => { + this.isLoading = null; + m.redraw(); + });*/ + } } updateExtension(extension: any) { diff --git a/extensions/package-manager/js/src/admin/index.js b/extensions/package-manager/js/src/admin/index.tsx similarity index 97% rename from extensions/package-manager/js/src/admin/index.js rename to extensions/package-manager/js/src/admin/index.tsx index 32b7f3500..38c2757c0 100755 --- a/extensions/package-manager/js/src/admin/index.js +++ b/extensions/package-manager/js/src/admin/index.tsx @@ -7,7 +7,6 @@ import LoadingModal from 'flarum/admin/components/LoadingModal'; import Installer from './components/Installer'; import Updater from './components/Updater'; import isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled'; -import MajorUpdater from './components/MajorUpdater'; app.initializers.add('flarum-package-manager', (app) => { app.extensionData @@ -22,16 +21,22 @@ app.initializers.add('flarum-package-manager', (app) => {
); } + + return null; }) .registerSetting(() => { if (app.data.isRequiredDirectoriesWritable) { return ; } + + return null; }) .registerSetting(() => { if (app.data.isRequiredDirectoriesWritable) { return ; } + + return null; }); extend(ExtensionPage.prototype, 'topItems', function (items) { diff --git a/extensions/package-manager/js/tsconfig.json b/extensions/package-manager/js/tsconfig.json index e8ff4074a..a60a30754 100755 --- a/extensions/package-manager/js/tsconfig.json +++ b/extensions/package-manager/js/tsconfig.json @@ -1,11 +1,16 @@ { - "extends": "flarum-tsconfig", - "include": ["src/**/*"], - "compilerOptions": { - "declarationDir": "./dist-typings", - "baseUrl": ".", - "paths": { - "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"] + // Use Flarum's tsconfig as a starting point + "extends": "flarum-tsconfig", + // This will match all .ts, .tsx, .d.ts, .js, .jsx files in your `src` folder + // and also tells your Typescript server to read core's global typings for + // access to `dayjs` and `$` in the global namespace. + "include": ["src/**/*", "../vendor/flarum/core/js/dist-typings/@types/**/*"], + "compilerOptions": { + // This will output typings to `dist-typings` + "declarationDir": "./dist-typings", + "baseUrl": ".", + "paths": { + "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"] + } } - } } diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index 2f4fc32af..d2f660bbf 100755 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -119,3 +119,12 @@ grid-area: helpText; } } + +.MinorUpdateWarningModal { + .Modal-footer { + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + } +} diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 195082c1e..556998d27 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -29,6 +29,9 @@ flarum-package-manager: title: Flarum {version} Major Update Available update: Update + minor_update_confirmation: + content: This will also update any other extensions/packages with availabe updates. + updater: check_for_updates: Check for updates flarum: Flarum Core diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php index 7c9f1da2b..6a437ce69 100644 --- a/extensions/package-manager/src/Command/MajorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -83,7 +83,7 @@ class MajorUpdateHandler return true; } - $this->lastUpdateCheck->forget('flarum/*', true); + $this->lastUpdateCheck->forgetAll(); $this->events->dispatch( new FlarumUpdated(FlarumUpdated::MAJOR) diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php index 01e5a3bb7..03ad82186 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php @@ -10,6 +10,7 @@ namespace Flarum\PackageManager\Command; use Flarum\PackageManager\Composer\ComposerAdapter; +use Flarum\PackageManager\Composer\ComposerJson; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; @@ -33,11 +34,17 @@ class MinorFlarumUpdateHandler */ protected $events; - public function __construct(ComposerAdapter $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events) + /** + * @var ComposerJson + */ + protected $composerJson; + + public function __construct(ComposerAdapter $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, ComposerJson $composerJson) { $this->composer = $composer; $this->lastUpdateCheck = $lastUpdateCheck; $this->events = $events; + $this->composerJson = $composerJson; } /** @@ -48,15 +55,20 @@ class MinorFlarumUpdateHandler { $command->actor->assertAdmin(); + $coreRequirement = $this->composerJson->get()['require']['flarum/core']; + + $this->composerJson->require('*', '*'); + $this->composerJson->require('flarum/core', $coreRequirement); + $output = $this->composer->run( - new StringInput("update flarum/* --prefer-dist --no-dev -a --with-all-dependencies") + new StringInput("update --prefer-dist --no-dev -a --with-all-dependencies") ); if ($output->getExitCode() !== 0) { throw new ComposerUpdateFailedException('flarum/*', $output->getContents()); } - $this->lastUpdateCheck->forget('flarum/*', true); + $this->lastUpdateCheck->forgetAll(); $this->events->dispatch( new FlarumUpdated(FlarumUpdated::MINOR) diff --git a/extensions/package-manager/src/Composer/ComposerJson.php b/extensions/package-manager/src/Composer/ComposerJson.php index e0a56c020..3210251ee 100644 --- a/extensions/package-manager/src/Composer/ComposerJson.php +++ b/extensions/package-manager/src/Composer/ComposerJson.php @@ -11,6 +11,7 @@ namespace Flarum\PackageManager\Composer; use Flarum\Foundation\Paths; use Illuminate\Filesystem\Filesystem; +use Illuminate\Support\Str; class ComposerJson { @@ -37,24 +38,26 @@ class ComposerJson public function require(string $packageName, string $version): void { - $composerJson = $this->getComposerJson(); + $composerJson = $this->get(); if (strpos($packageName, '*') === false) { $composerJson['require'][$packageName] = $version; } else { foreach ($composerJson['require'] as $p => $v) { - if (preg_match(preg_quote(str_replace('*', '.*', $packageName), '/'), $p, $matches)) { + $wildcardPackageName = str_replace('\*', '.*', preg_quote($packageName, '/')); + + if (Str::of($p)->test("/($wildcardPackageName)/")) { $composerJson['require'][$p] = $version; } } } - $this->setComposerJson($composerJson); + $this->set($composerJson); } public function revert(): void { - $this->setComposerJson($this->initialJson); + $this->set($this->initialJson); } protected function getComposerJsonPath(): string @@ -65,7 +68,7 @@ class ComposerJson /** * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException */ - protected function getComposerJson(): array + public function get(): array { $json = json_decode($this->filesystem->get($this->getComposerJsonPath()), true); @@ -76,7 +79,7 @@ class ComposerJson return $json; } - protected function setComposerJson(array $json): void + protected function set(array $json): void { $this->filesystem->put($this->getComposerJsonPath(), json_encode($json, JSON_PRETTY_PRINT)); } diff --git a/extensions/package-manager/src/LastUpdateCheck.php b/extensions/package-manager/src/LastUpdateCheck.php index 8466c2f62..885de145e 100755 --- a/extensions/package-manager/src/LastUpdateCheck.php +++ b/extensions/package-manager/src/LastUpdateCheck.php @@ -60,7 +60,7 @@ class LastUpdateCheck if (isset($lastUpdateCheck['updates']) && ! empty($lastUpdateCheck['updates']['installed'])) { $updatesListChanged = false; - $pattern = preg_quote(str_replace('*', '.*', $name)); + $pattern = str_replace('\*', '.*', preg_quote($name, '/')); foreach ($lastUpdateCheck['updates']['installed'] as $k => $package) { if (($wildcard && Str::of($package['name'])->test("/($pattern)/")) || $package['name'] === $name) { @@ -79,4 +79,9 @@ class LastUpdateCheck } } } + + public function forgetAll(): void + { + $this->save([]); + } } From 1fcd9b86d7c4ef409cbbeb66a15f77c35e41d0a5 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Thu, 18 Nov 2021 15:17:16 +0100 Subject: [PATCH 31/51] Remove testing code --- extensions/package-manager/js/dist/admin.js | 37 ++++++++++--------- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/Updater.tsx | 4 +- extensions/package-manager/less/admin.less | 9 ----- 4 files changed, 22 insertions(+), 30 deletions(-) diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 9882e4612..478eb9c17 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -643,28 +643,29 @@ 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); this.isLoading = 'minor-update'; - /*app - .request({ - method: 'POST', - url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`, - errorHandler, - }) - .then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful')); - window.location.reload(); - }) - .finally(() => { - this.isLoading = null; - m.redraw(); - });*/ + 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/minor-update", + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"] + }).then(function () { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + type: 'success' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.update_successful')); + window.location.reload(); + })["finally"](function () { + _this5.isLoading = null; + m.redraw(); + }); } }; _proto.updateExtension = function updateExtension(extension) { - var _this5 = this; + var _this6 = this; flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); this.isLoading = 'extension-update'; @@ -680,13 +681,13 @@ var Updater = /*#__PURE__*/function (_Component) { })); window.location.reload(); })["finally"](function () { - _this5.isLoading = null; + _this6.isLoading = null; m.redraw(); }); }; _proto.updateGlobally = function updateGlobally() { - var _this6 = this; + var _this7 = this; flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a); this.isLoading = 'global-update'; @@ -700,7 +701,7 @@ var Updater = /*#__PURE__*/function (_Component) { }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.global_update_successful')); window.location.reload(); })["finally"](function () { - _this6.isLoading = null; + _this7.isLoading = null; m.redraw(); }); }; diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index ac922d289..3eff47418 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/ComposerFailureModal.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/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":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","update","dryRun","Updater","lastUpdateCheck","packageUpdates","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","extra","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","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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\";\nimport MinorUpdateWarningModal from \"./MinorUpdateWarningModal\";\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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\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 +{"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/ComposerFailureModal.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/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":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","update","dryRun","Updater","lastUpdateCheck","packageUpdates","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","extra","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","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\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/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index 9dfb6db61..0dbca8351 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -198,7 +198,7 @@ export default class Updater extends Component { app.modal.show(LoadingModal); this.isLoading = 'minor-update'; - /*app + app .request({ method: 'POST', url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`, @@ -211,7 +211,7 @@ export default class Updater extends Component { .finally(() => { this.isLoading = null; m.redraw(); - });*/ + }); } } diff --git a/extensions/package-manager/less/admin.less b/extensions/package-manager/less/admin.less index d2f660bbf..2f4fc32af 100755 --- a/extensions/package-manager/less/admin.less +++ b/extensions/package-manager/less/admin.less @@ -119,12 +119,3 @@ grid-area: helpText; } } - -.MinorUpdateWarningModal { - .Modal-footer { - display: flex; - align-items: center; - justify-content: center; - gap: 4px; - } -} From 3497028cc07e4e8b32c90b06c187ff32a40b7921 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sat, 20 Nov 2021 16:31:26 +0100 Subject: [PATCH 32/51] Improve the logic behind the different features --- extensions/package-manager/extend.php | 28 +++--- extensions/package-manager/js/dist/admin.js | 85 ++----------------- .../package-manager/js/dist/admin.js.map | 2 +- .../admin/components/ComposerFailureModal.tsx | 41 --------- .../js/src/admin/components/Installer.tsx | 5 +- .../js/src/admin/utils/errorHandler.ts | 6 +- extensions/package-manager/locale/en.yml | 12 +-- .../Api/Controller/MajorUpdateController.php | 2 +- ...ntroller.php => MinorUpdateController.php} | 6 +- .../src/Command/CheckForUpdatesHandler.php | 23 +++-- .../src/Command/MajorUpdateHandler.php | 44 +++++----- ...{MinorFlarumUpdate.php => MinorUpdate.php} | 2 +- ...dateHandler.php => MinorUpdateHandler.php} | 4 +- .../src/Composer/ComposerAdapter.php | 15 +++- .../src/Composer/ComposerJson.php | 6 +- .../ComposerCommandFailedException.php | 5 ++ ...eptionHandler.php => ExceptionHandler.php} | 6 +- .../Exception/MajorUpdateFailedException.php | 39 +++++++++ .../Exception/NoNewMajorVersionException.php | 26 ++++++ .../package-manager/src/LastUpdateCheck.php | 4 +- 20 files changed, 177 insertions(+), 184 deletions(-) delete mode 100755 extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx rename extensions/package-manager/src/Api/Controller/{MinorFlarumUpdateController.php => MinorUpdateController.php} (84%) rename extensions/package-manager/src/Command/{MinorFlarumUpdate.php => MinorUpdate.php} (94%) rename extensions/package-manager/src/Command/{MinorFlarumUpdateHandler.php => MinorUpdateHandler.php} (95%) rename extensions/package-manager/src/Exception/{ComposerCommandFailedExceptionHandler.php => ExceptionHandler.php} (88%) create mode 100644 extensions/package-manager/src/Exception/MajorUpdateFailedException.php create mode 100755 extensions/package-manager/src/Exception/NoNewMajorVersionException.php diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index 59bbad1a1..2184f5ee1 100755 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -13,11 +13,10 @@ use Flarum\Extend; use Flarum\Foundation\Paths; use Flarum\Frontend\Document; use Flarum\PackageManager\Exception\ComposerCommandFailedException; -use Flarum\PackageManager\Exception\ComposerCommandFailedExceptionHandler; +use Flarum\PackageManager\Exception\ExceptionHandler; use Flarum\PackageManager\Exception\ComposerRequireFailedException; use Flarum\PackageManager\Exception\ComposerUpdateFailedException; -use Flarum\PackageManager\Exception\ExtensionAlreadyInstalledException; -use Flarum\PackageManager\Exception\ExtensionNotInstalledException; +use Flarum\PackageManager\Exception\MajorUpdateFailedException; return [ (new Extend\Routes('api')) @@ -25,7 +24,8 @@ 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/minor-update', 'package-manager.minor-update', Api\Controller\MinorFlarumUpdateController::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), (new Extend\Frontend('admin')) @@ -44,15 +44,23 @@ return [ new Extend\Locales(__DIR__ . '/locale'), + (new Extend\Settings()) + ->default('flarum-package-manager.last_update_check', json_encode([ + 'checkedAt' => null, + 'updates' => [ + 'installed' => [], + ], + ])), + (new Extend\ServiceProvider) ->register(PackageManagerServiceProvider::class), (new Extend\ErrorHandling) - ->handler(ComposerCommandFailedException::class, ComposerCommandFailedExceptionHandler::class) - ->handler(ComposerRequireFailedException::class, ComposerCommandFailedExceptionHandler::class) - ->handler(ComposerUpdateFailedException::class, ComposerCommandFailedExceptionHandler::class) - ->type(ExtensionAlreadyInstalledException::class, 'extension_already_installed') + ->handler(ComposerCommandFailedException::class, ExceptionHandler::class) + ->handler(ComposerRequireFailedException::class, ExceptionHandler::class) + ->handler(ComposerUpdateFailedException::class, ExceptionHandler::class) + ->handler(MajorUpdateFailedException::class, ExceptionHandler::class) ->status('extension_already_installed', 409) - ->type(ExtensionNotInstalledException::class, 'extension_not_installed') - ->status('extension_not_installed', 409), + ->status('extension_not_installed', 409) + ->status('no_new_major_version', 409), ]; diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 478eb9c17..4456c2bfb 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -140,68 +140,6 @@ function _setPrototypeOf(o, p) { return _setPrototypeOf(o, p); } -/***/ }), - -/***/ "./src/admin/components/ComposerFailureModal.tsx": -/*!*******************************************************!*\ - !*** ./src/admin/components/ComposerFailureModal.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 ComposerFailureModal; }); -/* 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__); - - - - -var ComposerFailureModal = /*#__PURE__*/function (_Modal) { - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(ComposerFailureModal, _Modal); - - function ComposerFailureModal() { - return _Modal.apply(this, arguments) || this; - } - - var _proto = ComposerFailureModal.prototype; - - _proto.oninit = function oninit(vnode) { - _Modal.prototype.oninit.call(this, vnode); - - if (this.attrs.error.guessed_cause) { - this.alertAttrs = { - type: 'error', - content: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans("flarum-package-manager.admin.failure_modal.guessed_cause." + this.attrs.error.guessed_cause) - }; - } - }; - - _proto.className = function className() { - return 'Modal--large ComposerFailureModal'; - }; - - _proto.title = function title() { - return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.failure_modal.title'); - }; - - _proto.content = function content() { - return m("div", { - className: "Modal-body" - }, m("details", null, m("summary", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')), m("pre", { - className: "ComposerFailureModal-output" - }, this.attrs.error.output))); - }; - - return ComposerFailureModal; -}(flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2___default.a); - - - /***/ }), /***/ "./src/admin/components/Installer.tsx": @@ -813,8 +751,6 @@ flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('flarum __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); /* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/ComposerFailureModal */ "./src/admin/components/ComposerFailureModal.tsx"); - /* harmony default export */ __webpack_exports__["default"] = (function (e) { var error = e.response.errors[0]; @@ -825,9 +761,13 @@ __webpack_require__.r(__webpack_exports__); switch (error.code) { case 'composer_command_failure': - flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.show(_components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__["default"], { - error: error - }); + if (error.guessed_cause) { + 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.guessed_cause." + error.guessed_cause)); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close(); + } + break; case 'extension_already_installed': @@ -935,17 +875,6 @@ 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 3eff47418..d1f87e77b 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/ComposerFailureModal.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/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":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","update","dryRun","Updater","lastUpdateCheck","packageUpdates","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","extra","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","errors","code"],"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 app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\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 ComposerFailureModal from './ComposerFailureModal';\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';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\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 app.modal.show(ComposerFailureModal, { error });\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 +{"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 diff --git a/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx b/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx deleted file mode 100755 index eddd682c8..000000000 --- a/extensions/package-manager/js/src/admin/components/ComposerFailureModal.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import app from 'flarum/admin/app'; -import Modal from 'flarum/common/components/Modal'; -import { ComponentAttrs } from 'flarum/common/Component'; -import Alert from 'flarum/common/components/Alert'; -import Mithril from 'mithril'; - -interface Attrs extends ComponentAttrs { - output: string; -} - -export default class ComposerFailureModal extends Modal { - oninit(vnode: Mithril.Vnode) { - super.oninit(vnode); - - if (this.attrs.error.guessed_cause) { - this.alertAttrs = { - type: 'error', - content: app.translator.trans(`flarum-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`), - }; - } - } - - className() { - return 'Modal--large ComposerFailureModal'; - } - - title() { - return app.translator.trans('flarum-package-manager.admin.failure_modal.title'); - } - - content() { - return ( -
-
- {app.translator.trans('flarum-package-manager.admin.failure_modal.show_composer_output')} -
{this.attrs.error.output}
-
-
- ); - } -} diff --git a/extensions/package-manager/js/src/admin/components/Installer.tsx b/extensions/package-manager/js/src/admin/components/Installer.tsx index 08fd69162..c8b67a79d 100755 --- a/extensions/package-manager/js/src/admin/components/Installer.tsx +++ b/extensions/package-manager/js/src/admin/components/Installer.tsx @@ -4,14 +4,13 @@ import Component from 'flarum/common/Component'; import Button from 'flarum/common/components/Button'; import Stream from 'flarum/common/utils/Stream'; import LoadingModal from 'flarum/admin/components/LoadingModal'; -import ComposerFailureModal from './ComposerFailureModal'; import errorHandler from '../utils/errorHandler'; -export default class Installer extends Component { +export default class Installer extends Component { packageName!: Stream; isLoading: boolean = false; - oninit(vnode: Mithril.Vnode): void { + oninit(vnode: Mithril.Vnode): void { super.oninit(vnode); this.packageName = Stream(''); diff --git a/extensions/package-manager/js/src/admin/utils/errorHandler.ts b/extensions/package-manager/js/src/admin/utils/errorHandler.ts index bf216d187..db9cb9050 100755 --- a/extensions/package-manager/js/src/admin/utils/errorHandler.ts +++ b/extensions/package-manager/js/src/admin/utils/errorHandler.ts @@ -1,5 +1,4 @@ import app from 'flarum/admin/app'; -import ComposerFailureModal from '../components/ComposerFailureModal'; export default function (e: any) { const error = e.response.errors[0]; @@ -10,7 +9,10 @@ export default function (e: any) { switch (error.code) { case 'composer_command_failure': - app.modal.show(ComposerFailureModal, { error }); + if (error.guessed_cause) { + app.alerts.show({type: 'error'}, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`)) + app.modal.close(); + } break; case 'extension_already_installed': diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 556998d27..8099d37f0 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -4,6 +4,12 @@ flarum-package-manager: extension_already_installed: Extension is already installed. extension_not_installed: Extension not found. + guessed_cause: + extension_incompatible_with_instance: The extension is most likely incompatible with your current Flarum instance. + extensions_incompatible_with_new_major: > + Some installed extensions are not compatible with the newest major release. + Please wait until the extensions are updated to be compatible by the authors, or remove them before proceeding. + extensions: install: Install a new extension install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions. @@ -13,12 +19,6 @@ flarum-package-manager: successful_update: "{extension} was updated successfully, redirecting.." update: Update - failure_modal: - title: Operation Failed - guessed_cause: - extension_incompatible_with_instance: The extension is most likely incompatible with your current Flarum instance. - show_composer_output: Show Advanced Details - file_permissions: > The package manager requires read and write permissions on the following files and directories: composer.json, composer.lock, vendor, storage/.composer diff --git a/extensions/package-manager/src/Api/Controller/MajorUpdateController.php b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php index 066569d23..ee2bebfa3 100755 --- a/extensions/package-manager/src/Api/Controller/MajorUpdateController.php +++ b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php @@ -33,7 +33,7 @@ class MajorUpdateController implements RequestHandlerInterface public function handle(ServerRequestInterface $request): ResponseInterface { $actor = RequestUtil::getActor($request); - $dryRun = (bool) (int) Arr::get($request->getParsedBody(), 'data.dryRun'); + $dryRun = (bool) (int) Arr::get($request->getParsedBody(), 'data.dryRun', 0); $this->bus->dispatch( new MajorUpdate($actor, $dryRun) diff --git a/extensions/package-manager/src/Api/Controller/MinorFlarumUpdateController.php b/extensions/package-manager/src/Api/Controller/MinorUpdateController.php similarity index 84% rename from extensions/package-manager/src/Api/Controller/MinorFlarumUpdateController.php rename to extensions/package-manager/src/Api/Controller/MinorUpdateController.php index b240dbc29..32f220146 100755 --- a/extensions/package-manager/src/Api/Controller/MinorFlarumUpdateController.php +++ b/extensions/package-manager/src/Api/Controller/MinorUpdateController.php @@ -15,9 +15,9 @@ use Laminas\Diactoros\Response\EmptyResponse; use Psr\Http\Message\ResponseInterface; use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Message\ServerRequestInterface; -use Flarum\PackageManager\Command\MinorFlarumUpdate; +use Flarum\PackageManager\Command\MinorUpdate; -class MinorFlarumUpdateController implements RequestHandlerInterface +class MinorUpdateController implements RequestHandlerInterface { /** * @var Dispatcher @@ -37,7 +37,7 @@ class MinorFlarumUpdateController implements RequestHandlerInterface $actor = RequestUtil::getActor($request); $this->bus->dispatch( - new MinorFlarumUpdate($actor) + new MinorUpdate($actor) ); return new EmptyResponse(); diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index e4dab09dc..ec004286a 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -71,7 +71,9 @@ class CheckForUpdatesHandler if ($majorUpdates) { $secondOutput = $this->runComposerCommand(true); $secondOutput = json_decode($secondOutput, true); - } else { + } + + if (! isset($secondOutput)) { $secondOutput = ['installed' => []]; } @@ -101,14 +103,17 @@ class CheckForUpdatesHandler */ protected function runComposerCommand(bool $minorOnly): string { - $output = $this->composer->run( - new ArrayInput([ - 'command' => 'outdated', - '-D' => true, - '--minor-only' => $minorOnly, - '--format' => 'json', - ]) - ); + $input = [ + 'command' => 'outdated', + '-D' => true, + '--format' => 'json', + ]; + + if ($minorOnly) { + $input['--minor-only'] = true; + } + + $output = $this->composer->run(new ArrayInput($input)); if ($output->getExitCode() !== 0) { throw new ComposerCommandFailedException('', $output->getContents()); diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php index 6a437ce69..e471b5236 100644 --- a/extensions/package-manager/src/Command/MajorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -11,9 +11,10 @@ namespace Flarum\PackageManager\Command; use Flarum\PackageManager\Composer\ComposerAdapter; use Flarum\PackageManager\Composer\ComposerJson; +use Flarum\PackageManager\Exception\MajorUpdateFailedException; +use Flarum\PackageManager\Exception\NoNewMajorVersionException; use Illuminate\Contracts\Events\Dispatcher; use Flarum\PackageManager\Event\FlarumUpdated; -use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\LastUpdateCheck; use Symfony\Component\Console\Input\ArrayInput; @@ -61,7 +62,7 @@ class MajorUpdateHandler * Run migrations. * * @throws \Flarum\User\Exception\PermissionDeniedException - * @throws ComposerUpdateFailedException + * @throws NoNewMajorVersionException|MajorUpdateFailedException */ public function handle(MajorUpdate $command) { @@ -70,12 +71,12 @@ class MajorUpdateHandler $majorVersion = $this->lastUpdateCheck->getNewMajorVersion(); if (! $majorVersion) { - return false; + throw new NoNewMajorVersionException(); } $this->updateComposerJson($majorVersion); - $this->runCommand($command->dryRun); + $this->runCommand($command->dryRun, $majorVersion); if ($command->dryRun) { $this->composerJson->revert(); @@ -94,29 +95,34 @@ class MajorUpdateHandler protected function updateComposerJson(string $majorVersion): void { + $versionNumber = str_replace('v', '', $majorVersion); + $this->composerJson->require('*', '*'); - $this->composerJson->require('flarum/core', '^'.str_replace('v', '', $majorVersion)); + $this->composerJson->require('flarum/core', '^'.$versionNumber); } /** - * @throws ComposerUpdateFailedException + * @throws MajorUpdateFailedException */ - protected function runCommand(bool $dryRun): void + protected function runCommand(bool $dryRun, string $majorVersion): void { - $output = $this->composer->run( - new ArrayInput([ - 'command' => 'update', - '--prefer-dist' => true, - '--no-plugins' => true, - '--no-dev' => true, - '-a' => true, - '--with-all-dependencies' => true, - '--dry-run' => $dryRun, - ]) - ); + $input = [ + 'command' => 'update', + '--prefer-dist' => true, + '--no-plugins' => true, + '--no-dev' => true, + '-a' => true, + '--with-all-dependencies' => true, + ]; + + if ($dryRun) { + $input['--dry-run'] = true; + } + + $output = $this->composer->run(new ArrayInput($input)); if ($output->getExitCode() !== 0) { - throw new ComposerUpdateFailedException('*', $output->getContents()); + throw new MajorUpdateFailedException('*', $output->getContents(), $majorVersion); } } } diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdate.php b/extensions/package-manager/src/Command/MinorUpdate.php similarity index 94% rename from extensions/package-manager/src/Command/MinorFlarumUpdate.php rename to extensions/package-manager/src/Command/MinorUpdate.php index b646dbdde..87b36224f 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdate.php +++ b/extensions/package-manager/src/Command/MinorUpdate.php @@ -11,7 +11,7 @@ namespace Flarum\PackageManager\Command; use Flarum\User\User; -class MinorFlarumUpdate +class MinorUpdate { /** * @var \Flarum\User\User diff --git a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php b/extensions/package-manager/src/Command/MinorUpdateHandler.php similarity index 95% rename from extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php rename to extensions/package-manager/src/Command/MinorUpdateHandler.php index 03ad82186..7ead1bdea 100755 --- a/extensions/package-manager/src/Command/MinorFlarumUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorUpdateHandler.php @@ -17,7 +17,7 @@ use Flarum\PackageManager\Exception\ComposerUpdateFailedException; use Flarum\PackageManager\LastUpdateCheck; use Symfony\Component\Console\Input\StringInput; -class MinorFlarumUpdateHandler +class MinorUpdateHandler { /** * @var ComposerAdapter @@ -51,7 +51,7 @@ class MinorFlarumUpdateHandler * @throws \Flarum\User\Exception\PermissionDeniedException * @throws ComposerUpdateFailedException */ - public function handle(MinorFlarumUpdate $command) + public function handle(MinorUpdate $command) { $command->actor->assertAdmin(); diff --git a/extensions/package-manager/src/Composer/ComposerAdapter.php b/extensions/package-manager/src/Composer/ComposerAdapter.php index c94aaa0e1..8cdc827dc 100644 --- a/extensions/package-manager/src/Composer/ComposerAdapter.php +++ b/extensions/package-manager/src/Composer/ComposerAdapter.php @@ -14,6 +14,9 @@ use Flarum\PackageManager\OutputLogger; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\BufferedOutput; +/** + * @internal + */ class ComposerAdapter { /** @@ -26,19 +29,23 @@ class ComposerAdapter */ private $logger; + /** + * @var BufferedOutput + */ + private $output; + public function __construct(Application $application, OutputLogger $logger) { $this->application = $application; $this->logger = $logger; + $this->output = new BufferedOutput(); } public function run(InputInterface $input): ComposerOutput { - $output = new BufferedOutput(); + $exitCode = $this->application->run($input, $this->output); - $exitCode = $this->application->run($input, $output); - - $outputContents = $output->fetch(); + $outputContents = $this->output->fetch(); $this->logger->log($input->__toString(), $outputContents, $exitCode); diff --git a/extensions/package-manager/src/Composer/ComposerJson.php b/extensions/package-manager/src/Composer/ComposerJson.php index 3210251ee..7e8571ff1 100644 --- a/extensions/package-manager/src/Composer/ComposerJson.php +++ b/extensions/package-manager/src/Composer/ComposerJson.php @@ -44,6 +44,10 @@ class ComposerJson $composerJson['require'][$packageName] = $version; } else { foreach ($composerJson['require'] as $p => $v) { + if ($version === '*@dev') { + continue; + } + $wildcardPackageName = str_replace('\*', '.*', preg_quote($packageName, '/')); if (Str::of($p)->test("/($wildcardPackageName)/")) { @@ -81,6 +85,6 @@ class ComposerJson protected function set(array $json): void { - $this->filesystem->put($this->getComposerJsonPath(), json_encode($json, JSON_PRETTY_PRINT)); + $this->filesystem->put($this->getComposerJsonPath(), json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); } } diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php index 42c65502f..318f1fb37 100755 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedException.php +++ b/extensions/package-manager/src/Exception/ComposerCommandFailedException.php @@ -18,6 +18,11 @@ class ComposerCommandFailedException extends Exception */ public $packageName; + /** + * @var array + */ + public $details = []; + public function __construct(string $packageName, string $output) { $this->packageName = $packageName; diff --git a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php b/extensions/package-manager/src/Exception/ExceptionHandler.php similarity index 88% rename from extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php rename to extensions/package-manager/src/Exception/ExceptionHandler.php index 13cd5e100..29a2b4971 100755 --- a/extensions/package-manager/src/Exception/ComposerCommandFailedExceptionHandler.php +++ b/extensions/package-manager/src/Exception/ExceptionHandler.php @@ -11,7 +11,7 @@ namespace Flarum\PackageManager\Exception; use Flarum\Foundation\ErrorHandling\HandledError; -class ComposerCommandFailedExceptionHandler +class ExceptionHandler { public function handle(ComposerCommandFailedException $e): HandledError { @@ -32,6 +32,10 @@ class ComposerCommandFailedExceptionHandler $details['guessed_cause'] = $guessedCause; } + if (! empty($e->details)) { + $details = array_merge($details, $e->details); + } + return [$details]; } diff --git a/extensions/package-manager/src/Exception/MajorUpdateFailedException.php b/extensions/package-manager/src/Exception/MajorUpdateFailedException.php new file mode 100644 index 000000000..d82517c22 --- /dev/null +++ b/extensions/package-manager/src/Exception/MajorUpdateFailedException.php @@ -0,0 +1,39 @@ +[A-z0-9\/-]+) [A-z0-9.-_\/]+ requires flarum\/core (?(?:[A-z0-9.><=_ -](?!->))+)/m'; + + /** + * @var string + */ + private $majorVersion; + + public function __construct(string $packageName, string $output, string $majorVersion) + { + $this->majorVersion = $majorVersion; + + parent::__construct($packageName, $output); + } + + public function guessCause(): ?string + { + if (preg_match_all(self::INCOMPATIBLE_REGEX, $this->getMessage(), $matches) !== false) { + $this->details['incompatible_extensions'] = []; + + foreach ($matches['ext'] as $k => $name) { + if (! Semver::satisfies($this->majorVersion, $matches['coreReq'][$k])) { + $this->details['incompatible_extensions'][] = $name; + } + } + + return 'extensions_incompatible_with_new_major'; + } + + return null; + } +} diff --git a/extensions/package-manager/src/Exception/NoNewMajorVersionException.php b/extensions/package-manager/src/Exception/NoNewMajorVersionException.php new file mode 100755 index 000000000..b209a72d6 --- /dev/null +++ b/extensions/package-manager/src/Exception/NoNewMajorVersionException.php @@ -0,0 +1,26 @@ +settings->get(self::KEY, '{}'), true); + return json_decode($this->settings->get(self::KEY), true); } public function getNewMajorVersion(): ?string { - $core = Arr::first($this->get()['updates']['installed'], function ($package) { + $core = Arr::first(Arr::get($this->get(), 'updates.installed', []), function ($package) { return $package['name'] === 'flarum/core'; }); From fd70b46c91ddbb57c665c3f32236afb050317631 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sat, 20 Nov 2021 16:48:28 +0100 Subject: [PATCH 33/51] Re-run update check after update operations --- .../src/Command/GlobalUpdateHandler.php | 6 +---- .../src/Command/MajorUpdateHandler.php | 4 +--- .../src/Command/MinorUpdateHandler.php | 4 +--- .../src/Event/FlarumUpdated.php | 10 ++++++++- .../package-manager/src/LastUpdateCheck.php | 5 ----- ...eListener.php => FlarumUpdateListener.php} | 22 +++++++++++++++++-- .../src/PackageManagerServiceProvider.php | 4 ++-- 7 files changed, 34 insertions(+), 21 deletions(-) rename extensions/package-manager/src/Listener/{PostUpdateListener.php => FlarumUpdateListener.php} (69%) diff --git a/extensions/package-manager/src/Command/GlobalUpdateHandler.php b/extensions/package-manager/src/Command/GlobalUpdateHandler.php index d5032bf9a..4b4e6e106 100644 --- a/extensions/package-manager/src/Command/GlobalUpdateHandler.php +++ b/extensions/package-manager/src/Command/GlobalUpdateHandler.php @@ -55,12 +55,8 @@ class GlobalUpdateHandler throw new ComposerUpdateFailedException('*', $output->getContents()); } - $this->commandDispatcher->dispatch( - new CheckForUpdates($command->actor) - ); - $this->events->dispatch( - new FlarumUpdated(FlarumUpdated::GLOBAL) + new FlarumUpdated($command->actor, FlarumUpdated::GLOBAL) ); return true; diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php index e471b5236..c316b3729 100644 --- a/extensions/package-manager/src/Command/MajorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -84,10 +84,8 @@ class MajorUpdateHandler return true; } - $this->lastUpdateCheck->forgetAll(); - $this->events->dispatch( - new FlarumUpdated(FlarumUpdated::MAJOR) + new FlarumUpdated($command->actor, FlarumUpdated::MAJOR) ); return true; diff --git a/extensions/package-manager/src/Command/MinorUpdateHandler.php b/extensions/package-manager/src/Command/MinorUpdateHandler.php index 7ead1bdea..c5af1b869 100755 --- a/extensions/package-manager/src/Command/MinorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MinorUpdateHandler.php @@ -68,10 +68,8 @@ class MinorUpdateHandler throw new ComposerUpdateFailedException('flarum/*', $output->getContents()); } - $this->lastUpdateCheck->forgetAll(); - $this->events->dispatch( - new FlarumUpdated(FlarumUpdated::MINOR) + new FlarumUpdated($command->actor, FlarumUpdated::MINOR) ); return true; diff --git a/extensions/package-manager/src/Event/FlarumUpdated.php b/extensions/package-manager/src/Event/FlarumUpdated.php index cd2b71da3..85194666c 100644 --- a/extensions/package-manager/src/Event/FlarumUpdated.php +++ b/extensions/package-manager/src/Event/FlarumUpdated.php @@ -9,19 +9,27 @@ namespace Flarum\PackageManager\Event; +use Flarum\User\User; + class FlarumUpdated { public const GLOBAL = 'global'; public const MAJOR = 'major'; public const MINOR = 'minor'; + /** + * @var User + */ + public $actor; + /** * @var string */ public $type; - public function __construct(string $type) + public function __construct(User $actor, string $type) { + $this->actor = $actor; $this->type = $type; } } diff --git a/extensions/package-manager/src/LastUpdateCheck.php b/extensions/package-manager/src/LastUpdateCheck.php index c9d4d1352..c30220d35 100755 --- a/extensions/package-manager/src/LastUpdateCheck.php +++ b/extensions/package-manager/src/LastUpdateCheck.php @@ -79,9 +79,4 @@ class LastUpdateCheck } } } - - public function forgetAll(): void - { - $this->save([]); - } } diff --git a/extensions/package-manager/src/Listener/PostUpdateListener.php b/extensions/package-manager/src/Listener/FlarumUpdateListener.php similarity index 69% rename from extensions/package-manager/src/Listener/PostUpdateListener.php rename to extensions/package-manager/src/Listener/FlarumUpdateListener.php index 4c0eb9e51..57ff839aa 100644 --- a/extensions/package-manager/src/Listener/PostUpdateListener.php +++ b/extensions/package-manager/src/Listener/FlarumUpdateListener.php @@ -10,13 +10,15 @@ 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 PostUpdateListener +class FlarumUpdateListener { /** * @var ClearCacheCommand @@ -33,11 +35,23 @@ class PostUpdateListener */ private $migrate; - public function __construct(ClearCacheCommand $clearCache, AssetsPublishCommand $publishAssets, MigrateCommand $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) { $this->clearCache = $clearCache; $this->publishAssets = $publishAssets; $this->migrate = $migrate; + $this->bus = $bus; } /** @@ -48,5 +62,9 @@ class PostUpdateListener $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/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 7c65a6e05..1da9a1d2c 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -24,7 +24,7 @@ use Monolog\Handler\RotatingFileHandler; use Monolog\Logger; use Flarum\PackageManager\Event\FlarumUpdated; use Flarum\PackageManager\Extension\Event\Updated; -use Flarum\PackageManager\Listener\PostUpdateListener; +use Flarum\PackageManager\Listener\FlarumUpdateListener; class PackageManagerServiceProvider extends AbstractServiceProvider { @@ -89,6 +89,6 @@ class PackageManagerServiceProvider extends AbstractServiceProvider } ); - $events->listen(FlarumUpdated::class, PostUpdateListener::class); + $events->listen(FlarumUpdated::class, FlarumUpdateListener::class); } } From 2e3a78ca2dcddfe9098d1c3cfb390ccf4e844edf Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sat, 20 Nov 2021 16:54:19 +0100 Subject: [PATCH 34/51] require core dev master when deving --- extensions/package-manager/composer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json index fc260867d..d276c8288 100755 --- a/extensions/package-manager/composer.json +++ b/extensions/package-manager/composer.json @@ -22,6 +22,7 @@ "composer/composer": "^2.0" }, "require-dev": { + "flarum/core": "dev-master", "flarum/testing": "^1.0.0", "flarum/tags": "*" }, From c8b8dacb676e0dcd0dc64a452d0a18e3682cce0b Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sat, 20 Nov 2021 16:59:24 +0100 Subject: [PATCH 35/51] Remove dead code --- extensions/package-manager/src/LastUpdateCheck.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/extensions/package-manager/src/LastUpdateCheck.php b/extensions/package-manager/src/LastUpdateCheck.php index c30220d35..752306f5b 100755 --- a/extensions/package-manager/src/LastUpdateCheck.php +++ b/extensions/package-manager/src/LastUpdateCheck.php @@ -54,22 +54,18 @@ class LastUpdateCheck return $core ? $core['latest-major'] : null; } - public function forget(string $name, bool $wildcard = false): void + public function forget(string $name): void { - $lastUpdateCheck = json_decode($this->settings->get(self::KEY, '{}'), true); + $lastUpdateCheck = $this->get(); if (isset($lastUpdateCheck['updates']) && ! empty($lastUpdateCheck['updates']['installed'])) { $updatesListChanged = false; - $pattern = str_replace('\*', '.*', preg_quote($name, '/')); foreach ($lastUpdateCheck['updates']['installed'] as $k => $package) { - if (($wildcard && Str::of($package['name'])->test("/($pattern)/")) || $package['name'] === $name) { + if ($package['name'] === $name) { unset($lastUpdateCheck['updates']['installed'][$k]); $updatesListChanged = true; - - if (! $wildcard) { - break; - } + break; } } From f4bb8158ef711f0a9a061db31fe326fed9f76ce1 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Tue, 23 Nov 2021 23:02:56 +0100 Subject: [PATCH 36/51] feat: misc additions - Detect extensions that didn't update between updates - Add composer why not command where approriate (when extension didn't update, when major update failed) - Detect incompatible extensions in major update failure and show the extensions in the frontend - Create last update run setting value which holds the state of the latest update runs - Other fixes --- extensions/package-manager/extend.php | 13 +- extensions/package-manager/js/dist/admin.js | 474 ++++-- .../package-manager/js/dist/admin.js.map | 2 +- extensions/package-manager/js/package.json | 4 +- .../js/src/admin/components/ExtensionItem.tsx | 89 ++ .../js/src/admin/components/MajorUpdater.tsx | 58 +- .../js/src/admin/components/Updater.tsx | 132 +- .../js/src/admin/components/WhyNotModal.tsx | 51 + .../js/src/admin/utils/errorHandler.ts | 4 +- extensions/package-manager/js/yarn.lock | 1388 +++++++++-------- extensions/package-manager/less/admin.less | 68 +- extensions/package-manager/locale/en.yml | 9 + .../src/Api/Controller/WhyNotController.php | 47 + .../src/Command/CheckForUpdatesHandler.php | 8 +- .../src/Command/MajorUpdateHandler.php | 27 +- .../src/Command/MinorUpdateHandler.php | 4 +- .../src/Command/UpdateExtensionHandler.php | 4 +- .../package-manager/src/Command/WhyNot.php | 37 + .../src/Command/WhyNotHandler.php | 65 + .../src/Composer/ComposerAdapter.php | 2 + .../src/Event/FlarumUpdated.php | 2 +- .../Exception/MajorUpdateFailedException.php | 15 + .../package-manager/src/LastUpdateCheck.php | 78 - ...Listener.php => ClearCacheAfterUpdate.php} | 24 +- .../src/Listener/ReCheckForUpdates.php | 68 + .../src/PackageManagerServiceProvider.php | 6 +- .../src/RequirePackageValidator.php | 4 +- .../src/Settings/JsonSetting.php | 16 + .../src/Settings/LastUpdateCheck.php | 78 + .../src/Settings/LastUpdateRun.php | 91 ++ .../package-manager/src/WhyNotValidator.php | 16 + 31 files changed, 1877 insertions(+), 1007 deletions(-) create mode 100644 extensions/package-manager/js/src/admin/components/ExtensionItem.tsx create mode 100644 extensions/package-manager/js/src/admin/components/WhyNotModal.tsx create mode 100755 extensions/package-manager/src/Api/Controller/WhyNotController.php create mode 100755 extensions/package-manager/src/Command/WhyNot.php create mode 100755 extensions/package-manager/src/Command/WhyNotHandler.php delete mode 100755 extensions/package-manager/src/LastUpdateCheck.php rename extensions/package-manager/src/Listener/{FlarumUpdateListener.php => ClearCacheAfterUpdate.php} (66%) create mode 100644 extensions/package-manager/src/Listener/ReCheckForUpdates.php create mode 100644 extensions/package-manager/src/Settings/JsonSetting.php create mode 100755 extensions/package-manager/src/Settings/LastUpdateCheck.php create mode 100644 extensions/package-manager/src/Settings/LastUpdateRun.php create mode 100644 extensions/package-manager/src/WhyNotValidator.php 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'] + ]; +} From 8e39edb200580d10f14966ee49ab678f176c9802 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Tue, 23 Nov 2021 23:06:30 +0100 Subject: [PATCH 37/51] chore: remove test code --- .../src/Command/CheckForUpdatesHandler.php | 1 + .../src/Command/MajorUpdateHandler.php | 22 ------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php index 1ba1d1f90..31ed821e2 100755 --- a/extensions/package-manager/src/Command/CheckForUpdatesHandler.php +++ b/extensions/package-manager/src/Command/CheckForUpdatesHandler.php @@ -49,6 +49,7 @@ class CheckForUpdatesHandler * The results from both commands are properly processed and merged to have new key values `latest-minor` and `latest-major`. * * @throws \Flarum\User\Exception\PermissionDeniedException|ComposerCommandFailedException + * @todo integration test */ public function handle(CheckForUpdates $command) { diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php index ab2ffa2b7..2e20254aa 100644 --- a/extensions/package-manager/src/Command/MajorUpdateHandler.php +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -68,28 +68,6 @@ 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) { From b2d8f3dd5b67a02f9bc4d782907ae67d53ab1e2a Mon Sep 17 00:00:00 2001 From: SychO9 Date: Tue, 23 Nov 2021 23:50:06 +0100 Subject: [PATCH 38/51] Add actor to extension update event --- .../src/Command/UpdateExtensionHandler.php | 2 +- .../package-manager/src/Extension/Event/Updated.php | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/extensions/package-manager/src/Command/UpdateExtensionHandler.php b/extensions/package-manager/src/Command/UpdateExtensionHandler.php index 11f4f0b5e..34d143a67 100755 --- a/extensions/package-manager/src/Command/UpdateExtensionHandler.php +++ b/extensions/package-manager/src/Command/UpdateExtensionHandler.php @@ -85,7 +85,7 @@ class UpdateExtensionHandler } $this->events->dispatch( - new Updated($extension) + new Updated($command->actor, $extension) ); return true; diff --git a/extensions/package-manager/src/Extension/Event/Updated.php b/extensions/package-manager/src/Extension/Event/Updated.php index 879e3df2e..61c9e55ec 100755 --- a/extensions/package-manager/src/Extension/Event/Updated.php +++ b/extensions/package-manager/src/Extension/Event/Updated.php @@ -10,16 +10,23 @@ namespace Flarum\PackageManager\Extension\Event; use Flarum\Extension\Extension; +use Flarum\User\User; class Updated { + /** + * @var User + */ + public $actor; + /** * @var Extension */ public $extension; - public function __construct(Extension $extension) + public function __construct(User $actor, Extension $extension) { + $this->actor = $actor; $this->extension = $extension; } } From 1754313503e32d476d17d63321f5940b97875bcc Mon Sep 17 00:00:00 2001 From: Sami Mazouz Date: Wed, 24 Nov 2021 18:25:43 +0100 Subject: [PATCH 39/51] test: Updates (#11) --- .../Controller/RemoveExtensionController.php | 16 +-- .../Api/Serializer/ExtensionSerializer.php | 39 ------ .../src/Exception/ExceptionHandler.php | 4 +- .../src/Settings/JsonSetting.php | 7 + .../src/Settings/LastUpdateRun.php | 8 +- .../package-manager/src/WhyNotValidator.php | 7 + .../integration/ChangeComposerConfig.php | 14 ++ .../tests/integration/DummyExtensions.php | 32 +++++ .../integration/RefreshComposerSetup.php | 37 +++++ .../tests/integration/SetupComposer.php | 47 +++++-- .../tests/integration/TestCase.php | 24 +++- .../tests/integration/api/MajorUpdateTest.php | 127 ++++++++++++++++++ .../tests/integration/api/MinorUpdateTest.php | 95 +++++++++++++ .../api/extensions/RequireExtensionTest.php | 4 +- 14 files changed, 391 insertions(+), 70 deletions(-) delete mode 100755 extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php create mode 100644 extensions/package-manager/tests/integration/ChangeComposerConfig.php create mode 100644 extensions/package-manager/tests/integration/DummyExtensions.php create mode 100644 extensions/package-manager/tests/integration/api/MajorUpdateTest.php create mode 100644 extensions/package-manager/tests/integration/api/MinorUpdateTest.php diff --git a/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php b/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php index 8e9d6707b..28d144721 100755 --- a/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php @@ -9,18 +9,17 @@ namespace Flarum\PackageManager\Api\Controller; -use Flarum\Api\Controller\AbstractDeleteController; use Flarum\Bus\Dispatcher; use Flarum\Http\RequestUtil; use Illuminate\Support\Arr; -use Flarum\PackageManager\Api\Serializer\ExtensionSerializer; +use Laminas\Diactoros\Response\EmptyResponse; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Flarum\PackageManager\Command\RemoveExtension; +use Psr\Http\Server\RequestHandlerInterface; -class RemoveExtensionController extends AbstractDeleteController +class RemoveExtensionController implements RequestHandlerInterface { - public $serializer = ExtensionSerializer::class; - /** * @var Dispatcher */ @@ -31,10 +30,7 @@ class RemoveExtensionController extends AbstractDeleteController $this->bus = $bus; } - /** - * @throws \Flarum\User\Exception\PermissionDeniedException - */ - protected function delete(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $actor = RequestUtil::getActor($request); $extensionId = Arr::get($request->getQueryParams(), 'id'); @@ -42,5 +38,7 @@ class RemoveExtensionController extends AbstractDeleteController $this->bus->dispatch( new RemoveExtension($actor, $extensionId) ); + + return new EmptyResponse(); } } diff --git a/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php b/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php deleted file mode 100755 index 07d5b763d..000000000 --- a/extensions/package-manager/src/Api/Serializer/ExtensionSerializer.php +++ /dev/null @@ -1,39 +0,0 @@ -getId(); - } - - protected function getDefaultAttributes($model) - { - if (is_array($model)) { - return $model; - } - - if (! ($model instanceof Extension)) { - throw new InvalidArgumentException( - get_class($this).' can only serialize instances of '.Extension::class - ); - } - - return $model->toArray(); - } -} diff --git a/extensions/package-manager/src/Exception/ExceptionHandler.php b/extensions/package-manager/src/Exception/ExceptionHandler.php index 29a2b4971..6ef741867 100755 --- a/extensions/package-manager/src/Exception/ExceptionHandler.php +++ b/extensions/package-manager/src/Exception/ExceptionHandler.php @@ -24,9 +24,7 @@ class ExceptionHandler protected function errorDetails(ComposerCommandFailedException $e): array { - $details = [ - 'output' => $e->getMessage(), - ]; + $details = []; if ($guessedCause = $this->guessCause($e)) { $details['guessed_cause'] = $guessedCause; diff --git a/extensions/package-manager/src/Settings/JsonSetting.php b/extensions/package-manager/src/Settings/JsonSetting.php index eb214a1c7..834ab780d 100644 --- a/extensions/package-manager/src/Settings/JsonSetting.php +++ b/extensions/package-manager/src/Settings/JsonSetting.php @@ -1,5 +1,12 @@ settings->get(self::key()), true); + $lastUpdateRun = json_decode($this->settings->get(self::key()), true); + + if ($this->activeUpdate) { + return $lastUpdateRun[$this->activeUpdate]; + } + + return $lastUpdateRun; } public static function key(): string diff --git a/extensions/package-manager/src/WhyNotValidator.php b/extensions/package-manager/src/WhyNotValidator.php index d49a6dc4a..ee5b2ef0e 100644 --- a/extensions/package-manager/src/WhyNotValidator.php +++ b/extensions/package-manager/src/WhyNotValidator.php @@ -1,5 +1,12 @@ run(); + + $this->composer('install'); + } +} diff --git a/extensions/package-manager/tests/integration/DummyExtensions.php b/extensions/package-manager/tests/integration/DummyExtensions.php new file mode 100644 index 000000000..c5c48f75b --- /dev/null +++ b/extensions/package-manager/tests/integration/DummyExtensions.php @@ -0,0 +1,32 @@ +tmpDir() . "/packages/" . str_replace('/', '-', $name); + + if (! file_exists($dirName)) { + mkdir($dirName); + } + + file_put_contents($dirName."/composer.json", json_encode([ + 'name' => $name, + 'version' => '1.0.0', + 'require' => [ + 'flarum/core' => $coreVersions + ], + ], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + } +} diff --git a/extensions/package-manager/tests/integration/RefreshComposerSetup.php b/extensions/package-manager/tests/integration/RefreshComposerSetup.php index 8009f0386..3e4262d53 100644 --- a/extensions/package-manager/tests/integration/RefreshComposerSetup.php +++ b/extensions/package-manager/tests/integration/RefreshComposerSetup.php @@ -1,7 +1,19 @@ tmpDir().'/composer.lock'); + $this->deleteDummyExtensions(); + $composerSetup->run(); $this->composer('install'); parent::tearDown(); } + + private function deleteDummyExtensions(): void + { + $dir = $this->tmpDir().'/packages'; + + $it = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS); + $files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + + foreach($files as $file) { + if ($file->isDir()){ + rmdir($file->getRealPath()); + } else { + unlink($file->getRealPath()); + } + } + + rmdir($dir); + } + + protected function forgetComposerApp(): void + { + $this->app()->getContainer()->instance(ComposerAdapter::class, null); + } } diff --git a/extensions/package-manager/tests/integration/SetupComposer.php b/extensions/package-manager/tests/integration/SetupComposer.php index 58ee1b2df..5112e9912 100644 --- a/extensions/package-manager/tests/integration/SetupComposer.php +++ b/extensions/package-manager/tests/integration/SetupComposer.php @@ -15,20 +15,43 @@ class SetupComposer { use UsesTmpDir; + private $config = [ + 'require' => [ + 'flarum/core' => '1.0.0', + 'flarum/tags' => '1.0.3', + 'flarum/lang-english' => '*', + ], + 'config' => [ + 'preferred-install' => 'dist', + 'sort-packages' => true, + ], + 'repositories' => [ + [ + 'type' => 'path', + 'url' => __DIR__.'/../tmp/packages/*', + ] + ] + ]; + + public function __construct(array $config = null) + { + $this->config = array_merge($this->config, $config ?? []); + } + public function run() { - $filePath = $this->tmpDir().'/composer.json'; + $composerJson = $this->tmpDir().'/composer.json'; + $composerLock = $this->tmpDir().'/composer.lock'; + $packages = $this->tmpDir().'/packages'; - file_put_contents($filePath, json_encode([ - 'require' => [ - 'flarum/core' => '1.0.0', - 'flarum/tags' => '1.0.3', - 'flarum/lang-english' => '*', - ], - 'config' => [ - 'preferred-install' => 'dist', - 'sort-packages' => true, - ], - ], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + file_put_contents($composerJson, json_encode($this->config, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + + if (! file_exists($packages)) { + mkdir($packages); + } + + if (file_exists($composerLock)) { + unlink($composerLock); + } } } diff --git a/extensions/package-manager/tests/integration/TestCase.php b/extensions/package-manager/tests/integration/TestCase.php index 1adaa1de8..468b8368c 100644 --- a/extensions/package-manager/tests/integration/TestCase.php +++ b/extensions/package-manager/tests/integration/TestCase.php @@ -11,6 +11,7 @@ namespace Flarum\PackageManager\Tests\integration; use Flarum\Foundation\Paths; use Flarum\PackageManager\Composer\ComposerAdapter; +use Flarum\PackageManager\Composer\ComposerJson; use Flarum\PackageManager\Extension\ExtensionUtils; use Flarum\Testing\integration\RetrievesAuthorizedUsers; use Illuminate\Support\Arr; @@ -27,7 +28,7 @@ class TestCase extends \Flarum\Testing\integration\TestCase $this->extension('flarum-package-manager', 'flarum-tags'); - $tmp = $this->tmpDir(); + $tmp = realpath($this->tmpDir()); $this->app()->getContainer()->instance('flarum.paths', new Paths([ 'base' => $tmp, @@ -64,6 +65,14 @@ class TestCase extends \Flarum\Testing\integration\TestCase $this->assertExtension($id, false); } + protected function assertPackageVersion(string $packageName, string $version) + { + $composerJson = $this->app()->getContainer()->make(ComposerJson::class)->get(); + + $this->assertArrayHasKey($packageName, $composerJson['require'], "$packageName is not required."); + $this->assertEquals($version, $composerJson['require'][$packageName], "Expected $packageName to be $version, found {$composerJson['require'][$packageName]} instead."); + } + protected function requireExtension(string $package) { $this->composer("require $package"); @@ -81,10 +90,17 @@ class TestCase extends \Flarum\Testing\integration\TestCase $composer->run(new StringInput($command)); } - protected function guessedCause(ResponseInterface $response): ?string + protected function errorGuessedCause(ResponseInterface $response): ?string { - $json = json_decode($response->getBody()->getContents(), true); + $details = $this->errorDetails($response); - return $json['errors'] ? ($json['errors'][0]['guessed_cause'] ?? null) : null; + return $details['guessed_cause'] ?? null; + } + + protected function errorDetails(ResponseInterface $response): array + { + $json = json_decode((string) $response->getBody(), true); + + return $json['errors'] ? ($json['errors'][0] ?? []) : []; } } diff --git a/extensions/package-manager/tests/integration/api/MajorUpdateTest.php b/extensions/package-manager/tests/integration/api/MajorUpdateTest.php new file mode 100644 index 000000000..04fccc25e --- /dev/null +++ b/extensions/package-manager/tests/integration/api/MajorUpdateTest.php @@ -0,0 +1,127 @@ +makeDummyExtensionCompatibleWith("flarum/dummy-incompatible-extension", ">=0.1.0-beta.15 <=0.1.0-beta.16"); + $this->setComposerConfig([ + 'require' => [ + 'flarum/core' => '^0.1.0-beta.15', + 'flarum/tags' => '^0.1.0-beta.15', + 'flarum/dummy-incompatible-extension' => '^1.0.0' + ], + 'minimum-stability' => 'beta', + ]); + + $response = $this->send( + $this->request('POST', '/api/package-manager/major-update', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->assertEquals(409, $response->getStatusCode()); + $this->assertEquals('no_new_major_version', $this->errorDetails($response)['code']); + } + + /** + * @test + */ + public function can_update_when_major_update_available() + { + $this->makeDummyExtensionCompatibleWith("flarum/dummy-compatible-extension", "^0.1.0-beta.15 | ^1.0.0"); + $this->setComposerConfig([ + 'require' => [ + 'flarum/core' => '^0.1.0-beta.15', + 'flarum/tags' => '^0.1.0-beta.15', + 'flarum/dummy-compatible-extension' => '^1.0.0' + ], + 'minimum-stability' => 'beta', + ]); + + $lastUpdateCheck = $this->send( + $this->request('POST', '/api/package-manager/check-for-updates', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->forgetComposerApp(); + + $response = $this->send( + $this->request('POST', '/api/package-manager/major-update', [ + 'authenticatedAs' => 1, + ]) + ); + + $newMinorCoreVersion = array_filter( + json_decode((string) $lastUpdateCheck->getBody(), true)['updates']['installed'], + function ($package) { + return $package['name'] === 'flarum/core'; + } + )[0]['latest-major']; + + $this->assertEquals(204, $response->getStatusCode()); + $this->assertPackageVersion("flarum/core", str_replace('v', '^', $newMinorCoreVersion)); + $this->assertPackageVersion("flarum/tags", "*"); + $this->assertPackageVersion("flarum/dummy-compatible-extension", "*"); + } + + /** + * @test + */ + public function cannot_update_with_incompatible_extensions() + { + $this->makeDummyExtensionCompatibleWith("flarum/dummy-incompatible-extension-a", ">=0.1.0-beta.16 <0.1.0-beta.17"); + $this->makeDummyExtensionCompatibleWith("flarum/dummy-incompatible-extension-b", ">=0.1.0-beta.16 <=0.1.0-beta.17"); + $this->makeDummyExtensionCompatibleWith("flarum/dummy-incompatible-extension-c", "0.1.0-beta.16"); + $this->setComposerConfig([ + 'require' => [ + 'flarum/core' => '^0.1.0-beta.16', + 'flarum/tags' => '^0.1.0-beta.16', + 'flarum/dummy-incompatible-extension-a' => '^1.0.0', + 'flarum/dummy-incompatible-extension-b' => '^1.0.0', + 'flarum/dummy-incompatible-extension-c' => '^1.0.0', + ], + 'minimum-stability' => 'beta', + ]); + + $this->send( + $this->request('POST', '/api/package-manager/check-for-updates', [ + 'authenticatedAs' => 1, + ]) + ); + + $response = $this->send( + $this->request('POST', '/api/package-manager/major-update', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->assertEquals(409, $response->getStatusCode()); + $this->assertEquals('extensions_incompatible_with_new_major', $this->errorDetails($response)['guessed_cause']); + $this->assertEquals([ + 'flarum/dummy-incompatible-extension-a', + 'flarum/dummy-incompatible-extension-b', + 'flarum/dummy-incompatible-extension-c' + ], $this->errorDetails($response)['incompatible_extensions']); + } +} diff --git a/extensions/package-manager/tests/integration/api/MinorUpdateTest.php b/extensions/package-manager/tests/integration/api/MinorUpdateTest.php new file mode 100644 index 000000000..cb7b77a01 --- /dev/null +++ b/extensions/package-manager/tests/integration/api/MinorUpdateTest.php @@ -0,0 +1,95 @@ +makeDummyExtensionCompatibleWith("flarum/dummy-compatible-extension", "^1.0.0"); + $this->setComposerConfig([ + 'require' => [ + // The only reason we don't set this to `^1.0.0` and let it update to latest minor, + // is because migrations that run DDL queries might be introduced in future versions, + // therefore breaking the test transaction. + 'flarum/core' => '>=1.0.0 <= 1.1.0', + // We leave tags fixed to a version, + // the update handler must be able to set it to `*`. + 'flarum/tags' => '1.0.3', + 'flarum/lang-english' => '*', + 'flarum/dummy-compatible-extension' => '^1.0.0' + ] + ]); + + $response = $this->send( + $this->request('POST', '/api/package-manager/minor-update', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->assertEquals(204, $response->getStatusCode()); + $this->assertPackageVersion('flarum/tags', '*'); + $this->assertPackageVersion('flarum/dummy-compatible-extension', '*'); + } + + /** + * @test + */ + public function can_update_with_latest_ext_incompatible_with_latest_core() + { + $this->makeDummyExtensionCompatibleWith("flarum/dummy-extension", "1.0.0"); + $this->setComposerConfig([ + 'require' => [ + 'flarum/core' => '>=1.0.0 <=1.1.0', + 'flarum/tags' => '1.0.3', + 'flarum/lang-english' => '*', + 'flarum/dummy-extension' => '^1.0.0' + ] + ]); + + $this->send( + $this->request('POST', '/api/package-manager/check-for-updates', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->forgetComposerApp(); + + $response = $this->send( + $this->request('POST', '/api/package-manager/minor-update', [ + 'authenticatedAs' => 1, + ]) + ); + + /** @var LastUpdateRun $lastUpdateRun */ + $lastUpdateRun = $this->app()->getContainer()->make(LastUpdateRun::class); + + $this->assertEquals(204, $response->getStatusCode()); + $this->assertPackageVersion("flarum/tags", "*"); + $this->assertPackageVersion("flarum/dummy-extension", "*"); + $this->assertEquals([ + 'flarum/core', + 'flarum/lang-english', + 'flarum/tags' + ], $lastUpdateRun->for(FlarumUpdated::MINOR)->get()['limitedPackages']); + } +} diff --git a/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php b/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php index 001e8a6eb..2da97b62e 100644 --- a/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php +++ b/extensions/package-manager/tests/integration/api/extensions/RequireExtensionTest.php @@ -100,7 +100,7 @@ class RequireExtensionTest extends TestCase ); $this->assertEquals(409, $response->getStatusCode()); - $this->assertEquals('extension_incompatible_with_instance', $this->guessedCause($response)); + $this->assertEquals('extension_incompatible_with_instance', $this->errorDetails($response)['guessed_cause']); } /** @@ -120,6 +120,6 @@ class RequireExtensionTest extends TestCase ); $this->assertEquals(409, $response->getStatusCode()); - $this->assertEquals('extension_incompatible_with_instance', $this->guessedCause($response)); + $this->assertEquals('extension_incompatible_with_instance', $this->errorDetails($response)['guessed_cause']); } } From 97ac47ea941e4054fecf60cf0aef9ed1e0e0aa06 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 24 Nov 2021 19:41:32 +0100 Subject: [PATCH 40/51] chore: Remove dead code --- extensions/package-manager/tests/integration/TestCase.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/extensions/package-manager/tests/integration/TestCase.php b/extensions/package-manager/tests/integration/TestCase.php index 468b8368c..609f575f7 100644 --- a/extensions/package-manager/tests/integration/TestCase.php +++ b/extensions/package-manager/tests/integration/TestCase.php @@ -90,13 +90,6 @@ class TestCase extends \Flarum\Testing\integration\TestCase $composer->run(new StringInput($command)); } - protected function errorGuessedCause(ResponseInterface $response): ?string - { - $details = $this->errorDetails($response); - - return $details['guessed_cause'] ?? null; - } - protected function errorDetails(ResponseInterface $response): array { $json = json_decode((string) $response->getBody(), true); From 5206e8e1dcc460a0611bd2fa24cacd90d6510707 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 24 Nov 2021 19:49:41 +0100 Subject: [PATCH 41/51] chore: 200 status codes --- .../src/Api/Controller/GlobalUpdateController.php | 2 +- .../src/Api/Controller/MajorUpdateController.php | 2 +- .../src/Api/Controller/MinorUpdateController.php | 2 +- .../src/Api/Controller/RemoveExtensionController.php | 2 +- .../src/Api/Controller/UpdateExtensionController.php | 2 +- .../package-manager/tests/integration/api/MajorUpdateTest.php | 2 +- .../package-manager/tests/integration/api/MinorUpdateTest.php | 4 ++-- .../tests/integration/api/extensions/RemoveExtensionTest.php | 2 +- .../tests/integration/api/extensions/UpdateExtensionTest.php | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/extensions/package-manager/src/Api/Controller/GlobalUpdateController.php b/extensions/package-manager/src/Api/Controller/GlobalUpdateController.php index 0df3ea329..5828c0c7b 100755 --- a/extensions/package-manager/src/Api/Controller/GlobalUpdateController.php +++ b/extensions/package-manager/src/Api/Controller/GlobalUpdateController.php @@ -40,6 +40,6 @@ class GlobalUpdateController implements RequestHandlerInterface new GlobalUpdate($actor) ); - return new EmptyResponse(); + return new EmptyResponse(200); } } diff --git a/extensions/package-manager/src/Api/Controller/MajorUpdateController.php b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php index ee2bebfa3..5e6859e99 100755 --- a/extensions/package-manager/src/Api/Controller/MajorUpdateController.php +++ b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php @@ -39,6 +39,6 @@ class MajorUpdateController implements RequestHandlerInterface new MajorUpdate($actor, $dryRun) ); - return new EmptyResponse(); + return new EmptyResponse(200); } } diff --git a/extensions/package-manager/src/Api/Controller/MinorUpdateController.php b/extensions/package-manager/src/Api/Controller/MinorUpdateController.php index 32f220146..ee930405a 100755 --- a/extensions/package-manager/src/Api/Controller/MinorUpdateController.php +++ b/extensions/package-manager/src/Api/Controller/MinorUpdateController.php @@ -40,6 +40,6 @@ class MinorUpdateController implements RequestHandlerInterface new MinorUpdate($actor) ); - return new EmptyResponse(); + return new EmptyResponse(200); } } diff --git a/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php b/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php index 28d144721..842d11129 100755 --- a/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/RemoveExtensionController.php @@ -39,6 +39,6 @@ class RemoveExtensionController implements RequestHandlerInterface new RemoveExtension($actor, $extensionId) ); - return new EmptyResponse(); + return new EmptyResponse(200); } } diff --git a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php index f1f65686f..7b846c481 100755 --- a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php @@ -39,6 +39,6 @@ class UpdateExtensionController implements RequestHandlerInterface new UpdateExtension($actor, $extensionId) ); - return new EmptyResponse(); + return new EmptyResponse(200); } } diff --git a/extensions/package-manager/tests/integration/api/MajorUpdateTest.php b/extensions/package-manager/tests/integration/api/MajorUpdateTest.php index 04fccc25e..bd5cdc8ac 100644 --- a/extensions/package-manager/tests/integration/api/MajorUpdateTest.php +++ b/extensions/package-manager/tests/integration/api/MajorUpdateTest.php @@ -79,7 +79,7 @@ class MajorUpdateTest extends TestCase } )[0]['latest-major']; - $this->assertEquals(204, $response->getStatusCode()); + $this->assertEquals(200, $response->getStatusCode()); $this->assertPackageVersion("flarum/core", str_replace('v', '^', $newMinorCoreVersion)); $this->assertPackageVersion("flarum/tags", "*"); $this->assertPackageVersion("flarum/dummy-compatible-extension", "*"); diff --git a/extensions/package-manager/tests/integration/api/MinorUpdateTest.php b/extensions/package-manager/tests/integration/api/MinorUpdateTest.php index cb7b77a01..4321b4851 100644 --- a/extensions/package-manager/tests/integration/api/MinorUpdateTest.php +++ b/extensions/package-manager/tests/integration/api/MinorUpdateTest.php @@ -46,7 +46,7 @@ class MinorUpdateTest extends TestCase ]) ); - $this->assertEquals(204, $response->getStatusCode()); + $this->assertEquals(200, $response->getStatusCode()); $this->assertPackageVersion('flarum/tags', '*'); $this->assertPackageVersion('flarum/dummy-compatible-extension', '*'); } @@ -83,7 +83,7 @@ class MinorUpdateTest extends TestCase /** @var LastUpdateRun $lastUpdateRun */ $lastUpdateRun = $this->app()->getContainer()->make(LastUpdateRun::class); - $this->assertEquals(204, $response->getStatusCode()); + $this->assertEquals(200, $response->getStatusCode()); $this->assertPackageVersion("flarum/tags", "*"); $this->assertPackageVersion("flarum/dummy-extension", "*"); $this->assertEquals([ diff --git a/extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php b/extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php index c7a457abc..d13f494df 100644 --- a/extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php +++ b/extensions/package-manager/tests/integration/api/extensions/RemoveExtensionTest.php @@ -35,7 +35,7 @@ class RemoveExtensionTest extends TestCase ]) ); - $this->assertEquals(204, $response->getStatusCode()); + $this->assertEquals(200, $response->getStatusCode()); $this->assertExtensionNotExists('flarum-tags'); } diff --git a/extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php b/extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php index d19f91e9d..b40c18efc 100644 --- a/extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php +++ b/extensions/package-manager/tests/integration/api/extensions/UpdateExtensionTest.php @@ -35,7 +35,7 @@ class UpdateExtensionTest extends TestCase ]) ); - $this->assertEquals(204, $response->getStatusCode()); + $this->assertEquals(200, $response->getStatusCode()); $this->assertExtensionExists('flarum-tags'); } From 488edaca7a27b5e0d21b93508f176fe5e69c9299 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 24 Nov 2021 20:16:25 +0100 Subject: [PATCH 42/51] test: Checking for updates and global updating --- .../integration/api/CheckForUpdatesTest.php | 42 +++++++++++++++++++ .../integration/api/GlobalUpdateTest.php | 32 ++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 extensions/package-manager/tests/integration/api/CheckForUpdatesTest.php create mode 100644 extensions/package-manager/tests/integration/api/GlobalUpdateTest.php diff --git a/extensions/package-manager/tests/integration/api/CheckForUpdatesTest.php b/extensions/package-manager/tests/integration/api/CheckForUpdatesTest.php new file mode 100644 index 000000000..bd667f476 --- /dev/null +++ b/extensions/package-manager/tests/integration/api/CheckForUpdatesTest.php @@ -0,0 +1,42 @@ +setComposerConfig([ + 'require' => [ + 'flarum/core' => '^1.0.0', + 'flarum/tags' => '1.0.0', + ] + ]); + + $response = $this->send( + $this->request('POST', '/api/package-manager/check-for-updates', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->assertEquals(200, $response->getStatusCode()); + $this->assertEquals(['flarum/tags'], Arr::pluck(json_decode((string) $response->getBody(), true)['updates']['installed'], 'name')); + } +} diff --git a/extensions/package-manager/tests/integration/api/GlobalUpdateTest.php b/extensions/package-manager/tests/integration/api/GlobalUpdateTest.php new file mode 100644 index 000000000..84e335e49 --- /dev/null +++ b/extensions/package-manager/tests/integration/api/GlobalUpdateTest.php @@ -0,0 +1,32 @@ +send( + $this->request('POST', '/api/package-manager/global-update', [ + 'authenticatedAs' => 1, + ]) + ); + + $this->assertEquals(200, $response->getStatusCode()); + } +} From 8fecb6ae9a28b80a9cbbe88dd10aec2beb66baab Mon Sep 17 00:00:00 2001 From: SychO9 Date: Thu, 25 Nov 2021 23:54:46 +0100 Subject: [PATCH 43/51] test: Add php 8.1 to tests --- extensions/package-manager/.github/workflows/test.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/extensions/package-manager/.github/workflows/test.yml b/extensions/package-manager/.github/workflows/test.yml index 3f30e72bb..ac322a07c 100755 --- a/extensions/package-manager/.github/workflows/test.yml +++ b/extensions/package-manager/.github/workflows/test.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - php: [7.3, 7.4, '8.0'] + php: [7.3, 7.4, '8.0', 8.1] service: ['mysql:5.7', mariadb] prefix: ['', flarum_] @@ -33,6 +33,12 @@ jobs: - php: 8.0 service: mariadb prefix: flarum_ + - php: 8.1 + service: 'mysql:5.7' + prefix: flarum_ + - php: 8.1 + service: mariadb + prefix: flarum_ services: mysql: From a7535ab20a4bbef4dd44907bd4129ca336691dbe Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 24 Jan 2022 00:37:14 -0500 Subject: [PATCH 44/51] chore: flarum-cli audit infra --fix --- extensions/package-manager/.gitattributes | 22 ++++- .../.github/workflows/backend.yml | 15 +++ .../.github/workflows/frontend.yml | 23 +++++ .../package-manager/.github/workflows/js.yml | 91 ------------------- .../.github/workflows/test.yml | 85 ----------------- extensions/package-manager/.gitignore | 15 ++- extensions/package-manager/.styleci.yml | 14 +++ extensions/package-manager/composer.json | 28 +++++- extensions/package-manager/js/.gitignore | 9 ++ extensions/package-manager/js/admin.js | 1 - extensions/package-manager/js/admin.ts | 1 + extensions/package-manager/js/package.json | 24 +++-- extensions/package-manager/js/tsconfig.json | 26 +++--- .../tests/integration/SetupComposer.php | 2 +- .../tests/phpunit.integration.xml | 3 +- 15 files changed, 147 insertions(+), 212 deletions(-) create mode 100644 extensions/package-manager/.github/workflows/backend.yml create mode 100755 extensions/package-manager/.github/workflows/frontend.yml delete mode 100755 extensions/package-manager/.github/workflows/js.yml delete mode 100755 extensions/package-manager/.github/workflows/test.yml create mode 100644 extensions/package-manager/.styleci.yml create mode 100644 extensions/package-manager/js/.gitignore delete mode 100755 extensions/package-manager/js/admin.js create mode 100644 extensions/package-manager/js/admin.ts diff --git a/extensions/package-manager/.gitattributes b/extensions/package-manager/.gitattributes index 67d307d04..b9a08e27d 100644 --- a/extensions/package-manager/.gitattributes +++ b/extensions/package-manager/.gitattributes @@ -1,5 +1,19 @@ -js/src export-ignore -.git* export-ignore +.gitattributes export-ignore +.gitignore export-ignore +.gitmodules export-ignore +.github export-ignore +.travis export-ignore +.travis.yml export-ignore +.editorconfig export-ignore +.styleci.yml export-ignore -js/dist/*.js -diff -tests/* +phpunit.xml export-ignore +tests export-ignore + +js/dist/* -diff +js/dist/* linguist-generated +js/dist-typings/* linguist-generated +js/yarn.lock -diff +js/package-lock.json -diff + +* text=auto eol=lf diff --git a/extensions/package-manager/.github/workflows/backend.yml b/extensions/package-manager/.github/workflows/backend.yml new file mode 100644 index 000000000..eaf8723ad --- /dev/null +++ b/extensions/package-manager/.github/workflows/backend.yml @@ -0,0 +1,15 @@ +name: Package Manager PHP + +on: [workflow_dispatch, push, pull_request] + +# The reusable workflow definitions will be moved to the `flarum/framework` repo soon. +# This will break your current script. +# When this happens, run `flarum-cli audit infra --fix` to update your infrastructure. + +jobs: + run: + uses: flarum/.github/.github/workflows/REUSABLE_backend.yml@main + with: + enable_backend_testing: true + + backend_directory: . \ No newline at end of file diff --git a/extensions/package-manager/.github/workflows/frontend.yml b/extensions/package-manager/.github/workflows/frontend.yml new file mode 100755 index 000000000..6683d6271 --- /dev/null +++ b/extensions/package-manager/.github/workflows/frontend.yml @@ -0,0 +1,23 @@ +name: Package Manager JS + +on: [workflow_dispatch, push, pull_request] + +# The reusable workflow definitions will be moved to the `flarum/framework` repo soon. +# This will break your current script. +# When this happens, run `flarum-cli audit infra --fix` to update your infrastructure. + +jobs: + run: + uses: flarum/.github/.github/workflows/REUSABLE_frontend.yml@as/support-npm-yarn + with: + enable_bundlewatch: false + enable_prettier: true + enable_typescript: true + + frontend_directory: ./js + backend_directory: . + package_manager: yarn + main_git_branch: main + + secrets: + bundlewatch_github_token: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }} diff --git a/extensions/package-manager/.github/workflows/js.yml b/extensions/package-manager/.github/workflows/js.yml deleted file mode 100755 index 84e1aa42c..000000000 --- a/extensions/package-manager/.github/workflows/js.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: JS - -on: [workflow_dispatch, push, pull_request] - -env: - NODE_VERSION: 16 - -jobs: - prettier: - name: Prettier - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - working-directory: ./js - - - name: Check JS formatting - run: yarn run format-check - working-directory: ./js - - build-prod: - name: Build and commit - runs-on: ubuntu-latest - needs: [prettier] - - # Only commit JS on push to master branch - # Remember to change in `build-test` job too - if: github.ref == 'refs/heads/<%= mainGitBranch %>' && github.event_name == 'push' - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - # Our action will install npm, cd into `./js`, run `npm run build` and - # `npm run build-typings`, then commit and upload any changes - - name: Build production JS - uses: flarum/action-build@2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - build_script: build - package_manager: yarn - # typings_script: build-typings - - build-test: - name: Test build - runs-on: ubuntu-latest - needs: [prettier] - - # Inverse check of `build-prod` - # Remember to change in `build-prod` job too - if: github.ref != 'refs/heads/<%= mainGitBranch %>' || github.event_name != 'push' - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - # Our action will install npm, cd into `./js`, run `npm run build` and - # `npm run build-typings`, then commit and upload any changes - - name: Build production JS - uses: flarum/action-build@2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - build_script: build - package_manager: yarn - # typings_script: build-typings - do_not_commit: true diff --git a/extensions/package-manager/.github/workflows/test.yml b/extensions/package-manager/.github/workflows/test.yml deleted file mode 100755 index ac322a07c..000000000 --- a/extensions/package-manager/.github/workflows/test.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: Tests - -on: [push, pull_request] - -jobs: - test: - runs-on: ubuntu-latest - - strategy: - matrix: - php: [7.3, 7.4, '8.0', 8.1] - service: ['mysql:5.7', mariadb] - prefix: ['', flarum_] - - include: - - service: 'mysql:5.7' - db: MySQL - - service: mariadb - db: MariaDB - - prefix: flarum_ - prefixStr: (prefix) - - exclude: - - php: 7.3 - service: 'mysql:5.7' - prefix: flarum_ - - php: 7.3 - service: mariadb - prefix: flarum_ - - php: 8.0 - service: 'mysql:5.7' - prefix: flarum_ - - php: 8.0 - service: mariadb - prefix: flarum_ - - php: 8.1 - service: 'mysql:5.7' - prefix: flarum_ - - php: 8.1 - service: mariadb - prefix: flarum_ - - services: - mysql: - image: ${{ matrix.service }} - ports: - - 13306:3306 - - name: 'PHP ${{ matrix.php }} / ${{ matrix.db }} ${{ matrix.prefixStr }}' - - steps: - - uses: actions/checkout@master - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - coverage: xdebug - extensions: curl, dom, gd, json, mbstring, openssl, pdo_mysql, tokenizer, zip - tools: phpunit, composer:v2 - - # The authentication alter is necessary because newer mysql versions use the `caching_sha2_password` driver, - # which isn't supported prior to PHP7.4 - # When we drop support for PHP7.3, we should remove this from the setup. - - name: Create MySQL Database - run: | - sudo systemctl start mysql - mysql -uroot -proot -e 'CREATE DATABASE flarum_test;' --port 13306 - mysql -uroot -proot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';" --port 13306 - - - name: Install Composer dependencies - run: composer install - - - name: Setup Composer tests - run: composer test:setup - env: - DB_PORT: 13306 - DB_PASSWORD: root - DB_PREFIX: ${{ matrix.prefix }} - FLARUM_TEST_TMP_DIR_LOCAL: tests/tmp - - - name: Run Composer tests - run: composer test - env: - COMPOSER_PROCESS_TIMEOUT: 600 diff --git a/extensions/package-manager/.gitignore b/extensions/package-manager/.gitignore index cb0813cde..4ebb168a0 100755 --- a/extensions/package-manager/.gitignore +++ b/extensions/package-manager/.gitignore @@ -1,5 +1,12 @@ -js/node_modules -vendor/ +/vendor composer.lock -tests/tmp/ -.phpunit.result.cache +composer.phar + +.DS_Store +Thumbs.db +tests/.phpunit.result.cache +/tests/integration/tmp +.vagrant +.idea/* +.vscode +js/coverage-ts diff --git a/extensions/package-manager/.styleci.yml b/extensions/package-manager/.styleci.yml new file mode 100644 index 000000000..8806a5402 --- /dev/null +++ b/extensions/package-manager/.styleci.yml @@ -0,0 +1,14 @@ +preset: recommended + +enabled: + - logical_not_operators_with_successor_space + +disabled: + - align_double_arrow + - blank_line_after_opening_tag + - multiline_array_trailing_comma + - new_with_braces + - phpdoc_align + - phpdoc_order + - phpdoc_separation + - phpdoc_types diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json index d276c8288..7824630ed 100755 --- a/extensions/package-manager/composer.json +++ b/extensions/package-manager/composer.json @@ -2,7 +2,11 @@ "name": "flarum/package-manager", "description": "A Flarum Package Manager.", "keywords": [ - "extensions", "composer", "packages", "manager", "updater" + "extensions", + "composer", + "packages", + "manager", + "updater" ], "type": "flarum-extension", "license": "MIT", @@ -22,7 +26,6 @@ "composer/composer": "^2.0" }, "require-dev": { - "flarum/core": "dev-master", "flarum/testing": "^1.0.0", "flarum/tags": "*" }, @@ -34,6 +37,23 @@ "backgroundColor": "#117187", "color": "#fff" } + }, + "flarum-cli": { + "modules": { + "admin": true, + "forum": false, + "js": true, + "jsCommon": false, + "css": true, + "gitConf": true, + "githubActions": true, + "prettier": true, + "typescript": true, + "bundlewatch": false, + "backendTesting": true, + "editorConfig": true, + "styleci": true + } } }, "autoload": { @@ -63,5 +83,7 @@ "test:unit": "Runs all unit tests.", "test:integration": "Runs all integration tests.", "test:setup": "Sets up a database for use with integration tests. Execute this only once." - } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/extensions/package-manager/js/.gitignore b/extensions/package-manager/js/.gitignore new file mode 100644 index 000000000..adc90f312 --- /dev/null +++ b/extensions/package-manager/js/.gitignore @@ -0,0 +1,9 @@ +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +node_modules diff --git a/extensions/package-manager/js/admin.js b/extensions/package-manager/js/admin.js deleted file mode 100755 index 13dc041ce..000000000 --- a/extensions/package-manager/js/admin.js +++ /dev/null @@ -1 +0,0 @@ -export * from './src/admin'; \ No newline at end of file diff --git a/extensions/package-manager/js/admin.ts b/extensions/package-manager/js/admin.ts new file mode 100644 index 000000000..3e69ff3b9 --- /dev/null +++ b/extensions/package-manager/js/admin.ts @@ -0,0 +1 @@ +export * from './src/admin'; diff --git a/extensions/package-manager/js/package.json b/extensions/package-manager/js/package.json index 8755d76b6..01ad726df 100755 --- a/extensions/package-manager/js/package.json +++ b/extensions/package-manager/js/package.json @@ -3,20 +3,26 @@ "version": "0.0.0", "private": true, "prettier": "@flarum/prettier-config", - "dependencies": { - "@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" - }, "devDependencies": { - "prettier": "^2.3.0" + "prettier": "^2.5.1", + "flarum-webpack-config": "^2.0.0", + "webpack": "^5.65.0", + "webpack-cli": "^4.9.1", + "@flarum/prettier-config": "^1.0.0", + "flarum-tsconfig": "^1.0.2", + "typescript": "^4.5.4", + "typescript-coverage-report": "^0.6.1" }, "scripts": { "dev": "webpack --mode development --watch", "build": "webpack --mode production", "format": "prettier --write src", - "format-check": "prettier --check src" + "format-check": "prettier --check src", + "ci": "yarn install --immutable --immutable-cache", + "analyze": "cross-env ANALYZER=true yarn run build", + "clean-typings": "npx rimraf dist-typings && mkdir dist-typings", + "build-typings": "yarn run clean-typings && tsc && [ -e src/@types ] && cp -r src/@types dist-typings/@types", + "check-typings": "tsc --noEmit --emitDeclarationOnly false", + "check-typings-coverage": "typescript-coverage-report" } } diff --git a/extensions/package-manager/js/tsconfig.json b/extensions/package-manager/js/tsconfig.json index a60a30754..ee0d5ef5a 100755 --- a/extensions/package-manager/js/tsconfig.json +++ b/extensions/package-manager/js/tsconfig.json @@ -1,16 +1,16 @@ { - // Use Flarum's tsconfig as a starting point - "extends": "flarum-tsconfig", - // This will match all .ts, .tsx, .d.ts, .js, .jsx files in your `src` folder - // and also tells your Typescript server to read core's global typings for - // access to `dayjs` and `$` in the global namespace. - "include": ["src/**/*", "../vendor/flarum/core/js/dist-typings/@types/**/*"], - "compilerOptions": { - // This will output typings to `dist-typings` - "declarationDir": "./dist-typings", - "baseUrl": ".", - "paths": { - "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"] - } + // Use Flarum's tsconfig as a starting point + "extends": "flarum-tsconfig", + // This will match all .ts, .tsx, .d.ts, .js, .jsx files in your `src` folder + // and also tells your Typescript server to read core's global typings for + // access to `dayjs` and `$` in the global namespace. + "include": ["src/**/*", "../vendor/flarum/core/js/dist-typings/@types/**/*", "@types/**/*"], + "compilerOptions": { + // This will output typings to `dist-typings` + "declarationDir": "./dist-typings", + "baseUrl": ".", + "paths": { + "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"] } + } } diff --git a/extensions/package-manager/tests/integration/SetupComposer.php b/extensions/package-manager/tests/integration/SetupComposer.php index 5112e9912..9a1080ce4 100644 --- a/extensions/package-manager/tests/integration/SetupComposer.php +++ b/extensions/package-manager/tests/integration/SetupComposer.php @@ -28,7 +28,7 @@ class SetupComposer 'repositories' => [ [ 'type' => 'path', - 'url' => __DIR__.'/../tmp/packages/*', + 'url' => __DIR__.'/tmp/packages/*', ] ] ]; diff --git a/extensions/package-manager/tests/phpunit.integration.xml b/extensions/package-manager/tests/phpunit.integration.xml index 4602db3fd..2d2b64c39 100644 --- a/extensions/package-manager/tests/phpunit.integration.xml +++ b/extensions/package-manager/tests/phpunit.integration.xml @@ -19,9 +19,10 @@ ./integration + ./integration/tmp - + From 919ba129f47ab94ab673fd9c27d1baaa100b930b Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 24 Jan 2022 01:28:34 -0500 Subject: [PATCH 45/51] fix: allow path repos Temporarily configure cwd while running composer commands so that path repositories can be resolved properly. Fixes https://github.com/flarum/package-manager/issues/6 --- .../src/Composer/ComposerAdapter.php | 13 ++++++++++++- .../src/PackageManagerServiceProvider.php | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/extensions/package-manager/src/Composer/ComposerAdapter.php b/extensions/package-manager/src/Composer/ComposerAdapter.php index 5403b90d2..86a116057 100644 --- a/extensions/package-manager/src/Composer/ComposerAdapter.php +++ b/extensions/package-manager/src/Composer/ComposerAdapter.php @@ -10,6 +10,7 @@ namespace Flarum\PackageManager\Composer; use Composer\Console\Application; +use Flarum\Foundation\Paths; use Flarum\PackageManager\OutputLogger; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\BufferedOutput; @@ -34,10 +35,16 @@ class ComposerAdapter */ private $output; - public function __construct(Application $application, OutputLogger $logger) + /** + * @var Paths + */ + private $paths; + + public function __construct(Application $application, OutputLogger $logger, Paths $paths) { $this->application = $application; $this->logger = $logger; + $this->paths = $paths; $this->output = new BufferedOutput(); } @@ -45,7 +52,11 @@ class ComposerAdapter { $this->application->resetComposer(); + // This hack is necessary so that relative path repositories are resolved properly. + $currDir = getcwd(); + chdir($this->paths->base); $exitCode = $this->application->run($input, $this->output); + chdir($currDir); $outputContents = $this->output->fetch(); diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 630bc9d53..1269f4683 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -50,7 +50,7 @@ class PackageManagerServiceProvider extends AbstractServiceProvider @ini_set('memory_limit', '1G'); @set_time_limit(5 * 60); - return new ComposerAdapter($composer, $container->make(OutputLogger::class)); + return new ComposerAdapter($composer, $container->make(OutputLogger::class), $container->make(Paths::class)); }); $this->container->alias(ComposerAdapter::class, 'flarum.composer'); From 66be0ba578c219473b8b2e2a315f6f0bb0d5347a Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 24 Jan 2022 01:28:53 -0500 Subject: [PATCH 46/51] chore: bump yarn lock --- extensions/package-manager/js/yarn.lock | 3013 +++++++---------------- 1 file changed, 858 insertions(+), 2155 deletions(-) diff --git a/extensions/package-manager/js/yarn.lock b/extensions/package-manager/js/yarn.lock index 0e6bf7448..8a43586c4 100755 --- a/extensions/package-manager/js/yarn.lock +++ b/extensions/package-manager/js/yarn.lock @@ -933,6 +933,13 @@ "@babel/helper-validator-option" "^7.14.5" "@babel/plugin-transform-typescript" "^7.16.0" +"@babel/runtime@^7.1.2": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.14.0", "@babel/runtime@^7.8.4": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" @@ -972,16 +979,96 @@ "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" +"@discoveryjs/json-ext@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== + "@flarum/prettier-config@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@flarum/prettier-config/-/prettier-config-1.0.0.tgz#3ce431fa376994e8133e313dbe7c4ee3d3fe1a39" integrity sha512-3/AcliIi5jPt4i7COb5hsLv6hm4EeXT9yI9I2EuEvhPi2QR+O9Y/8wrqRuO5mDkRzCIhUY+mjIL/f9770Zwfqg== +"@hypnosphi/create-react-context@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz#f8bfebdc7665f5d426cba3753e0e9c7d3154d7c6" + integrity sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A== + dependencies: + gud "^1.0.0" + warning "^4.0.3" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@polka/url@^1.0.0-next.20": 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== +"@semantic-ui-react/event-stack@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@semantic-ui-react/event-stack/-/event-stack-3.1.2.tgz#14fac9796695aa3967962d94ea9733a85325f9c4" + integrity sha512-Yd0Qf7lPCIjzJ9bZYfurlNu2RDXT6KKSyubHfYK3WjRauhxCsq6Fk2LMRI9DEvShoEU+AsLSv3NGkqXAcVp0zg== + dependencies: + exenv "^1.2.2" + prop-types "^15.6.2" + +"@stardust-ui/react-component-event-listener@~0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@stardust-ui/react-component-event-listener/-/react-component-event-listener-0.38.0.tgz#1787faded94b40ad41226e6289baf13e701c6e7f" + integrity sha512-sIP/e0dyOrrlb8K7KWumfMxj/gAifswTBC4o68Aa+C/GA73ccRp/6W1VlHvF/dlOR4KLsA+5SKnhjH36xzPsWg== + dependencies: + "@babel/runtime" "^7.1.2" + prop-types "^15.7.2" + +"@stardust-ui/react-component-ref@~0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@stardust-ui/react-component-ref/-/react-component-ref-0.38.0.tgz#52d555f2d5edd213c923c93a106f7de940e427ef" + integrity sha512-xjs6WnvJVueSIXMWw0C3oWIgAPpcD03qw43oGOjUXqFktvpNkB73JoKIhS4sCrtQxBdct75qqr4ZL6JiyPcESw== + dependencies: + "@babel/runtime" "^7.1.2" + prop-types "^15.7.2" + react-is "^16.6.3" + +"@types/eslint-scope@^3.7.0": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + "@types/jquery@^3.5.5": version "3.5.8" resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.8.tgz#83bfbcdf4e625c5471590f92703c06aadb052a09" @@ -989,7 +1076,7 @@ dependencies: "@types/sizzle" "*" -"@types/json-schema@^7.0.5": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== @@ -999,6 +1086,11 @@ resolved "https://registry.yarnpkg.com/@types/mithril/-/mithril-2.0.8.tgz#b7b6f58bdc7b244802f5ff919805e947d8e45b4e" integrity sha512-QzVV70DqUhWfLFpMFDBI9rRxtzeUUpbhiFDpUJYSV92AePgl+Qfficgv2MOb1Ceb+lBOQU8+L+Hjf2UielQjEw== +"@types/node@*": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.10.tgz#616f16e9d3a2a3d618136b1be244315d95bd7cab" + integrity sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog== + "@types/sizzle@*": version "2.3.3" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" @@ -1009,150 +1101,143 @@ resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: - "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" + "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== +"@webpack-cli/configtest@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.0.tgz#8342bef0badfb7dfd3b576f2574ab80c725be043" + integrity sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg== + +"@webpack-cli/info@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.0.tgz#b9179c3227ab09cbbb149aa733475fcf99430223" + integrity sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2" + integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -1164,32 +1249,32 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + acorn-walk@^8.0.0: 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" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - acorn@^8.0.4: 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" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== +acorn@^8.4.1: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1199,12 +1284,12 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1218,80 +1303,6 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - babel-loader@^8.2.2: version "8.2.3" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" @@ -1338,61 +1349,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1401,94 +1362,23 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@~3.0.2: +braces@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== +browserslist@^4.14.5: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" browserslist@^4.17.5, browserslist@^4.17.6: version "4.18.1" @@ -1506,62 +1396,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0: +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -1569,17 +1404,17 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.2" -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - 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: +caniuse-lite@^1.0.30001286: + version "1.0.30001301" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz#ebc9086026534cab0dab99425d9c3b4425e5f450" + integrity sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA== + +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1588,7 +1423,7 @@ chalk@^2.0.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1596,84 +1431,33 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" +classnames@^2.2.6: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +cli-table3@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" + integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" + string-width "^4.2.0" + optionalDependencies: + colors "1.4.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" color-convert@^1.9.0: version "1.9.3" @@ -1699,12 +1483,27 @@ 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@^2.0.14: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +colors@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + 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@^7.2.0: +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^7.0.0, 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== @@ -1714,36 +1513,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" @@ -1751,23 +1525,6 @@ convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - 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" @@ -1776,87 +1533,20 @@ core-js-compat@^3.18.0, core-js-compat@^3.19.1: browserslist "^4.17.6" semver "7.0.0" -core-util-is@~1.0.0: - 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" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" dayjs@^1.10.4: 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" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^4.1.0, debug@^4.1.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -1864,15 +1554,17 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +deep-equal@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" define-properties@^1.1.3: version "1.1.3" @@ -1881,120 +1573,48 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - 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" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" +electron-to-chromium@^1.4.17: + version "1.4.51" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.51.tgz#a432f5a5d983ace79278a33057300cf949627e63" + integrity sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== +enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== dependencies: - once "^1.4.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== escalade@^3.1.1: version "3.1.1" @@ -2006,15 +1626,15 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -esrecurse@^4.1.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -2036,97 +1656,63 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -events@^3.0.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +exenv@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@3: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + reusify "^1.0.4" fill-range@^7.0.1: version "7.0.1" @@ -2135,15 +1721,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" @@ -2153,13 +1730,6 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -2168,17 +1738,7 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -flarum-tsconfig@^1.0.0: +flarum-tsconfig@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flarum-tsconfig/-/flarum-tsconfig-1.0.2.tgz#1dda4d867a1dddc627c2afbc74af12d602371ecd" integrity sha512-RUaN7D6noLK9vY1F86NIc+IlIP1YAA3bJ4jGR5pIm8UxvLBLW8qrAHzIosuQJgvnge7VgTA5c2LoNefUK/9EiQ== @@ -2188,10 +1748,10 @@ flarum-tsconfig@^1.0.0: "@types/throttle-debounce" "^2.1.0" dayjs "^1.10.4" -flarum-webpack-config@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/flarum-webpack-config/-/flarum-webpack-config-1.0.0.tgz#daf76829d1a71d1af61b5ab6c98e6c61aa6f1b1a" - integrity sha512-T+olIRaIVetPJMP8xlbMnp7tzT/d/ZWI6Mr7twRBdsKbKO7dpKS2+fjnKL6QqNYgOLElT/TWrRSbTp7EiL1yXA== +flarum-webpack-config@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flarum-webpack-config/-/flarum-webpack-config-2.0.0.tgz#a64d0563aa80773cf6de40891035ad7c0798855e" + integrity sha512-IdH8SmPzrha1RYIx0VDowKu8Wbxb1X5GwpJ6McF6tWfmIEBOn0z2C2MKh3807cxumBx4DP3YvZCcO5Il8zJGhA== dependencies: "@babel/core" "^7.14.3" "@babel/plugin-proposal-class-properties" "^7.13.0" @@ -2207,62 +1767,11 @@ flarum-webpack-config@^1.0.0: typescript "^4.3.2" webpack-bundle-analyzer "^4.4.2" -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2273,11 +1782,6 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - get-intrinsic@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -2287,27 +1791,24 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@^7.1.3, glob@^7.1.4: +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -2319,52 +1820,26 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: +graceful-fs@^4.1.2: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== +graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -2382,41 +1857,17 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1: +has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: +has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + has-symbols "^1.0.2" has@^1.0.3: version "1.0.3" @@ -2425,71 +1876,18 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" inflight@^1.0.4: version "1.0.6" @@ -2499,63 +1897,23 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-core-module@^2.2.0: version "2.8.0" @@ -2564,126 +1922,82 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= +is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: - kind-of "^3.0.2" + has "^1.0.3" -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: - kind-of "^6.0.0" + has-tostringtag "^1.0.0" -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.1: 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" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-regex@^1.0.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -js-tokens@^4.0.0: +jest-worker@^27.4.1: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" + integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -2722,36 +2036,22 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" +keyboard-key@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keyboard-key/-/keyboard-key-1.1.0.tgz#6f2e8e37fa11475bb1f1d65d5174f1b35653f5b7" + integrity sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ== -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -2760,14 +2060,6 @@ loader-utils@^1.2.3, loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -2780,25 +2072,17 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash@^4.17.20: +lodash@^4.17.15, lodash@^4.17.20: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: - yallist "^3.0.2" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" + js-tokens "^3.0.0 || ^4.0.0" make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" @@ -2807,86 +2091,47 @@ make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" + braces "^3.0.1" + picomatch "^2.2.3" -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== +mime-types@^2.1.27: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" + mime-db "1.51.0" mime@^2.3.1: 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" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: +minimatch@3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2898,163 +2143,56 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +ncp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -neo-async@^2.5.0, neo-async@^2.6.1: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - 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" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@3: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" + call-bind "^1.0.2" + define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - object.assign@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" @@ -3065,44 +2203,32 @@ object.assign@^4.1.0: has-symbols "^1.0.1" object-keys "^1.1.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -3115,56 +2241,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -3175,200 +2251,112 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - 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" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +popper.js@^1.14.4: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== -prettier@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== +prettier@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== +prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== +react-dom@^16.13.1: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" + integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" +react-is@^16.13.1, react-is@^16.6.3, react-is@^16.8.6: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +react-popper@^1.3.4: + version "1.3.11" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.11.tgz#a2cc3f0a67b75b66cfa62d2c409f9dd1fcc71ffd" + integrity sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg== dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + "@babel/runtime" "^7.1.2" + "@hypnosphi/create-react-context" "^0.3.1" + deep-equal "^1.1.1" + popper.js "^1.14.4" + prop-types "^15.6.1" + typed-styles "^0.0.7" + warning "^4.0.2" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +react@^16.13.1: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== dependencies: - picomatch "^2.2.1" + resolve "^1.9.0" regenerate-unicode-properties@^9.0.0: version "9.0.0" @@ -3394,13 +2382,13 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" + call-bind "^1.0.2" + define-properties "^1.1.3" regexpu-core@^4.7.1: version "4.8.0" @@ -3426,55 +2414,17 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: +resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve@^1.14.2: version "1.20.0" @@ -3484,63 +2434,51 @@ resolve@^1.14.2: is-core-module "^2.2.0" path-parse "^1.0.6" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +resolve@^1.9.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" + queue-microtask "^1.2.2" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== dependencies: - ret "~0.1.10" - -safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" + loose-envify "^1.1.0" + object-assign "^4.1.1" schema-utils@^2.6.5: version "2.7.1" @@ -3551,67 +2489,77 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +semantic-ui-react@^0.88.2: + version "0.88.2" + resolved "https://registry.yarnpkg.com/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz#3d4b54f8b799769b412435c8531475fd34aa4149" + integrity sha512-+02kN2z8PuA/cMdvDUsHhbJmBzxxgOXVHMFr9XK7zGb0wkW9A6OPQMFokWz7ozlVtKjN6r7zsb+Qvjk/qq1OWw== + dependencies: + "@babel/runtime" "^7.1.2" + "@semantic-ui-react/event-stack" "^3.1.0" + "@stardust-ui/react-component-event-listener" "~0.38.0" + "@stardust-ui/react-component-ref" "~0.38.0" + classnames "^2.2.6" + keyboard-key "^1.0.4" + lodash "^4.17.15" + prop-types "^15.7.2" + react-is "^16.8.6" + react-popper "^1.3.4" + shallowequal "^1.1.0" + semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0: +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" + shebang-regex "^3.0.0" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +signal-exit@^3.0.3: + version "3.0.6" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== sirv@^1.0.7: version "1.0.18" @@ -3622,53 +2570,7 @@ sirv@^1.0.7: mime "^2.3.1" totalist "^1.0.0" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: +source-map-support@~0.5.20: 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== @@ -3676,104 +2578,41 @@ source-map-support@~0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" +source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== +string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - figgy-pudding "^3.5.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" + ansi-regex "^5.0.1" -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== supports-color@^5.3.0: version "5.5.0" @@ -3782,13 +2621,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -3796,75 +2628,48 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + has-flag "^4.0.0" -terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" + integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== + dependencies: + jest-worker "^27.4.1" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^5.7.2: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== dependencies: commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + source-map "~0.7.2" + source-map-support "~0.5.20" to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3872,36 +2677,69 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - totalist@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +"tslib@1 || 2": + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@3: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-coverage-core@^2.17.2: + version "2.19.1" + resolved "https://registry.yarnpkg.com/type-coverage-core/-/type-coverage-core-2.19.1.tgz#5d6298877c391dae777ef97076472d0bc8d4301e" + integrity sha512-C3ATyCb+JPwqphRsSL8jD0fcspWtRkFz+ZT41yNT66JW2fVeLcKnA36eNX92L5G/UydqXzM31aD9Nhy0RbPLMw== + dependencies: + fast-glob "3" + minimatch "3" + normalize-path "3" + tslib "1 || 2" + tsutils "3" + +typed-styles@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" + integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== + +typescript-coverage-report@^0.6.1: + version "0.6.4" + resolved "https://registry.yarnpkg.com/typescript-coverage-report/-/typescript-coverage-report-0.6.4.tgz#3a7a7724c0f27de50d2a0708c7b7b7088bed2055" + integrity sha512-G+0OFYxwN5oRbORlU1nKYtO00G567lcl4+nbg3MU3Y9ayFnh677dMHmAL4JGP/4Cb1IBN5h/DUQDr/z9X+9lag== + dependencies: + chalk "^4.0.0" + cli-table3 "^0.6.1" + commander "^5.0.0" + ncp "^2.0.0" + react "^16.13.1" + react-dom "^16.13.1" + rimraf "^3.0.2" + semantic-ui-react "^0.88.2" + type-coverage-core "^2.17.2" typescript@^4.3.2: version "4.5.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== +typescript@^4.5.4: + version "4.5.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" + integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== + 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" @@ -3925,43 +2763,6 @@ unicode-property-aliases-ecmascript@^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" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -3969,70 +2770,20 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= +warning@^4.0.2, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== dependencies: - punycode "1.3.2" - querystring "0.2.0" + loose-envify "^1.0.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -v8-compile-cache@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" webpack-bundle-analyzer@^4.4.2: version "4.5.0" @@ -4049,87 +2800,78 @@ webpack-bundle-analyzer@^4.4.2: sirv "^1.0.7" ws "^7.3.1" -webpack-cli@^3.0.7: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== +webpack-cli@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3" + integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ== dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.1.0" + "@webpack-cli/info" "^1.4.0" + "@webpack-cli/serve" "^1.6.0" + colorette "^2.0.14" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" + clone-deep "^4.0.1" + wildcard "^2.0.0" -webpack@^4.26.0: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.65.0: + version "5.67.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.67.0.tgz#cb43ca2aad5f7cc81c4cd36b626e6b819805dbfd" + integrity sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" + enhanced-resolve "^5.8.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.3.1" + webpack-sources "^3.2.3" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== wrappy@1: version "1.0.2" @@ -4140,42 +2882,3 @@ ws@^7.3.1: 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" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" From cff8b012273053f35060a64d14c300b2633ab518 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Tue, 25 Jan 2022 18:02:27 -0500 Subject: [PATCH 47/51] chore: exclude PHP 8.1 tests These prompt deprecation warnings that break CI. We need to fix those, but that's a problem for a later time. --- extensions/package-manager/.github/workflows/backend.yml | 6 ++++-- extensions/package-manager/composer.json | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/extensions/package-manager/.github/workflows/backend.yml b/extensions/package-manager/.github/workflows/backend.yml index eaf8723ad..dfca968ac 100644 --- a/extensions/package-manager/.github/workflows/backend.yml +++ b/extensions/package-manager/.github/workflows/backend.yml @@ -8,8 +8,10 @@ on: [workflow_dispatch, push, pull_request] jobs: run: - uses: flarum/.github/.github/workflows/REUSABLE_backend.yml@main + uses: flarum/.github/.github/workflows/REUSABLE_backend.yml@as/support-npm-yarn with: enable_backend_testing: true - backend_directory: . \ No newline at end of file + backend_directory: . + + php_versions: '["7.4", "8.0"]' diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json index 7824630ed..d37998a67 100755 --- a/extensions/package-manager/composer.json +++ b/extensions/package-manager/composer.json @@ -39,6 +39,7 @@ } }, "flarum-cli": { + "exludeScaffolding": [".github/workflows/backend.yml"], "modules": { "admin": true, "forum": false, From 3b8b491bcedca0048e480a78685b9d3208ff239f Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Tue, 25 Jan 2022 18:06:36 -0500 Subject: [PATCH 48/51] fix: suppress xdebug warnings --- extensions/package-manager/src/PackageManagerServiceProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/package-manager/src/PackageManagerServiceProvider.php b/extensions/package-manager/src/PackageManagerServiceProvider.php index 1269f4683..9b007a8ab 100755 --- a/extensions/package-manager/src/PackageManagerServiceProvider.php +++ b/extensions/package-manager/src/PackageManagerServiceProvider.php @@ -42,6 +42,7 @@ class PackageManagerServiceProvider extends AbstractServiceProvider putenv("COMPOSER_HOME={$paths->storage}/.composer"); putenv("COMPOSER={$paths->base}/composer.json"); + putenv("COMPOSER_DISABLE_XDEBUG_WARN=1"); Config::$defaultConfig['vendor-dir'] = $paths->vendor; // When running simple require, update and remove commands on packages, From 7f3c09c37e41766ffe77bebb611d1699da296b64 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Tue, 25 Jan 2022 21:17:18 -0500 Subject: [PATCH 49/51] chore: add scaffolding exclude config This ensures `flarum-cli audit infra --fix` works. --- extensions/package-manager/composer.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json index d37998a67..3386766ca 100755 --- a/extensions/package-manager/composer.json +++ b/extensions/package-manager/composer.json @@ -39,7 +39,17 @@ } }, "flarum-cli": { - "exludeScaffolding": [".github/workflows/backend.yml"], + "excludeScaffolding": [ + ".github/workflows/backend.yml", + "js/src/admin/index.ts", + "tests/phpunit.integration.xml", + "tests/integration/setup.php" + ], + "excludeScaffoldingConfigKeys": { + "composer.json": [ + "scripts.test:setup" + ] + }, "modules": { "admin": true, "forum": false, From 350f2c173f1517778898954bddcb8348a06d1113 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Tue, 8 Feb 2022 17:29:54 -0500 Subject: [PATCH 50/51] fix: regenerate lockfile This should fix some JS build issues. --- extensions/package-manager/js/yarn.lock | 1540 +++++++++++------------ 1 file changed, 762 insertions(+), 778 deletions(-) mode change 100755 => 100644 extensions/package-manager/js/yarn.lock diff --git a/extensions/package-manager/js/yarn.lock b/extensions/package-manager/js/yarn.lock old mode 100755 new mode 100644 index 8a43586c4..5e3a79261 --- a/extensions/package-manager/js/yarn.lock +++ b/extensions/package-manager/js/yarn.lock @@ -2,97 +2,105 @@ # yarn lockfile v1 -"@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== +"@ampproject/remapping@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.0.tgz#72becdf17ee44b2d1ac5651fb12f1952c336fe23" + integrity sha512-d5RysTlJ7hmw5Tw4UxgxcY3lkMe92n8sXCcuLPAyIAHK6j8DefDwtGnVVDgOnv+RnEosulDJ9NPKQL27bDId0g== dependencies: - "@babel/highlight" "^7.16.0" + "@jridgewell/trace-mapping" "^0.3.0" -"@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/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" + integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== "@babel/core@^7.14.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" - integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337" + integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw== dependencies: - "@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" + "@ampproject/remapping" "^2.0.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.0" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" -"@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== +"@babel/generator@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" + integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.17.0" jsesc "^2.5.1" source-map "^0.5.0" -"@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== +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-validator-option" "^7.14.5" + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" browserslist "^4.17.5" semver "^6.3.0" -"@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== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" + integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== dependencies: - "@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-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" -"@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== +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - regexpu-core "^4.7.1" + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" -"@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== +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -103,101 +111,109 @@ resolve "^1.14.2" semver "^6.1.2" -"@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== +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== dependencies: - "@babel/types" "^7.16.0" + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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== +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: - "@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/types" "^7.16.7" -"@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== +"@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== dependencies: - "@babel/types" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" -"@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.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== +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-wrap-function" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@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.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== -"@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== +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== dependencies: - "@babel/types" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -206,199 +222,199 @@ dependencies: "@babel/types" "^7.16.0" -"@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== +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@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-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== -"@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-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@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== +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== dependencies: - "@babel/helper-function-name" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" -"@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== +"@babel/helpers@^7.17.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== dependencies: - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.3" - "@babel/types" "^7.16.0" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" -"@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== +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== dependencies: - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@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/parser@^7.16.7", "@babel/parser@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== -"@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== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + 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.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" -"@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== +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.16.4" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@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== +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" + integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@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== +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@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== +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@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== +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@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== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@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== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@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== +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@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== +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.0" + "@babel/plugin-transform-parameters" "^7.16.7" -"@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== +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@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== +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@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.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== +"@babel/plugin-proposal-private-methods@^7.13.0", "@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== dependencies: - "@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/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@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== +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -442,12 +458,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@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== +"@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -505,348 +521,350 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@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== +"@babel/plugin-syntax-typescript@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.16.0" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@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== +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== dependencies: - "@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.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@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== +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== dependencies: - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== dependencies: - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@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== +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" + integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== dependencies: - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@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== +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== dependencies: - "@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.15.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@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== +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== dependencies: - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" -"@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== +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-object-assign@^7.12.13": - 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== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz#5fe08d63dccfeb6a33aa2638faf98e5c584100f8" + integrity sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" -"@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== +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-react-display-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.0" + "@babel/plugin-transform-react-jsx" "^7.16.7" -"@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== +"@babel/plugin-transform-react-jsx@^7.14.3", "@babel/plugin-transform-react-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" + integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== dependencies: - "@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.16.0" - "@babel/types" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.16.7" -"@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== +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" + integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== dependencies: regenerator-transform "^0.14.2" -"@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== +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-runtime@^7.14.3": - 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== + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" + integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@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== +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@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== +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-typescript@^7.16.7": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.16.0" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" -"@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== +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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== +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/preset-env@^7.14.2": - 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== + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== dependencies: - "@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-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/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@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" @@ -861,44 +879,44 @@ "@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.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/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.8" babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.19.1" + core-js-compat "^3.20.2" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -913,70 +931,64 @@ esutils "^2.0.2" "@babel/preset-react@^7.13.13": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.0.tgz#f71d3e8dff5218478011df037fad52660ee6d82a" - integrity sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" + integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^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/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" "@babel/preset-typescript@^7.13.0": - 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.16.0" - -"@babel/runtime@^7.1.2": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" + integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.16.7" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.14.0", "@babel/runtime@^7.8.4": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.14.0", "@babel/runtime@^7.8.4": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== dependencies: - regenerator-runtime "^0.13.4" + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" -"@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== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@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.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" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" -"@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== +"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.4.4": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" "@discoveryjs/json-ext@^0.5.0": @@ -997,6 +1009,24 @@ gud "^1.0.0" warning "^4.0.3" +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" + integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.10" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186" + integrity sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.2.tgz#e051581782a770c30ba219634f2019241c5d3cde" + integrity sha512-9KzzH4kMjA2XmBRHfqG2/Vtl7s92l6uNDd0wW7frDE+EUvQFGqNXhWp0UGJjSkt3v2AYjzOZn1QO9XaTNJIt1Q== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1064,15 +1094,20 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.50": +"@types/estree@*": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/estree@^0.0.50": version "0.0.50" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== "@types/jquery@^3.5.5": - version "3.5.8" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.8.tgz#83bfbcdf4e625c5471590f92703c06aadb052a09" - integrity sha512-cXk6NwqjDYg+UI9p2l3x0YmPa4m7RrXqmbK4IpVVpRJiYXU/QTo+UZrn54qfE1+9Gao4qpYqUnxm5ZCy2FTXAw== + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.13.tgz#5482d3ee325d5862f77a91c09369ae0a5b082bf3" + integrity sha512-ZxJrup8nz/ZxcU0vantG+TPdboMhB24jad2uSap50zE7Q9rUeYlCF25kFMSmHR33qoeOgqcdHEp3roaookC0Sg== dependencies: "@types/sizzle" "*" @@ -1087,9 +1122,9 @@ integrity sha512-QzVV70DqUhWfLFpMFDBI9rRxtzeUUpbhiFDpUJYSV92AePgl+Qfficgv2MOb1Ceb+lBOQU8+L+Hjf2UielQjEw== "@types/node@*": - version "17.0.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.10.tgz#616f16e9d3a2a3d618136b1be244315d95bd7cab" - integrity sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog== + version "17.0.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.16.tgz#e3733f46797b9df9e853ca9f719c8a6f7b84cd26" + integrity sha512-ydLaGVfQOQ6hI1xK2A5nVh8bl0OGoIfYMxPWHqqYe9bTkWCfqiVvZoh2I/QF2sNSkZzZyROBoTefIEI+PB6iIA== "@types/sizzle@*": version "2.3.3" @@ -1222,22 +1257,22 @@ "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.0.tgz#8342bef0badfb7dfd3b576f2574ab80c725be043" - integrity sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg== +"@webpack-cli/configtest@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" + integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== -"@webpack-cli/info@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.0.tgz#b9179c3227ab09cbbb149aa733475fcf99430223" - integrity sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw== +"@webpack-cli/info@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" + integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== dependencies: envinfo "^7.7.3" -"@webpack-cli/serve@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2" - integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA== +"@webpack-cli/serve@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" + integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -1259,12 +1294,7 @@ acorn-walk@^8.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.0.4: - version "8.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== - -acorn@^8.4.1: +acorn@^8.0.4, acorn@^8.4.1: version "8.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -1321,28 +1351,28 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" 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== + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -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== +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" - core-js-compat "^3.18.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" 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== + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" balanced-match@^1.0.0: version "1.0.2" @@ -1369,7 +1399,7 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5: +browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.19.1: version "4.19.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== @@ -1380,17 +1410,6 @@ browserslist@^4.14.5: node-releases "^2.0.1" picocolors "^1.0.0" -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.30001280" - electron-to-chromium "^1.3.896" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -1404,15 +1423,10 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -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== - caniuse-lite@^1.0.30001286: - version "1.0.30001301" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz#ebc9086026534cab0dab99425d9c3b4425e5f450" - integrity sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA== + version "1.0.30001309" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz#e0ee78b9bec0704f67304b00ff3c5c0c768a9f62" + integrity sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA== chalk@^2.0.0: version "2.4.2" @@ -1525,12 +1539,12 @@ convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -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== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.0.tgz#bcc86aa5a589cee358e7a7fa0a4979d5a76c3885" + integrity sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A== dependencies: - browserslist "^4.17.6" + browserslist "^4.19.1" semver "7.0.0" cross-spawn@^7.0.3: @@ -1548,9 +1562,9 @@ dayjs@^1.10.4: integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== debug@^4.1.0, debug@^4.1.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -1578,15 +1592,10 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -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== - electron-to-chromium@^1.4.17: - version "1.4.51" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.51.tgz#a432f5a5d983ace79278a33057300cf949627e63" - integrity sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ== + version "1.4.67" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.67.tgz#699e59d6959d05f87865e12b3055bbcf492bbbee" + integrity sha512-A6a2jEPLueEDfb7kvh7/E94RKKnIb01qL+4I7RFxtajmo+G9F5Ei7HgY5PRbQ4RDrh6DGDW66P0hD5XI2nRAcg== emoji-regex@^8.0.0: version "8.0.0" @@ -1599,9 +1608,9 @@ emojis-list@^3.0.0: integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== enhanced-resolve@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== + version "5.9.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz#49ac24953ac8452ed8fed2ef1340fc8e043667ee" + integrity sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -1825,12 +1834,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.1.2: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== @@ -1915,13 +1919,6 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-core-module@^2.2.0: - 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" - is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" @@ -1988,10 +1985,10 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -jest-worker@^27.4.1: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" - integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -2121,20 +2118,15 @@ mime-types@^2.1.27: dependencies: mime-db "1.51.0" -mime@^2.3.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== dependencies: brace-expansion "^1.1.7" @@ -2143,6 +2135,11 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +mrmime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.0.tgz#14d387f0585a5233d291baba339b063752a2398b" + integrity sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -2159,9 +2156,9 @@ neo-async@^2.6.2: integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 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== + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== normalize-path@3: version "3.0.0" @@ -2256,7 +2253,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -2358,10 +2355,10 @@ rechoir@^0.7.0: dependencies: resolve "^1.9.0" -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== +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== dependencies: regenerate "^1.4.2" @@ -2390,27 +2387,27 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" -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== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -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== +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" @@ -2426,15 +2423,7 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.14.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^1.9.0: +resolve@^1.14.2, resolve@^1.9.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -2557,17 +2546,17 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== signal-exit@^3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== sirv@^1.0.7: - version "1.0.18" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.18.tgz#105fab52fb656ce8a2bebbf36b11052005952899" - integrity sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA== + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== dependencies: "@polka/url" "^1.0.0-next.20" - mime "^2.3.1" + mrmime "^1.0.0" totalist "^1.0.0" source-map-support@~0.5.20: @@ -2646,11 +2635,11 @@ tapable@^2.1.1, tapable@^2.2.0: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== terser-webpack-plugin@^5.1.3: - version "5.3.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" - integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== dependencies: - jest-worker "^27.4.1" + jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" source-map "^0.6.1" @@ -2700,9 +2689,9 @@ tsutils@3: tslib "^1.8.1" type-coverage-core@^2.17.2: - version "2.19.1" - resolved "https://registry.yarnpkg.com/type-coverage-core/-/type-coverage-core-2.19.1.tgz#5d6298877c391dae777ef97076472d0bc8d4301e" - integrity sha512-C3ATyCb+JPwqphRsSL8jD0fcspWtRkFz+ZT41yNT66JW2fVeLcKnA36eNX92L5G/UydqXzM31aD9Nhy0RbPLMw== + version "2.21.0" + resolved "https://registry.yarnpkg.com/type-coverage-core/-/type-coverage-core-2.21.0.tgz#30796802a53e212f9cc7f4c3e72053c65f690382" + integrity sha512-VNC7Ig0KAzpYjWvxQ1SaMufEqSm4GPSsdVaCWA5fRHSjSvkXbPVK+C6H0lIq2t8brkrvnXk7iDs9g4sjux6JQw== dependencies: fast-glob "3" minimatch "3" @@ -2730,12 +2719,7 @@ typescript-coverage-report@^0.6.1: semantic-ui-react "^0.88.2" type-coverage-core "^2.17.2" -typescript@^4.3.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" - integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== - -typescript@^4.5.4: +typescript@^4.3.2, typescript@^4.5.4: version "4.5.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== @@ -2801,14 +2785,14 @@ webpack-bundle-analyzer@^4.4.2: ws "^7.3.1" webpack-cli@^4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3" - integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ== + version "4.9.2" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" + integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.1.0" - "@webpack-cli/info" "^1.4.0" - "@webpack-cli/serve" "^1.6.0" + "@webpack-cli/configtest" "^1.1.1" + "@webpack-cli/info" "^1.4.1" + "@webpack-cli/serve" "^1.6.1" colorette "^2.0.14" commander "^7.0.0" execa "^5.0.0" @@ -2832,9 +2816,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.65.0: - version "5.67.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.67.0.tgz#cb43ca2aad5f7cc81c4cd36b626e6b819805dbfd" - integrity sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw== + version "5.68.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.68.0.tgz#a653a58ed44280062e47257f260117e4be90d560" + integrity sha512-zUcqaUO0772UuuW2bzaES2Zjlm/y3kRBQDVFVCge+s2Y8mwuUTdperGaAv65/NtRL/1zanpSJOq/MD8u61vo6g== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" @@ -2879,6 +2863,6 @@ wrappy@1: integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ws@^7.3.1: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== From 0beac940d7d5c7bcb7cdb057d1053999c9d4642e Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Wed, 23 Feb 2022 16:04:21 -0500 Subject: [PATCH 51/51] feat: add compiled dist-typings folder --- .../components/ExtensionItem.d.ts | 20 ++++++++ .../js/dist-typings/components/Installer.d.ts | 11 +++++ .../dist-typings/components/MajorUpdater.d.ts | 15 ++++++ .../js/dist-typings/components/Updater.d.ts | 47 +++++++++++++++++++ .../dist-typings/components/WhyNotModal.d.ts | 15 ++++++ .../js/dist-typings/index.d.ts | 1 + .../js/dist-typings/utils/errorHandler.d.ts | 1 + 7 files changed, 110 insertions(+) create mode 100644 extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts create mode 100644 extensions/package-manager/js/dist-typings/components/Installer.d.ts create mode 100644 extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts create mode 100644 extensions/package-manager/js/dist-typings/components/Updater.d.ts create mode 100644 extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts create mode 100644 extensions/package-manager/js/dist-typings/index.d.ts create mode 100644 extensions/package-manager/js/dist-typings/utils/errorHandler.d.ts diff --git a/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts b/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts new file mode 100644 index 000000000..c9297c734 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/ExtensionItem.d.ts @@ -0,0 +1,20 @@ +import Mithril from 'mithril'; +import Component, { ComponentAttrs } from 'flarum/common/Component'; +import { Extension as BaseExtension } from 'flarum/admin/AdminApplication'; +import { UpdatedPackage } from './Updater'; +export declare 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; + private version; +} diff --git a/extensions/package-manager/js/dist-typings/components/Installer.d.ts b/extensions/package-manager/js/dist-typings/components/Installer.d.ts new file mode 100644 index 000000000..2a2bf6bc3 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/Installer.d.ts @@ -0,0 +1,11 @@ +import type Mithril from 'mithril'; +import Component from 'flarum/common/Component'; +import Stream from 'flarum/common/utils/Stream'; +export default class Installer extends Component { + packageName: Stream; + isLoading: boolean; + oninit(vnode: Mithril.Vnode): void; + view(): Mithril.Children; + data(): any; + onsubmit(): void; +} diff --git a/extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts b/extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts new file mode 100644 index 000000000..326585b84 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/MajorUpdater.d.ts @@ -0,0 +1,15 @@ +import Component, { ComponentAttrs } from 'flarum/common/Component'; +import Mithril from 'mithril'; +import { UpdatedPackage, UpdateState } from './Updater'; +interface MajorUpdaterAttrs extends ComponentAttrs { + coreUpdate: UpdatedPackage; + updateState: UpdateState; +} +export default class MajorUpdater extends Component { + isLoading: string | null; + updateState: UpdateState; + oninit(vnode: Mithril.Vnode): void; + view(vnode: Mithril.Vnode): Mithril.Children; + update(dryRun: boolean): void; +} +export {}; diff --git a/extensions/package-manager/js/dist-typings/components/Updater.d.ts b/extensions/package-manager/js/dist-typings/components/Updater.d.ts new file mode 100644 index 000000000..1afac3239 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/Updater.d.ts @@ -0,0 +1,47 @@ +import Mithril from 'mithril'; +import Component from 'flarum/common/Component'; +import { Extension } from './ExtensionItem'; +export declare type UpdatedPackage = { + name: string; + version: string; + latest: string; + 'latest-minor': string | null; + 'latest-major': string | null; + 'latest-status': string; + description: string; +}; +export declare type ComposerUpdates = { + installed: UpdatedPackage[]; +}; +export declare type LastUpdateCheck = { + checkedAt: Date | null; + updates: ComposerUpdates; +}; +declare type UpdateType = 'major' | 'minor' | 'global'; +declare type UpdateStatus = 'success' | 'failure' | null; +export declare type UpdateState = { + ranAt: Date | null; + status: UpdateStatus; + limitedPackages: string[]; + incompatibleExtensions: string[]; +}; +export declare type LastUpdateRun = { + [key in UpdateType]: UpdateState; +} & { + limitedPackages: () => string[]; +}; +export default class Updater extends Component { + isLoading: string | null; + packageUpdates: Record; + lastUpdateCheck: LastUpdateCheck; + get lastUpdateRun(): LastUpdateRun; + oninit(vnode: Mithril.Vnode): void; + view(): (JSX.Element | null)[]; + getExtensionUpdates(): Extension[]; + getCoreUpdate(): UpdatedPackage | undefined; + checkForUpdates(): void; + updateCoreMinor(): void; + updateExtension(extension: any): void; + updateGlobally(): void; +} +export {}; diff --git a/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts b/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts new file mode 100644 index 000000000..817978494 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts @@ -0,0 +1,15 @@ +/// +import Mithril from 'mithril'; +import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; +export interface WhyNotModalAttrs extends IInternalModalAttrs { + package: string; +} +export default class WhyNotModal extends Modal { + loading: boolean; + whyNot: string | null; + className(): string; + title(): import("@askvortsov/rich-icu-message-formatter").NestedStringArray; + oncreate(vnode: Mithril.VnodeDOM): void; + content(): JSX.Element; + requestWhyNot(): void; +} diff --git a/extensions/package-manager/js/dist-typings/index.d.ts b/extensions/package-manager/js/dist-typings/index.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/extensions/package-manager/js/dist-typings/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/extensions/package-manager/js/dist-typings/utils/errorHandler.d.ts b/extensions/package-manager/js/dist-typings/utils/errorHandler.d.ts new file mode 100644 index 000000000..6717892f4 --- /dev/null +++ b/extensions/package-manager/js/dist-typings/utils/errorHandler.d.ts @@ -0,0 +1 @@ +export default function (e: any): void;