diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ed55ced01..56dc42be7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -214,41 +214,34 @@ jobs: # run: docker-compose exec -T backend yarn test ############################################################################## - # JOB: UNIT TEST WEBAPP ###################################################### + # JOB: UNIT TEST FRONTEND ################################################### ############################################################################## - #unit_test_webapp: - # name: Unit tests - webapp - # runs-on: ubuntu-latest - # needs: [build_test_webapp] - # steps: - # ########################################################################## - # # CHECKOUT CODE ########################################################## - # ########################################################################## - # - name: Checkout code - # uses: actions/checkout@v2 - # ########################################################################## - # # DOWNLOAD DOCKER IMAGES ################################################# - # ########################################################################## - # - name: Download Docker Image (Webapp) - # uses: actions/download-artifact@v2 - # with: - # name: docker-webapp-test - # path: /tmp - # - name: Load Docker Image - # run: docker load < /tmp/webapp.tar - # ########################################################################## - # # UNIT TESTS WEBAPP ##################################################### - # ########################################################################## - # # TODO: Why do we need those .envs? - # - name: backend | copy env files webapp - # run: cp webapp/.env.template webapp/.env - # - name: backend | copy env files backend - # run: cp backend/.env.template backend/.env - # - name: backend | docker-compose - # run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps webapp - # - name: webapp | Unit tests - # #run: docker run --rm ocelotsocialnetwork/webapp:build yarn run test - # run: docker-compose exec -T webapp yarn test + unit_test_frontend: + name: Unit tests - Frontend + runs-on: ubuntu-latest + needs: [build_test_frontend] + steps: + ########################################################################## + # CHECKOUT CODE ########################################################## + ########################################################################## + - name: Checkout code + uses: actions/checkout@v2 + ########################################################################## + # DOWNLOAD DOCKER IMAGES ################################################# + ########################################################################## + - name: Download Docker Image (Webapp) + uses: actions/download-artifact@v2 + with: + name: docker-frontend-test + path: /tmp + - name: Load Docker Image + run: docker load < /tmp/frontend.tar + ########################################################################## + # UNIT TESTS FRONTEND #################################################### + ########################################################################## + - name: frontend | Unit tests + run: docker run --rm gradido/frontend:test yarn run test + #test: # runs-on: ubuntu-latest diff --git a/community_server/src/Controller/Component/JsonRequestClientComponent.php b/community_server/src/Controller/Component/JsonRequestClientComponent.php index 8a071b70b..66e65e3bb 100644 --- a/community_server/src/Controller/Component/JsonRequestClientComponent.php +++ b/community_server/src/Controller/Component/JsonRequestClientComponent.php @@ -55,7 +55,7 @@ class JsonRequestClientComponent extends Component ]), '/getRunningUserTasks'); } - public function getUsers($session_id, $searchString) + public function getUsers($session_id, $searchString, $accountState) { if($searchString == "") { return ['state' => 'error', 'type' => 'parameter error', 'msg' => 'search string is empty']; @@ -66,7 +66,8 @@ class JsonRequestClientComponent extends Component return $this->sendRequest(json_encode([ 'session_id' => $session_id, - 'search' => $searchString + 'search' => $searchString, + 'account_state' => $accountState, ]), '/getUsers'); } diff --git a/community_server/src/Controller/StateBalancesController.php b/community_server/src/Controller/StateBalancesController.php index bddf35125..4afeabd8b 100644 --- a/community_server/src/Controller/StateBalancesController.php +++ b/community_server/src/Controller/StateBalancesController.php @@ -197,7 +197,7 @@ class StateBalancesController extends AppController } uasort($transactions, array($this, 'sortTransactions')); $this->set('transactions', $transactions); - $this->set('transactionExecutingCount', $session->read('Transaction.executing')); + $this->set('transactionExecutingCount', $session->read('Transactions.executing')); $this->set('balance', $session->read('StateUser.balance')); $this->set('timeUsed', microtime(true) - $startTime); $this->set('gdtSum', $gdtSum); @@ -370,7 +370,7 @@ class StateBalancesController extends AppController return $this->returnJson([ 'state' => 'success', 'transactions' => $transactions, - 'transactionExecutingCount' => $session->read('Transaction.executing'), + 'transactionExecutingCount' => $session->read('Transactions.executing'), 'count' => count($transactions), 'gdtSum' => $gdtSum, 'timeUsed' => microtime(true) - $startTime diff --git a/community_server/src/Controller/StateUserTransactionsController.php b/community_server/src/Controller/StateUserTransactionsController.php index 8c252218c..b51dd350f 100644 --- a/community_server/src/Controller/StateUserTransactionsController.php +++ b/community_server/src/Controller/StateUserTransactionsController.php @@ -196,7 +196,7 @@ class StateUserTransactionsController extends AppController return $this->returnJson([ 'state' => 'success', 'transactions' => $transactions, - 'transactionExecutingCount' => $session->read('Transaction.executing'), + 'transactionExecutingCount' => $session->read('Transactions.executing'), 'count' => $all_user_transactions_count, 'timeUsed' => microtime(true) - $startTime ]); diff --git a/community_server/src/Controller/StateUsersController.php b/community_server/src/Controller/StateUsersController.php index d85f8b449..9f07fffdb 100644 --- a/community_server/src/Controller/StateUsersController.php +++ b/community_server/src/Controller/StateUsersController.php @@ -99,9 +99,14 @@ class StateUsersController extends AppController //$this->set('timeUsed', $timeUsed); $csfr_token = $this->request->getParam('_csrfToken'); $this->set(compact('timeUsed', 'searchForm', 'csfr_token')); - + $empty_string = '... empty ...'; if ($this->request->is('post')) { + $finalUserEntrys = []; $requestData = $this->request->getData(); + $account_state = $requestData['account_state']; + if($requestData['search'] == '' && $account_state != 'all') { + $requestData['search'] = $empty_string; + } if ($searchForm->validate($requestData)) { //var_dump($requestData); @@ -111,7 +116,7 @@ class StateUsersController extends AppController $searchType = 'email'; } // find users on login server - $resultJson = $this->JsonRequestClient->getUsers($session->read('session_id'), $searchString); + $resultJson = $this->JsonRequestClient->getUsers($session->read('session_id'), $searchString, $account_state); $loginServerUser = []; if ($resultJson['state'] == 'success') { $dataJson = $resultJson['data']; @@ -139,28 +144,42 @@ class StateUsersController extends AppController } } // find user on community server db - $globalSearch = '%' . $searchString . '%'; + + + $communityUsers = $this->StateUsers ->find('all') ->contain(['StateBalances' => ['fields' => ['amount', 'state_user_id']]]); - - $communityUsers->where(['OR' => [ - 'first_name LIKE' => $globalSearch, - 'last_name LIKE' => $globalSearch, - //'username LIKE' => $globalSearch, - 'email LIKE' => $globalSearch - ]]); - - //var_dump($communityUsers->toArray()); - foreach ($communityUsers as $u) { - $pubkey_hex = bin2hex(stream_get_contents($u->public_key)); - $u->public_hex = $pubkey_hex; - if (!isset($pubkeySorted[$pubkey_hex])) { - $pubkeySorted[$pubkey_hex] = ['login' => [], 'community' => []]; + + if($account_state == 'email not activated') { + if(count($pubkeySorted) > 0) { + $communityUsers->where(['hex(public_key) IN' => array_keys($pubkeySorted)]); + } else { + $communityUsers = null; } - array_push($pubkeySorted[$pubkey_hex]['community'], $u); + } else { + $globalSearch = '%' . $searchString . '%'; + $communityUsers->where(['OR' => [ + 'first_name LIKE' => $globalSearch, + 'last_name LIKE' => $globalSearch, + //'username LIKE' => $globalSearch, + 'email LIKE' => $globalSearch + ]]); } - $finalUserEntrys = []; + + + //var_dump($communityUsers->toArray()); + if($communityUsers) { + foreach ($communityUsers as $u) { + $pubkey_hex = bin2hex(stream_get_contents($u->public_key)); + $u->public_hex = $pubkey_hex; + if (!isset($pubkeySorted[$pubkey_hex])) { + $pubkeySorted[$pubkey_hex] = ['login' => [], 'community' => []]; + } + array_push($pubkeySorted[$pubkey_hex]['community'], $u); + } + } + // detect states foreach ($pubkeySorted as $pubhex => $user) { $finalUser = []; diff --git a/community_server/src/Controller/TransactionCreationsController.php b/community_server/src/Controller/TransactionCreationsController.php index 5e29a7997..af7b9a018 100644 --- a/community_server/src/Controller/TransactionCreationsController.php +++ b/community_server/src/Controller/TransactionCreationsController.php @@ -323,7 +323,7 @@ class TransactionCreationsController extends AppController $this->set('firstDayLastMonth', $firstDayLastMonth); $this->set('activeUser', $user); $this->set('creationForm', $creationForm); - $this->set('transactionExecutingCount', $session->read('Transaction.executing')); + $this->set('transactionExecutingCount', $session->read('Transactions.executing')); $this->set('timeUsed', microtime(true) - $startTime); $this->set('countUsers', $countUsers); $this->set('limit', $limit); diff --git a/community_server/src/Form/UserSearchForm.php b/community_server/src/Form/UserSearchForm.php index e2955e244..c68269920 100644 --- a/community_server/src/Form/UserSearchForm.php +++ b/community_server/src/Form/UserSearchForm.php @@ -11,7 +11,9 @@ class UserSearchForm extends Form protected function _buildSchema(Schema $schema) { - return $schema->addField('search', ['type' => 'string']); + return $schema + ->addField('search', ['type' => 'string']) + ->addField('account_state', ['type' => 'select']); } function validationDefault(Validator $validator) diff --git a/community_server/src/Template/StateUsers/search.ctp b/community_server/src/Template/StateUsers/search.ctp index e6775729b..626cb7313 100644 --- a/community_server/src/Template/StateUsers/search.ctp +++ b/community_server/src/Template/StateUsers/search.ctp @@ -11,6 +11,19 @@ $this->assign('title', __('Benutzer suchen')); $this->loadHelper('Form', [ 'templates' => 'horizontal_form', ]); + +$stateOptions = [ + 'all' => __('Alle'), + //'account created'=>__('Konto angelegt'), + //'account not on login-server' => __('Konto nicht auf Login-Server'), + //'email activated' => __('Konto aktiviert'), + //'account copied to community' => __('Konto auf Gemeinschafts-Server'), + 'email not activated' => __('Konto nicht aktiviert'), + //'account multiple times on login-server' => __('Konto mehrfach vorhanden'), + //'account not on community server' => __('Konto nicht auf Gemeinschafts-Server'), + //'no keys' => __('Keine Schlüssel generiert') +]; + ?> Html->css([ 'loginServer/style.css', @@ -41,7 +54,8 @@ $this->loadHelper('Form', [

Benutzer suchen

Form->create($searchForm, []) ?> - Form->control('search', ['label' => __('Suchbegriff'), 'class' => 'form-control', 'id' => 'inlineFormInputGroup', 'placeholder' => __('Vorname/Nachname/E-Mail')]) ?> + Form->control('search', ['label' => __('Suchbegriff'), 'class' => 'form-control', 'id' => 'inlineFormInputGroup', 'placeholder' => __('Vorname/Nachname/E-Mail'), 'required' => false]) ?> + Form->control('account_state', ['label' => __('Konto Status'), 'class' => 'form-control', 'type' => 'select', 'options' => $stateOptions]) ?> Form->button('search ' . __('Suchen'), ['class' => 'form-button']) ?> Form->hidden('order_row', ['id' => 'input-order-row']) ?>
@@ -59,7 +73,7 @@ $this->loadHelper('Form', [ csfr_token = ''; -Html->script('userSearch') ?> +Html->script('userSearch.min') ?> diff --git a/community_server/webroot/js/userSearch.js b/community_server/webroot/js/userSearch.js index 74dfb9ffa..993c05ab0 100644 --- a/community_server/webroot/js/userSearch.js +++ b/community_server/webroot/js/userSearch.js @@ -185,7 +185,7 @@ process.chdir = function (dir) { process.umask = function() { return 0; }; },{}],2:[function(require,module,exports){ -(function (setImmediate,clearImmediate){ +(function (setImmediate,clearImmediate){(function (){ var nextTick = require('process/browser.js').nextTick; var apply = Function.prototype.apply; var slice = Array.prototype.slice; @@ -262,9 +262,9 @@ exports.setImmediate = typeof setImmediate === "function" ? setImmediate : funct exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { delete immediateIds[id]; }; -}).call(this,require("timers").setImmediate,require("timers").clearImmediate) +}).call(this)}).call(this,require("timers").setImmediate,require("timers").clearImmediate) },{"process/browser.js":1,"timers":2}],3:[function(require,module,exports){ -(function (global,setImmediate){ +(function (global,setImmediate){(function (){ new function() { function Vnode(tag, key, attrs0, children, text, dom) { @@ -1425,7 +1425,7 @@ m.vnode = Vnode if (typeof module !== "undefined") module["exports"] = m else window.m = m } -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) },{"timers":2}],4:[function(require,module,exports){ /*! @preserve * numeral.js @@ -2442,10 +2442,10 @@ return numeral; })); },{}],5:[function(require,module,exports){ -(function (global){ +(function (global){(function (){ /**! * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.16.0 + * @version 1.16.1 * @license * Copyright (c) 2016 Federico Zivolo and contributors * @@ -2797,7 +2797,7 @@ function getBordersSize(styles, axis) { var sideA = axis === 'x' ? 'Left' : 'Top'; var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); + return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); } function getSize(axis, body, html, computedStyle) { @@ -2952,8 +2952,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { var scrollParent = getScrollParent(children); var styles = getStyleComputedProperty(parent); - var borderTopWidth = parseFloat(styles.borderTopWidth, 10); - var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); + var borderTopWidth = parseFloat(styles.borderTopWidth); + var borderLeftWidth = parseFloat(styles.borderLeftWidth); // In cases where the parent is fixed, we must ignore negative scroll in offset calc if (fixedPosition && isHTML) { @@ -2974,8 +2974,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - var marginTop = parseFloat(styles.marginTop, 10); - var marginLeft = parseFloat(styles.marginLeft, 10); + var marginTop = parseFloat(styles.marginTop); + var marginLeft = parseFloat(styles.marginLeft); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; @@ -3914,8 +3914,8 @@ function arrow(data, options) { // Compute the sideValue using the updated popper offsets // take popper margin in account because we don't have this info available var css = getStyleComputedProperty(data.instance.popper); - var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); - var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper @@ -5068,11 +5068,11 @@ return Popper; }))); -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],6:[function(require,module,exports){ -(function (process){ +(function (process){(function (){ /**! -* tippy.js v5.1.4 +* tippy.js v5.2.1 * (c) 2017-2020 atomiks * MIT License */ @@ -5100,7 +5100,7 @@ function _extends() { return _extends.apply(this, arguments); } -var version = "5.1.4"; +var version = "5.2.1"; /** * Triggers reflow @@ -5749,7 +5749,6 @@ function bindGlobalEventListeners() { var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; var ua = isBrowser ? navigator.userAgent : ''; var isIE = /MSIE |Trident\//.test(ua); -var isUCBrowser = /UCBrowser\//.test(ua); var isIOS = isBrowser && /iPhone|iPad|iPod/.test(navigator.platform); function updateIOSClass(isAdd) { var shouldAdd = isAdd && isIOS && currentInput.isTouch; @@ -5939,8 +5938,9 @@ function updatePopperElement(popper, prevProps, nextProps) { */ function updateTransitionEndListener(tooltip, action, listener) { - var eventName = isUCBrowser && document.body.style.webkitTransition !== undefined ? 'webkitTransitionEnd' : 'transitionend'; - tooltip[action + 'EventListener'](eventName, listener); + ['transitionend', 'webkitTransitionEnd'].forEach(function (event) { + tooltip[action + 'EventListener'](event, listener); + }); } /** * Adds/removes theme from tooltip's classList @@ -6070,6 +6070,7 @@ function createTippy(reference, passedProps) { var pluginsHooks = plugins.map(function (plugin) { return plugin.fn(instance); }); + var hadAriaExpandedAttributeOnCreate = reference.hasAttribute('aria-expanded'); addListenersToTriggerTarget(); handleAriaExpandedAttribute(); @@ -6090,8 +6091,9 @@ function createTippy(reference, passedProps) { instance.clearDelayTimeouts(); } }); - popper.addEventListener('mouseleave', function () { + popper.addEventListener('mouseleave', function (event) { if (instance.props.interactive && includes(instance.props.trigger, 'mouseenter')) { + debouncedOnMouseMove(event); doc.addEventListener('mousemove', debouncedOnMouseMove); } }); @@ -6170,6 +6172,13 @@ function createTippy(reference, passedProps) { } function handleAriaExpandedAttribute() { + // If the user has specified `aria-expanded` on their reference when the + // instance was created, we have to assume they're controlling it externally + // themselves + if (hadAriaExpandedAttributeOnCreate) { + return; + } + var nodes = normalizeToArray(instance.props.triggerTarget || reference); nodes.forEach(function (node) { if (instance.props.interactive) { @@ -6300,7 +6309,11 @@ function createTippy(reference, passedProps) { break; case 'focus': - on(isIE ? 'focusout' : 'blur', onBlur); + on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut); + break; + + case 'focusin': + on('focusout', onBlurOrFocusOut); break; } }); @@ -6371,7 +6384,7 @@ function createTippy(reference, passedProps) { return el === reference || el === popper; }); - if (isCursorOverReferenceOrPopper) { + if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) { return; } @@ -6405,14 +6418,15 @@ function createTippy(reference, passedProps) { doc.body.addEventListener('mouseleave', scheduleHide); doc.addEventListener('mousemove', debouncedOnMouseMove); pushIfUnique(mouseMoveListeners, debouncedOnMouseMove); + debouncedOnMouseMove(event); return; } scheduleHide(event); } - function onBlur(event) { - if (event.target !== getCurrentTarget()) { + function onBlurOrFocusOut(event) { + if (!includes(instance.props.trigger, 'focusin') && event.target !== getCurrentTarget()) { return; } // If focus was moved to within the popper @@ -6993,7 +7007,6 @@ exports.hideAll = hideAll; exports.includes = includes; exports.isBrowser = isBrowser; exports.isMouseEvent = isMouseEvent; -exports.isUCBrowser = isUCBrowser; exports.normalizeToArray = normalizeToArray; exports.removeProperties = removeProperties; exports.setVisibilityState = setVisibilityState; @@ -7002,11 +7015,11 @@ exports.useIfDefined = useIfDefined; exports.warnWhen = warnWhen; -}).call(this,require('_process')) +}).call(this)}).call(this,require('_process')) },{"_process":1,"popper.js":5}],7:[function(require,module,exports){ -(function (process){ +(function (process){(function (){ /**! -* tippy.js v5.1.4 +* tippy.js v5.2.1 * (c) 2017-2020 atomiks * MIT License */ @@ -7256,7 +7269,7 @@ var animateFill = { var _instance$popperChild = instance.popperChildren, tooltip = _instance$popperChild.tooltip, content = _instance$popperChild.content; - var backdrop = instance.props.animateFill && !index.isUCBrowser ? createBackdropElement() : null; + var backdrop = instance.props.animateFill ? createBackdropElement() : null; function addBackdropToPopperChildren() { instance.popperChildren.backdrop = backdrop; @@ -7391,7 +7404,7 @@ var followCursor = { // scroll for "vertical" - if (getIsEnabled() && (getIsInitialBehavior() || instance.props.followCursor !== true)) { + if (getIsEnabled() && getIsInitialBehavior()) { instance.popperInstance.disableEventListeners(); } } @@ -7432,7 +7445,6 @@ var followCursor = { var isCursorOverReference = index.closestCallback(event.target, function (el) { return el === reference; }); - var rect = reference.getBoundingClientRect(); var followCursor = instance.props.followCursor; var isHorizontal = followCursor === 'horizontal'; var isVertical = followCursor === 'vertical'; @@ -7456,6 +7468,7 @@ var followCursor = { clientWidth: 0, clientHeight: 0, getBoundingClientRect: function getBoundingClientRect() { + var rect = reference.getBoundingClientRect(); return { width: isVerticalPlacement ? size : 0, height: isVerticalPlacement ? 0 : size, @@ -7721,7 +7734,7 @@ exports.inlinePositioning = inlinePositioning; exports.sticky = sticky; -}).call(this,require('_process')) +}).call(this)}).call(this,require('_process')) },{"./tippy.chunk.cjs.js":6,"_process":1,"popper.js":5}],8:[function(require,module,exports){ 'use strict'; @@ -7749,7 +7762,7 @@ function launch() { }); })(document, window, domIsReady); -},{"./texte/de":14,"./view":15,"mithril":3}],9:[function(require,module,exports){ +},{"./texte/de":13,"./view":14,"mithril":3}],9:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -7906,24 +7919,6 @@ exports["default"] = _default; },{"mithril":3}],12:[function(require,module,exports){ "use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = encode; - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -function encode(receiver, subject, body) { - //return encodeURIComponent(receiver + '?subject=' + subject + '&body=' + body) - return encodeURIComponent(receiver) + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); -} - -},{}],13:[function(require,module,exports){ -"use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); @@ -7949,9 +7944,7 @@ __('account multiple times on login-server'); __('account not on community server'); __('no keys'); */ -var AccountState = -/*#__PURE__*/ -function () { +var AccountState = /*#__PURE__*/function () { function AccountState(stateName) { _classCallCheck(this, AccountState); @@ -8050,7 +8043,7 @@ function () { exports["default"] = AccountState; -},{"mithril":3}],14:[function(require,module,exports){ +},{"mithril":3}],13:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8226,7 +8219,6 @@ var _default = { DELETE_FROM_COMMUNITY_SUCCESS: 'Benutzer Konto vom Gemeinschafts-Server erfolgreich gelöscht', VERIFICATION_EMAIL_RESEND: 'Verification Email erneut zusenden', VERIFICATION_EMAIL_RESEND_SUCCESS: 'Verification Email wird erneut zugestellt', - MAILTO_VERIFICATION_EMAIL: 'Verification Email selbst verschicken', COPY_FAILED: 'Fehler beim Kopieren', DELETE_FAILED: 'Fehler beim löschen', RESEND_FAILED: 'Senden fehlgeschlagen', @@ -8240,7 +8232,7 @@ var _default = { }; exports["default"] = _default; -},{}],15:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8305,7 +8297,7 @@ var _default = { }; exports["default"] = _default; -},{"../model/AccountState":13,"./userTable":23,"mithril":3}],16:[function(require,module,exports){ +},{"../model/AccountState":12,"./userTable":21,"mithril":3}],15:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8405,7 +8397,7 @@ var _default = { }; exports["default"] = _default; -},{"../../../lib/dialog":11,"mithril":3}],17:[function(require,module,exports){ +},{"../../../lib/dialog":11,"mithril":3}],16:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8450,7 +8442,7 @@ var _default = { }; exports["default"] = _default; -},{"./actionBase":16,"mithril":3}],18:[function(require,module,exports){ +},{"./actionBase":15,"mithril":3}],17:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8575,7 +8567,7 @@ var _default = { }; exports["default"] = _default; -},{"../../../lib/dialog":11,"./actionBase":16,"mithril":3}],19:[function(require,module,exports){ +},{"../../../lib/dialog":11,"./actionBase":15,"mithril":3}],18:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8671,127 +8663,7 @@ var _default = { }; exports["default"] = _default; -},{"../../../lib/dialog":11,"./actionBase":16,"mithril":3}],20:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _mithril = _interopRequireDefault(require("mithril")); - -var _actionBase = _interopRequireDefault(require("./actionBase")); - -var _dialog = _interopRequireDefault(require("../../../lib/dialog")); - -var _emailToLink = _interopRequireDefault(require("../../../lib/emailToLink")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -/* - * @author: Dario Rekowski - * - * @date: 20.03.20 - * - * @brief: getting email verification code in silence - */ -function oninit(vnode) { - vnode.state.loading = true; - vnode.state.results = null; - vnode.state.additionalUserData = []; - vnode.state.serverData = []; - - _mithril["default"].request({ - method: 'POST', - url: window.location.protocol + '//' + document.domain + '/state-users/ajaxGetUserEmailVerificationCode', - data: vnode.attrs.user, - headers: { - 'X-CSRF-Token': csfr_token - } - }).then(function (result) { - vnode.state.loading = false; - - if (result.state === 'success') { - vnode.state.copyResult = 'success'; - vnode.state.additionalUserData = result.data.userData; - vnode.state.serverData = result.data.server; //console.log("ajax result: %o", result) - } else {//console.log("result error") - } - })["catch"](function (e) { - vnode.state.loading = false; - console.error("ajax error: %s in file: %s in line: %d", e.message, e.fileName, e.lineNumber); - }); -} - -function getField(vnode, index) { - if (null === vnode.state.results) { - return (0, _mithril["default"])('i.spinner-border.spinner-border-sm'); - } else if (index in vnode.state.results) { - return vnode.state.results[index]; - } else { - return '0'; - } -} - -function view(vnode) { - var email = vnode.attrs.user.email; - var first_name = vnode.attrs.user.first_name; - var last_name = vnode.attrs.user.last_name; - var recevier = first_name + ' ' + last_name + ' <' + email + '>'; - var userData = vnode.state.additionalUserData; - var serverData = vnode.state.serverData; //console.log('Server data: %o', serverData) - //vnode.state.additionalUserData.verificationCode - - var link = serverData['loginServer.path'] + '/checkEmail/' + userData['EmailVerificationCode.Register']; - var body = 'Liebe(r) ' + first_name + ' ' + last_name + ',\n\ -\n\ -Der Admin hat ein erneutes zusenden deiner Bestätigungsemail angefordert. \n\ -Du hast vor einer Weile ein Gradido-Konto mit dieser E-Mail angelegt, aber es noch nicht bestätigt. \n\ -\n\ -Bitte klicke zur Bestätigung auf den Link: ' + link + '\n\ -oder kopiere den obigen Link in Dein Browserfenster.\n\ -\n\ -Mit freundlichen Grüßen\n\ -Dario, Gradido Server Admin\n\ -'; - - if (true === vnode.state.loading) { - return (0, _mithril["default"])('span', [(0, _mithril["default"])('span', [(0, _mithril["default"])('button.btn.btn-secondary.btn-xs', { - title: window.texte.MAILTO_VERIFICATION_EMAIL, - disabled: true - }, (0, _mithril["default"])('i.spinner-border.spinner-border-sm')), window.texte.MAILTO_VERIFICATION_EMAIL])]); - } else { - return (0, _mithril["default"])('span', [(0, _mithril["default"])('span', [(0, _mithril["default"])('a.btn.btn-primary.btn-xs', { - title: window.texte.MAILTO_VERIFICATION_EMAIL, - href: 'mailto:' + (0, _emailToLink["default"])(recevier, 'Gradido: E-Mail Verification', body) - }, (0, _mithril["default"])('i.mdi.mdi-email-outline')), window.texte.MAILTO_VERIFICATION_EMAIL])]); - } - - return (0, _mithril["default"])('span', [(0, _mithril["default"])('span', [(0, _mithril["default"])('a.btn.btn-secondary.btn-xs', { - title: window.texte.MAILTO_VERIFICATION_EMAIL, - href: 'mailto:' + (0, _emailToLink["default"])(recevier, 'Gradido: E-Mail Verification', body), - disabled: vnode.state.loading === true - }, vnode.state.loading === true ? (0, _mithril["default"])('i.spinner-border.spinner-border-sm') : (0, _mithril["default"])('i.mdi.mdi-email-outline')), window.texte.MAILTO_VERIFICATION_EMAIL])]); - /*return m('span', [ - window.texte.RECEIVE_TRANSACTIONS_COUNT, - getField(vnode, 'receive'), - ', ', - window.texte.SENDED_TRANSACTIONS_COUNT, - getField(vnode, 'sended'), - ', ', - window.texte.CREATION_TRANSACTIONS_COUNT, - getField(vnode, 'creation') - ])*/ -} - -var _default = { - view: view, - oninit: oninit -}; -exports["default"] = _default; - -},{"../../../lib/dialog":11,"../../../lib/emailToLink":12,"./actionBase":16,"mithril":3}],21:[function(require,module,exports){ +},{"../../../lib/dialog":11,"./actionBase":15,"mithril":3}],19:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8830,12 +8702,12 @@ function oninit(vnode) { vnode.state.loading = false; if (result.state === 'success') { - //vnode.state.message = m('div.alert.alert-success', window.texte.DELETE_FROM_COMMUNITY_SUCCESS) + vnode.state.message = (0, _mithril["default"])('div.alert.alert-success', window.texte.DELETE_FROM_COMMUNITY_SUCCESS); vnode.state.copyResult = 'success'; vnode.state.results = result.counts; } else { //console.log("result error") - //vnode.state.message = m('div.alert.alert-danger', window.texte.DELETE_FAILED) + vnode.state.message = (0, _mithril["default"])('div.alert.alert-danger', window.texte.DELETE_FAILED); vnode.state.copyResult = 'error'; } })["catch"](function (e) { @@ -8866,7 +8738,7 @@ var _default = { }; exports["default"] = _default; -},{"../../../lib/dialog":11,"./actionBase":16,"mithril":3}],22:[function(require,module,exports){ +},{"../../../lib/dialog":11,"./actionBase":15,"mithril":3}],20:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8896,7 +8768,7 @@ function view(vnode) { ajaxData: vnode.attrs.user, alertSuccess: window.texte.VERIFICATION_EMAIL_RESEND_SUCCESS, alertFailed: window.texte.RESEND_FAILED, - btnColor: 'btn-gradido-orange', + btnColor: 'btn-primary', btnSymbol: 'mdi-email', btnTitle: window.texte.VERIFICATION_EMAIL_RESEND, progessText: window.texte.RESEND_IN_PROGRESS @@ -8908,7 +8780,7 @@ var _default = { }; exports["default"] = _default; -},{"./actionBase":16,"mithril":3}],23:[function(require,module,exports){ +},{"./actionBase":15,"mithril":3}],21:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -8932,6 +8804,10 @@ function oninit(vnode) { } vnode.state.openedUser = -1; + vnode.state.order = { + field: 'default', + dir: 'DESC' + }; } function openButtonClick(vnode, index) { @@ -8942,6 +8818,27 @@ function openButtonClick(vnode, index) { } } +function changeOrder(vnode, fieldName) { + var field = vnode.state.order.field; + var dir = vnode.state.order.dir; + + if (field != fieldName) { + vnode.state.order.field = fieldName; + vnode.state.order.dir = 'DESC'; + } else if (field == fieldName) { + var new_dir; + + if (dir == 'DESC') { + new_dir = 'ASC'; + } else { + new_dir = 'DESC'; + } + + vnode.state.order.dir = new_dir; + } //console.log("change to %s %s", vnode.state.order.field, vnode.state.order.dir) + +} + function updateStateForActiveUser(newState, vnode) { //console.log('updateStateForActiveUser') if (-1 !== vnode.state.openedUser) { @@ -8957,12 +8854,154 @@ function deleteActiveUser(vnode) { } } +function sortByCreated(var1, var2, dir) { + if (var1.created == var2.created) { + return 0; + } + + var var1_date = new Date(var1.created); + var var2_date = new Date(var2.created); // kleiner als null => niedriger index, a kommt zuerst, b kommt als nächstes + // größer als null => höherer index, b kommt zuerst + + if (dir == 'DESC') { + // descending + if (var1_date < var2_date) { + return 1; + } else { + return -1; + } + } else { + // ascending + if (var1_date < var2_date) { + return -1; + } else { + return 1; + } + } +} + +function sortyByString(var1, var2, dir, field) { + if (var1[field] == var2[field]) { + return 0; + } // kleiner als null => niedriger index, a kommt zuerst, b kommt als nächstes + // größer als null => höherer index, b kommt zuerst + + + if (dir == 'DESC') { + // descending + if (var1[field] < var2[field]) { + return 1; + } else { + return -1; + } + } else { + // ascending + if (var1[field] < var2[field]) { + return -1; + } else { + return 1; + } + } +} + +function sortByBalance(var1, var2, dir) { + if (var1.balance == var2.balance) { + return 0; + } + + var var1_balance = parseFloat(var1.balance); + var var2_balance = parseFloat(var2.balance); // kleiner als null => niedriger index, a kommt zuerst, b kommt als nächstes + // größer als null => höherer index, b kommt zuerst + + if (dir == 'DESC') { + // descending + if (var1_balance < var2_balance) { + return 1; + } else { + return -1; + } + } else { + // ascending + if (var1_balance < var2_balance) { + return -1; + } else { + return 1; + } + } +} // js sort work in place, so no copy is created + + +function sort(vnode, user) { + var field = vnode.state.order.field; + var dir = vnode.state.order.dir; + + if (field == 'created') { + user.sort(function (var1, var2) { + return sortByCreated(var1, var2, dir); + }); + } else if (field == 'name' || field == 'email' || field == 'pubkeyhex') { + user.sort(function (var1, var2) { + return sortyByString(var1, var2, dir, field); + }); + } else if (field == 'balance') { + user.sort(function (var1, var2) { + return sortByBalance(var1, var2, dir); + }); + } +} + +function getArrow(vnode, fieldName) { + // Arrow-up: ↑ + // Arrow-down: ↓ + if (vnode.state.order.field == fieldName) { + if (vnode.state.order.dir == 'DESC') { + return _mithril["default"].trust('↓ '); + } else { + return _mithril["default"].trust('↑ '); + } + } + + return _mithril["default"].trust('  '); +} + function view(vnode) { + // js sort work in place, so me made a deep copy first + var user_sorted = JSON.parse(JSON.stringify(vnode.state.orderedUsers)); + + if (vnode.state.order.field != 'default') { + sort(vnode, user_sorted); + } + return (0, _mithril["default"])('table.table.table-hover.table-sm', [(0, _mithril["default"])('thead', (0, _mithril["default"])('tr.solid-header', [(0, _mithril["default"])('th', { style: { 'padding-left': '1.5rem' } - }), (0, _mithril["default"])('th', window.texte.NAME), (0, _mithril["default"])('th', window.texte.EMAIL), (0, _mithril["default"])('th', window.texte.BALANCE), (0, _mithril["default"])('th', _mithril["default"].trust(window.texte.PUBLIC_KEY)), (0, _mithril["default"])('th', window.texte.CREATED)])), (0, _mithril["default"])('tbody', vnode.state.orderedUsers.map(function (value, index) { + }), (0, _mithril["default"])('th', (0, _mithril["default"])('a', { + onclick: function onclick() { + changeOrder(vnode, 'name'); + }, + className: 'grd_clickable' + }, [getArrow(vnode, 'name'), window.texte.NAME])), (0, _mithril["default"])('th', (0, _mithril["default"])('a', { + onclick: function onclick() { + changeOrder(vnode, 'email'); + }, + className: 'grd_clickable' + }, [getArrow(vnode, 'email'), window.texte.EMAIL])), (0, _mithril["default"])('th', (0, _mithril["default"])('a', { + onclick: function onclick() { + changeOrder(vnode, 'balance'); + }, + className: 'grd_clickable' + }, [getArrow(vnode, 'balance'), window.texte.BALANCE])), (0, _mithril["default"])('th', (0, _mithril["default"])('a', { + onclick: function onclick() { + changeOrder(vnode, 'pubkeyhex'); + }, + className: 'grd_clickable' + }, [getArrow(vnode, 'pubkeyhex'), _mithril["default"].trust(window.texte.PUBLIC_KEY)])), (0, _mithril["default"])('th', (0, _mithril["default"])('a', { + onclick: function onclick() { + changeOrder(vnode, 'created'); + }, + className: 'grd_clickable' + }, [getArrow(vnode, 'created'), window.texte.CREATED]))])), (0, _mithril["default"])('tbody', user_sorted.map(function (value, index) { var open = vnode.state.openedUser === index; return [(0, _mithril["default"])(_rowView["default"], { user: value, @@ -8989,7 +9028,7 @@ var _default = { }; exports["default"] = _default; -},{"./rowAction":24,"./rowView":25,"mithril":3}],24:[function(require,module,exports){ +},{"./rowAction":22,"./rowView":23,"mithril":3}],22:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -9009,8 +9048,6 @@ var _copyCommunityLogin = _interopRequireDefault(require("./actions/copyCommunit var _verificationResend = _interopRequireDefault(require("./actions/verificationResend")); -var _mailtoVerificationResend = _interopRequireDefault(require("./actions/mailtoVerificationResend")); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var checkTodoAction = new RegExp(/{{([a-z-]*)}}/); @@ -9034,9 +9071,6 @@ function getAction(name) { case 'verification-resend': return _verificationResend["default"]; - - case 'mailto-verification-resend': - return _mailtoVerificationResend["default"]; } return null; @@ -9077,7 +9111,7 @@ var _default = { }; exports["default"] = _default; -},{"./actions/copyCommunityLogin":17,"./actions/copyLoginCommunity":18,"./actions/deleteCommunityServer":19,"./actions/mailtoVerificationResend":20,"./actions/userTransactionsOverview":21,"./actions/verificationResend":22,"mithril":3}],25:[function(require,module,exports){ +},{"./actions/copyCommunityLogin":16,"./actions/copyLoginCommunity":17,"./actions/deleteCommunityServer":18,"./actions/userTransactionsOverview":19,"./actions/verificationResend":20,"mithril":3}],23:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -9148,4 +9182,4 @@ var _default = { }; exports["default"] = _default; -},{"../../lib/Gradido":9,"../../lib/Tooltip":10,"../../model/AccountState":13,"mithril":3}]},{},[8]); +},{"../../lib/Gradido":9,"../../lib/Tooltip":10,"../../model/AccountState":12,"mithril":3}]},{},[8]); diff --git a/community_server/webroot/js/userSearch.min.js b/community_server/webroot/js/userSearch.min.js index f13a1b3a8..9dd4f94f9 100644 --- a/community_server/webroot/js/userSearch.min.js +++ b/community_server/webroot/js/userSearch.min.js @@ -1 +1 @@ -!function o(a,s,l){function u(t,e){if(!s[t]){if(!a[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var i=s[t]={exports:{}};a[t][0].call(i.exports,function(e){return u(a[t][1][e]||e)},i,i.exports,o,a,s,l)}return s[t].exports}for(var c="function"==typeof require&&require,e=0;e>>0,o=0;if(3===arguments.length)n=arguments[2];else{for(;o=r.clientWidth&&n>=r.clientHeight}),f=0l[e]&&!r.escapeWithReference&&(n=Math.min(c[t],l[e]-("right"===e?c.width:c.height))),E({},t,n)}};return u.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";c=P({},c,f[t](e))}),e.offsets.popper=c,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,r=t.reference,i=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(i),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]o(r[s])&&(e.offsets.popper[l]=o(r[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!U(e.instance.modifiers,"arrow","keepTogether"))return e;var r=t.element;if("string"==typeof r){if(!(r=e.instance.popper.querySelector(r)))return e}else if(!e.instance.popper.contains(r))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var i=e.placement.split("-")[0],o=e.offsets,a=o.popper,s=o.reference,l=-1!==["left","right"].indexOf(i),u=l?"height":"width",c=l?"Top":"Left",f=c.toLowerCase(),d=l?"left":"top",p=l?"bottom":"right",m=S(r)[u];s[p]-ma[p]&&(e.offsets.popper[f]+=s[f]+m-a[p]),e.offsets.popper=T(e.offsets.popper);var h=s[f]+s[u]/2-m/2,v=w(e.instance.popper),g=parseFloat(v["margin"+c],10),b=parseFloat(v["border"+c+"Width"],10),y=h-e.offsets.popper[f]-g-b;return y=Math.max(Math.min(a[u]-m,y),0),e.arrowElement=r,e.offsets.arrow=(E(n={},f,Math.round(y)),E(n,d,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(h,v){if(N(h.instance.modifiers,"inner"))return h;if(h.flipped&&h.placement===h.originalPlacement)return h;var g=p(h.instance.popper,h.instance.reference,v.padding,v.boundariesElement,h.positionFixed),b=h.placement.split("-")[0],y=k(b),w=h.placement.split("-")[1]||"",x=[];switch(v.behavior){case K:x=[b,y];break;case W:x=H(b);break;case Y:x=H(b,!0);break;default:x=v.behavior}return x.forEach(function(e,t){if(b!==e||x.length===t+1)return h;b=h.placement.split("-")[0],y=k(b);var n=h.offsets.popper,r=h.offsets.reference,i=Math.floor,o="left"===b&&i(n.right)>i(r.left)||"right"===b&&i(n.left)i(r.top)||"bottom"===b&&i(n.top)i(g.right),l=i(n.top)i(g.bottom),c="left"===b&&a||"right"===b&&s||"top"===b&&l||"bottom"===b&&u,f=-1!==["top","bottom"].indexOf(b),d=!!v.flipVariations&&(f&&"start"===w&&a||f&&"end"===w&&s||!f&&"start"===w&&l||!f&&"end"===w&&u),p=!!v.flipVariationsByContent&&(f&&"start"===w&&s||f&&"end"===w&&a||!f&&"start"===w&&u||!f&&"end"===w&&l),m=d||p;(o||c||m)&&(h.flipped=!0,(o||c)&&(b=x[t+1]),m&&(w="end"===w?"start":"start"===w?"end":w),h.placement=b+(w?"-"+w:""),h.offsets.popper=P({},h.offsets.popper,C(h.instance.popper,h.offsets.reference,h.placement)),h=A(h.instance.modifiers,h,"flip"))}),h},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],r=e.offsets,i=r.popper,o=r.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return i[a?"left":"top"]=o[n]-(s?i[a?"width":"height"]:0),e.placement=k(t),e.offsets.popper=T(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!U(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=I(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right or , not
","or ."].join(" ")),Ee("showOnInit"===t,"The `showOnInit` prop was renamed to `showOnCreate` in v5."),Ee("arrowType"===t,["The `arrowType` prop was removed in v5 in favor of overloading the `arrow`","prop.","\n\n",'"round" string was replaced with importing the string from the package.',"\n\n","* import {roundArrow} from 'tippy.js'; (ESM version)\n","* const {roundArrow} = tippy; (IIFE CDN version)","\n\n",'Before: {arrow: true, arrowType: "round"}\n',"After: {arrow: roundArrow}`"].join(" ")),Ee("touchHold"===t,["The `touchHold` prop was removed in v5 in favor of overloading the `touch`","prop.","\n\n","Before: {touchHold: true}\n",'After: {touch: "hold"}'].join(" ")),Ee("size"===t,["The `size` prop was removed in v5. Instead, use a theme that specifies","CSS padding and font-size properties."].join(" ")),Ee("theme"===t&&"google"===e,'The included theme "google" was renamed to "material" in v5.'),Ee(n,["Specifying placement in `popperOptions` is not supported. Use the base-level","`placement` prop instead.","\n\n",'Before: {popperOptions: {placement: "bottom"}}\n','After: {placement: "bottom"}'].join(" ")),Ee(r,["`"+t+"`","is not a valid prop. You may have spelled it incorrectly, or if it's a","plugin, forgot to pass it in an array as props.plugins.","\n\n","In v5, the following props were turned into plugins:","\n\n","* animateFill\n","* followCursor\n","* sticky","\n\n","All props: https://atomiks.github.io/tippyjs/all-props/\n","Plugins: https://atomiks.github.io/tippyjs/plugins/"].join(" "))})}var Ce={passive:!0},l="tippy-iOS",Ae="tippy-popper",Ne="tippy-tooltip",Me="tippy-content",u="tippy-arrow",c="tippy-svg-arrow",Le="."+Ae,f="."+Ne,h="."+Me,v="."+u,g="."+c,De={isTouch:!1},b=0;function y(){De.isTouch||(De.isTouch=!0,window.performance&&document.addEventListener("mousemove",w))}function w(){var e=performance.now();e-b<20&&(De.isTouch=!1,document.removeEventListener("mousemove",w)),b=e}function x(){var e=document.activeElement;if(i(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var E="undefined"!=typeof window&&"undefined"!=typeof document,T=E?navigator.userAgent:"",Pe=/MSIE |Trident\//.test(T),_=/UCBrowser\//.test(T),O=E&&/iPhone|iPad|iPod/.test(navigator.platform);function Fe(e){var t=e&&O&&De.isTouch;document.body.classList[t?"add":"remove"](l)}function Ie(e){return e.split("-")[0]}function Be(e){e.setAttribute("data-inertia","")}function je(e){e.setAttribute("data-interactive","")}function ze(e,t){p(t.content)?(n(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(e[t.allowHTML?"innerHTML":"textContent"]=t.content)}function Ue(e){return{tooltip:e.querySelector(f),content:e.querySelector(h),arrow:e.querySelector(v)||e.querySelector(g)}}function Re(e){var t=ae();return!0===e?t.className=u:(t.className=c,p(e)?t.appendChild(e):n(t,e)),t}function Ve(e,t,n){var r,i=Ue(e),o=i.tooltip,a=i.content,s=i.arrow;e.style.zIndex=""+n.zIndex,o.setAttribute("data-animation",n.animation),o.style.maxWidth="number"==typeof(r=n.maxWidth)?r+"px":r,n.role?o.setAttribute("role",n.role):o.removeAttribute("role"),t.content!==n.content&&ze(a,n),!t.arrow&&n.arrow?(o.appendChild(Re(n.arrow)),o.setAttribute("data-arrow","")):t.arrow&&!n.arrow?(o.removeChild(s),o.removeAttribute("data-arrow")):t.arrow!==n.arrow&&(o.removeChild(s),o.appendChild(Re(n.arrow))),!t.interactive&&n.interactive?je(o):t.interactive&&!n.interactive&&o.removeAttribute("data-interactive"),!t.inertia&&n.inertia?Be(o):t.inertia&&!n.inertia&&o.removeAttribute("data-inertia"),t.theme!==n.theme&&(Ke(o,"remove",t.theme),Ke(o,"add",n.theme))}function He(e,t,n){var r=_&&void 0!==document.body.style.webkitTransition?"webkitTransitionEnd":"transitionend";e[t+"EventListener"](r,n)}function Ke(t,n,e){me(e).forEach(function(e){t.classList[n](e+"-theme")})}var We=1,Ye=[],Ge=[];function S(o,e){var a,n,r,t=Se(o,Q({},Te,{},Oe(e)));if(!t.multiple&&o._tippy)return null;var s,l,i,u,c,f=!1,d=!1,p=!1,m=0,h=[],v=ue(H,t.interactiveDebounce),g=ge(t.triggerTarget||o),b=We++,y=function(e,t){var n=ae();n.className=Ae,n.style.position="absolute",n.style.top="0",n.style.left="0";var r=ae();r.className=Ne,r.id="tippy-"+e,r.setAttribute("data-state","hidden"),r.setAttribute("tabindex","-1"),Ke(r,"add",t.theme);var i=ae();return i.className=Me,i.setAttribute("data-state","hidden"),t.interactive&&je(r),t.arrow&&(r.setAttribute("data-arrow",""),r.appendChild(Re(t.arrow))),t.inertia&&Be(r),ze(i,t),r.appendChild(i),n.appendChild(r),Ve(n,t,t),n}(b,t),w=Ue(y),x=(c=t.plugins).filter(function(e,t){return c.indexOf(e)===t}),E=w.tooltip,T=w.content,_=[E,T],O={id:b,reference:o,popper:y,popperChildren:w,popperInstance:null,props:t,state:{currentPlacement:null,isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:x,clearDelayTimeouts:function(){clearTimeout(a),clearTimeout(n),cancelAnimationFrame(r)},setProps:function(n){if("production"!==J.env.NODE_ENV&&Ee(O.state.isDestroyed,xe("setProps")),!O.state.isDestroyed){"production"!==J.env.NODE_ENV&&(ke(n,x),Ee(!!n.plugins&&(n.plugins.length!==x.length||x.some(function(e,t){return!n.plugins||!n.plugins[t]||e!==n.plugins[t]})),"Cannot update plugins")),M("onBeforeUpdate",[O,n]),R();var t=O.props,e=Se(o,Q({},O.props,{},n,{ignoreAttributes:!0}));if(e.ignoreAttributes=he(n.ignoreAttributes,t.ignoreAttributes),O.props=e,U(),t.interactiveDebounce!==e.interactiveDebounce&&(P(),v=ue(H,e.interactiveDebounce)),Ve(y,t,e),O.popperChildren=Ue(y),t.triggerTarget&&!e.triggerTarget?ve(t.triggerTarget).forEach(function(e){e.removeAttribute("aria-expanded")}):e.triggerTarget&&o.removeAttribute("aria-expanded"),D(),O.popperInstance)if(_e.some(function(e){return ee(n,e)&&n[e]!==t[e]})){var r=O.popperInstance.reference;O.popperInstance.destroy(),G(),O.popperInstance.reference=r,O.state.isVisible&&O.popperInstance.enableEventListeners()}else O.popperInstance.update();M("onAfterUpdate",[O,n])}},setContent:function(e){O.setProps({content:e})},show:function(e){void 0===e&&(e=te(O.props.duration,0,Te.duration)),"production"!==J.env.NODE_ENV&&Ee(O.state.isDestroyed,xe("show"));var t=O.state.isVisible,n=O.state.isDestroyed,r=!O.state.isEnabled,i=De.isTouch&&!O.props.touch;t||n||r||i||A().hasAttribute("disabled")||(O.popperInstance||G(),M("onShow",[O],!1),!1!==O.props.onShow(O)&&(I(),y.style.visibility="visible",O.state.isVisible=!0,O.state.isMounted||se(_.concat(y),0),l=function(){O.state.isVisible&&(se([y],O.props.updateDuration),se(_,e),le(_,"visible"),L(),D(),be(Ge,O),Fe(!0),O.state.isMounted=!0,M("onMount",[O]),j(e,function(){O.state.isShown=!0,M("onShown",[O])}))},function(){m=0;var e,t=O.props.appendTo,n=A();(e=O.props.interactive&&t===Te.appendTo||"parent"===t?n.parentNode:ie(t,[n])).contains(y)||e.appendChild(y),"production"!==J.env.NODE_ENV&&Ee(O.props.interactive&&t===Te.appendTo&&n.nextElementSibling!==y,["Interactive tippy element may not be accessible via keyboard navigation","because it is not directly after the reference element in the DOM source","order.","\n\n","Using a wrapper
or tag around the reference element solves","this by creating a new parentNode context.","\n\n","Specifying `appendTo: document.body` silences this warning, but it","assumes you are using a focus management solution to handle keyboard","navigation.","\n\n","See: https://atomiks.github.io/tippyjs/accessibility/#interactivity"].join(" ")),oe(O.popperInstance.modifiers,"flip","enabled",O.props.flip),O.popperInstance.enableEventListeners(),O.popperInstance.update()}()))},hide:function(e){void 0===e&&(e=te(O.props.duration,1,Te.duration)),"production"!==J.env.NODE_ENV&&Ee(O.state.isDestroyed,xe("hide"));var t=!O.state.isVisible&&!f,n=O.state.isDestroyed,r=!O.state.isEnabled&&!f;t||n||r||(M("onHide",[O],!1),!1===O.props.onHide(O)&&!f||(B(),y.style.visibility="hidden",O.state.isVisible=!1,O.state.isShown=!1,se(_,e),le(_,"hidden"),L(),D(),j(e,function(){!O.state.isVisible&&y.parentNode&&y.parentNode.contains(y)&&(O.popperInstance.disableEventListeners(),O.popperInstance.options.placement=O.props.placement,y.parentNode.removeChild(y),0===(Ge=Ge.filter(function(e){return e!==O})).length&&Fe(!1),O.state.isMounted=!1,M("onHidden",[O]))})))},enable:function(){O.state.isEnabled=!0},disable:function(){O.hide(),O.state.isEnabled=!1},destroy:function(){"production"!==J.env.NODE_ENV&&Ee(O.state.isDestroyed,xe("destroy")),O.state.isDestroyed||(f=!0,O.clearDelayTimeouts(),O.hide(0),R(),delete o._tippy,O.popperInstance&&O.popperInstance.destroy(),f=!1,O.state.isDestroyed=!0,M("onDestroy",[O]))}};o._tippy=O,y._tippy=O;var S=x.map(function(e){return e.fn(O)});return U(),D(),t.lazy||G(),M("onCreate",[O]),t.showOnCreate&&$(),y.addEventListener("mouseenter",function(){O.props.interactive&&O.state.isVisible&&O.clearDelayTimeouts()}),y.addEventListener("mouseleave",function(){O.props.interactive&&pe(O.props.trigger,"mouseenter")&&g.addEventListener("mousemove",v)}),O;function k(){var e=O.props.touch;return Array.isArray(e)?e:[e,0]}function C(){return"hold"===k()[0]}function A(){return u||o}function N(e){return O.state.isMounted&&!O.state.isVisible||De.isTouch||s&&"focus"===s.type?0:te(O.props.delay,e?0:1,Te.delay)}function M(t,n,e){var r;void 0===e&&(e=!0),S.forEach(function(e){ee(e,t)&&e[t].apply(e,n)}),e&&(r=O.props)[t].apply(r,n)}function L(){var e=O.props.aria;if(e){var r="aria-"+e,i=E.id;ve(O.props.triggerTarget||o).forEach(function(e){var t=e.getAttribute(r);if(O.state.isVisible)e.setAttribute(r,t?t+" "+i:i);else{var n=t&&t.replace(i,"").trim();n?e.setAttribute(r,n):e.removeAttribute(r)}})}}function D(){ve(O.props.triggerTarget||o).forEach(function(e){O.props.interactive?e.setAttribute("aria-expanded",O.state.isVisible&&e===A()?"true":"false"):e.removeAttribute("aria-expanded")})}function P(){g.body.removeEventListener("mouseleave",X),g.removeEventListener("mousemove",v),Ye=Ye.filter(function(e){return e!==v})}function F(e){if(!O.props.interactive||!y.contains(e.target)){if(A().contains(e.target)){if(De.isTouch)return;if(O.state.isVisible&&pe(O.props.trigger,"click"))return}!0===O.props.hideOnClick&&(d=!1,O.clearDelayTimeouts(),O.hide(),p=!0,setTimeout(function(){p=!1}),O.state.isMounted||B())}}function I(){g.addEventListener("mousedown",F,!0)}function B(){g.removeEventListener("mousedown",F,!0)}function j(e,t){function n(e){e.target===E&&(He(E,"remove",n),t())}if(0===e)return t();He(E,"remove",i),He(E,"add",n),i=n}function z(t,n,r){void 0===r&&(r=!1),ve(O.props.triggerTarget||o).forEach(function(e){e.addEventListener(t,n,r),h.push({node:e,eventType:t,handler:n,options:r})})}function U(){C()&&(z("touchstart",V,Ce),z("touchend",K,Ce)),me(O.props.trigger).forEach(function(e){if("manual"!==e)switch(z(e,V),e){case"mouseenter":z("mouseleave",K);break;case"focus":z(Pe?"focusout":"blur",W)}})}function R(){h.forEach(function(e){var t=e.node,n=e.eventType,r=e.handler,i=e.options;t.removeEventListener(n,r,i)}),h=[]}function V(t){var e=!1;if(O.state.isEnabled&&!Y(t)&&!p){if(u=(s=t).currentTarget,D(),!O.state.isVisible&&re(t)&&Ye.forEach(function(e){return e(t)}),"click"!==t.type||pe(O.props.trigger,"mouseenter")&&!d||!1===O.props.hideOnClick||!O.state.isVisible){var n=k(),r=n[0],i=n[1];De.isTouch&&"hold"===r&&i?a=setTimeout(function(){$(t)},i):$(t)}else e=!0;"click"===t.type&&(d=!e),e&&X(t)}}function H(e){var t,l,u;de(e.target,function(e){return e===o||e===y})||(t=fe(y.querySelectorAll(Le)).concat(y).map(function(e){var t=e._tippy,n=t.popperChildren.tooltip,r=t.props.interactiveBorder;return{popperRect:e.getBoundingClientRect(),tooltipRect:n.getBoundingClientRect(),interactiveBorder:r}}),l=e.clientX,u=e.clientY,t.every(function(e){var t=e.popperRect,n=e.tooltipRect,r=e.interactiveBorder,i=Math.min(t.top,n.top),o=Math.max(t.right,n.right),a=Math.max(t.bottom,n.bottom),s=Math.min(t.left,n.left);return r element.cloneNode(true)"].join(" "))}var f=l.reduce(function(e,t){var n=t&&S(t,s);return n&&e.push(n),e},[]);return p(e)?f[0]:f}k.version="5.1.4",k.defaultProps=Te,k.setDefaultProps=o,k.currentInput=De,A.BACKDROP_CLASS="tippy-backdrop",A.ROUND_ARROW='',A._extends=Q,A.arrayFrom=fe,A.closestCallback=de,A.createTippyWithPlugins=function(r){"production"!==J.env.NODE_ENV&&Ee(!0,["createTippyWithPlugins([...]) has been deprecated.","\n\n","Use tippy.setDefaultProps({plugins: [...]}) instead."].join(" "));function e(e,t,n){return void 0===t&&(t={}),void 0===n&&(n=[]),n=t.plugins||n,k(e,Q({},t,{plugins:[].concat(r,n)}))}return e.version="5.1.4",e.defaultProps=Te,e.setDefaultProps=o,e.currentInput=De,e},A.currentInput=De,A.defaultProps=Te,A.div=ae,A.errorWhen=m,A.getBasePlacement=Ie,A.getOwnerDocument=ge,A.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;Ge.forEach(function(e){var t=!1;n&&(t=i(n)?e.reference===n:e.popper===n.popper),t||e.hide(r)})},A.includes=pe,A.isBrowser=E,A.isMouseEvent=re,A.isUCBrowser=_,A.normalizeToArray=ve,A.removeProperties=a,A.setVisibilityState=le,A.tippy=k,A.useIfDefined=he,A.warnWhen=Ee}).call(this,C("_process"))},{_process:4,"popper.js":3}],7:[function(i,e,o){(function(d){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var E=i("./tippy.chunk.cjs.js");i("popper.js");var p={mouseover:"mouseenter",focusin:"focus",click:"click"},e={name:"animateFill",defaultValue:!1,fn:function(e){var t,n=e.popperChildren,r=n.tooltip,i=n.content,o=e.props.animateFill&&!E.isUCBrowser?((t=E.div()).className=E.BACKDROP_CLASS,E.setVisibilityState([t],"hidden"),t):null;function a(){e.popperChildren.backdrop=o}return{onCreate:function(){o&&(a(),r.insertBefore(o,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({animation:"shift-away",arrow:!1}))},onMount:function(){if(o){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));i.style.transitionDelay=Math.round(t/10)+"ms",o.style.transitionDuration=e,E.setVisibilityState([o],"visible"),"production"!==d.env.NODE_ENV&&(E.warnWhen("absolute"!==getComputedStyle(o).position,"The `tippy.js/dist/backdrop.css` stylesheet has not been\n imported!\n \n The `animateFill` plugin requires this stylesheet to work."),E.warnWhen("none"===getComputedStyle(r).transform,"The `tippy.js/animations/shift-away.css` stylesheet has not\n been imported!\n \n The `animateFill` plugin requires this stylesheet to work."))}},onShow:function(){o&&(o.style.transitionDuration="0ms")},onHide:function(){o&&E.setVisibilityState([o],"hidden")},onAfterUpdate:function(){a()}}}},t={name:"followCursor",defaultValue:!1,fn:function(h){var v,g=h.reference,b=h.popper,y=null,e=E.getOwnerDocument(h.props.triggerTarget||g),n=null,r=!1,i=h.props;function t(){return"manual"===h.props.trigger.trim()}function o(){var e=!!t()||null!==n&&!(0===n.clientX&&0===n.clientY);return h.props.followCursor&&e}function w(){return E.currentInput.isTouch||"initial"===h.props.followCursor&&h.state.isVisible}function a(){h.popperInstance&&y&&(h.popperInstance.reference=y)}function s(){if(o()||h.props.placement!==i.placement){var e=i.placement,t=e.split("-")[1];r=!0,h.setProps({placement:o()&&t?e.replace(t,"start"===t?"end":"start"):e}),r=!1}}function l(){h.popperInstance&&o()&&(w()||!0!==h.props.followCursor)&&h.popperInstance.disableEventListeners()}function u(){o()?e.addEventListener("mousemove",f):a()}function c(){o()&&f(v)}function x(){e.removeEventListener("mousemove",f)}function f(e){var t,n=v=e,r=n.clientX,i=n.clientY;if(h.popperInstance&&h.state.currentPlacement){var o=E.closestCallback(e.target,function(e){return e===g}),a=g.getBoundingClientRect(),s=h.props.followCursor,l="horizontal"===s,u="vertical"===s,c=E.includes(["top","bottom"],E.getBasePlacement(h.state.currentPlacement)),f={size:t=c?b.offsetWidth:b.offsetHeight,x:c?t:0,y:c?0:t},d=f.size,p=f.x,m=f.y;!o&&h.props.interactive||(null===y&&(y=h.popperInstance.reference),h.popperInstance.reference={referenceNode:g,clientWidth:0,clientHeight:0,getBoundingClientRect:function(){return{width:c?d:0,height:c?0:d,top:(l?a.top:i)-m,bottom:(l?a.bottom:i)+m,left:(u?a.left:r)-p,right:(u?a.right:r)+p}}},h.popperInstance.update()),w()&&x()}}return{onAfterUpdate:function(e,t){var n;r||(n=t,Object.keys(n).forEach(function(e){i[e]=E.useIfDefined(n[e],i[e])}),t.placement&&s()),t.placement&&l(),requestAnimationFrame(c)},onMount:function(){c(),l()},onShow:function(){t()&&(v=n={clientX:0,clientY:0},s(),u())},onTrigger:function(e,t){n||(E.isMouseEvent(t)&&(n={clientX:t.clientX,clientY:t.clientY},v=t),s(),u())},onUntrigger:function(){h.state.isVisible||(x(),n=null)},onHidden:function(){x(),a(),n=null}}}},n={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t=e.reference;function n(){return e.props.inlinePositioning}return{onHidden:function(){n()&&(e.popperInstance.reference=t)},onShow:function(){n()&&(e.popperInstance.reference={referenceNode:t,clientWidth:0,clientHeight:0,getBoundingClientRect:function(){return function(t,e,n){if(n.length<2||null===t)return e;switch(t){case"top":case"bottom":var r=n[0],i=n[n.length-1],o="top"===t,a=r.top,s=i.bottom,l=o?r.left:i.left,u=o?r.right:i.right;return{top:a,bottom:s,left:l,right:u,width:u-l,height:s-a};case"left":case"right":var c=Math.min.apply(Math,n.map(function(e){return e.left})),f=Math.max.apply(Math,n.map(function(e){return e.right})),d=n.filter(function(e){return"left"===t?e.left===c:e.right===f}),p=d[0].top,m=d[d.length-1].bottom;return{top:p,bottom:m,left:c,right:f,width:f-c,height:m-p};default:return e}}(e.state.currentPlacement&&E.getBasePlacement(e.state.currentPlacement),t.getBoundingClientRect(),E.arrayFrom(t.getClientRects()))}})}}}},r={name:"sticky",defaultValue:!1,fn:function(n){var r=n.reference,i=n.popper;function o(e){return!0===n.props.sticky||n.props.sticky===e}var a=null,s=null;function l(){var e=o("reference")?(n.popperInstance?n.popperInstance.reference:r).getBoundingClientRect():null,t=o("popper")?i.getBoundingClientRect():null;(e&&u(a,e)||t&&u(s,t))&&n.popperInstance.update(),a=e,s=t,n.state.isMounted&&requestAnimationFrame(l)}return{onMount:function(){n.props.sticky&&l()}}}};function u(e,t){return!e||!t||e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left}o.createTippyWithPlugins=E.createTippyWithPlugins,o.default=E.tippy,o.hideAll=E.hideAll,o.roundArrow=E.ROUND_ARROW,o.animateFill=e,o.createSingleton=function(a,e,t){void 0===e&&(e={}),void 0===t&&(t=[]),"production"!==d.env.NODE_ENV&&E.errorWhen(!Array.isArray(a),["The first argument passed to createSingleton() must be an array of tippy","instances. The passed value was",String(a)].join(" ")),t=e.plugins||t,a.forEach(function(e){e.disable()});var s,l,u=E._extends({},E.defaultProps,{},e).aria,r=!1,c=a.map(function(e){return e.reference}),n={fn:function(i){function o(e){if(s){var t="aria-"+s;e&&!i.props.interactive?l.setAttribute(t,i.popperChildren.tooltip.id):l.removeAttribute(t)}}return{onAfterUpdate:function(e,t){var n=t.aria;void 0!==n&&n!==u&&(r?(r=!0,i.setProps({aria:null}),r=!1):u=n)},onDestroy:function(){a.forEach(function(e){e.enable()})},onMount:function(){o(!0)},onUntrigger:function(){o(!1)},onTrigger:function(e,t){var n=t.currentTarget,r=c.indexOf(n);n!==l&&(l=n,s=u,i.state.isVisible&&o(!0),i.popperInstance.reference=n,i.setContent(a[r].props.content))}}}};return E.tippy(E.div(),E._extends({},e,{plugins:[n].concat(t),aria:null,triggerTarget:c}))},o.delegate=function(e,i,t){void 0===t&&(t=[]),"production"!==d.env.NODE_ENV&&E.errorWhen(!(i&&i.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" ")),t=i.plugins||t;var o=[],a=[],s=i.target,n=E.removeProperties(i,["target"]),r=E._extends({},n,{plugins:t,trigger:"manual"}),l=E._extends({},n,{plugins:t,showOnCreate:!0}),u=E.tippy(e,r);function c(e){if(e.target){var t=e.target.closest(s);if(t){var n=t.getAttribute("data-tippy-trigger")||i.trigger||E.defaultProps.trigger;if(E.includes(n,p[e.type])){var r=E.tippy(t,l);r&&(a=a.concat(r))}}}}function f(e,t,n,r){void 0===r&&(r=!1),e.addEventListener(t,n,r),o.push({node:e,eventType:t,handler:n,options:r})}return E.normalizeToArray(u).forEach(function(e){var t,n=e.destroy;e.destroy=function(e){void 0===e&&(e=!0),e&&a.forEach(function(e){e.destroy()}),a=[],o.forEach(function(e){var t=e.node,n=e.eventType,r=e.handler,i=e.options;t.removeEventListener(n,r,i)}),o=[],n()},f(t=e.reference,"mouseover",c),f(t,"focusin",c),f(t,"click",c)}),u},o.followCursor=t,o.inlinePositioning=n,o.sticky=r}).call(this,i("_process"))},{"./tippy.chunk.cjs.js":6,_process:4,"popper.js":3}],8:[function(e,t,n){"use strict";var r=a(e("mithril")),i=a(e("./view")),o=a(e("./texte/de"));function a(e){return e&&e.__esModule?e:{default:e}}document,window,domIsReady(function(){window.texte=o.default,r.default.mount(window.document.getElementById("gradido-mithril-user-search"),i.default)})},{"./texte/de":13,"./view":14,mithril:1}],9:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r=o(e("mithril")),i=o(e("numeral"));function o(e){return e&&e.__esModule?e:{default:e}}var a=!1,s={view:function(e){return(0,r.default)("span",(t=e.attrs.centAmount/1e4,i.default.locale("de"),(0,i.default)(t).format("0,0.00")+" GDD"));var t},oninit:function(e){a||(i.default.register("locale","de",{delimiters:{thousands:".",decimal:","},currency:{symbol:"€"}}),i.default.locale("de"),a=!0)}};n.default=s},{mithril:1,numeral:2}],10:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return{oncreate:function(e){(0,r.default)(e.dom,{content:e.attrs.accountState.getTooltipText(),placement:"right-start",theme:"rippleUI-theme",arrow:!1})},onremove:function(){},view:function(){return e}}},i(e("mithril"));var r=i(e("tippy.js"));function i(e){return e&&e.__esModule?e:{default:e}}},{mithril:1,"tippy.js":7}],11:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r,i=(r=e("mithril"))&&r.__esModule?r:{default:r},o={view:function(e){return(0,i.default)("div.modal.visible-modal",{tabindex:"-1",role:"dialog"},(0,i.default)("div.modal-dialog",{role:"document"},(0,i.default)("div.modal-content",[(0,i.default)("p.grid-header",e.attrs.title),(0,i.default)("div.modal-body",e.attrs.body),(0,i.default)("div.modal-footer",[(0,i.default)("button.btn.btn-primary",{type:"button","data-dismiss":"modal",onclick:e.attrs.dismiss},"Ok")])])))},oninit:function(e){}};n.default=o},{mithril:1}],12:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r,i=(r=e("mithril"))&&r.__esModule?r:{default:r};function o(e,t){for(var n=0;n';if(t+='
'+e.description.title+"
",null!=e.description.lines){for(var n in t+="
    ",e.description.lines){var r=e.description.lines[n],i=window.texte.ACCOUNT_STATES.LINES[n],o="mdi ";if("+"===r)o+=" mdi-check color-primary";else if("-"===r)o+=" mdi-close color-danger";else{if("/"!==r)continue;o+=" mdi-alert-circle-outline color-warning"}t+="
  • ",t+='',t+=" ",t+=""+i.title+": "+i[r]+"",t+="
  • "}t+="
"}return t+"
"}}]),s);function s(e){!function(e){if(!(e instanceof s))throw new TypeError("Cannot call a class as a function")}(this),this.stateName=e,this.texte=window.texte.ACCOUNT_STATES[e]}n.default=a},{mithril:1}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0,n.default={ACCOUNT_STATES:{LINES:[{title:"Login-Server","+":"Das Benutzer-Konto liegt auf dem Login-Server!","-":"Das Benutzer-Konto existiert nicht auf dem Login-Server!"},{title:"Konto Aktivierung","+":"Der Benutzer hat sein Konto aktiviert!","-":"Der Benutzer hat noch nicht auf den Link in seiner E-Mail geklickt!"},{title:"Schlüsselpaar","+":"Es wurde bereits ein Schlüsselpaar für den Benutzer erzeugt und ihm eine Passphrase gezeigt!","-":"Es wurden noch keine Schlüssel und Passphrase für den Benutzer erzeugt!"},{title:"Gemeinschafts-Server","+":"Das Benutzer-Konto wurde auf auf den Gemeinschafts-Server kopiert!","-":"Das Benutzer-Konto wurde noch nicht auf den Gemeinschafts-Server kopiert!"},{title:"Gradidos","+":"Es können Gradidos an den Benutzer geschickt werden!","-":"Es können noch keine Gradidos an den Benutzer geschickt werden!","/":"Es können theoretisch Gradidos an den Benutzer geschickt werden, aber es ist nicht sicher ob er sie verwenden kann!"}],"account created":{title:"Konto angelegt",color:"secondary",description:{title:"Das Konto wurde auf dem Login-Server angelegt, vermutlich durch eine elopage-Anmeldung.",lines:["+","-","-","-","-"]},todo:{title:"Als nächstes müsste der Benutzer den Link in seiner E-Mail anklicken und den Anweisungen folgen. ",lines:["Stimmt die E-Mail Adresse? Hat der Benutzer in seinem Spam-Verzeichnis nachgesehen?","{{verification-resend}}","{{mailto-verification-resend}}"]}},"account not on login-server":{title:"Konto nicht auf Login-Server",color:"danger",description:{title:"Das Konto existiert nicht (mehr) auf dem Login-Server: ein Fehler oder es wurde nur teilweise gelöscht.",lines:["-","+","+","+","/"]},todo:{title:"Wenn der Benutzer seine Passphrase hat, kann er sein Konto auf dem Login-Server wiederherstellen, ansonsten bleibt eigentlich nur das Konto auf dem Gemeinschafts-Server zu löschen",lines:["Nachdem das Konto auf dem Login-Server kopiert wurde, bekommt der Benutzer automatisch eine E-Mail mit einem Link zur Kontoaktivierung zugeschickt.","{{copy-from-community-to-login-server}}","{{user-transactions-overview}}","Es wird nur der Benutzer gelöscht, nicht seine Transaktionen. Zu diesen hat er wieder Zugriff wenn er sein Konto mit Hilfe seiner Passphrase wiederherstellt.","{{delete-from-community-server}}"]}},"email activated":{title:"Konto aktiviert",color:"primary",description:{title:"Das Konto wurde vom Benutzer aktiviert und Schlüssel erzeugt, aber noch nicht auf diesen Gemeinschafts-Server kopiert.",lines:["+","+","+","-","-"]},todo:{title:"Das Benutzer Konto müsste vom Login-Server auf den Community-Server kopiert werden.",lines:["{{copy-from-login-to-community-server}}"]}},"account copied to community":{title:"Konto auf Gemeinschafts-Server",color:"success",description:{title:"Das Konto ist vollständig aktiviert und es können Gradidos überwiesen werden.",lines:["+","+","+","+","+"]}},"email not activated":{title:"Konto nicht aktiviert",color:"warning",description:{title:"Das Konto wurde auf dem Login-Server angelegt, vermutlich durch eine elopage-Anmeldung. Es wurde aber noch nicht aktiviert!",lines:["+","-","-","-","-"]},todo:{title:"Als nächstes müsste der Benutzer den Link in seiner E-Mail anklicken und den Anweisungen folgen. ",lines:["Stimmt die E-Mail Adresse? Hat der Benutzer in seinem Spam-Verzeichnis nachgesehen?","{{verification-resend}}","{{mailto-verification-resend}}"]}},"account multiple times on login-server":{title:"Konto mehrfach vorhanden",color:"danger",description:{title:"Das Konto ist auf dem Login-Server mehrfach vorhanden, das sollte nicht sein, auf dem Login-Server muss ein Fehler passiert sein!!"},todo:{title:"Du solltest mit dem Entwickler in Kontakt treten.",lines:["{{mailto-developer}}"]}},"account not on community server":{title:"Konto nicht auf Gemeinschafts-Server",color:"secondary",description:{title:"Das Konto wurde auf dem Login-Server angelegt, aber existiert noch nicht auf dem Gemeinschafts-Server!",lines:["+",null,"-","-","-"]},todo:{title:"Das sollte eigentlich nicht passieren, du solltest mit dem Entwickler sprechen.",lines:["{{mailto-developer}}"]}},"no keys":{title:"Keine Schlüssel generiert",color:"warning",description:{title:"Das Konto wurde auf dem Login-Server angelegt, aber es wurden noch keine Schlüssel generiert!",lines:["+","+","-","-","-"]},todo:{title:"Der Benutzer muss sich mit seinen Daten einloggen, dann müsste er automatisch durch die Schlüsselgenerierung/Konto-Wiederherstellung geführt werden",lines:["{{mailto-user-login}}","Wenn der Benutzer sein Passwort vergessen hat, kann er sich auch eine Passwort Reset E-Mail zuschicken lassen.","{{reset-password}}","{{mailto-reset-password}}"]}}},NO_USER_FOUND:"Keine Benutzer gefunden",USER_FOUND:"Benutzer gefunden",NAME:"Name",EMAIL:"E-Mail",BALANCE:"Kontostand",PUBLIC_KEY:"Öffentlicher
Schlüssel",CREATED:"Erstellt",COPY_FROM_LOGIN_TO_COMMUNITY:"Vom Login-Server zum Gemeinschafts-Server kopieren",COPY_FROM_LOGIN_TO_COMMUNITY_SUCCESS:"Kontodaten wurden erfolgreich vom Login-Server zu diesem Gemeinschafts-Server kopiert!",COPY_FAILED:"Fehler beim Kopieren",AJAX_CRITICAL:"Kritischer Fehler beim Ajax-Request",COPY_IN_PROGRESS:"Wird kopiert"}},{}],14:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r=a(e("mithril")),i=a(e("./userTable")),o=a(e("../model/AccountState"));function a(e){return e&&e.__esModule?e:{default:e}}var s={view:function(e){return void 0===g_users?(0,r.default)(""):0"+s.toLocaleTimeString()}var l=!1;t.hasActions()&&(l=t.getRawColor());var u="down";return e.attrs.open&&(u="up"),(0,c.default)("tr",[(0,c.default)("td",!1!==l?(0,c.default)("i.mdi.mdi-menu-"+u+".btn.btn-xs.btn-"+l,{onclick:e.attrs.btnClick}):null),(0,c.default)("td.pr-0",[(0,c.default)("span.text-black.font-weight-medium.d-block",n.name),(0,c.default)((0,p.default)((0,c.default)("span",[(0,c.default)("span.status-indicator.rounded-indicator.small."+r),(0,c.default)("small",i)])),{accountState:t})]),(0,c.default)("td",n.email),(0,c.default)("td",(0,c.default)(d.default,{centAmount:n.balance})),(0,c.default)("td",{title:n.pubkeyhex},o),(0,c.default)("td",c.default.trust(a))])},oninit:function(e){}};n.default=i},{"../../lib/Gradido":9,"../../lib/Tooltip":10,"../../model/AccountState":12,mithril:1}]},{},[8])}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]); +!function r(i,o,a){function s(t,e){if(!o[t]){if(!i[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(l)return l(t,!0);throw(n=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",n}n=o[t]={exports:{}},i[t][0].call(n.exports,function(e){return s(i[t][1][e]||e)},n,n.exports,r,i,o,a)}return o[t].exports}for(var l="function"==typeof require&&require,e=0;e>>0,o=0;if(3===arguments.length)n=arguments[2];else{for(;o=n.clientWidth&&e>=n.clientHeight}),t=(0l[e]&&!r.escapeWithReference&&(n=Math.min(u[t],l[e]-("right"===e?u.width:u.height))),y({},t,n)}};return s.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";u=E({},u,c[t](e))}),e.offsets.popper=u,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,r=t.reference,i=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(i),t=a?"right":"bottom",i=a?"left":"top",a=a?"width":"height";return n[t]o(r[t])&&(e.offsets.popper[i]=o(r[t])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){if(!U(e.instance.modifiers,"arrow","keepTogether"))return e;var n=t.element;if("string"==typeof n){if(!(n=e.instance.popper.querySelector(n)))return e}else if(!e.instance.popper.contains(n))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var r=e.placement.split("-")[0],i=e.offsets,o=i.popper,a=i.reference,s=-1!==["left","right"].indexOf(r),l=s?"height":"width",u=s?"Top":"Left",c=u.toLowerCase(),t=s?"left":"top",i=s?"bottom":"right",r=A(n)[l];a[i]-ro[i]&&(e.offsets.popper[c]+=a[c]+r-o[i]),e.offsets.popper=x(e.offsets.popper);s=a[c]+a[l]/2-r/2,i=d(e.instance.popper),a=parseFloat(i["margin"+u]),u=parseFloat(i["border"+u+"Width"]),u=s-e.offsets.popper[c]-a-u,u=Math.max(Math.min(o[l]-r,u),0);return e.arrowElement=n,e.offsets.arrow=(y(n={},c,Math.round(u)),y(n,t,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(u,c){if(F(u.instance.modifiers,"inner"))return u;if(u.flipped&&u.placement===u.originalPlacement)return u;var d=C(u.instance.popper,u.instance.reference,c.padding,c.boundariesElement,u.positionFixed),f=u.placement.split("-")[0],p=M(f),m=u.placement.split("-")[1]||"",h=[];switch(c.behavior){case K:h=[f,p];break;case G:h=Y(f);break;case W:h=Y(f,!0);break;default:h=c.behavior}return h.forEach(function(e,t){if(f!==e||h.length===t+1)return u;f=u.placement.split("-")[0],p=M(f);var n=u.offsets.popper,r=u.offsets.reference,i=Math.floor,o="left"===f&&i(n.right)>i(r.left)||"right"===f&&i(n.left)i(r.top)||"bottom"===f&&i(n.top)i(d.right),l=i(n.top)i(d.bottom),r="left"===f&&a||"right"===f&&s||"top"===f&&l||"bottom"===f&&e,n=-1!==["top","bottom"].indexOf(f),i=!!c.flipVariations&&(n&&"start"===m&&a||n&&"end"===m&&s||!n&&"start"===m&&l||!n&&"end"===m&&e),l=!!c.flipVariationsByContent&&(n&&"start"===m&&s||n&&"end"===m&&a||!n&&"start"===m&&e||!n&&"end"===m&&l),l=i||l;(o||r||l)&&(u.flipped=!0,(o||r)&&(f=h[t+1]),l&&(m="end"===m?"start":"start"===m?"end":m),u.placement=f+(m?"-"+m:""),u.offsets.popper=E({},u.offsets.popper,D(u.instance.popper,u.offsets.reference,u.placement)),u=I(u.instance.modifiers,u,"flip"))}),u},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],r=e.offsets,i=r.popper,o=r.reference,a=-1!==["left","right"].indexOf(n),r=-1===["top","left"].indexOf(n);return i[a?"left":"top"]=o[n]-(r?i[a?"width":"height"]:0),e.placement=M(t),e.offsets.popper=x(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!U(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right or , not
","or ."].join(" ")),Ee("showOnInit"===t,"The `showOnInit` prop was renamed to `showOnCreate` in v5."),Ee("arrowType"===t,["The `arrowType` prop was removed in v5 in favor of overloading the `arrow`","prop.","\n\n",'"round" string was replaced with importing the string from the package.',"\n\n","* import {roundArrow} from 'tippy.js'; (ESM version)\n","* const {roundArrow} = tippy; (IIFE CDN version)","\n\n",'Before: {arrow: true, arrowType: "round"}\n',"After: {arrow: roundArrow}`"].join(" ")),Ee("touchHold"===t,["The `touchHold` prop was removed in v5 in favor of overloading the `touch`","prop.","\n\n","Before: {touchHold: true}\n",'After: {touch: "hold"}'].join(" ")),Ee("size"===t,["The `size` prop was removed in v5. Instead, use a theme that specifies","CSS padding and font-size properties."].join(" ")),Ee("theme"===t&&"google"===e,'The included theme "google" was renamed to "material" in v5.'),Ee(n,["Specifying placement in `popperOptions` is not supported. Use the base-level","`placement` prop instead.","\n\n",'Before: {popperOptions: {placement: "bottom"}}\n','After: {placement: "bottom"}'].join(" ")),Ee(r,["`"+t+"`","is not a valid prop. You may have spelled it incorrectly, or if it's a","plugin, forgot to pass it in an array as props.plugins.","\n\n","In v5, the following props were turned into plugins:","\n\n","* animateFill\n","* followCursor\n","* sticky","\n\n","All props: https://atomiks.github.io/tippyjs/all-props/\n","Plugins: https://atomiks.github.io/tippyjs/plugins/"].join(" "))})}var Ce={passive:!0},d="tippy-iOS",Ne="tippy-popper",ke="tippy-tooltip",Ae="tippy-content",f="tippy-arrow",p="tippy-svg-arrow",Me="."+Ne,m="."+ke,h="."+Ae,v="."+f,g="."+p,De={isTouch:!1},b=0;function y(){De.isTouch||(De.isTouch=!0,window.performance&&document.addEventListener("mousemove",w))}function w(){var e=performance.now();e-b<20&&(De.isTouch=!1,document.removeEventListener("mousemove",w)),b=e}function E(){var e,t=document.activeElement;i(t)&&(e=t._tippy,t.blur&&!e.state.isVisible&&t.blur())}var e="undefined"!=typeof window&&"undefined"!=typeof document,T=e?navigator.userAgent:"",Le=/MSIE |Trident\//.test(T),x=e&&/iPhone|iPad|iPod/.test(navigator.platform);function Ie(e){e=e&&x&&De.isTouch;document.body.classList[e?"add":"remove"](d)}function Fe(e){return e.split("-")[0]}function Pe(e){e.setAttribute("data-inertia","")}function Re(e){e.setAttribute("data-interactive","")}function je(e,t){l(t.content)?(n(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(e[t.allowHTML?"innerHTML":"textContent"]=t.content)}function Be(e){return{tooltip:e.querySelector(m),content:e.querySelector(h),arrow:e.querySelector(v)||e.querySelector(g)}}function ze(e){var t=oe();return!0===e?t.className=f:(t.className=p,l(e)?t.appendChild(e):n(t,e)),t}function Ue(e,t,n){var r=Be(e),i=r.tooltip,o=r.content,r=r.arrow;e.style.zIndex=""+n.zIndex,i.setAttribute("data-animation",n.animation),i.style.maxWidth="number"==typeof(e=n.maxWidth)?e+"px":e,n.role?i.setAttribute("role",n.role):i.removeAttribute("role"),t.content!==n.content&&je(o,n),!t.arrow&&n.arrow?(i.appendChild(ze(n.arrow)),i.setAttribute("data-arrow","")):t.arrow&&!n.arrow?(i.removeChild(r),i.removeAttribute("data-arrow")):t.arrow!==n.arrow&&(i.removeChild(r),i.appendChild(ze(n.arrow))),!t.interactive&&n.interactive?Re(i):t.interactive&&!n.interactive&&i.removeAttribute("data-interactive"),!t.inertia&&n.inertia?Pe(i):t.inertia&&!n.inertia&&i.removeAttribute("data-inertia"),t.theme!==n.theme&&(He(i,"remove",t.theme),He(i,"add",n.theme))}function Ve(t,n,r){["transitionend","webkitTransitionEnd"].forEach(function(e){t[n+"EventListener"](e,r)})}function He(t,n,e){pe(e).forEach(function(e){t.classList[n](e+"-theme")})}var Ye=1,Ke=[],Ge=[];function _(l,e){var i,t,n,r=Se(l,Z({},Te,{},_e(e)));if(!r.multiple&&l._tippy)return null;var o,a,s,u,c,d=!1,f=!1,p=!1,m=0,h=[],v=le(H,r.interactiveDebounce),g=ve(r.triggerTarget||l),b=Ye++,y=function(e,t){var n=oe();n.className=Ne,n.style.position="absolute",n.style.top="0",n.style.left="0";var r=oe();return r.className=ke,r.id="tippy-"+e,r.setAttribute("data-state","hidden"),r.setAttribute("tabindex","-1"),He(r,"add",t.theme),(e=oe()).className=Ae,e.setAttribute("data-state","hidden"),t.interactive&&Re(r),t.arrow&&(r.setAttribute("data-arrow",""),r.appendChild(ze(t.arrow))),t.inertia&&Pe(r),je(e,t),r.appendChild(e),n.appendChild(r),Ue(n,t,t),n}(b,r),w=Be(y),E=(c=r.plugins).filter(function(e,t){return c.indexOf(e)===t}),T=w.tooltip,e=w.content,x=[T,e],_={id:b,reference:l,popper:y,popperChildren:w,popperInstance:null,props:r,state:{currentPlacement:null,isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:E,clearDelayTimeouts:function(){clearTimeout(i),clearTimeout(t),cancelAnimationFrame(n)},setProps:function(n){var t,e;"production"!==We.env.NODE_ENV&&Ee(_.state.isDestroyed,we("setProps")),_.state.isDestroyed||("production"!==We.env.NODE_ENV&&(Oe(n,E),Ee(!!n.plugins&&(n.plugins.length!==E.length||E.some(function(e,t){return!n.plugins||!n.plugins[t]||e!==n.plugins[t]})),"Cannot update plugins")),M("onBeforeUpdate",[_,n]),U(),t=_.props,(e=Se(l,Z({},_.props,{},n,{ignoreAttributes:!0}))).ignoreAttributes=me(n.ignoreAttributes,t.ignoreAttributes),_.props=e,z(),t.interactiveDebounce!==e.interactiveDebounce&&(I(),v=le(H,e.interactiveDebounce)),Ue(y,t,e),_.popperChildren=Be(y),t.triggerTarget&&!e.triggerTarget?he(t.triggerTarget).forEach(function(e){e.removeAttribute("aria-expanded")}):e.triggerTarget&&l.removeAttribute("aria-expanded"),L(),_.popperInstance&&(xe.some(function(e){return Q(n,e)&&n[e]!==t[e]})?(e=_.popperInstance.reference,_.popperInstance.destroy(),W(),_.popperInstance.reference=e,_.state.isVisible&&_.popperInstance.enableEventListeners()):_.popperInstance.update()),M("onAfterUpdate",[_,n]))},setContent:function(e){_.setProps({content:e})},show:function(e){void 0===e&&(e=ee(_.props.duration,0,Te.duration)),"production"!==We.env.NODE_ENV&&Ee(_.state.isDestroyed,we("show"));var t=_.state.isVisible,n=_.state.isDestroyed,r=!_.state.isEnabled,i=De.isTouch&&!_.props.touch;t||n||r||i||k().hasAttribute("disabled")||(_.popperInstance||W(),M("onShow",[_],!1),!1!==_.props.onShow(_)&&(P(),y.style.visibility="visible",_.state.isVisible=!0,_.state.isMounted||ae(x.concat(y),0),a=function(){_.state.isVisible&&(ae([y],_.props.updateDuration),ae(x,e),se(x,"visible"),D(),L(),ge(Ge,_),Ie(!0),_.state.isMounted=!0,M("onMount",[_]),j(e,function(){_.state.isShown=!0,M("onShown",[_])}))},function(){m=0;var e=_.props.appendTo,t=k(),n=_.props.interactive&&e===Te.appendTo||"parent"===e?t.parentNode:re(e,[t]);n.contains(y)||n.appendChild(y),"production"!==We.env.NODE_ENV&&Ee(_.props.interactive&&e===Te.appendTo&&t.nextElementSibling!==y,["Interactive tippy element may not be accessible via keyboard navigation","because it is not directly after the reference element in the DOM source","order.","\n\n","Using a wrapper
or tag around the reference element solves","this by creating a new parentNode context.","\n\n","Specifying `appendTo: document.body` silences this warning, but it","assumes you are using a focus management solution to handle keyboard","navigation.","\n\n","See: https://atomiks.github.io/tippyjs/accessibility/#interactivity"].join(" ")),ie(_.popperInstance.modifiers,"flip","enabled",_.props.flip),_.popperInstance.enableEventListeners(),_.popperInstance.update()}()))},hide:function(e){void 0===e&&(e=ee(_.props.duration,1,Te.duration)),"production"!==We.env.NODE_ENV&&Ee(_.state.isDestroyed,we("hide"));var t=!_.state.isVisible&&!d,n=_.state.isDestroyed,r=!_.state.isEnabled&&!d;t||n||r||(M("onHide",[_],!1),!1===_.props.onHide(_)&&!d||(R(),y.style.visibility="hidden",_.state.isVisible=!1,_.state.isShown=!1,ae(x,e),se(x,"hidden"),D(),L(),j(e,function(){!_.state.isVisible&&y.parentNode&&y.parentNode.contains(y)&&(_.popperInstance.disableEventListeners(),_.popperInstance.options.placement=_.props.placement,y.parentNode.removeChild(y),0===(Ge=Ge.filter(function(e){return e!==_})).length&&Ie(!1),_.state.isMounted=!1,M("onHidden",[_]))})))},enable:function(){_.state.isEnabled=!0},disable:function(){_.hide(),_.state.isEnabled=!1},destroy:function(){"production"!==We.env.NODE_ENV&&Ee(_.state.isDestroyed,we("destroy")),_.state.isDestroyed||(d=!0,_.clearDelayTimeouts(),_.hide(0),U(),delete l._tippy,_.popperInstance&&_.popperInstance.destroy(),d=!1,_.state.isDestroyed=!0,M("onDestroy",[_]))}};l._tippy=_,y._tippy=_;var S=E.map(function(e){return e.fn(_)}),O=l.hasAttribute("aria-expanded");return z(),L(),r.lazy||W(),M("onCreate",[_]),r.showOnCreate&&$(),y.addEventListener("mouseenter",function(){_.props.interactive&&_.state.isVisible&&_.clearDelayTimeouts()}),y.addEventListener("mouseleave",function(e){_.props.interactive&&fe(_.props.trigger,"mouseenter")&&(v(e),g.addEventListener("mousemove",v))}),_;function C(){var e=_.props.touch;return Array.isArray(e)?e:[e,0]}function N(){return"hold"===C()[0]}function k(){return u||l}function A(e){return _.state.isMounted&&!_.state.isVisible||De.isTouch||o&&"focus"===o.type?0:ee(_.props.delay,e?0:1,Te.delay)}function M(t,n,e){void 0===e&&(e=!0),S.forEach(function(e){Q(e,t)&&e[t].apply(e,n)}),e&&(e=_.props)[t].apply(e,n)}function D(){var n,r,e=_.props.aria;e&&(n="aria-"+e,r=T.id,he(_.props.triggerTarget||l).forEach(function(e){var t=e.getAttribute(n);_.state.isVisible?e.setAttribute(n,t?t+" "+r:r):(t=t&&t.replace(r,"").trim())?e.setAttribute(n,t):e.removeAttribute(n)}))}function L(){O||he(_.props.triggerTarget||l).forEach(function(e){_.props.interactive?e.setAttribute("aria-expanded",_.state.isVisible&&e===k()?"true":"false"):e.removeAttribute("aria-expanded")})}function I(){g.body.removeEventListener("mouseleave",X),g.removeEventListener("mousemove",v),Ke=Ke.filter(function(e){return e!==v})}function F(e){if(!_.props.interactive||!y.contains(e.target)){if(k().contains(e.target)){if(De.isTouch)return;if(_.state.isVisible&&fe(_.props.trigger,"click"))return}!0===_.props.hideOnClick&&(f=!1,_.clearDelayTimeouts(),_.hide(),p=!0,setTimeout(function(){p=!1}),_.state.isMounted||R())}}function P(){g.addEventListener("mousedown",F,!0)}function R(){g.removeEventListener("mousedown",F,!0)}function j(e,t){function n(e){e.target===T&&(Ve(T,"remove",n),t())}if(0===e)return t();Ve(T,"remove",s),Ve(T,"add",n),s=n}function B(t,n,r){void 0===r&&(r=!1),he(_.props.triggerTarget||l).forEach(function(e){e.addEventListener(t,n,r),h.push({node:e,eventType:t,handler:n,options:r})})}function z(){N()&&(B("touchstart",V,Ce),B("touchend",Y,Ce)),pe(_.props.trigger).forEach(function(e){if("manual"!==e)switch(B(e,V),e){case"mouseenter":B("mouseleave",Y);break;case"focus":B(Le?"focusout":"blur",K);break;case"focusin":B("focusout",K)}})}function U(){h.forEach(function(e){var t=e.node,n=e.eventType,r=e.handler,e=e.options;t.removeEventListener(n,r,e)}),h=[]}function V(t){var e,n,r=!1;!_.state.isEnabled||G(t)||p||(u=(o=t).currentTarget,L(),!_.state.isVisible&&ne(t)&&Ke.forEach(function(e){return e(t)}),"click"!==t.type||fe(_.props.trigger,"mouseenter")&&!f||!1===_.props.hideOnClick||!_.state.isVisible?(e=(n=C())[0],n=n[1],De.isTouch&&"hold"===e&&n?i=setTimeout(function(){$(t)},n):$(t)):r=!0,"click"===t.type&&(f=!r),r&&X(t))}function H(e){var a,s,t=de(e.target,function(e){return e===l||e===y});"mousemove"===e.type&&t||(t=ce(y.querySelectorAll(Me)).concat(y).map(function(e){var t=e._tippy,n=t.popperChildren.tooltip,t=t.props.interactiveBorder;return{popperRect:e.getBoundingClientRect(),tooltipRect:n.getBoundingClientRect(),interactiveBorder:t}}),a=e.clientX,s=e.clientY,t.every(function(e){var t=e.popperRect,n=e.tooltipRect,r=e.interactiveBorder,i=Math.min(t.top,n.top),o=Math.max(t.right,n.right),e=Math.max(t.bottom,n.bottom),n=Math.min(t.left,n.left);return r element.cloneNode(true)"].join(" ")));t=t.reduce(function(e,t){t=t&&_(t,a);return t&&e.push(t),e},[]);return l(e)?t[0]:t}S.version="5.2.1",S.defaultProps=Te,S.setDefaultProps=o,S.currentInput=De,C.BACKDROP_CLASS="tippy-backdrop",C.ROUND_ARROW='',C._extends=Z,C.arrayFrom=ce,C.closestCallback=de,C.createTippyWithPlugins=function(r){"production"!==We.env.NODE_ENV&&Ee(!0,["createTippyWithPlugins([...]) has been deprecated.","\n\n","Use tippy.setDefaultProps({plugins: [...]}) instead."].join(" "));function e(e,t,n){return void 0===n&&(n=[]),n=(t=void 0===t?{}:t).plugins||n,S(e,Z({},t,{plugins:[].concat(r,n)}))}return e.version="5.2.1",e.defaultProps=Te,e.setDefaultProps=o,e.currentInput=De,e},C.currentInput=De,C.defaultProps=Te,C.div=oe,C.errorWhen=u,C.getBasePlacement=Fe,C.getOwnerDocument=ve,C.hideAll=function(e){var e=void 0===e?{}:e,n=e.exclude,r=e.duration;Ge.forEach(function(e){var t=!1;(t=n?i(n)?e.reference===n:e.popper===n.popper:t)||e.hide(r)})},C.includes=fe,C.isBrowser=e,C.isMouseEvent=ne,C.normalizeToArray=he,C.removeProperties=a,C.setVisibilityState=se,C.tippy=S,C.useIfDefined=me,C.warnWhen=Ee}.call(this)}.call(this,O("_process"))},{_process:4,"popper.js":3}],7:[function(i,e,o){!function(f){!function(){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var y=i("./tippy.chunk.cjs.js");i("popper.js");var d={mouseover:"mouseenter",focusin:"focus",click:"click"},e={name:"animateFill",defaultValue:!1,fn:function(e){var t=e.popperChildren,n=t.tooltip,r=t.content,i=e.props.animateFill?((t=y.div()).className=y.BACKDROP_CLASS,y.setVisibilityState([t],"hidden"),t):null;function o(){e.popperChildren.backdrop=i}return{onCreate:function(){i&&(o(),n.insertBefore(i,n.firstElementChild),n.setAttribute("data-animatefill",""),n.style.overflow="hidden",e.setProps({animation:"shift-away",arrow:!1}))},onMount:function(){var e,t;i&&(e=n.style.transitionDuration,t=Number(e.replace("ms","")),r.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y.setVisibilityState([i],"visible"),"production"!==f.env.NODE_ENV&&(y.warnWhen("absolute"!==getComputedStyle(i).position,"The `tippy.js/dist/backdrop.css` stylesheet has not been\n imported!\n \n The `animateFill` plugin requires this stylesheet to work."),y.warnWhen("none"===getComputedStyle(n).transform,"The `tippy.js/animations/shift-away.css` stylesheet has not\n been imported!\n \n The `animateFill` plugin requires this stylesheet to work.")))},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y.setVisibilityState([i],"hidden")},onAfterUpdate:function(){o()}}}},t={name:"followCursor",defaultValue:!1,fn:function(c){var d,f=c.reference,p=c.popper,m=null,e=y.getOwnerDocument(c.props.triggerTarget||f),n=null,r=!1,i=c.props;function t(){return"manual"===c.props.trigger.trim()}function o(){var e=!!t()||null!==n&&!(0===n.clientX&&0===n.clientY);return c.props.followCursor&&e}function h(){return y.currentInput.isTouch||"initial"===c.props.followCursor&&c.state.isVisible}function a(){c.popperInstance&&m&&(c.popperInstance.reference=m)}function s(){var e,t;!o()&&c.props.placement===i.placement||(t=(e=i.placement).split("-")[1],r=!0,c.setProps({placement:o()&&t?e.replace(t,"start"===t?"end":"start"):e}),r=!1)}function l(){c.popperInstance&&o()&&h()&&c.popperInstance.disableEventListeners()}function u(){o()?e.addEventListener("mousemove",b):a()}function v(){o()&&b(d)}function g(){e.removeEventListener("mousemove",b)}function b(e){var t,n,r,i,o,a,s=d=e,l=s.clientX,u=s.clientY;c.popperInstance&&c.state.currentPlacement&&(s=y.closestCallback(e.target,function(e){return e===f}),e=c.props.followCursor,t="horizontal"===e,n="vertical"===e,r=y.includes(["top","bottom"],y.getBasePlacement(c.state.currentPlacement)),e={size:e=r?p.offsetWidth:p.offsetHeight,x:r?e:0,y:r?0:e},i=e.size,o=e.x,a=e.y,!s&&c.props.interactive||(null===m&&(m=c.popperInstance.reference),c.popperInstance.reference={referenceNode:f,clientWidth:0,clientHeight:0,getBoundingClientRect:function(){var e=f.getBoundingClientRect();return{width:r?i:0,height:r?0:i,top:(t?e.top:u)-a,bottom:(t?e.bottom:u)+a,left:(n?e.left:l)-o,right:(n?e.right:l)+o}}},c.popperInstance.update()),h()&&g())}return{onAfterUpdate:function(e,t){var n;r||(n=t,Object.keys(n).forEach(function(e){i[e]=y.useIfDefined(n[e],i[e])}),t.placement&&s()),t.placement&&l(),requestAnimationFrame(v)},onMount:function(){v(),l()},onShow:function(){t()&&(d=n={clientX:0,clientY:0},s(),u())},onTrigger:function(e,t){n||(y.isMouseEvent(t)&&(n={clientX:t.clientX,clientY:t.clientY},d=t),s(),u())},onUntrigger:function(){c.state.isVisible||(g(),n=null)},onHidden:function(){g(),a(),n=null}}}},n={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t=e.reference;function n(){return e.props.inlinePositioning}return{onHidden:function(){n()&&(e.popperInstance.reference=t)},onShow:function(){n()&&(e.popperInstance.reference={referenceNode:t,clientWidth:0,clientHeight:0,getBoundingClientRect:function(){return function(t,e,n){if(n.length<2||null===t)return e;switch(t){case"top":case"bottom":var r=n[0],i=n[n.length-1],o="top"===t,a=r.top,s=i.bottom,l=(o?r:i).left,i=(o?r:i).right;return{top:a,bottom:s,left:l,right:i,width:i-l,height:s-a};case"left":case"right":var u=Math.min.apply(Math,n.map(function(e){return e.left})),c=Math.max.apply(Math,n.map(function(e){return e.right})),s=n.filter(function(e){return"left"===t?e.left===u:e.right===c}),a=s[0].top,s=s[s.length-1].bottom;return{top:a,bottom:s,left:u,right:c,width:c-u,height:s-a};default:return e}}(e.state.currentPlacement&&y.getBasePlacement(e.state.currentPlacement),t.getBoundingClientRect(),y.arrayFrom(t.getClientRects()))}})}}}},r={name:"sticky",defaultValue:!1,fn:function(n){var r=n.reference,i=n.popper;function o(e){return!0===n.props.sticky||n.props.sticky===e}var a=null,s=null;function l(){var e=o("reference")?(n.popperInstance?n.popperInstance.reference:r).getBoundingClientRect():null,t=o("popper")?i.getBoundingClientRect():null;(e&&u(a,e)||t&&u(s,t))&&n.popperInstance.update(),a=e,s=t,n.state.isMounted&&requestAnimationFrame(l)}return{onMount:function(){n.props.sticky&&l()}}}};function u(e,t){return!e||!t||e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left}o.createTippyWithPlugins=y.createTippyWithPlugins,o.default=y.tippy,o.hideAll=y.hideAll,o.roundArrow=y.ROUND_ARROW,o.animateFill=e,o.createSingleton=function(o,e,t){void 0===e&&(e={}),void 0===t&&(t=[]),"production"!==f.env.NODE_ENV&&y.errorWhen(!Array.isArray(o),["The first argument passed to createSingleton() must be an array of tippy","instances. The passed value was",String(o)].join(" ")),t=e.plugins||t,o.forEach(function(e){e.disable()});var a,s,l=y._extends({},y.defaultProps,{},e).aria,n=!1,u=o.map(function(e){return e.reference}),r={fn:function(r){function i(e){var t;a&&(t="aria-"+a,e&&!r.props.interactive?s.setAttribute(t,r.popperChildren.tooltip.id):s.removeAttribute(t))}return{onAfterUpdate:function(e,t){t=t.aria;void 0!==t&&t!==l&&(n?(n=!0,r.setProps({aria:null}),n=!1):l=t)},onDestroy:function(){o.forEach(function(e){e.enable()})},onMount:function(){i(!0)},onUntrigger:function(){i(!1)},onTrigger:function(e,t){var n=t.currentTarget,t=u.indexOf(n);n!==s&&(s=n,a=l,r.state.isVisible&&i(!0),r.popperInstance.reference=n,r.setContent(o[t].props.content))}}}};return y.tippy(y.div(),y._extends({},e,{plugins:[r].concat(t),aria:null,triggerTarget:u}))},o.delegate=function(e,r,t){void 0===t&&(t=[]),"production"!==f.env.NODE_ENV&&y.errorWhen(!(r&&r.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" ")),t=r.plugins||t;var i=[],o=[],a=r.target,n=y.removeProperties(r,["target"]),s=y._extends({},n,{plugins:t,trigger:"manual"}),l=y._extends({},n,{plugins:t,showOnCreate:!0}),s=y.tippy(e,s);function u(e){var t,n;!e.target||(n=e.target.closest(a))&&(t=n.getAttribute("data-tippy-trigger")||r.trigger||y.defaultProps.trigger,!y.includes(t,d[e.type])||(n=y.tippy(n,l))&&(o=o.concat(n)))}function c(e,t,n,r){e.addEventListener(t,n,r=void 0===r?!1:r),i.push({node:e,eventType:t,handler:n,options:r})}return y.normalizeToArray(s).forEach(function(e){var t=e.destroy;e.destroy=function(e){(e=void 0===e?!0:e)&&o.forEach(function(e){e.destroy()}),o=[],i.forEach(function(e){var t=e.node,n=e.eventType,r=e.handler,e=e.options;t.removeEventListener(n,r,e)}),i=[],t()},c(e=e.reference,"mouseover",u),c(e,"focusin",u),c(e,"click",u)}),s},o.followCursor=t,o.inlinePositioning=n,o.sticky=r}.call(this)}.call(this,i("_process"))},{"./tippy.chunk.cjs.js":6,_process:4,"popper.js":3}],8:[function(e,t,n){"use strict";var r=a(e("mithril")),i=a(e("./view")),o=a(e("./texte/de"));function a(e){return e&&e.__esModule?e:{default:e}}document,window,domIsReady(function(){window.texte=o.default,r.default.mount(window.document.getElementById("gradido-mithril-user-search"),i.default)})},{"./texte/de":13,"./view":14,mithril:1}],9:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r=o(e("mithril")),i=o(e("numeral"));function o(e){return e&&e.__esModule?e:{default:e}}var a=!1;n.default={view:function(e){return(0,r.default)("span",(e=e.attrs.centAmount/1e4,i.default.locale("de"),(0,i.default)(e).format("0,0.00")+" GDD"))},oninit:function(e){a||(i.default.register("locale","de",{delimiters:{thousands:".",decimal:","},currency:{symbol:"€"}}),i.default.locale("de"),a=!0)}}},{mithril:1,numeral:2}],10:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return{oncreate:function(e){(0,r.default)(e.dom,{content:e.attrs.accountState.getTooltipText(),placement:"right-start",theme:"rippleUI-theme",arrow:!1})},onremove:function(){},view:function(){return e}}},i(e("mithril"));var r=i(e("tippy.js"));function i(e){return e&&e.__esModule?e:{default:e}}},{mithril:1,"tippy.js":7}],11:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r=(e=e("mithril"))&&e.__esModule?e:{default:e};n.default={view:function(e){return(0,r.default)("div.modal.visible-modal",{tabindex:"-1",role:"dialog"},(0,r.default)("div.modal-dialog",{role:"document"},(0,r.default)("div.modal-content",[(0,r.default)("p.grid-header",e.attrs.title),(0,r.default)("div.modal-body",e.attrs.body),(0,r.default)("div.modal-footer",[(0,r.default)("button.btn.btn-primary",{type:"button",disabled:e.attrs.btnDisabled,"data-dismiss":"modal",onclick:e.attrs.dismiss},"Ok")])])))},oninit:function(e){}}},{mithril:1}],12:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r=(e=e("mithril"))&&e.__esModule?e:{default:e};function i(e,t){for(var n=0;n';if(t+='
'+e.description.title+"
",null!=e.description.lines){for(var n in t+="
    ",e.description.lines){var r=e.description.lines[n],i=window.texte.ACCOUNT_STATES.LINES[n],n="mdi ";if("+"===r)n+=" mdi-check color-primary";else if("-"===r)n+=" mdi-close color-danger";else{if("/"!==r)continue;n+=" mdi-alert-circle-outline color-warning"}t+="
  • ",t+='',t+=" ",t+=""+i.title+": "+i[r]+"",t+="
  • "}t+="
"}return t+"
"}}]),e=o;function o(e){!function(e){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this),this.stateName=e,this.texte=window.texte.ACCOUNT_STATES[e]}n.default=e},{mithril:1}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0,n.default={ACCOUNT_STATES:{LINES:[{title:"Login-Server","+":"Das Benutzer-Konto liegt auf dem Login-Server!","-":"Das Benutzer-Konto existiert nicht auf dem Login-Server!"},{title:"Konto Aktivierung","+":"Der Benutzer hat sein Konto aktiviert!","-":"Der Benutzer hat noch nicht auf den Link in seiner E-Mail geklickt!"},{title:"Schlüsselpaar","+":"Es wurde bereits ein Schlüsselpaar für den Benutzer erzeugt und ihm eine Passphrase gezeigt!","-":"Es wurden noch keine Schlüssel und Passphrase für den Benutzer erzeugt!"},{title:"Gemeinschafts-Server","+":"Das Benutzer-Konto wurde auf auf den Gemeinschafts-Server kopiert!","-":"Das Benutzer-Konto wurde noch nicht auf den Gemeinschafts-Server kopiert!"},{title:"Gradidos","+":"Es können Gradidos an den Benutzer geschickt werden!","-":"Es können noch keine Gradidos an den Benutzer geschickt werden!","/":"Es können theoretisch Gradidos an den Benutzer geschickt werden, aber es ist nicht sicher ob er sie verwenden kann!"}],"account created":{title:"Konto angelegt",color:"secondary",description:{title:"Das Konto wurde auf dem Login-Server angelegt, vermutlich durch eine elopage-Anmeldung.",lines:["+","-","-","-","-"]},todo:{title:"Als nächstes müsste der Benutzer den Link in seiner E-Mail anklicken und den Anweisungen folgen. ",lines:["Stimmt die E-Mail Adresse? Hat der Benutzer in seinem Spam-Verzeichnis nachgesehen?","{{verification-resend}}","{{mailto-verification-resend}}"]}},"account not on login-server":{title:"Konto nicht auf Login-Server",color:"danger",description:{title:"Das Konto existiert nicht (mehr) auf dem Login-Server: ein Fehler oder es wurde nur teilweise gelöscht.",lines:["-","+","+","+","/"]},todo:{title:"Wenn der Benutzer seine Passphrase hat, kann er sein Konto auf dem Login-Server wiederherstellen, ansonsten bleibt eigentlich nur das Konto auf dem Gemeinschafts-Server zu löschen",lines:["Nachdem das Konto auf dem Login-Server kopiert wurde, bekommt der Benutzer automatisch eine E-Mail mit einem Link zur Kontoaktivierung zugeschickt.","{{copy-from-community-to-login-server}}","
","Es wird nur der Benutzer gelöscht, nicht seine Transaktionen. Zu diesen hat er wieder Zugriff wenn er sein Konto mit Hilfe seiner Passphrase wiederhergestellt hat.","{{user-transactions-overview}}","{{delete-from-community-server}}"]}},"email activated":{title:"Konto aktiviert",color:"primary",description:{title:"Das Konto wurde vom Benutzer aktiviert und Schlüssel erzeugt, aber noch nicht auf diesen Gemeinschafts-Server kopiert.",lines:["+","+","+","-","-"]},todo:{title:"Das Benutzer Konto müsste vom Login-Server auf den Gemeinschafts-Server kopiert werden.",lines:["{{copy-from-login-to-community-server}}"]}},"account copied to community":{title:"Konto auf Gemeinschafts-Server",color:"success",description:{title:"Das Konto ist vollständig aktiviert und es können Gradidos überwiesen werden.",lines:["+","+","+","+","+"]}},"email not activated":{title:"Konto nicht aktiviert",color:"warning",description:{title:"Das Konto wurde auf dem Login-Server angelegt, vermutlich durch eine elopage-Anmeldung. Es wurde aber noch nicht aktiviert!",lines:["+","-","-","-","-"]},todo:{title:"Als nächstes müsste der Benutzer den Link in seiner E-Mail anklicken und den Anweisungen folgen. ",lines:["Stimmt die E-Mail Adresse? Hat der Benutzer in seinem Spam-Verzeichnis nachgesehen?","{{verification-resend}}","{{mailto-verification-resend}}"]}},"account multiple times on login-server":{title:"Konto mehrfach vorhanden",color:"danger",description:{title:"Das Konto ist auf dem Login-Server mehrfach vorhanden, das sollte nicht sein, auf dem Login-Server muss ein Fehler passiert sein!!"},todo:{title:"Du solltest mit dem Entwickler in Kontakt treten.",lines:["{{mailto-developer}}"]}},"account not on community server":{title:"Konto nicht auf Gemeinschafts-Server",color:"secondary",description:{title:"Das Konto wurde auf dem Login-Server angelegt, aber existiert noch nicht auf dem Gemeinschafts-Server!",lines:["+",null,"-","-","-"]},todo:{title:"Das sollte eigentlich nicht passieren, du solltest mit dem Entwickler sprechen.",lines:["{{mailto-developer}}"]}},"no keys":{title:"Keine Schlüssel generiert",color:"warning",description:{title:"Das Konto wurde auf dem Login-Server angelegt, aber es wurden noch keine Schlüssel generiert!",lines:["+","+","-","-","-"]},todo:{title:"Der Benutzer muss sich mit seinen Daten einloggen, dann müsste er automatisch durch die Schlüsselgenerierung/Konto-Wiederherstellung geführt werden",lines:["{{mailto-user-login}}","Wenn der Benutzer sein Passwort vergessen hat, kann er sich auch eine Passwort Reset E-Mail zuschicken lassen.","{{reset-password}}","{{mailto-reset-password}}"]}}},NO_USER_FOUND:"Keine Benutzer gefunden",USER_FOUND:"Benutzer gefunden",NAME:"Name",EMAIL:"E-Mail",BALANCE:"Kontostand",PUBLIC_KEY:"Öffentlicher
Schlüssel",CREATED:"Erstellt",COPY_FROM_LOGIN_TO_COMMUNITY:"Vom Login-Server zum Gemeinschafts-Server kopieren",COPY_FROM_LOGIN_TO_COMMUNITY_SUCCESS:"Kontodaten wurden erfolgreich vom Login-Server zu diesem Gemeinschafts-Server kopiert!",COPY_FROM_COMMUNITY_TO_LOGIN:"Vom Gemeinschafts-Server zum Login-Server kopieren",COPY_FROM_COMMUNITY_TO_LOGIN_SUCCESS:"Kontodaten wurden erfolgreich vom Gemeinschafts-Server zum Login-Server kopiert!",DELETE_FROM_COMMUNITY:"Benutzer Konto vom Gemeinschafts-Server löschen",DELETE_FROM_COMMUNITY_SUCCESS:"Benutzer Konto vom Gemeinschafts-Server erfolgreich gelöscht",VERIFICATION_EMAIL_RESEND:"Verification Email erneut zusenden",VERIFICATION_EMAIL_RESEND_SUCCESS:"Verification Email wird erneut zugestellt",COPY_FAILED:"Fehler beim Kopieren",DELETE_FAILED:"Fehler beim löschen",RESEND_FAILED:"Senden fehlgeschlagen",AJAX_CRITICAL:"Kritischer Fehler beim Ajax-Request",COPY_IN_PROGRESS:"Wird kopiert",DELETE_IN_PROGRESS:"Wird gelöscht",RESEND_IN_PROGRESS:"Wird gesendet",RECEIVE_TRANSACTIONS_COUNT:"Erhaltene Transaktionen: ",SENDED_TRANSACTIONS_COUNT:"gesendete Transaktionen: ",CREATION_TRANSACTIONS_COUNT:"erhaltende Schöpfungs-Transaktionen: "}},{}],14:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r=a(e("mithril")),i=a(e("./userTable")),o=a(e("../model/AccountState"));function a(e){return e&&e.__esModule?e:{default:e}}n.default={view:function(e){return void 0===g_users?(0,r.default)(""):0"===e)return i.default.trust("
    ");if(t){var n=function(){switch(t[1]){case"copy-from-login-to-community-server":return o.default;case"user-transactions-overview":return a.default;case"copy-from-community-to-login-server":return s.default;case"verification-resend":return l.default}return null}();return n?(0,i.default)("li",(0,i.default)(n,{user:r.attrs.user,updateState:r.attrs.updateState,deleteUser:r.attrs.deleteUser})):(0,i.default)("li",e)}return(0,i.default)("li",e)})]):null]))},oninit:function(e){e.state.accountStateTexte=window.texte.ACCOUNT_STATES[e.attrs.user.indicator.name]}}},{"./actions/copyCommunityLogin":16,"./actions/copyLoginCommunity":17,"./actions/deleteCommunityServer":18,"./actions/userTransactionsOverview":19,"./actions/verificationResend":20,mithril:1}],23:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var d=r(e("mithril")),f=r(e("../../model/AccountState")),p=r(e("../../lib/Gradido")),m=r(e("../../lib/Tooltip")),h=r(e("../../lib/dialog"));function r(e){return e&&e.__esModule?e:{default:e}}n.default={view:function(t){var e=new f.default(t.attrs.user.indicator.name),n=t.attrs.user,r=e.getColor(),i=e.getTitle(),o=n.pubkeyhex;""!==o&&(o=n.pubkeyhex.substring(0,10)+"...");var a=n.created;a&&(a=(c=new Date(a)).toLocaleDateString()+"
    "+c.toLocaleTimeString());var s=!1;e.hasActions()&&(s=e.getRawColor(),s="primary");var l="down";t.attrs.open&&(l="up");var u=n.email,c=!1;return 25/src/$1' + }, + transform: { + '^.+\\.vue$': 'vue-jest', + // '.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', + "^.+\\.(js|jsx)?$": "babel-jest" + }, + //setupFiles: [ + // "/test/registerContext.js" + //], + testMatch: [ + "**/?(*.)+(spec|test).js?(x)" + ], + // snapshotSerializers: ['jest-serializer-vue'], + transformIgnorePatterns: ['/node_modules/'] + }; + \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index 45c251fc5..7f947a8b5 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,10 +8,15 @@ "build": "vue-cli-service build", "lint": "vue-cli-service lint", "dev": "yarn run serve", - "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'" + "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'", + "test": "jest" }, "dependencies": { + "@vue/test-utils": "^1.1.3", "axios": "^0.21.1", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^26.6.3", + "babel-plugin-require-context-hook": "^1.0.0", "bootstrap": "4.3.1", "bootstrap-vue": "^2.5.0", "chart.js": "^2.9.3", @@ -27,6 +32,7 @@ "flatpickr": "^4.5.7", "fuse.js": "^3.2.0", "google-maps": "^3.2.1", + "jest": "^26.6.3", "nouislider": "^12.1.0", "particles-bg-vue": "1.2.3", "perfect-scrollbar": "^1.3.0", @@ -45,6 +51,7 @@ "vue-flatpickr-component": "^8.1.2", "vue-good-table": "^2.21.3", "vue-i18n": "^8.22.4", + "vue-jest": "^3.0.7", "vue-moment": "^4.1.0", "vue-qrcode": "^0.3.5", "vue-qrcode-reader": "^2.3.16", diff --git a/frontend/src/components/CloseButton.spec.js b/frontend/src/components/CloseButton.spec.js new file mode 100644 index 000000000..3bf307c28 --- /dev/null +++ b/frontend/src/components/CloseButton.spec.js @@ -0,0 +1,32 @@ +import { mount } from '@vue/test-utils' + +import CloseButton from './CloseButton' + +const localVue = global.localVue + +describe('CloseButton', () => { + + let wrapper + let propsData = { + target: "Target", + expanded: false, + } + + const Wrapper = () => { + return mount(CloseButton, { localVue, propsData }) + } + + describe('mount', () => { + + beforeEach(() => { + wrapper = Wrapper() + }) + + it('emmits click event', () => { + wrapper.find('.navbar-toggler').trigger('click') + expect(wrapper.emitted('click')).toBeTruthy() + }) + + }) + +}) diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js index 349d2863b..0b62468fb 100644 --- a/frontend/src/store/store.js +++ b/frontend/src/store/store.js @@ -66,7 +66,7 @@ export const store = new Vuex.Store({ state.session_id = session_id }, user_balance: (state,balance) => { - //console.log('mutation: user_balance') + console.log('mutation: user_balance') state.user.balance = (balance/10000) }, user_balance_gdt: (state,balance) => { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index aecec84d1..153f68808 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -14,6 +14,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.6.tgz#11972d07db4c2317afdbf41d6feb3a730301ef4e" integrity sha512-VhgqKOWYVm7lQXlvbJnWOzwfAQATd2nV52koT0HZ/LdDH0m4DUDwkKYsH+IwpXb+bKPyBJzawA4I6nBKqZcpQw== +"@babel/compat-data@^7.13.8": + version "7.13.11" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.11.tgz#9c8fe523c206979c9a81b1e12fe50c1254f1aa35" + integrity sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg== + "@babel/core@^7.0.0": version "7.13.1" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.1.tgz#7ddd027176debe40f13bb88bac0c21218c5b1ecf" @@ -36,6 +41,28 @@ semver "7.0.0" source-map "^0.5.0" +"@babel/core@^7.1.0", "@babel/core@^7.7.5": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" + integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.9" + "@babel/helper-compilation-targets" "^7.13.10" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.10" + "@babel/parser" "^7.13.10" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" @@ -45,6 +72,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.13.9": + version "7.13.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" + integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" @@ -70,6 +106,16 @@ browserslist "^4.14.5" semver "7.0.0" +"@babel/helper-compilation-targets@^7.13.10": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" + integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.0.tgz#28d04ad9cfbd1ed1d8b988c9ea7b945263365846" @@ -178,7 +224,7 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.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.8.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== @@ -252,6 +298,15 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" +"@babel/helpers@^7.13.10": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" + integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/highlight@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" @@ -261,6 +316,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/parser@^7.1.0", "@babel/parser@^7.13.10": + version "7.13.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" + integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== + "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.7.0": version "7.13.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.4.tgz#340211b0da94a351a6f10e63671fa727333d13ab" @@ -325,13 +385,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0", "@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-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + 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-decorators@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" @@ -346,7 +420,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0", "@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== @@ -360,20 +441,55 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + 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.8.3": + 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.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@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.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^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-top-level-await@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-arrow-functions@^7.2.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" @@ -670,7 +786,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.12.13": +"@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== @@ -679,7 +795,7 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.7.0": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.7.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== @@ -703,7 +819,7 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.7.0": +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== @@ -712,6 +828,19 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -753,6 +882,193 @@ cssnano-preset-default "^4.0.0" postcss "^7.0.0" +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -775,6 +1091,20 @@ consola "^2.15.0" node-fetch "^2.6.1" +"@sinonjs/commons@^1.7.0": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@soda/friendly-errors-webpack-plugin@^1.7.1": version "1.8.0" resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz#84751d82a93019d5c92c0cf0e45ac59087cd2240" @@ -785,6 +1115,39 @@ string-width "^2.0.0" strip-ansi "^5" +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.14" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" + integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639" + integrity sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw== + dependencies: + "@babel/types" "^7.3.0" + "@types/chart.js@^2.7.55": version "2.9.30" resolved "https://registry.yarnpkg.com/@types/chart.js/-/chart.js-2.9.30.tgz#34b99897f4f5ef0f74c8fe4ced70ac52b4d752dd" @@ -805,6 +1168,32 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + "@types/json-schema@^7.0.5": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" @@ -825,11 +1214,43 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/prettier@^2.0.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" + integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== + "@types/q@^1.5.1": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" @@ -1070,6 +1491,15 @@ resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab" integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== +"@vue/test-utils@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.1.3.tgz#747f5683d8d4633c85a385fe2e02c1bb35bec153" + integrity sha512-BAY1Cwe9JpkJseimC295EW3YlAmgIJI9OPkg2FSP62+PHZooB0B+wceDi9TYyU57oqzL0yLbcP73JKFpKiLc9A== + dependencies: + dom-event-types "^1.0.0" + lodash "^4.17.15" + pretty "^2.0.0" + "@vue/web-component-wrapper@^1.2.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" @@ -1230,6 +1660,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -1243,6 +1678,14 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -1285,6 +1728,11 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.5: + version "8.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" + integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== + address@^1.0.3: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -1345,6 +1793,13 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -1402,7 +1857,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: +anymatch@^3.0.3, anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== @@ -1600,6 +2055,11 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + babel-eslint@^10.0.1, babel-eslint@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -1617,6 +2077,20 @@ babel-helper-vue-jsx-merge-props@^2.0.0: resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + babel-loader@^8.0.5: version "8.2.2" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" @@ -1627,6 +2101,13 @@ babel-loader@^8.0.5: make-dir "^3.1.0" schema-utils "^2.6.5" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + babel-plugin-component@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz#9b023a23ff5c9aae0fd56c5a18b9cab8c4d45eea" @@ -1641,6 +2122,27 @@ babel-plugin-dynamic-import-node@^2.2.0, babel-plugin-dynamic-import-node@^2.3.3 dependencies: object.assign "^4.1.0" +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + babel-plugin-module-resolver@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" @@ -1676,7 +2178,56 @@ babel-plugin-polyfill-regenerator@^0.1.2: dependencies: "@babel/helper-define-polyfill-provider" "^0.1.2" -babel-runtime@6.x: +babel-plugin-require-context-hook@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-require-context-hook/-/babel-plugin-require-context-hook-1.0.0.tgz#3f0e7cce87c338f53639b948632fd4e73834632d" + integrity sha512-EMZD1563QUqLhzrqcThk759RhuNVX/ZJdrtGK6drwzgvnR+ARjWyXIHPbu+tUNaMGtPz/gQeAM2M6VUw2UiUeA== + +babel-plugin-transform-es2015-modules-commonjs@^6.26.0: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@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-top-level-await" "^7.8.3" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +babel-runtime@6.x, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -1684,6 +2235,47 @@ babel-runtime@6.x: core-js "^2.4.0" regenerator-runtime "^0.11.0" +babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1856,7 +2448,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: +braces@^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== @@ -1878,6 +2470,11 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + 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" @@ -1950,6 +2547,13 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4 escalade "^3.1.1" node-releases "^1.1.70" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -2161,11 +2765,16 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -2181,6 +2790,13 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + case-sensitive-paths-webpack-plugin@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" @@ -2219,6 +2835,11 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" @@ -2308,6 +2929,11 @@ ci-info@^1.5.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + 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" @@ -2321,6 +2947,11 @@ circular-json@^0.3.1: resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2404,6 +3035,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -2422,16 +3062,16 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone@2.x, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2451,6 +3091,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2516,7 +3161,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2, commander@^2.18.0, commander@^2.20.0: +commander@2, commander@^2.18.0, commander@^2.19.0, 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== @@ -2576,6 +3221,23 @@ concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@~1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +condense-newlines@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" + integrity sha1-PemFVTE5R10yUCyDsC9gaE0kxV8= + dependencies: + extend-shallow "^2.0.1" + is-whitespace "^0.3.0" + kind-of "^3.0.2" + +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -2620,7 +3282,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2861,6 +3523,16 @@ css-what@^3.2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -2941,6 +3613,23 @@ csso@^4.0.2: dependencies: css-tree "^1.1.2" +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + current-script-polyfill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615" @@ -3243,6 +3932,15 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + datamaps@^0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/datamaps/-/datamaps-0.5.9.tgz#2a775473aaab29b55025208b2245e840ecfd4fe1" @@ -3267,7 +3965,15 @@ de-indent@^1.0.2: resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: +deasync@^0.1.15: + version "0.1.21" + resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.21.tgz#bb11eabd4466c0d8776f0d82deb8a6126460d30f" + integrity sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w== + dependencies: + bindings "^1.5.0" + node-addon-api "^1.7.1" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3293,6 +3999,11 @@ decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + 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" @@ -3320,7 +4031,7 @@ deepmerge@^1.2.0, deepmerge@^1.5.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== -deepmerge@^4.2.0: +deepmerge@^4.2.0, deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -3422,6 +4133,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" @@ -3432,6 +4148,11 @@ diacriticless@1.0.1: resolved "https://registry.yarnpkg.com/diacriticless/-/diacriticless-1.0.1.tgz#e7dda978c2919609bb48aee1efc5de6a337bd4c3" integrity sha1-592peMKRlgm7SK7h78XeajN71MM= +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3494,6 +4215,11 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-event-types@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" + integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ== + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -3517,6 +4243,13 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -3616,6 +4349,16 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3656,6 +4399,11 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -3851,6 +4599,11 @@ escape-string-regexp@^1.0.2, 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= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + escodegen@^1.11.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" @@ -3863,6 +4616,18 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@~1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" @@ -4164,6 +4929,11 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-sh@^0.3.2: + version "0.3.5" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.5.tgz#1b46bd6bcbf54fdc1e926a4f3d90126d42cec3df" + integrity sha512-0hzpaUazv4mEccxdn3TXC+HWNeVXNKMCJRK6E7Xyg+LwGAYI3yFag6jTkd4injV+kChYDQS1ftqDhnDVWNhU8A== + execa@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" @@ -4206,6 +4976,26 @@ execa@^3.3.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -4219,6 +5009,18 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + express@^4.16.3, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -4314,6 +5116,13 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-from-css@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/extract-from-css/-/extract-from-css-0.4.4.tgz#1ea7df2e7c7c6eb9922fa08e8adaea486f6f8f92" + integrity sha1-HqffLnx8brmSL6COitrqSG9vj5I= + dependencies: + css "^2.1.0" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -4388,6 +5197,13 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -4529,7 +5345,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -4665,7 +5481,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.3.1: +fsevents@^2.1.2, fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -4735,6 +5551,11 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -4796,7 +5617,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -4813,6 +5634,11 @@ globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -4871,11 +5697,16 @@ google-maps@^3.2.1: resolved "https://registry.yarnpkg.com/google-maps/-/google-maps-3.3.0.tgz#4432b4715406bc15268ad35b1dd1b04d974956a6" integrity sha512-pj4En0cWKG+lcBvC7qrzu5ItiMsYNTgjG2capsPzAbAM/O8ftugGpUUftTTwdGL8KlNvB4CEZ6IBWwpWYzUEpw== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + gzip-size@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" @@ -5048,11 +5879,23 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + html-entities@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + html-minifier@^3.2.3: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" @@ -5258,6 +6101,14 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -5308,6 +6159,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -5449,6 +6305,13 @@ is-ci@^1.0.10: dependencies: ci-info "^1.5.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" @@ -5554,6 +6417,11 @@ is-fullwidth-code-point@^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-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -5621,6 +6489,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + is-regex@^1.0.4, is-regex@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" @@ -5658,7 +6531,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -5673,6 +6546,11 @@ is-valid-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -5683,7 +6561,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -5722,16 +6600,441 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" + +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.6.2" + is-generator-fn "^2.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + natural-compare "^1.4.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" + +jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== + dependencies: + "@jest/core" "^26.6.3" + import-local "^3.0.2" + jest-cli "^26.6.3" + js-base64@^2.1.8: version "2.6.4" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== +js-beautify@^1.6.12, js-beautify@^1.6.14: + version "1.13.5" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.5.tgz#a08a97890cae55daf1d758d3f6577bd4a64d7014" + integrity sha512-MsXlH6Z/BiRYSkSRW3clNDqDjSpiSNOiG8xYVUBXt4k0LnGvDhlTGOlHX1VFtAdoLmtwjxMG5qiWKy/g+Ipv5w== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "^1.0.4" + nopt "^5.0.0" + js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" @@ -5772,6 +7075,38 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^16.4.0: + version "16.5.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.1.tgz#4ced6bbd7b77d67fb980e64d9e3e6fb900f97dd6" + integrity sha512-pF73EOsJgwZekbDHEY5VO/yKXUkab/DuvrQB/ANVizbr6UAHJsDdHXuotZYwkJSGQl1JM+ivXaqY+XBDDL4TiA== + dependencies: + abab "^2.0.5" + acorn "^8.0.5" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "6.0.1" + request "^2.88.2" + request-promise-native "^1.0.9" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.4.4" + xml-name-validator "^3.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -5887,6 +7222,11 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + launch-editor-middleware@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" @@ -5902,6 +7242,11 @@ launch-editor@^2.2.1: chalk "^2.3.0" shell-quote "^1.6.1" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -6031,6 +7376,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.transform@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" @@ -6078,7 +7428,7 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -6122,13 +7472,20 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.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" +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -6255,6 +7612,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -6322,7 +7687,7 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.1.3, 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== @@ -6374,6 +7739,11 @@ mixin-deep@^1.2.0: dependencies: minimist "^1.2.5" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + moment@^2.10.2, moment@^2.19.2: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" @@ -6492,6 +7862,19 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +node-addon-api@^1.7.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" + integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== + +node-cache@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-4.2.1.tgz#efd8474dee4edec4138cdded580f5516500f7334" + integrity sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A== + dependencies: + clone "2.x" + lodash "^4.17.15" + node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -6520,6 +7903,11 @@ node-gyp@^3.8.0: tar "^2.0.0" which "1" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + node-ipc@^9.1.1: version "9.1.3" resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.1.3.tgz#1df3f069d103184ae9127fa885dbdaea56a4436f" @@ -6558,6 +7946,23 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + node-releases@^1.1.70: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" @@ -6593,6 +7998,13 @@ node-sass@^4.12.0: dependencies: abbrev "1" +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -6691,6 +8103,11 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -6899,6 +8316,11 @@ osenv@0: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -7042,16 +8464,16 @@ parse5-htmlparser2-tree-adapter@^6.0.0: dependencies: parse5 "^6.0.1" +parse5@6.0.1, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + parse5@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -7165,7 +8587,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -7197,6 +8619,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" @@ -7218,7 +8647,7 @@ pkg-dir@^3.0.0: 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== @@ -7639,6 +9068,25 @@ pretty-error@^2.0.2: lodash "^4.17.20" renderkid "^2.0.4" +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" + integrity sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU= + dependencies: + condense-newlines "^0.2.1" + extend-shallow "^2.0.1" + js-beautify "^1.6.12" + 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" @@ -7659,6 +9107,19 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +prompts@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + proton-engine@^4.1.3: version "4.2.1" resolved "https://registry.yarnpkg.com/proton-engine/-/proton-engine-4.2.1.tgz#db938e4f673ddbd91ac70628b0733283a4571ef7" @@ -7682,7 +9143,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.28: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -7858,6 +9319,11 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -7866,6 +9332,15 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -7875,7 +9350,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^5.0.0: +read-pkg@^5.0.0, read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -8055,7 +9530,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.7: +request-promise-native@^1.0.7, request-promise-native@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -8064,7 +9539,7 @@ request-promise-native@^1.0.7: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0: +request@^2.87.0, request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -8130,6 +9605,13 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + 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-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" @@ -8145,12 +9627,17 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +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-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.1.5, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.4.0: +resolve@^1.1.5, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.4.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -8215,6 +9702,11 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + rtcpeerconnection-shim@^1.2.15: version "1.2.15" resolved "https://registry.yarnpkg.com/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz#e7cc189a81b435324c4949aa3dfb51888684b243" @@ -8280,6 +9772,21 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + sass-graph@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" @@ -8306,6 +9813,13 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -8523,6 +10037,16 @@ shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -8535,6 +10059,11 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -8545,6 +10074,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" @@ -8624,7 +10158,7 @@ source-list-map@^2.0.0: 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: +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: 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== @@ -8635,7 +10169,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@~0.5.12: +source-map-support@^0.5.6, 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== @@ -8665,6 +10199,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -8760,6 +10299,13 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + stackframe@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" @@ -8854,6 +10400,14 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -8972,6 +10526,16 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -8994,7 +10558,7 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -9027,13 +10591,21 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.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" +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -9063,6 +10635,11 @@ sweetalert2@^9.5.4: resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-9.17.2.tgz#7f33ce157a64c303d2ca98863c9a3f437e5f1187" integrity sha512-HkpPZVMYsnhFUBLdy/LvkU9snggKP3VAuSVnPhVXjxdg02lWbFx0W8H3m7A+WMWw2diXZS1wIa4m67XkNxdvew== +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -9099,6 +10676,14 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + terser-webpack-plugin@^1.2.3, 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" @@ -9123,6 +10708,15 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -9151,6 +10745,11 @@ thread-loader@^2.1.2: loader-utils "^1.1.0" neo-async "^2.6.0" +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + throttle-debounce@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz#51853da37be68a155cb6e827b3514a3c422e89cd" @@ -9198,11 +10797,21 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + 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@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + 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" @@ -9270,6 +10879,22 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -9287,6 +10912,16 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -9316,11 +10951,26 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -9339,6 +10989,13 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.3.0.tgz#ada7c045f07ead08abf9e2edd29be1a0c0661132" integrity sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg== +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -9409,7 +11066,7 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -universalify@^0.1.0: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -9536,6 +11193,20 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -9702,6 +11373,23 @@ vue-i18n@^8.17.0, vue-i18n@^8.22.4: resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.23.0.tgz#4a65681a1dfe716d47e1d00ddbd6e0b88ea36735" integrity sha512-mXgniaumwca8tKdp55fmvqIcW658vQQXq0zEyRHp8sgZ6t+Md+Whhu6CCPg9/erVNlvpKzsGsucGjt2N8GrFCA== +vue-jest@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/vue-jest/-/vue-jest-3.0.7.tgz#a6d29758a5cb4d750f5d1242212be39be4296a33" + integrity sha512-PIOxFM+wsBMry26ZpfBvUQ/DGH2hvp5khDQ1n51g3bN0TwFwTy4J85XVfxTRMukqHji/GnAoGUnlZ5Ao73K62w== + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.26.0" + chalk "^2.1.0" + deasync "^0.1.15" + extract-from-css "^0.4.4" + find-babel-config "^1.1.0" + js-beautify "^1.6.14" + node-cache "^4.1.1" + object-assign "^4.1.1" + source-map "^0.5.6" + tsconfig "^7.0.0" + vue-template-es2015-compiler "^1.6.0" + vue-loader@^15.7.0: version "15.9.6" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.6.tgz#f4bb9ae20c3a8370af3ecf09b8126d38ffdb6b8b" @@ -9756,7 +11444,7 @@ vue-template-compiler@^2.6.11: de-indent "^1.0.2" he "^1.1.0" -vue-template-es2015-compiler@^1.9.0: +vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== @@ -9776,6 +11464,27 @@ vuex@^3.6.0: resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + watchpack-chokidar2@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" @@ -9808,6 +11517,16 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + webpack-bundle-analyzer@^3.3.0: version "3.9.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c" @@ -9959,6 +11678,27 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -9971,7 +11711,7 @@ which@1, which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -10011,6 +11751,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -10025,6 +11774,16 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -10046,6 +11805,21 @@ ws@^6.0.0, ws@^6.2.1: dependencies: async-limiter "~1.0.0" +ws@^7.4.4: + version "7.4.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" + integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -10084,6 +11858,14 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^20.2.2: version "20.2.6" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" @@ -10105,6 +11887,23 @@ yargs@^13.2.2, yargs@^13.2.4, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.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 "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^16.0.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" diff --git a/login_server/src/cpp/JSONInterface/JsonGetLogin.cpp b/login_server/src/cpp/JSONInterface/JsonGetLogin.cpp index a376db77c..11bdb398e 100644 --- a/login_server/src/cpp/JSONInterface/JsonGetLogin.cpp +++ b/login_server/src/cpp/JSONInterface/JsonGetLogin.cpp @@ -71,11 +71,13 @@ Poco::JSON::Object* JsonGetLogin::handle(Poco::Dynamic::Var params) em->addError(new Error("JsonGetLogin::handle", "generic exception calling userModel->getJson: ")); em->sendErrorsAsEmail(); } + result->set("Transactions.pending", session->getProcessingTransactionCount()); auto executing = observer->getTaskCount(userModel->getEmail(), TASK_OBSERVER_SIGN_TRANSACTION); if (executing < 0) { executing = 0; } + result->set("Transactions.executing", executing); //printf("pending: %d\n", session->getProcessingTransactionCount()); //std::string user_string = userModel->toString(); diff --git a/login_server/src/cpp/JSONInterface/JsonGetUserInfos.cpp b/login_server/src/cpp/JSONInterface/JsonGetUserInfos.cpp index e519c3eba..3a4b5d105 100644 --- a/login_server/src/cpp/JSONInterface/JsonGetUserInfos.cpp +++ b/login_server/src/cpp/JSONInterface/JsonGetUserInfos.cpp @@ -7,6 +7,26 @@ #include "../ServerConfig.h" +Poco::UInt64 JsonGetUserInfos::readOrCreateEmailVerificationCode(int user_id, model::table::EmailOptInType type) +{ + try { + auto emailVerificationCode = controller::EmailVerificationCode::load(user_id, type); + if (!emailVerificationCode) { + emailVerificationCode = controller::EmailVerificationCode::create(user_id, type); + UniLib::controller::TaskPtr insert = new model::table::ModelInsertTask(emailVerificationCode->getModel(), false); + insert->scheduleTask(insert); + } + return emailVerificationCode->getModel()->getCode(); + } + catch (Poco::Exception& ex) { + ErrorList errors; + //printf("exception: %s\n", ex.displayText().data()); + errors.addError(new ParamError("JsonGetUserInfos::readOrCreateEmailVerificationCode", "exception: ", ex.displayText())); + errors.sendErrorsAsEmail(); + } + return 0; +} + Poco::JSON::Object* JsonGetUserInfos::handle(Poco::Dynamic::Var params) { /* @@ -54,11 +74,21 @@ Poco::JSON::Object* JsonGetUserInfos::handle(Poco::Dynamic::Var params) return customStateError("not found", "session not found"); } + auto session_user = session->getNewUser(); + auto session_user_model = session_user->getModel(); + bool isAdmin = false; + if (model::table::ROLE_ADMIN == session_user_model->getRole()) { + isAdmin = true; + } + if (session_user_model->getEmail() != email && !isAdmin) { + return customStateError("not same", "email don't belong to logged in user"); + } + auto user = controller::User::create(); if (1 != user->load(email)) { return customStateError("not found", "user not found"); } - auto userModel = user->getModel(); + auto user_model = user->getModel(); Poco::JSON::Object* result = new Poco::JSON::Object; @@ -72,42 +102,32 @@ Poco::JSON::Object* JsonGetUserInfos::handle(Poco::Dynamic::Var params) std::string parameterString; try { parameter.convert(parameterString); - if (parameterString == "EmailVerificationCode.Register") { - try { - auto emailVerificationCode = controller::EmailVerificationCode::load( - userModel->getID(), model::table::EMAIL_OPT_IN_REGISTER - ); - if (!emailVerificationCode) { - emailVerificationCode = controller::EmailVerificationCode::create(userModel->getID(), model::table::EMAIL_OPT_IN_REGISTER); - UniLib::controller::TaskPtr insert = new model::table::ModelInsertTask(emailVerificationCode->getModel(), false); - insert->scheduleTask(insert); - } - jsonUser.set("EmailVerificationCode.Register", std::to_string(emailVerificationCode->getModel()->getCode())); - } - catch (Poco::Exception& ex) { - printf("exception: %s\n", ex.displayText().data()); + if (parameterString == "EmailVerificationCode.Register" && isAdmin && session_user_model->getEmail() != user_model->getEmail()) { + auto code = readOrCreateEmailVerificationCode(user_model->getID(), model::table::EMAIL_OPT_IN_REGISTER_DIRECT); + if (code) { + jsonUser.set("EmailVerificationCode.Register", std::to_string(code)); } } else if (parameterString == "loginServer.path") { jsonServer.set("loginServer.path", ServerConfig::g_serverPath); } else if (parameterString == "user.pubkeyhex") { - jsonUser.set("pubkeyhex", userModel->getPublicKeyHex()); + jsonUser.set("pubkeyhex", user_model->getPublicKeyHex()); } else if (parameterString == "user.first_name") { - jsonUser.set("first_name", userModel->getFirstName()); + jsonUser.set("first_name", user_model->getFirstName()); } else if (parameterString == "user.last_name") { - jsonUser.set("last_name", userModel->getLastName()); + jsonUser.set("last_name", user_model->getLastName()); } else if (parameterString == "user.disabled") { - jsonUser.set("disabled", userModel->isDisabled()); + jsonUser.set("disabled", user_model->isDisabled()); } else if (parameterString == "user.email_checked") { - jsonUser.set("email_checked", userModel->isEmailChecked()); + jsonUser.set("email_checked", user_model->isEmailChecked()); } else if (parameterString == "user.identHash") { - auto email = userModel->getEmail(); + auto email = user_model->getEmail(); jsonUser.set("identHash", DRMakeStringHash(email.data(), email.size())); } } diff --git a/login_server/src/cpp/JSONInterface/JsonGetUserInfos.h b/login_server/src/cpp/JSONInterface/JsonGetUserInfos.h index 10b490e11..104454c42 100644 --- a/login_server/src/cpp/JSONInterface/JsonGetUserInfos.h +++ b/login_server/src/cpp/JSONInterface/JsonGetUserInfos.h @@ -2,7 +2,7 @@ #define __JSON_INTERFACE_JSON_GET_USER_INFOS_ #include "JsonRequestHandler.h" - +#include "../model/table/EmailOptIn.h" /*! * @author Dario Rekowski * @date 2020-03-21 @@ -17,7 +17,7 @@ public: Poco::JSON::Object* handle(Poco::Dynamic::Var params); protected: - + Poco::UInt64 readOrCreateEmailVerificationCode(int user_id, model::table::EmailOptInType type); }; diff --git a/login_server/src/cpp/JSONInterface/JsonGetUsers.cpp b/login_server/src/cpp/JSONInterface/JsonGetUsers.cpp index dc6c1faac..77f5e0a24 100644 --- a/login_server/src/cpp/JSONInterface/JsonGetUsers.cpp +++ b/login_server/src/cpp/JSONInterface/JsonGetUsers.cpp @@ -12,7 +12,8 @@ Poco::JSON::Object* JsonGetUsers::handle(Poco::Dynamic::Var params) int session_id = 0; std::string searchString; - + std::string accountState = ""; + static std::string emptySearchString = "... empty ..."; // if is json object if (params.type() == typeid(Poco::JSON::Object::Ptr)) { Poco::JSON::Object::Ptr paramJsonObject = params.extract(); @@ -23,6 +24,9 @@ Poco::JSON::Object* JsonGetUsers::handle(Poco::Dynamic::Var params) /// Throws InvalidAccessException if Var is empty. try { paramJsonObject->get("search").convert(searchString); + if (paramJsonObject->has("account_state")) { + paramJsonObject->get("account_state").convert(accountState); + } paramJsonObject->get("session_id").convert(session_id); } catch (Poco::Exception& ex) { @@ -67,17 +71,20 @@ Poco::JSON::Object* JsonGetUsers::handle(Poco::Dynamic::Var params) } auto user = session->getNewUser(); + if (searchString == emptySearchString) { + searchString = ""; + } if (user.isNull()) { return customStateError("not found", "Session didn't contain user"); } - else if (searchString == "") { - return customStateError("not found", "Search string is empty"); + else if (searchString == "" && (accountState == "" || accountState == "all")) { + return customStateError("not found", "Search string is empty and account_state is all or empty"); } else if (user->getModel()->getRole() != model::table::ROLE_ADMIN) { return customStateError("wrong role", "User hasn't correct role"); } - auto results = controller::User::search(searchString); + auto results = controller::User::search(searchString, accountState); if (!results.size()) { return stateSuccess(); } diff --git a/login_server/src/cpp/JSONInterface/JsonLoginViaEmailVerificationCode.cpp b/login_server/src/cpp/JSONInterface/JsonLoginViaEmailVerificationCode.cpp new file mode 100644 index 000000000..861969946 --- /dev/null +++ b/login_server/src/cpp/JSONInterface/JsonLoginViaEmailVerificationCode.cpp @@ -0,0 +1,70 @@ +#include "JsonLoginViaEmailVerificationCode.h" + +#include "JsonUnsecureLogin.h" + +#include "../SingletonManager/SessionManager.h" +#include "../SingletonManager/SingletonTaskObserver.h" +#include "../SingletonManager/ErrorManager.h" + +#include "../controller/User.h" + +#include "../lib/DataTypeConverter.h" + +#include "Poco/URI.h" +#include "Poco/JSON/Array.h" + +Poco::JSON::Object* JsonLoginViaEmailVerificationCode::handle(Poco::Dynamic::Var params) +{ + + auto sm = SessionManager::getInstance(); + + /* + email verification code + */ + // incoming + unsigned long long code = 0; + if (params.isVector()) { + const Poco::URI::QueryParameters queryParams = params.extract(); + std::string codeString; + for (auto it = queryParams.begin(); it != queryParams.end(); it++) { + if (it->first == "emailVerificationCode") { + codeString = it->second; + break; + } + } + if (codeString == "") { + return stateError("emailVerificationCode not found"); + } + if (DataTypeConverter::NUMBER_PARSE_OKAY != DataTypeConverter::strToInt(codeString, code)) { + return stateError("couldn't parse emailVerificationCode"); + } + + } + auto session = sm->findByEmailVerificationCode(code); + if (!session) { + session = sm->getNewSession(); + if (!session->loadFromEmailVerificationCode(code)) { + return stateError("couldn't login with emailVerificationCode"); + } + } + session->setClientIp(mClientIP); + auto result = new Poco::JSON::Object; + result->set("state", "success"); + result->set("session_id", session->getHandle()); + result->set("email_verification_code_type", model::table::EmailOptIn::typeToString(session->getEmailVerificationType())); + Poco::JSON::Array info; + + if (!session->getNewUser()->getModel()->getPasswordHashed()) { + info.add("user hasn't password"); + } + auto update_email_verification_result = session->updateEmailVerification(code); + if (1 == update_email_verification_result) { + info.add("email already activated"); + } + + result->set("info", info); + + + return result; + +} \ No newline at end of file diff --git a/login_server/src/cpp/JSONInterface/JsonLoginViaEmailVerificationCode.h b/login_server/src/cpp/JSONInterface/JsonLoginViaEmailVerificationCode.h new file mode 100644 index 000000000..7b947d310 --- /dev/null +++ b/login_server/src/cpp/JSONInterface/JsonLoginViaEmailVerificationCode.h @@ -0,0 +1,18 @@ +#ifndef __JSON_INTERFACE_JSON_LOGIN_VIA_EMAIL_VERIFICATION_CODE_ +#define __JSON_INTERFACE_JSON_LOGIN_VIA_EMAIL_VERIFICATION_CODE_ + +#include "JsonRequestHandler.h" + +class JsonLoginViaEmailVerificationCode : public JsonRequestHandler +{ +public: + JsonLoginViaEmailVerificationCode(Poco::Net::IPAddress ip) : mClientIP(ip) {} + Poco::JSON::Object* handle(Poco::Dynamic::Var params); + +protected: + Poco::Net::IPAddress mClientIP; + + +}; + +#endif // __JSON_INTERFACE_JSON_LOGIN_VIA_EMAIL_VERIFICATION_CODE_ \ No newline at end of file diff --git a/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp b/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp index fc52c3a2c..5db715db3 100644 --- a/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp +++ b/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp @@ -10,6 +10,7 @@ #include "JsonTransaction.h" #include "JsonGetRunningUserTasks.h" #include "JsonGetUsers.h" +#include "JsonLoginViaEmailVerificationCode.h" #include "JsonAdminEmailVerificationResend.h" #include "JsonGetUserInfos.h" #include "JsonUpdateUserInfos.h" @@ -67,6 +68,9 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c else if (url_first_part == "/unsecureLogin" && (ServerConfig::g_AllowUnsecureFlags & ServerConfig::UNSECURE_PASSWORD_REQUESTS)) { return new JsonUnsecureLogin(client_host); } + else if (url_first_part == "/loginViaEmailVerificationCode") { + return new JsonLoginViaEmailVerificationCode(client_host); + } else if (url_first_part == "/logout") { return new JsonLogout(client_host); } diff --git a/login_server/src/cpp/JSONInterface/JsonUpdateUserInfos.cpp b/login_server/src/cpp/JSONInterface/JsonUpdateUserInfos.cpp index 634f41fa8..874ed033d 100644 --- a/login_server/src/cpp/JSONInterface/JsonUpdateUserInfos.cpp +++ b/login_server/src/cpp/JSONInterface/JsonUpdateUserInfos.cpp @@ -2,6 +2,7 @@ #include "../SingletonManager/SessionManager.h" #include "../SingletonManager/LanguageManager.h" +#include "../tasks/AuthenticatedEncryptionCreateKeyTask.h" Poco::JSON::Object* JsonUpdateUserInfos::handle(Poco::Dynamic::Var params) { @@ -117,6 +118,34 @@ Poco::JSON::Object* JsonUpdateUserInfos::handle(Poco::Dynamic::Var params) } } } + else if ("User.password" == name && (ServerConfig::g_AllowUnsecureFlags & ServerConfig::UNSECURE_PASSWORD_REQUESTS) == ServerConfig::UNSECURE_PASSWORD_REQUESTS) { + if (!value.isString()) { + jsonErrorsArray.add("User.password isn't string"); + } + else { + ErrorList errors; + if (!sm->checkPwdValidation(value.toString(), &errors)) { + jsonErrorsArray.add("User.password isn't valid"); + jsonErrorsArray.add(errors.getErrorsArray()); + } + else { + auto result_new_password = user->setNewPassword(value.toString()); + + switch (result_new_password) { + // 0 = new and current passwords are the same + case 0: jsonErrorsArray.add("new password is the same as old password"); break; + // 1 = password changed, private key re-encrypted and saved into db + //case 1: extractet_values++; break; + // 2 = password changed, only hash stored in db, couldn't load private key for re-encryption + case 2: jsonErrorsArray.add("password changed, couldn't load private key for re-encryption"); break; + // -1 = stored pubkey and private key didn't match + case -1: jsonErrorsArray.add("stored pubkey and private key didn't match"); break; + } + + + } + } + } } catch (Poco::Exception& ex) { jsonErrorsArray.add("update parameter invalid"); diff --git a/login_server/src/cpp/SingletonManager/EmailManager.cpp b/login_server/src/cpp/SingletonManager/EmailManager.cpp index 847887316..e1eee3e2c 100644 --- a/login_server/src/cpp/SingletonManager/EmailManager.cpp +++ b/login_server/src/cpp/SingletonManager/EmailManager.cpp @@ -92,6 +92,8 @@ int EmailManager::ThreadFunction() if (mPendingEmails.empty()) return 0; auto lm = LanguageManager::getInstance(); + ErrorList errors; + static const char* function_name = "PrepareEmailTask"; Poco::Net::SecureSMTPClientSession mailClientSession(mEmailAccount.url, mEmailAccount.port); mailClientSession.login(); @@ -100,6 +102,7 @@ int EmailManager::ThreadFunction() mailClientSession.login(Poco::Net::SMTPClientSession::AUTH_LOGIN, mEmailAccount.username, mEmailAccount.password); } catch (Poco::Net::SSLException& ex) { + errors.addError(new ParamError(function_name, "ssl certificate error", ex.displayText())); printf("[PrepareEmailTask] ssl certificate error: %s\nPlease make sure you have cacert.pem (CA/root certificates) next to binary from https://curl.haxx.se/docs/caextract.html\n", ex.displayText().data()); return -1; } @@ -151,6 +154,7 @@ int EmailManager::ThreadFunction() else { // error drafting email, shouldn't happend printf("[EmailManager::ThreadFunction] Error drafting email\n"); + errors.addError(new Error(function_name, "Error drafting email")); } delete email; email = nullptr; diff --git a/login_server/src/cpp/controller/EmailVerificationCode.cpp b/login_server/src/cpp/controller/EmailVerificationCode.cpp index 57022b191..e144d57eb 100644 --- a/login_server/src/cpp/controller/EmailVerificationCode.cpp +++ b/login_server/src/cpp/controller/EmailVerificationCode.cpp @@ -54,9 +54,15 @@ namespace controller { Poco::AutoPtr EmailVerificationCode::load(int user_id, model::table::EmailOptInType type) { auto db = new model::table::EmailOptIn(); std::vector fields = { "user_id", "email_opt_in_type_id" }; - if (db->loadFromDB(fields, user_id, (int)type) == 1) { - return Poco::AutoPtr(new EmailVerificationCode(db)); + std::vector field_values = { user_id, (int)type }; + auto results = db->loadFromDB(fields, field_values); + if (results.size() > 0) { + db->release(); + return Poco::AutoPtr(new EmailVerificationCode(new model::table::EmailOptIn(results[0]))); } + /*if (db->loadFromDB(fields, user_id, (int)type) == 1) { + return Poco::AutoPtr(new EmailVerificationCode(db)); + }*/ db->release(); return nullptr; } diff --git a/login_server/src/cpp/controller/User.cpp b/login_server/src/cpp/controller/User.cpp index 7aedbb701..e71d4b70a 100644 --- a/login_server/src/cpp/controller/User.cpp +++ b/login_server/src/cpp/controller/User.cpp @@ -46,24 +46,49 @@ namespace controller { return Poco::AutoPtr(user); } - std::vector User::search(const std::string& searchString) + std::vector User::search(const std::string& searchString, const std::string& accountState /* = "all" */) { auto sm = SessionManager::getInstance(); + auto cm = ConnectionManager::getInstance(); auto db = new model::table::User(); + static const char* functionName = "User::search"; std::string globalSearch = "%" + searchString + "%"; std::vector resultFromDB; - // check if search string is email - /*if (sm->isValid(searchString, VALIDATE_EMAIL)) { - resultFromDB = db->loadFromDB ("email", globalSearch); + if (accountState == "email not activated") { + + std::vector fieldNames = { "first_name", "last_name", "email", "email_checked" }; + auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER); + std::vector results; + + using namespace Poco::Data::Keywords; + Poco::Data::Statement select(session); + // typedef Poco::Tuple, int> UserTuple; + select << "SELECT id, first_name, last_name, email, pubkey, created, email_checked, disabled FROM " << db->getTableName(); + select << " where email_checked = 0 "; + select, into(resultFromDB); + if (searchString != "") { + select << "AND (first_name LIKE ? OR last_name LIKE ? OR email LIKE ?)"; + select, useRef(globalSearch), useRef(globalSearch), useRef(globalSearch); + } + try { + select.execute(); + } + catch (Poco::Exception& ex) { + ErrorList errors; + errors.addError(new ParamError(functionName, "mysql error ", ex.displayText())); + errors.addError(new ParamError(functionName, "search string", searchString)); + errors.addError(new ParamError(functionName, "account state", accountState)); + errors.sendErrorsAsEmail(); + } } - else {*/ + else { std::vector fieldNames = { "first_name", "last_name", "email" }; std::vector fieldValues = { globalSearch, globalSearch, globalSearch }; resultFromDB = db->loadFromDB(fieldNames, fieldValues, model::table::MYSQL_CONDITION_OR); - //} + } db->release(); db = nullptr; diff --git a/login_server/src/cpp/controller/User.h b/login_server/src/cpp/controller/User.h index 33daa9eda..f6b124cd5 100644 --- a/login_server/src/cpp/controller/User.h +++ b/login_server/src/cpp/controller/User.h @@ -28,7 +28,7 @@ namespace controller { static Poco::AutoPtr create(); static Poco::AutoPtr create(const std::string& email, const std::string& first_name, const std::string& last_name, Poco::UInt64 passwordHashed = 0, std::string languageKey = "de"); - static std::vector search(const std::string& searchString); + static std::vector search(const std::string& searchString, const std::string& accountState = "all"); //! \brief go through whole db and search users with email_checked = false and schedule resend 7 days after email_opt_in created date //! diff --git a/login_server/src/cpp/model/table/EmailOptIn.cpp b/login_server/src/cpp/model/table/EmailOptIn.cpp index 55358215b..09a75ee29 100644 --- a/login_server/src/cpp/model/table/EmailOptIn.cpp +++ b/login_server/src/cpp/model/table/EmailOptIn.cpp @@ -90,6 +90,33 @@ namespace model { return select; } + Poco::Data::Statement EmailOptIn::_loadMultipleFromDB(Poco::Data::Session session, const std::vector fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/) + { + Poco::Data::Statement select(session); + if (fieldNames.size() <= 1) { + throw Poco::NullValueException("EmailOptIn::_loadFromDB fieldNames empty or contain only one field"); + } + + select << "SELECT id, user_id, verification_code, email_opt_in_type_id, created, resend_count, updated FROM " << getTableName() + << " where " << fieldNames[0] << " = ? "; + if (conditionType == MYSQL_CONDITION_AND) { + for (int i = 1; i < fieldNames.size(); i++) { + select << " AND " << fieldNames[i] << " = ? "; + } + } + else if (conditionType == MYSQL_CONDITION_OR) { + for (int i = 1; i < fieldNames.size(); i++) { + select << " OR " << fieldNames[i] << " = ? "; + } + } + else { + addError(new ParamError("EmailOptIn::_loadFromDB", "condition type not implemented", conditionType)); + } + + return select; + } + + Poco::Data::Statement EmailOptIn::_loadFromDB(Poco::Data::Session session, const std::vector& fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/) { Poco::Data::Statement select(session); diff --git a/login_server/src/cpp/model/table/EmailOptIn.h b/login_server/src/cpp/model/table/EmailOptIn.h index 6a12e3d91..913c84aa1 100644 --- a/login_server/src/cpp/model/table/EmailOptIn.h +++ b/login_server/src/cpp/model/table/EmailOptIn.h @@ -48,6 +48,7 @@ namespace model { Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::string& fieldName); Poco::Data::Statement _loadIdFromDB(Poco::Data::Session session); Poco::Data::Statement _loadMultipleFromDB(Poco::Data::Session session, const std::string& fieldName); + Poco::Data::Statement _loadMultipleFromDB(Poco::Data::Session session, const std::vector fieldNames, MysqlConditionType conditionType = MYSQL_CONDITION_AND); Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::vector& fieldNames, MysqlConditionType conditionType = MYSQL_CONDITION_AND); Poco::Data::Statement _insertIntoDB(Poco::Data::Session session); diff --git a/login_server/src/cpp/model/table/ModelBase.h b/login_server/src/cpp/model/table/ModelBase.h index 3d3bc3ab8..13bcc467c 100644 --- a/login_server/src/cpp/model/table/ModelBase.h +++ b/login_server/src/cpp/model/table/ModelBase.h @@ -40,10 +40,19 @@ namespace model { size_t loadFromDB(const std::string& fieldName, const T& fieldValue); template bool isExistInDB(const std::string& fieldName, const T& fieldValue); + template std::vector loadFromDB(const std::string& fieldName, const WhereFieldType& fieldValue, int expectedResults = 0); + template size_t loadFromDB(const std::vector& fieldNames, const T1& field1Value, const T2& field2Value, MysqlConditionType conditionType = MYSQL_CONDITION_AND); + + template + std::vector loadMultipleFromDB( + const std::vector& fieldNames, + const T1& field1Value, const T2& field2Value, const T3& field3Value, const T4& field4Value, + MysqlConditionType conditionType = MYSQL_CONDITION_AND); + template std::vector loadFromDB(const std::vector& fieldNames, const std::vector& fieldValues, MysqlConditionType conditionType = MYSQL_CONDITION_AND, int expectedResults = 0); bool insertIntoDB(bool loadId); @@ -211,6 +220,43 @@ namespace model { return resultCount; } + template + std::vector ModelBase::loadMultipleFromDB( + const std::vector& fieldNames, + const T1& field1Value, const T2& field2Value, const T3& field3Value, const T4& field4Value, + MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/) + { + auto cm = ConnectionManager::getInstance(); + std::vector results; + if (fieldNames.size() != 4) { + addError(new Error(getTableName(), "error in loadFromDB with 4 different field values, fieldNames count isn't 4")); + return results; + } + Poco::ScopedLock _lock(mWorkMutex); + + auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER); + Poco::Data::Statement select = _loadMultipleFromDB(session, fieldNames, conditionType); + select, Poco::Data::Keywords::into(results), + Poco::Data::Keywords::useRef(field1Value), Poco::Data::Keywords::useRef(field2Value), + Poco::Data::Keywords::useRef(field3Value), Poco::Data::Keywords::useRef(field4Value); + + size_t resultCount = 0; + try { + resultCount = select.execute(); + } + catch (Poco::Exception& ex) { + lock(); + addError(new ParamError(getTableName(), "mysql error by selecting with 4 different field types", ex.displayText())); + int count = 0; + for (auto it = fieldNames.begin(); it != fieldNames.end(); it++) { + addError(new ParamError(getTableName(), "field name for select: ", *it)); + } + + //addError(new ParamError(getTableName(), "field name for select: ", fieldName.data())); + unlock(); + } + return resultCount; + } template size_t ModelBase::updateIntoDB(const std::string& fieldName, const T& fieldValue) diff --git a/login_server/src/cpp/tasks/Thread.cpp b/login_server/src/cpp/tasks/Thread.cpp index 0c095aeb9..2419a1719 100644 --- a/login_server/src/cpp/tasks/Thread.cpp +++ b/login_server/src/cpp/tasks/Thread.cpp @@ -1,6 +1,7 @@ //#include "lib/Thread.h" //#include "UniversumLib.h" #include "Thread.h" +#include "../lib/ErrorList.h" namespace UniLib { namespace lib { @@ -55,6 +56,8 @@ namespace UniLib { void Thread::run() { + static const char* function_name = "Thread::run"; + ErrorList errors; //Thread* t = this; while (true) { try { @@ -77,6 +80,7 @@ namespace UniLib { { //EngineLog.writeToLog("error-code: %d", ret); printf("[Thread::%s] error running thread functon: %d, exit thread\n", __FUNCTION__, ret); + errors.addError(new ParamError(function_name, "error running thread function, exit thread", mPocoThread->getName())); return; } } @@ -85,13 +89,19 @@ namespace UniLib { threadUnlock(); //LOG_ERROR("Fehler in Thread, exit", -1); printf("[Thread::%s] exception: %s\n", __FUNCTION__, e.message().data()); + errors.addError(new ParamError(function_name, "poco exception", e.message())); + errors.addError(new ParamError(function_name, "thread name", mPocoThread->getName())); return; } } catch (Poco::TimeoutException& e) { printf("[Thread::%s] timeout exception\n", __FUNCTION__); + errors.addError(new ParamError(function_name, "poco timeout exception", e.message())); + errors.addError(new ParamError(function_name, "thread name", mPocoThread->getName())); } catch (Poco::Exception& e) { printf("[Thread::%s] exception: %s\n", __FUNCTION__, e.message().data()); + errors.addError(new ParamError(function_name, "poco exception 2", e.message())); + errors.addError(new ParamError(function_name, "thread name", mPocoThread->getName())); return; } }