Refactor code

pull/3262/head
Julio Montoya 6 years ago
parent d4295de564
commit 5561086e94
  1. 1
      composer.json
  2. 1
      config/bundles.php
  3. 18
      package.json
  4. 2
      public/main/inc/lib/api.lib.php
  5. 4
      src/CoreBundle/Controller/CreateResourceFileAction.php
  6. 9
      src/CoreBundle/Entity/AbstractResource.php
  7. 1
      src/CoreBundle/Entity/AccessUrl.php
  8. 1
      src/CoreBundle/Entity/Course.php
  9. 1
      src/CoreBundle/Entity/CourseCategory.php
  10. 1
      src/CoreBundle/Entity/Illustration.php
  11. 2
      src/CoreBundle/Entity/ResourceComment.php
  12. 2
      src/CoreBundle/Entity/ResourceFile.php
  13. 1
      src/CoreBundle/Entity/ResourceNode.php
  14. 1
      src/CoreBundle/Entity/Session.php
  15. 1
      src/CoreBundle/Entity/SessionCategory.php
  16. 3
      src/CoreBundle/Entity/User.php
  17. 9
      src/CoreBundle/EventSubscriber/ResolveResourceFileContentUrlSubscriber.php
  18. 5
      src/CoreBundle/Security/Authorization/Voter/ResourceNodeVoter.php
  19. 10
      webpack.config.js
  20. 32
      yarn.lock

@ -137,6 +137,7 @@
"symfony/monolog-bundle": "^3.1", "symfony/monolog-bundle": "^3.1",
"symfony/polyfill-apcu": "^1.9", "symfony/polyfill-apcu": "^1.9",
"symfony/requirements-checker": "^1.1", "symfony/requirements-checker": "^1.1",
"symfony/security-acl": "^3.0",
"symfony/security-bundle": "^5.0", "symfony/security-bundle": "^5.0",
"symfony/string": "^5.0", "symfony/string": "^5.0",
"symfony/templating": "^5.0", "symfony/templating": "^5.0",

@ -23,7 +23,6 @@ return [
A2lix\TranslationFormBundle\A2lixTranslationFormBundle::class => ['all' => true], A2lix\TranslationFormBundle\A2lixTranslationFormBundle::class => ['all' => true],
Oneup\UploaderBundle\OneupUploaderBundle::class => ['all' => true], Oneup\UploaderBundle\OneupUploaderBundle::class => ['all' => true],
APY\DataGridBundle\APYDataGridBundle::class => ['all' => true], APY\DataGridBundle\APYDataGridBundle::class => ['all' => true],
//Overblog\GraphQLBundle\OverblogGraphQLBundle::class => ['all' => true],
Gregwar\CaptchaBundle\GregwarCaptchaBundle::class => ['all' => true], Gregwar\CaptchaBundle\GregwarCaptchaBundle::class => ['all' => true],
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true], Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true], Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],

@ -4,11 +4,15 @@
"description": "E-learning and collaboration software", "description": "E-learning and collaboration software",
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@babel/plugin-transform-runtime": "^7.9.6",
"@babel/runtime": "^7.9.6",
"@fancyapps/fancybox": "^3.5.7", "@fancyapps/fancybox": "^3.5.7",
"@quasar/extras": "^1.0.0",
"apollo-boost": "^0.4.7", "apollo-boost": "^0.4.7",
"axios": "^0.19.2", "axios": "^0.19.2",
"babel": "^6.23.0", "babel": "^6.23.0",
"babel-plugin-transform-builtin-extend": "^1.1.2", "babel-plugin-transform-builtin-extend": "^1.1.2",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0", "babel-preset-env": "^1.7.0",
"blueimp-file-upload": "^10.0", "blueimp-file-upload": "^10.0",
"bootstrap-daterangepicker": "^3.0", "bootstrap-daterangepicker": "^3.0",
@ -49,7 +53,6 @@
"pretty-checkbox": "^3.0.3", "pretty-checkbox": "^3.0.3",
"pwstrength-bootstrap": "^3.0.5", "pwstrength-bootstrap": "^3.0.5",
"qtip2": "^3.0.3", "qtip2": "^3.0.3",
"@quasar/extras": "^1.0.0",
"quasar": "^1.10.5", "quasar": "^1.10.5",
"readmore-js": "^2.2.1", "readmore-js": "^2.2.1",
"router": "^1.3.5", "router": "^1.3.5",
@ -59,14 +62,15 @@
"timeago": "^1.6.7", "timeago": "^1.6.7",
"timepicker": "^1.11.14", "timepicker": "^1.11.14",
"video.js": "^7.6.6", "video.js": "^7.6.6",
"vue": "^2.6",
"vue-apollo": "^3.0.3", "vue-apollo": "^3.0.3",
"vue-i18n": "^8.17.4", "vue-i18n": "^8.17.4",
"vue-loader": "^15.7.0",
"vue-moment": "^4.1.0",
"vue-router": "^3.1.6", "vue-router": "^3.1.6",
"vue-template-compiler": "^2.6.10",
"vuelidate": "^0.7.5", "vuelidate": "^0.7.5",
"vuetify": "^2.2.27", "vuetify": "^2.2.27",
"vue": "^2.6",
"vue-loader": "^15.7.0",
"vue-template-compiler": "^2.6.10",
"vuex": "^3.3.0", "vuex": "^3.3.0",
"vuex-map-fields": "^1.4.0", "vuex-map-fields": "^1.4.0",
"webcamjs": "^1.0", "webcamjs": "^1.0",
@ -77,6 +81,9 @@
"@coreui/coreui": "^2.1.7", "@coreui/coreui": "^2.1.7",
"@fortawesome/fontawesome-free": "^5.11", "@fortawesome/fontawesome-free": "^5.11",
"@symfony/webpack-encore": "~0.28", "@symfony/webpack-encore": "~0.28",
"@vue/cli-plugin-babel": "~4.3.0",
"@vue/cli-plugin-eslint": "~4.3.0",
"@vue/cli-service": "~4.3.0",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-preset-react": "^6.24.1", "babel-preset-react": "^6.24.1",
"bootstrap": "^4.4", "bootstrap": "^4.4",
@ -93,9 +100,6 @@
"popper.js": "^1.14.7", "popper.js": "^1.14.7",
"sass": "^1.26.5", "sass": "^1.26.5",
"sass-loader": "^7.0.2", "sass-loader": "^7.0.2",
"@vue/cli-plugin-babel": "~4.3.0",
"@vue/cli-plugin-eslint": "~4.3.0",
"@vue/cli-service": "~4.3.0",
"vue-cli-plugin-quasar": "~2.0.2", "vue-cli-plugin-quasar": "~2.0.2",
"webpack-notifier": "^1.6.0" "webpack-notifier": "^1.6.0"
} }

@ -1770,7 +1770,7 @@ function api_get_user_info_from_entity(
switch ($user->getStatus()) { switch ($user->getStatus()) {
case STUDENT: case STUDENT:
if ($result['has_certificates']) { if (isset($result['has_certificates']) && $result['has_certificates']) {
$iconStatus = $urlImg.'icons/svg/identifier_graduated.svg'; $iconStatus = $urlImg.'icons/svg/identifier_graduated.svg';
} else { } else {
$iconStatus = $urlImg.'icons/svg/identifier_student.svg'; $iconStatus = $urlImg.'icons/svg/identifier_student.svg';

@ -4,11 +4,11 @@
namespace Chamilo\CoreBundle\Controller; namespace Chamilo\CoreBundle\Controller;
use Chamilo\CoreBundle\Entity\Resource\ResourceFile; use Chamilo\CoreBundle\Entity\ResourceFile;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
class CreateMediaObjectAction class CreateResourceFileAction
{ {
public function __invoke(Request $request): ResourceFile public function __invoke(Request $request): ResourceFile
{ {

@ -4,6 +4,7 @@
namespace Chamilo\CoreBundle\Entity; namespace Chamilo\CoreBundle\Entity;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiSubresource; use ApiPlatform\Core\Annotation\ApiSubresource;
use APY\DataGridBundle\Grid\Mapping as GRID; use APY\DataGridBundle\Grid\Mapping as GRID;
use Doctrine\Common\Collections\Criteria; use Doctrine\Common\Collections\Criteria;
@ -18,6 +19,14 @@ use Symfony\Component\Validator\Constraints as Assert;
*/ */
abstract class AbstractResource abstract class AbstractResource
{ {
/**
* @var string|null
*
* @ApiProperty(iri="http://schema.org/contentUrl")
* @Groups({"resource_file:read", "resource_node:read", "document:read", "media_object_read"})
*/
public $contentUrl;
/** /**
* SerializedName("description"). * SerializedName("description").
* *

@ -13,6 +13,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/** /**
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* normalizationContext={"groups"={"access_url:read"}, "swagger_definition_name"="Read"}, * normalizationContext={"groups"={"access_url:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"access_url:write","course_category:write"}}, * denormalizationContext={"groups"={"access_url:write","course_category:write"}},
* ) * )

@ -25,6 +25,7 @@ use Symfony\Component\Validator\Constraints as Assert;
* Class Course. * Class Course.
* *
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* iri="https://schema.org/Course", * iri="https://schema.org/Course",
* normalizationContext={"groups"={"course:read"}, "swagger_definition_name"="Read"}, * normalizationContext={"groups"={"course:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"course:write","course_category:write"}}, * denormalizationContext={"groups"={"course:write","course_category:write"}},

@ -18,6 +18,7 @@ use Symfony\Component\Validator\Constraints as Assert;
* CourseCategory. * CourseCategory.
* *
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* normalizationContext={"groups"={"course_category:read", "course:read"}, "swagger_definition_name"="Read"}, * normalizationContext={"groups"={"course_category:read", "course:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"course_category:write", "course:write"}}, * denormalizationContext={"groups"={"course_category:write", "course:write"}},
* ) * )

@ -15,7 +15,6 @@ use Symfony\Component\Serializer\Annotation\Groups;
* Illustration. * Illustration.
* *
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* normalizationContext={"groups"={"illustration:read"}} * normalizationContext={"groups"={"illustration:read"}}
* ) * )
* @ORM\Table(name="illustration") * @ORM\Table(name="illustration")

@ -16,7 +16,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/** /**
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"}, * attributes={"security"="is_granted('ROLE_USER')"},
* normalizationContext={"groups"={"comment:read"}} * normalizationContext={"groups"={"comment:read"}}
* ) * )
* *

@ -119,7 +119,7 @@ class ResourceFile
/** /**
* @var File * @var File
* @Groups({"resource_file:read", "resource_node:read", "document:read"}) *
* @Assert\NotNull(groups={"media_object_create"}) * @Assert\NotNull(groups={"media_object_create"})
* @Vich\UploadableField( * @Vich\UploadableField(
* mapping="resources", * mapping="resources",

@ -108,7 +108,6 @@ class ResourceNode
/** /**
* @ApiSubresource() * @ApiSubresource()
* *
* @Groups({"resource_node:read", "document:read"})
* @Gedmo\TreeParent * @Gedmo\TreeParent
* @ORM\ManyToOne( * @ORM\ManyToOne(
* targetEntity="ResourceNode", * targetEntity="ResourceNode",

@ -19,6 +19,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/** /**
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* normalizationContext={"groups"={"session:read"}, "swagger_definition_name"="Read"}, * normalizationContext={"groups"={"session:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"session:write"}}, * denormalizationContext={"groups"={"session:write"}},
* ) * )

@ -12,6 +12,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
* SessionCategory. * SessionCategory.
* *
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* normalizationContext={"groups"={"session_category:read"}, "swagger_definition_name"="Read"}, * normalizationContext={"groups"={"session_category:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"session_category:write"}}, * denormalizationContext={"groups"={"session_category:write"}},
* ) * )

@ -21,9 +21,10 @@ use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Mapping\ClassMetadata;
//
/** /**
* @ApiResource( * @ApiResource(
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* iri="http://schema.org/Person", * iri="http://schema.org/Person",
* attributes={"security"="is_granted('ROLE_ADMIN')"}, * attributes={"security"="is_granted('ROLE_ADMIN')"},
* normalizationContext={"groups"={"user:read"}}, * normalizationContext={"groups"={"user:read"}},

@ -6,6 +6,7 @@ namespace Chamilo\CoreBundle\EventSubscriber;
use ApiPlatform\Core\EventListener\EventPriorities; use ApiPlatform\Core\EventListener\EventPriorities;
use ApiPlatform\Core\Util\RequestAttributesExtractor; use ApiPlatform\Core\Util\RequestAttributesExtractor;
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\ResourceFile; use Chamilo\CoreBundle\Entity\ResourceFile;
use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@ -40,13 +41,14 @@ class ResolveResourceFileContentUrlSubscriber implements EventSubscriberInterfac
if ($controllerResult instanceof Response || !$request->attributes->getBoolean('_api_respond', true)) { if ($controllerResult instanceof Response || !$request->attributes->getBoolean('_api_respond', true)) {
return; return;
} }
$attributes = RequestAttributesExtractor::extractAttributes($request);
if (!($attributes = RequestAttributesExtractor::extractAttributes($request)) || if (!($attributes = RequestAttributesExtractor::extractAttributes($request)) ||
!\is_a($attributes['resource_class'], ResourceFile::class, true) //!\is_a($attributes['resource_class'], ResourceFile::class, true)
!\is_a($attributes['resource_class'], AbstractResource::class, true)
) { ) {
return; return;
} }
$mediaObjects = $controllerResult; $mediaObjects = $controllerResult;
if (!is_iterable($mediaObjects)) { if (!is_iterable($mediaObjects)) {
@ -54,9 +56,10 @@ class ResolveResourceFileContentUrlSubscriber implements EventSubscriberInterfac
} }
foreach ($mediaObjects as $mediaObject) { foreach ($mediaObjects as $mediaObject) {
if (!$mediaObject instanceof ResourceFile) { if (!$mediaObject instanceof AbstractResource) {
continue; continue;
} }
$params = [ $params = [
'id' => $mediaObject->getResourceNode()->getId(), 'id' => $mediaObject->getResourceNode()->getId(),
'tool' => $mediaObject->getResourceNode()->getResourceType()->getTool()->getName(), 'tool' => $mediaObject->getResourceNode()->getResourceType()->getTool()->getName(),

@ -116,12 +116,12 @@ class ResourceNodeVoter extends Voter
$creator = $resourceNode->getCreator(); $creator = $resourceNode->getCreator();
// Illustrations are always visible. // Illustrations are always visible.
if ($resourceNode->isIllustrationNode()) { if ('illustrations' === $resourceNode->getResourceType()->getName()) {
return true; return true;
} }
// Course access are protected using the CourseVoter. // Course access are protected using the CourseVoter.
if ($resourceNode->isCourseNode()) { if ('courses' === $resourceNode->getResourceType()->getName()) {
return true; return true;
} }
@ -330,7 +330,6 @@ class ResourceNodeVoter extends Voter
// Admin can do everything // Admin can do everything
$acl->allow($admin); $acl->allow($admin);
$acl->allow($superAdmin); $acl->allow($superAdmin);
//var_dump($user->getRoles() );
foreach ($user->getRoles() as $role) { foreach ($user->getRoles() as $role) {
//var_dump($acl->isAllowed($role, $resource, $askedMask), $role); //var_dump($acl->isAllowed($role, $resource, $askedMask), $role);
if ($acl->isAllowed($role, $resource, $askedMask)) { if ($acl->isAllowed($role, $resource, $askedMask)) {

@ -32,6 +32,16 @@ Encore
.enableIntegrityHashes() .enableIntegrityHashes()
.enableSourceMaps(!Encore.isProduction()) .enableSourceMaps(!Encore.isProduction())
// enables hashed filenames (e.g. app.abc123.css)
.enableVersioning(Encore.isProduction())
// enables @babel/preset-env polyfills
.configureBabel((babelConfig) => {
babelConfig.plugins.push('@babel/plugin-transform-runtime');
}, {
useBuiltIns: 'usage',
corejs: 3
})
.enableSassLoader() .enableSassLoader()
.enableVueLoader(function(options) { .enableVueLoader(function(options) {

@ -624,7 +624,7 @@
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3"
"@babel/plugin-transform-runtime@^7.9.0": "@babel/plugin-transform-runtime@^7.9.0", "@babel/plugin-transform-runtime@^7.9.6":
version "7.9.6" version "7.9.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz#3ba804438ad0d880a17bca5eaa0cdf1edeedb2fd" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz#3ba804438ad0d880a17bca5eaa0cdf1edeedb2fd"
integrity sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w== integrity sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==
@ -756,7 +756,7 @@
"@babel/types" "^7.4.4" "@babel/types" "^7.4.4"
esutils "^2.0.2" esutils "^2.0.2"
"@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2", "@babel/runtime@^7.9.6":
version "7.9.6" version "7.9.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f"
integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==
@ -2382,6 +2382,15 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0" babel-runtime "^6.22.0"
babel-types "^6.24.1" babel-types "^6.24.1"
babel-polyfill@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=
dependencies:
babel-runtime "^6.26.0"
core-js "^2.5.0"
regenerator-runtime "^0.10.5"
babel-preset-env@^1.7.0: babel-preset-env@^1.7.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
@ -3508,7 +3517,7 @@ core-js-compat@^3.6.2, core-js-compat@^3.6.4:
browserslist "^4.8.5" browserslist "^4.8.5"
semver "7.0.0" semver "7.0.0"
core-js@^2.4.0: core-js@^2.4.0, core-js@^2.5.0:
version "2.6.11" version "2.6.11"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
@ -7232,6 +7241,11 @@ moment-timezone@^0.4.0:
resolved "https://registry.yarnpkg.com/moment/-/moment-2.25.3.tgz#252ff41319cf41e47761a1a88cab30edfe9808c0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.25.3.tgz#252ff41319cf41e47761a1a88cab30edfe9808c0"
integrity sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg== integrity sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==
moment@^2.19.2:
version "2.26.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a"
integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==
move-concurrently@^1.0.1: move-concurrently@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@ -8944,6 +8958,11 @@ regenerate@^1.2.1, regenerate@^1.4.0:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
regenerator-runtime@^0.10.5:
version "0.10.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=
regenerator-runtime@^0.11.0: regenerator-runtime@^0.11.0:
version "0.11.1" version "0.11.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
@ -10759,6 +10778,13 @@ vue-loader@^15.7.0, vue-loader@^15.9.1:
vue-hot-reload-api "^2.3.0" vue-hot-reload-api "^2.3.0"
vue-style-loader "^4.1.0" vue-style-loader "^4.1.0"
vue-moment@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/vue-moment/-/vue-moment-4.1.0.tgz#092a8ff723a96c6f85a0a8e23ad30f0bf320f3b0"
integrity sha512-Gzisqpg82ItlrUyiD9d0Kfru+JorW2o4mQOH06lEDZNgxci0tv/fua1Hl0bo4DozDV2JK1r52Atn/8QVCu8qQw==
dependencies:
moment "^2.19.2"
vue-router@^3.1.6: vue-router@^3.1.6:
version "3.1.6" version "3.1.6"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.6.tgz#45f5a3a3843e31702c061dd829393554e4328f89" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.6.tgz#45f5a3a3843e31702c061dd829393554e4328f89"

Loading…
Cancel
Save