diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2018-12-18 15:24:51 -0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-18 15:24:51 -0100 |
commit | 428c14d37e11cc88e487b60e1920078523d70314 (patch) | |
tree | 9a0d70947d7fa8b6862a8a7d9aad3f7065ab5619 | |
parent | 995d611060b6d38808bc1eefe44f29fcd562a050 (diff) | |
parent | 3f9309be145dee40dd2cd411f2881b0bb12b4344 (diff) |
Merge branch 'master' into fill-follows-table
-rw-r--r-- | .drone.yml | 73 | ||||
-rw-r--r-- | appinfo/info.xml | 17 | ||||
-rw-r--r-- | composer.json | 3 | ||||
-rw-r--r-- | composer.lock | 55 | ||||
-rw-r--r-- | lib/Controller/NavigationController.php | 8 | ||||
-rw-r--r-- | lib/Controller/QueueController.php | 22 | ||||
-rw-r--r-- | lib/Db/CacheActorsRequest.php | 13 | ||||
-rw-r--r-- | lib/Db/CoreRequestBuilder.php | 3 | ||||
-rw-r--r-- | lib/Db/NotesRequest.php | 13 | ||||
-rw-r--r-- | lib/Migration/Version0001Date20181208185242.php | 88 | ||||
-rw-r--r-- | lib/Service/ActorService.php | 21 | ||||
-rw-r--r-- | lib/Service/ImportService.php | 2 | ||||
-rw-r--r-- | package-lock.json | 1717 | ||||
-rw-r--r-- | package.json | 30 |
14 files changed, 996 insertions, 1069 deletions
@@ -4,6 +4,71 @@ clone: depth: 1 pipeline: + check-app-compatbility: + image: nextcloudci/php7.0:php7.0-17 + environment: + - APP_NAME=social + - CORE_BRANCH=stable15 + - DB=sqlite + commands: + # Pre-setup steps + - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh + - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB + - cd ../server + # Code checker + - ./occ app:check-code $APP_NAME -c strong-comparison + - ./occ app:check-code $APP_NAME -c deprecation + when: + matrix: + TESTS: check-app-compatbility + syntax-php7.0: + image: nextcloudci/php7.0:php7.0-17 + environment: + - APP_NAME=social + - CORE_BRANCH=stable15 + - DB=sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ . + when: + matrix: + TESTS: syntax-php7.0 + syntax-php7.1: + image: nextcloudci/php7.1:php7.1-15 + environment: + - APP_NAME=social + - CORE_BRANCH=stable15 + - DB=sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ . + when: + matrix: + TESTS: syntax-php7.1 + syntax-php7.2: + image: nextcloudci/php7.2:php7.2-9 + environment: + - APP_NAME=social + - CORE_BRANCH=stable15 + - DB=sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ . + when: + matrix: + TESTS: syntax-php7.2 + syntax-php7.3: + image: nextcloudci/php7.3:php7.3-2 + environment: + - APP_NAME=social + - CORE_BRANCH=stable15 + - DB=sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ . + when: + matrix: + TESTS: syntax-php7.3 eslint: image: nextcloudci/jsunit:jsunit-5 commands: @@ -12,7 +77,6 @@ pipeline: when: matrix: TESTS: eslint - vue-build: image: nextcloudci/jsunit:jsunit-5 commands: @@ -20,10 +84,15 @@ pipeline: - npm run build when: matrix: - TESTS:vue-build + TESTS: vue-build matrix: include: + - TESTS: check-app-compatbility + - TESTS: syntax-php7.0 + - TESTS: syntax-php7.1 + - TESTS: syntax-php7.2 + - TESTS: syntax-php7.3 - TESTS: eslint - TESTS: vue-build diff --git a/appinfo/info.xml b/appinfo/info.xml index 56754da6..177d1563 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -26,8 +26,8 @@ <namespace>Social</namespace> <category>social</category> <website>https://github.com/nextcloud/social</website> - <repository type="git">https://github.com/nextcloud/social.git</repository> <bugs>https://github.com/nextcloud/social/issues</bugs> + <repository type="git">https://github.com/nextcloud/social.git</repository> <screenshot>https://raw.githubusercontent.com/nextcloud/social/master/img/screenshot.png</screenshot> <dependencies> <nextcloud min-version="15" max-version="16"/> @@ -39,14 +39,6 @@ </post-migration> </repair-steps> - <navigations> - <navigation> - <name>Social</name> - <route>social.Navigation.navigate</route> - <order>6</order> - </navigation> - </navigations> - <background-jobs> <job>OCA\Social\Cron\Cache</job> <job>OCA\Social\Cron\Queue</job> @@ -59,4 +51,11 @@ <command>OCA\Social\Command\QueueProcess</command> </commands> + <navigations> + <navigation> + <name>Social</name> + <route>social.Navigation.navigate</route> + <order>6</order> + </navigation> + </navigations> </info> diff --git a/composer.json b/composer.json index 3bf0a3c8..d83a222f 100644 --- a/composer.json +++ b/composer.json @@ -11,5 +11,8 @@ ], "require": { "daita/my-small-php-tools": "dev-master" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "^1.0" } } diff --git a/composer.lock b/composer.lock index 5bc891fc..83f63fdb 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "02220c2a6087d409a5e53060ee20c47e", + "content-hash": "17d7e7fc4c9cdd0ddc5d6166607fce8f", "packages": [ { "name": "daita/my-small-php-tools", @@ -43,7 +43,56 @@ "time": "2018-12-08T15:17:26+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "jakub-onderka/php-parallel-lint", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Parallel-Lint.git", + "reference": "04fbd3f5fb1c83f08724aa58a23db90bd9086ee8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Parallel-Lint/zipball/04fbd3f5fb1c83f08724aa58a23db90bd9086ee8", + "reference": "04fbd3f5fb1c83f08724aa58a23db90bd9086ee8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "jakub-onderka/php-console-highlighter": "~0.3", + "nette/tester": "~1.3", + "squizlabs/php_codesniffer": "~2.7" + }, + "suggest": { + "jakub-onderka/php-console-highlighter": "Highlight syntax in code snippet" + }, + "bin": [ + "parallel-lint" + ], + "type": "library", + "autoload": { + "classmap": [ + "./" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "ahoj@jakubonderka.cz" + } + ], + "description": "This tool check syntax of PHP files about 20x faster than serial check.", + "homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint", + "time": "2018-02-24T15:31:20+00:00" + } + ], "aliases": [], "minimum-stability": "stable", "stability-flags": { diff --git a/lib/Controller/NavigationController.php b/lib/Controller/NavigationController.php index 4c7e6e67..44baf6e2 100644 --- a/lib/Controller/NavigationController.php +++ b/lib/Controller/NavigationController.php @@ -148,9 +148,6 @@ class NavigationController extends Controller { ] ]; - $checks = $this->checkService->checkDefault(); - $data['serverData']['checks'] = $checks; - try { $data['serverData']['cloudAddress'] = $this->configService->getCloudAddress(); } catch (SocialAppConfigException $e) { @@ -172,6 +169,11 @@ class NavigationController extends Controller { } } + if ($data['serverData']['isAdmin']) { + $checks = $this->checkService->checkDefault(); + $data['serverData']['checks'] = $checks; + } + /* * Create social user account if it doesn't exist yet */ diff --git a/lib/Controller/QueueController.php b/lib/Controller/QueueController.php index 3900eec5..4d32b12d 100644 --- a/lib/Controller/QueueController.php +++ b/lib/Controller/QueueController.php @@ -93,19 +93,21 @@ class QueueController extends Controller { * @param string $token */ public function asyncWithToken(string $token) { - $this->async(); - $requests = $this->queueService->getRequestFromToken($token, RequestQueue::STATUS_STANDBY); - $this->activityService->manageInit(); - foreach ($requests as $request) { - $request->setTimeout(ActivityService::TIMEOUT_ASYNC); - try { - $this->activityService->manageRequest($request); - } catch (RequestException $e) { - } catch (SocialAppConfigException $e) { + + if (!empty($requests)) { + $this->async(); + + $this->activityService->manageInit(); + foreach ($requests as $request) { + $request->setTimeout(ActivityService::TIMEOUT_ASYNC); + try { + $this->activityService->manageRequest($request); + } catch (RequestException $e) { + } catch (SocialAppConfigException $e) { + } } } - // or it will feed the logs. exit(); } diff --git a/lib/Db/CacheActorsRequest.php b/lib/Db/CacheActorsRequest.php index 7a3f0ff2..e69afbc1 100644 --- a/lib/Db/CacheActorsRequest.php +++ b/lib/Db/CacheActorsRequest.php @@ -62,10 +62,13 @@ class CacheActorsRequest extends CacheActorsRequestBuilder { * insert cache about an Actor in database. * * @param Person $actor - * - * @return int */ - public function save(Person $actor): int { + public function save(Person $actor) { + $source = $actor->getSource(); + if (strlen($source) >= CoreRequestBuilder::SOURCE_LENGTH) { + $source = 'too_big'; + } + $qb = $this->getCacheActorsInsertSql(); $qb->setValue('id', $qb->createNamedParameter($actor->getId())) ->setValue('account', $qb->createNamedParameter($actor->getAccount())) @@ -84,7 +87,7 @@ class CacheActorsRequest extends CacheActorsRequestBuilder { ->setValue('name', $qb->createNamedParameter($actor->getName())) ->setValue('summary', $qb->createNamedParameter($actor->getSummary())) ->setValue('public_key', $qb->createNamedParameter($actor->getPublicKey())) - ->setValue('source', $qb->createNamedParameter($actor->getSource())) + ->setValue('source', $qb->createNamedParameter($source)) ->setValue('details', $qb->createNamedParameter(json_encode($actor->getDetails()))) ->setValue( 'creation', @@ -101,8 +104,6 @@ class CacheActorsRequest extends CacheActorsRequestBuilder { $qb->setValue('icon_id', $qb->createNamedParameter($iconId)); $qb->execute(); - - return $qb->getLastInsertId(); } diff --git a/lib/Db/CoreRequestBuilder.php b/lib/Db/CoreRequestBuilder.php index 7176ed8c..8f594ddd 100644 --- a/lib/Db/CoreRequestBuilder.php +++ b/lib/Db/CoreRequestBuilder.php @@ -64,6 +64,9 @@ class CoreRequestBuilder { const TABLE_CACHE_DOCUMENTS = 'social_cache_documents'; + const SOURCE_LENGTH = 10000; + + /** @var IDBConnection */ protected $dbConnection; diff --git a/lib/Db/NotesRequest.php b/lib/Db/NotesRequest.php index 9e687e25..fdd1313b 100644 --- a/lib/Db/NotesRequest.php +++ b/lib/Db/NotesRequest.php @@ -61,13 +61,16 @@ class NotesRequest extends NotesRequestBuilder { * Insert a new Note in the database. * * @param Note $note - * - * @return int */ - public function save(Note $note): int { + public function save(Note $note) { $dTime = new DateTime(); $dTime->setTimestamp($note->getPublishedTime()); + $source = $note->getSource(); + if (strlen($source) >= CoreRequestBuilder::SOURCE_LENGTH) { + $source = 'too_big'; + } + $qb = $this->getNotesInsertSql(); $qb->setValue('id', $qb->createNamedParameter($note->getId())) ->setValue('type', $qb->createNamedParameter($note->getType())) @@ -95,7 +98,7 @@ class NotesRequest extends NotesRequestBuilder { ) ->setValue('attributed_to', $qb->createNamedParameter($note->getAttributedTo())) ->setValue('in_reply_to', $qb->createNamedParameter($note->getInReplyTo())) - ->setValue('source', $qb->createNamedParameter($note->getSource())) + ->setValue('source', $qb->createNamedParameter($source)) ->setValue( 'instances', $qb->createNamedParameter( json_encode($note->getInstancePaths(), JSON_UNESCAPED_SLASHES) @@ -108,8 +111,6 @@ class NotesRequest extends NotesRequestBuilder { ); $qb->execute(); - - return $qb->getLastInsertId(); } diff --git a/lib/Migration/Version0001Date20181208185242.php b/lib/Migration/Version0001Date20181208185242.php new file mode 100644 index 00000000..3194f2ee --- /dev/null +++ b/lib/Migration/Version0001Date20181208185242.php @@ -0,0 +1,88 @@ +<?php +declare(strict_types=1); + + +/** + * Nextcloud - Social Support + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Maxence Lange <maxence@artificial-owl.com> + * @copyright 2018, Maxence Lange <maxence@artificial-owl.com> + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + + +namespace OCA\Social\Migration; + + +use Closure; +use OCA\Social\Db\CoreRequestBuilder; +use OCP\DB\ISchemaWrapper; +use OCP\Migration\IOutput; +use OCP\Migration\SimpleMigrationStep; + + +/** + * Class Version0001Date20181208185242 + * + * @package OCA\Social\Migration + */ +class Version0001Date20181208185242 extends SimpleMigrationStep { + + + /** + * @param IOutput $output + * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + * + * @return ISchemaWrapper + * @throws \Doctrine\DBAL\Schema\SchemaException + */ + public function changeSchema(IOutput $output, Closure $schemaClosure, array $options + ): ISchemaWrapper { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + + $table = $schema->getTable(CoreRequestBuilder::TABLE_CACHE_ACTORS); + $table->changeColumn( + 'source', [ + 'notnull' => true, + 'length' => CoreRequestBuilder::SOURCE_LENGTH, + ] + ); + + $table = $schema->getTable(CoreRequestBuilder::TABLE_SERVER_NOTES); + $table->changeColumn( + 'source', [ + 'notnull' => true, + 'length' => CoreRequestBuilder::SOURCE_LENGTH, + ] + ); + + $table = $schema->getTable(CoreRequestBuilder::TABLE_REQUEST_QUEUE); + $table->changeColumn( + 'activity', [ + 'notnull' => true, + 'length' => CoreRequestBuilder::SOURCE_LENGTH, + ] + ); + + return $schema; + } +} diff --git a/lib/Service/ActorService.php b/lib/Service/ActorService.php index 60bb5acb..174a3732 100644 --- a/lib/Service/ActorService.php +++ b/lib/Service/ActorService.php @@ -45,7 +45,6 @@ use OCA\Social\Model\ActivityPub\Person; use OCA\Social\Service\ActivityPub\DocumentService; use OCA\Social\Service\ActivityPub\PersonService; use OCP\Accounts\IAccountManager; -use OCP\Accounts\PropertyDoesNotExistException; use OCP\IUserManager; @@ -264,6 +263,12 @@ class ActorService { try { $actor = $this->getActor($username); + try { + $this->updateCacheLocalActorName($actor); + } catch (NoUserException $e) { + return; + } + $iconId = $this->documentService->cacheLocalAvatarByUsername($actor); $actor->setIconId($iconId); @@ -274,7 +279,6 @@ class ActorService { ]; $actor->addDetailArray('count', $count); - $this->updateCacheLocalActorName($actor); $this->personService->cacheLocalActor($actor, $refresh); } catch (ActorDoesNotExistException $e) { @@ -284,17 +288,25 @@ class ActorService { /** * @param Person $actor + * + * @throws NoUserException */ private function updateCacheLocalActorName(Person &$actor) { $user = $this->userManager->get($actor->getUserId()); - $account = $this->accountManager->getAccount($user); + if ($user === null) { + throw new NoUserException(); + } try { + $account = $this->accountManager->getAccount($user); $displayNameProperty = $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME); if ($displayNameProperty->getScope() === IAccountManager::VISIBILITY_PUBLIC) { $actor->setName($displayNameProperty->getValue()); } - } catch (PropertyDoesNotExistException $e) { + } catch (Exception $e) { + $this->miscService->log( + 'Issue while trying to updateCacheLocalActorName: ' . $e->getMessage(), 1 + ); } } @@ -335,7 +347,6 @@ class ActorService { */ public function manageCacheLocalActors(): int { $update = $this->actorsRequest->getAll(); - foreach ($update as $item) { try { $this->cacheLocalActorByUsername($item->getPreferredUsername(), true); diff --git a/lib/Service/ImportService.php b/lib/Service/ImportService.php index f87b0b4b..73072a7e 100644 --- a/lib/Service/ImportService.php +++ b/lib/Service/ImportService.php @@ -235,7 +235,7 @@ class ImportService { $service->parse($activity); } catch (Exception $e) { $this->miscService->log( - 2, 'Cannot parse ' . $activity->getType() . ': ' . $e->getMessage() + 'Cannot parse ' . $activity->getType() . ': ' . $e->getMessage() ); } } diff --git a/package-lock.json b/package-lock.json index c4dc7a49..16a2cdbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,25 +14,115 @@ } }, "@babel/core": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.2.tgz", - "integrity": "sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", + "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.2", - "@babel/helpers": "^7.1.2", - "@babel/parser": "^7.1.2", - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.1.2", + "@babel/generator": "^7.2.2", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.2.2", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.2.2", + "@babel/types": "^7.2.2", "convert-source-map": "^1.1.0", - "debug": "^3.1.0", - "json5": "^0.5.0", + "debug": "^4.1.0", + "json5": "^2.1.0", "lodash": "^4.17.10", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", + "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", + "dev": true, + "requires": { + "@babel/types": "^7.2.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/parser": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.2.tgz", + "integrity": "sha512-UNTmQ5cSLDeBGBl+s7JeowkqIHgmFAGBnLDdIzFmUNSuS5JF0XBcN59jsh/vJO/YjfsBqMxhMjoFGmNExmf0FA==", + "dev": true + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.2.tgz", + "integrity": "sha512-E5Bn9FSwHpSkUhthw/XEuvFZxIgrqb9M8cX8j5EUQtrUG5DQUy6bFyl7G7iQ1D1Czudor+xkmp81JbLVVM0Sjg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", + "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "json5": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } } }, "@babel/generator": { @@ -254,14 +344,78 @@ } }, "@babel/helpers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.2.tgz", - "integrity": "sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz", + "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==", "dev": true, "requires": { "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.1.2" + "@babel/traverse": "^7.1.5", + "@babel/types": "^7.2.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", + "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", + "dev": true, + "requires": { + "@babel/types": "^7.2.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/parser": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.2.tgz", + "integrity": "sha512-UNTmQ5cSLDeBGBl+s7JeowkqIHgmFAGBnLDdIzFmUNSuS5JF0XBcN59jsh/vJO/YjfsBqMxhMjoFGmNExmf0FA==", + "dev": true + }, + "@babel/traverse": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.2.tgz", + "integrity": "sha512-E5Bn9FSwHpSkUhthw/XEuvFZxIgrqb9M8cX8j5EUQtrUG5DQUy6bFyl7G7iQ1D1Czudor+xkmp81JbLVVM0Sjg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", + "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } } }, "@babel/highlight": { @@ -343,9 +497,9 @@ } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz", - "integrity": "sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -824,183 +978,184 @@ } }, "@vue/test-utils": { - "version": "1.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.25.tgz", - "integrity": "sha512-mfvguEmEpAn0BuT4u+qm+0J1NTKgQS+ffUyWHY1QeSovIkJcy98fj1rO+PJgiZSEvGjjnDNX+qmofYFPLrofbA==", + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.27.tgz", + "integrity": "sha512-Lzrd4ZB |