From 19d8e20c38f7027a2c2392b198411ec4ba7b98e1 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sat, 3 Nov 2018 15:06:32 +0900 Subject: [PATCH 001/162] add README --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..7945b20 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# mizql + +大雨洪水等の災害における逃げ遅れ防止アプリ + +## Author + +- pudding +- taxio +- ken_kentan + +## License + +MIT From 796ae5eadfd7a56c82794f8e3e585ba21f1c2524 Mon Sep 17 00:00:00 2001 From: Shoma Kokuryo Date: Sat, 3 Nov 2018 15:08:04 +0900 Subject: [PATCH 002/162] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3692944 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 StudioAquatan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 7e3e409d945bc1fb30237fffe34714979addbdf9 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sat, 3 Nov 2018 17:11:50 +0900 Subject: [PATCH 003/162] add user model --- .idea/mizql.iml | 4 +- Makefile | 4 +- mizql/accounts/__init__.py | 0 mizql/accounts/admin.py | 13 ++++ mizql/accounts/apps.py | 5 ++ mizql/accounts/forms.py | 11 ++++ mizql/accounts/migrations/0001_initial.py | 36 +++++++++++ .../migrations/0002_auto_20181103_1648.py | 24 +++++++ mizql/accounts/migrations/__init__.py | 0 mizql/accounts/models.py | 63 +++++++++++++++++++ mizql/accounts/permissions.py | 10 +++ mizql/accounts/serializers.py | 23 +++++++ mizql/accounts/templates/accounts/login.html | 20 ++++++ mizql/accounts/templates/accounts/top.html | 4 ++ mizql/accounts/tests.py | 3 + mizql/accounts/urls.py | 10 +++ mizql/accounts/views.py | 40 ++++++++++++ mizql/mizql/settings.py | 9 ++- mizql/mizql/urls.py | 13 +++- mizql/templates/base.html | 49 +++++++++++++++ 20 files changed, 336 insertions(+), 5 deletions(-) create mode 100644 mizql/accounts/__init__.py create mode 100644 mizql/accounts/admin.py create mode 100644 mizql/accounts/apps.py create mode 100644 mizql/accounts/forms.py create mode 100644 mizql/accounts/migrations/0001_initial.py create mode 100644 mizql/accounts/migrations/0002_auto_20181103_1648.py create mode 100644 mizql/accounts/migrations/__init__.py create mode 100644 mizql/accounts/models.py create mode 100644 mizql/accounts/permissions.py create mode 100644 mizql/accounts/serializers.py create mode 100644 mizql/accounts/templates/accounts/login.html create mode 100644 mizql/accounts/templates/accounts/top.html create mode 100644 mizql/accounts/tests.py create mode 100644 mizql/accounts/urls.py create mode 100644 mizql/accounts/views.py create mode 100644 mizql/templates/base.html diff --git a/.idea/mizql.iml b/.idea/mizql.iml index 8d90411..369e0b6 100644 --- a/.idea/mizql.iml +++ b/.idea/mizql.iml @@ -13,7 +13,9 @@ - + + + diff --git a/Makefile b/Makefile index c425d95..18c3685 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ SHELL := /bin/bash NAME := mizql -SRCS := $(shell find ./src -type f \( -name '*.css' -o -name '*.py' -o -name '*.html' -o -name '*.js' \) -print) +SRCS := $(shell find ./mizql -type f \( -name '*.css' -o -name '*.py' -o -name '*.html' -o -name '*.js' \) -print) DOCKERFILE := Dockerfile DB_USER := develop DB_PASSWORD := password @@ -54,7 +54,7 @@ rundb: -e MYSQL_USER=$(DB_USER) \ -e MYSQL_PASSWORD=$(DB_PASSWORD) \ -e MYSQL_DATABASE=$(DB_NAME) \ - -p $(DB_PORT):$(DB_PORT) \ + -p $(DB_PORT):3306 \ $(DB_IMAGE):$(DB_IMAGE_VERSION) > /dev/null; \ fi diff --git a/mizql/accounts/__init__.py b/mizql/accounts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/accounts/admin.py b/mizql/accounts/admin.py new file mode 100644 index 0000000..6ac35bc --- /dev/null +++ b/mizql/accounts/admin.py @@ -0,0 +1,13 @@ +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin +from .models import User + + +@admin.register(User) +class CustomUserAdmin(UserAdmin): + list_display = ('email', 'is_staff', 'is_superuser', 'created_at') + fieldsets = ( + (None, {'fields': ('email', 'password')}), + ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), + ) + ordering = ['-created_at'] diff --git a/mizql/accounts/apps.py b/mizql/accounts/apps.py new file mode 100644 index 0000000..9b3fc5a --- /dev/null +++ b/mizql/accounts/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AccountsConfig(AppConfig): + name = 'accounts' diff --git a/mizql/accounts/forms.py b/mizql/accounts/forms.py new file mode 100644 index 0000000..6a3ba56 --- /dev/null +++ b/mizql/accounts/forms.py @@ -0,0 +1,11 @@ +from django.contrib.auth.forms import AuthenticationForm + + +class LoginForm(AuthenticationForm): + """ログインフォーム""" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for field in self.fields.values(): + field.widget.attrs['class'] = 'form-control' + field.widget.attrs['placeholder'] = field.label diff --git a/mizql/accounts/migrations/0001_initial.py b/mizql/accounts/migrations/0001_initial.py new file mode 100644 index 0000000..a59d441 --- /dev/null +++ b/mizql/accounts/migrations/0001_initial.py @@ -0,0 +1,36 @@ +# Generated by Django 2.1.3 on 2018-11-03 06:21 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0009_alter_user_last_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('email', models.EmailField(max_length=255, unique=True)), + ('is_active', models.BooleanField(default=True)), + ('is_superuser', models.BooleanField(default=False)), + ('is_staff', models.BooleanField(default=False)), + ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='登録日時')), + ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新日時')), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'ユーザ', + 'verbose_name_plural': 'ユーザ', + 'ordering': ['-created_at'], + }, + ), + ] diff --git a/mizql/accounts/migrations/0002_auto_20181103_1648.py b/mizql/accounts/migrations/0002_auto_20181103_1648.py new file mode 100644 index 0000000..bd950bb --- /dev/null +++ b/mizql/accounts/migrations/0002_auto_20181103_1648.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.3 on 2018-11-03 07:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='username', + field=models.CharField(default='hoge', max_length=100, unique=True, verbose_name='ユーザ名'), + preserve_default=False, + ), + migrations.AlterField( + model_name='user', + name='email', + field=models.EmailField(default='hoge@fuga.com', max_length=255), + ), + ] diff --git a/mizql/accounts/migrations/__init__.py b/mizql/accounts/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/accounts/models.py b/mizql/accounts/models.py new file mode 100644 index 0000000..c4140a7 --- /dev/null +++ b/mizql/accounts/models.py @@ -0,0 +1,63 @@ +from django.db import models +from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin + + +class UserManager(BaseUserManager): + """ + カスタムユーザモデルのためのマネージャ + """ + + def create_user(self, username, password, **extra_fields): + """ + ユーザ作成の関数 + :param username: ユーザ名 *必須* + :param password: パスワード + :param email: メールアドレス + :param extra_fields: その他のパラメータ + :return: 作成されたユーザのManagerインスタンス + """ + if 'email' in extra_fields.keys(): + extra_fields['email'] = self.normalize_email(extra_fields['email']) + user = self.model( + username=username, + **extra_fields + ) + user.set_password(password) + user.save(using=self.db) + return user + + def create_superuser(self, username, password, **kwargs): + """ + /adminにログインできるスーパーユーザ作成用の関数 + :param username: ユーザ名 *必須* + :param password: パスワード + :return: 作成されたStudentのインスタンス + """ + return self.create_user(username=username, password=password, is_staff=True, + is_superuser=True, is_active=True, **kwargs) + + +class User(AbstractBaseUser, PermissionsMixin): + """ + ユーザのモデル + """ + username = models.CharField(verbose_name='ユーザ名', max_length=100, unique=True) + email = models.EmailField(max_length=255, unique=False, default='hoge@fuga.com') + is_active = models.BooleanField(default=True) + is_superuser = models.BooleanField(default=False) + is_staff = models.BooleanField(default=False) + created_at = models.DateTimeField('登録日時', auto_now_add=True) + updated_at = models.DateTimeField('更新日時', auto_now=True) + + USERNAME_FIELD = 'username' + + objects = UserManager() + + def __str__(self): + """ユーザ名を返却""" + return self.email + + class Meta: + ordering = ['-created_at'] + verbose_name = 'ユーザ' + verbose_name_plural = 'ユーザ' diff --git a/mizql/accounts/permissions.py b/mizql/accounts/permissions.py new file mode 100644 index 0000000..4148a53 --- /dev/null +++ b/mizql/accounts/permissions.py @@ -0,0 +1,10 @@ +from rest_framework import permissions + + +class IsOwnerOrReadOnly(permissions.BasePermission): + + def has_object_permission(self, request, view, obj): + """GETリクエストは通すがPOSTやPUTは所有者を確認する""" + if request.method in permissions.SAFE_METHODS: + return True + return request.user == obj.user diff --git a/mizql/accounts/serializers.py b/mizql/accounts/serializers.py new file mode 100644 index 0000000..b9dfd06 --- /dev/null +++ b/mizql/accounts/serializers.py @@ -0,0 +1,23 @@ +from rest_framework import serializers +from .models import User + + +class UserSerializer(serializers.ModelSerializer): + + class Meta: + model = User + fields = ('pk', 'username', 'email', 'created_at', 'updated_at') + + +class CreateUserSerializer(serializers.ModelSerializer): + + class Meta: + model = User + fields = ('username', 'email', 'password') + extra_kwargs = { + 'password': {'write_only': True}, + 'email': {'required': False} + } + + def create(self, validated_data): + return User.objects.create_user(**validated_data) diff --git a/mizql/accounts/templates/accounts/login.html b/mizql/accounts/templates/accounts/login.html new file mode 100644 index 0000000..cda4374 --- /dev/null +++ b/mizql/accounts/templates/accounts/login.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} +{% block content %} +
+
+
+
+ {{ form.non_field_errors }} + {% for field in form %} + {{ field }} + {{ field.errors }} +
+ {% endfor %} + + + {% csrf_token %} +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/mizql/accounts/templates/accounts/top.html b/mizql/accounts/templates/accounts/top.html new file mode 100644 index 0000000..234a93b --- /dev/null +++ b/mizql/accounts/templates/accounts/top.html @@ -0,0 +1,4 @@ +{% extends "base.html" %} +{% block content %} +

+{% endblock %} \ No newline at end of file diff --git a/mizql/accounts/tests.py b/mizql/accounts/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/mizql/accounts/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/mizql/accounts/urls.py b/mizql/accounts/urls.py new file mode 100644 index 0000000..3f03fc1 --- /dev/null +++ b/mizql/accounts/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from .views import Login, Logout + +app_name = 'accounts' + +urlpatterns = [ + path('login/', Login.as_view(), name='login'), + path('logout/', Logout.as_view(), name='logout'), +] diff --git a/mizql/accounts/views.py b/mizql/accounts/views.py new file mode 100644 index 0000000..064b32d --- /dev/null +++ b/mizql/accounts/views.py @@ -0,0 +1,40 @@ +from django.contrib.auth.mixins import LoginRequiredMixin +from django.contrib.auth.views import LoginView, LogoutView +from rest_framework import viewsets, mixins, permissions +from . import models, serializers, permissions as custom_permissions +from .forms import LoginForm + + +class Login(LoginView): + """ログインページ""" + form_class = LoginForm + template_name = 'accounts/login.html' + + +class Logout(LoginRequiredMixin, LogoutView): + """ログアウトページ""" + template_name = 'accounts/top.html' + + +class UserViewSets(mixins.RetrieveModelMixin, + mixins.CreateModelMixin, + viewsets.GenericViewSet): + + """ + retrieve: + 指定したユーザのプロフィールを取得するエンドポイント + create: + ユーザを作成するエンドポイント.未認証のユーザでも叩ける. + """ + queryset = models.User.objects.all() + permission_classes = (permissions.IsAuthenticated, custom_permissions.IsOwnerOrReadOnly) + + def get_permissions(self): + if self.action == 'create': + self.permission_classes = [permissions.AllowAny] + return super(UserViewSets, self).get_permissions() + + def get_serializer_class(self): + if self.action == 'create': + return serializers.CreateUserSerializer + return serializers.UserSerializer diff --git a/mizql/mizql/settings.py b/mizql/mizql/settings.py index 72485bd..d95d29a 100644 --- a/mizql/mizql/settings.py +++ b/mizql/mizql/settings.py @@ -56,6 +56,7 @@ 'rest_framework_swagger', 'djoser', 'django_filters', + 'accounts', ] MIDDLEWARE = [ @@ -69,6 +70,8 @@ ] ROOT_URLCONF = 'mizql.urls' +AUTH_USER_MODEL = 'accounts.User' + TEMPLATES = [ { @@ -150,6 +153,11 @@ 'SEND_CONFIRMATION_EMAIL': False, } +SWAGGER_SETTINGS = { + 'LOGIN_URL': 'accounts:login', + 'LOGOUT_URL': 'accounts:logout', +} + REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', @@ -158,7 +166,6 @@ 'DEFAULT_FILTER_BACKENDS': ( 'django_filters.rest_framework.DjangoFilterBackend', ), - 'DATETIME_FORMAT': "%Y/%m/%d" } JWT_AUTH = { diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index fdf26d1..089bf6f 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -14,8 +14,19 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import path, include +from rest_framework.routers import DefaultRouter +from rest_framework_swagger.views import get_swagger_view + +from accounts.views import UserViewSets + +router = DefaultRouter() +router.register(r'users', UserViewSets, base_name='users') urlpatterns = [ path('admin/', admin.site.urls), + path('_/', include('accounts.urls')), + path('api/', include(router.urls)), + path('api/auth/', include('djoser.urls.jwt')), + path('swagger/', get_swagger_view(title='mizql API Doc')), ] diff --git a/mizql/templates/base.html b/mizql/templates/base.html new file mode 100644 index 0000000..282137c --- /dev/null +++ b/mizql/templates/base.html @@ -0,0 +1,49 @@ + + + + + + + + + + + Mizql + + + + + + +
+ {% block content %}{% endblock %} +
+ + + + + + + \ No newline at end of file From 67564bf138235f472a25098574daf653702d59bd Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 16:34:57 +0900 Subject: [PATCH 004/162] `startapp frontend` --- mizql/frontend/__init__.py | 0 mizql/frontend/admin.py | 3 +++ mizql/frontend/apps.py | 5 +++++ mizql/frontend/migrations/__init__.py | 0 mizql/frontend/models.py | 3 +++ mizql/frontend/tests.py | 3 +++ mizql/frontend/views.py | 3 +++ 7 files changed, 17 insertions(+) create mode 100644 mizql/frontend/__init__.py create mode 100644 mizql/frontend/admin.py create mode 100644 mizql/frontend/apps.py create mode 100644 mizql/frontend/migrations/__init__.py create mode 100644 mizql/frontend/models.py create mode 100644 mizql/frontend/tests.py create mode 100644 mizql/frontend/views.py diff --git a/mizql/frontend/__init__.py b/mizql/frontend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/frontend/admin.py b/mizql/frontend/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/mizql/frontend/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/mizql/frontend/apps.py b/mizql/frontend/apps.py new file mode 100644 index 0000000..33ae5ca --- /dev/null +++ b/mizql/frontend/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class FrontendConfig(AppConfig): + name = 'frontend' diff --git a/mizql/frontend/migrations/__init__.py b/mizql/frontend/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/frontend/models.py b/mizql/frontend/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/mizql/frontend/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/mizql/frontend/tests.py b/mizql/frontend/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/mizql/frontend/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/mizql/frontend/views.py b/mizql/frontend/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/mizql/frontend/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. From afa16e4ae429190dcdead577652cc604df901c28 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 16:46:43 +0900 Subject: [PATCH 005/162] `npx create-react-app ui` --- mizql/frontend/ui/.gitignore | 23 + mizql/frontend/ui/README.md | 44 + mizql/frontend/ui/package.json | 25 + mizql/frontend/ui/public/favicon.ico | Bin 0 -> 3870 bytes mizql/frontend/ui/public/index.html | 40 + mizql/frontend/ui/public/manifest.json | 15 + mizql/frontend/ui/src/App.css | 32 + mizql/frontend/ui/src/App.js | 28 + mizql/frontend/ui/src/App.test.js | 9 + mizql/frontend/ui/src/index.css | 14 + mizql/frontend/ui/src/index.js | 12 + mizql/frontend/ui/src/logo.svg | 7 + mizql/frontend/ui/src/serviceWorker.js | 135 + mizql/frontend/ui/yarn.lock | 9805 ++++++++++++++++++++++++ 14 files changed, 10189 insertions(+) create mode 100644 mizql/frontend/ui/.gitignore create mode 100644 mizql/frontend/ui/README.md create mode 100644 mizql/frontend/ui/package.json create mode 100644 mizql/frontend/ui/public/favicon.ico create mode 100644 mizql/frontend/ui/public/index.html create mode 100644 mizql/frontend/ui/public/manifest.json create mode 100644 mizql/frontend/ui/src/App.css create mode 100644 mizql/frontend/ui/src/App.js create mode 100644 mizql/frontend/ui/src/App.test.js create mode 100644 mizql/frontend/ui/src/index.css create mode 100644 mizql/frontend/ui/src/index.js create mode 100644 mizql/frontend/ui/src/logo.svg create mode 100644 mizql/frontend/ui/src/serviceWorker.js create mode 100644 mizql/frontend/ui/yarn.lock diff --git a/mizql/frontend/ui/.gitignore b/mizql/frontend/ui/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/mizql/frontend/ui/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/mizql/frontend/ui/README.md b/mizql/frontend/ui/README.md new file mode 100644 index 0000000..897dc83 --- /dev/null +++ b/mizql/frontend/ui/README.md @@ -0,0 +1,44 @@ +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.
+You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/mizql/frontend/ui/package.json b/mizql/frontend/ui/package.json new file mode 100644 index 0000000..261adb9 --- /dev/null +++ b/mizql/frontend/ui/package.json @@ -0,0 +1,25 @@ +{ + "name": "ui", + "version": "0.1.0", + "private": true, + "dependencies": { + "react": "^16.6.0", + "react-dom": "^16.6.0", + "react-scripts": "2.1.1" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/mizql/frontend/ui/public/favicon.ico b/mizql/frontend/ui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= z!sii`1giyH7EKL_+Wi0ab<)&E_0KD!3Rp2^HNB*K2@PHCs4PWSA32*-^7d{9nH2_E zmC{C*N*)(vEF1_aMamw2A{ZH5aIDqiabnFdJ|y0%aS|64E$`s2ccV~3lR!u<){eS` z#^Mx6o(iP1Ix%4dv`t@!&Za-K@mTm#vadc{0aWDV*_%EiGK7qMC_(`exc>-$Gb9~W!w_^{*pYRm~G zBN{nA;cm^w$VWg1O^^<6vY`1XCD|s_zv*g*5&V#wv&s#h$xlUilPe4U@I&UXZbL z0)%9Uj&@yd03n;!7do+bfixH^FeZ-Ema}s;DQX2gY+7g0s(9;`8GyvPY1*vxiF&|w z>!vA~GA<~JUqH}d;DfBSi^IT*#lrzXl$fNpq0_T1tA+`A$1?(gLb?e#0>UELvljtQ zK+*74m0jn&)5yk8mLBv;=@}c{t0ztT<v;Avck$S6D`Z)^c0(jiwKhQsn|LDRY&w(Fmi91I7H6S;b0XM{e zXp0~(T@k_r-!jkLwd1_Vre^v$G4|kh4}=Gi?$AaJ)3I+^m|Zyj#*?Kp@w(lQdJZf4 z#|IJW5z+S^e9@(6hW6N~{pj8|NO*>1)E=%?nNUAkmv~OY&ZV;m-%?pQ_11)hAr0oAwILrlsGawpxx4D43J&K=n+p3WLnlDsQ$b(9+4 z?mO^hmV^F8MV{4Lx>(Q=aHhQ1){0d*(e&s%G=i5rq3;t{JC zmgbn5Nkl)t@fPH$v;af26lyhH!k+#}_&aBK4baYPbZy$5aFx4}ka&qxl z$=Rh$W;U)>-=S-0=?7FH9dUAd2(q#4TCAHky!$^~;Dz^j|8_wuKc*YzfdAht@Q&ror?91Dm!N03=4=O!a)I*0q~p0g$Fm$pmr$ zb;wD;STDIi$@M%y1>p&_>%?UP($15gou_ue1u0!4(%81;qcIW8NyxFEvXpiJ|H4wz z*mFT(qVx1FKufG11hByuX%lPk4t#WZ{>8ka2efjY`~;AL6vWyQKpJun2nRiZYDij$ zP>4jQXPaP$UC$yIVgGa)jDV;F0l^n(V=HMRB5)20V7&r$jmk{UUIe zVjKroK}JAbD>B`2cwNQ&GDLx8{pg`7hbA~grk|W6LgiZ`8y`{Iq0i>t!3p2}MS6S+ zO_ruKyAElt)rdS>CtF7j{&6rP-#c=7evGMt7B6`7HG|-(WL`bDUAjyn+k$mx$CH;q2Dz4x;cPP$hW=`pFfLO)!jaCL@V2+F)So3}vg|%O*^T1j>C2lx zsURO-zIJC$^$g2byVbRIo^w>UxK}74^TqUiRR#7s_X$e)$6iYG1(PcW7un-va-S&u zHk9-6Zn&>T==A)lM^D~bk{&rFzCi35>UR!ZjQkdSiNX*-;l4z9j*7|q`TBl~Au`5& z+c)*8?#-tgUR$Zd%Q3bs96w6k7q@#tUn`5rj+r@_sAVVLqco|6O{ILX&U-&-cbVa3 zY?ngHR@%l{;`ri%H*0EhBWrGjv!LE4db?HEWb5mu*t@{kv|XwK8?npOshmzf=vZA@ zVSN9sL~!sn?r(AK)Q7Jk2(|M67Uy3I{eRy z_l&Y@A>;vjkWN5I2xvFFTLX0i+`{qz7C_@bo`ZUzDugfq4+>a3?1v%)O+YTd6@Ul7 zAfLfm=nhZ`)P~&v90$&UcF+yXm9sq!qCx3^9gzIcO|Y(js^Fj)Rvq>nQAHI92ap=P z10A4@prk+AGWCb`2)dQYFuR$|H6iDE8p}9a?#nV2}LBCoCf(Xi2@szia7#gY>b|l!-U`c}@ zLdhvQjc!BdLJvYvzzzngnw51yRYCqh4}$oRCy-z|v3Hc*d|?^Wj=l~18*E~*cR_kU z{XsxM1i{V*4GujHQ3DBpl2w4FgFR48Nma@HPgnyKoIEY-MqmMeY=I<%oG~l!f<+FN z1ZY^;10j4M4#HYXP zw5eJpA_y(>uLQ~OucgxDLuf}fVs272FaMxhn4xnDGIyLXnw>Xsd^J8XhcWIwIoQ9} z%FoSJTAGW(SRGwJwb=@pY7r$uQRK3Zd~XbxU)ts!4XsJrCycrWSI?e!IqwqIR8+Jh zlRjZ`UO1I!BtJR_2~7AbkbSm%XQqxEPkz6BTGWx8e}nQ=w7bZ|eVP4?*Tb!$(R)iC z9)&%bS*u(lXqzitAN)Oo=&Ytn>%Hzjc<5liuPi>zC_nw;Z0AE3Y$Jao_Q90R-gl~5 z_xAb2J%eArrC1CN4G$}-zVvCqF1;H;abAu6G*+PDHSYFx@Tdbfox*uEd3}BUyYY-l zTfEsOqsi#f9^FoLO;ChK<554qkri&Av~SIM*{fEYRE?vH7pTAOmu2pz3X?Wn*!ROX ztd54huAk&mFBemMooL33RV-*1f0Q3_(7hl$<#*|WF9P!;r;4_+X~k~uKEqdzZ$5Al zV63XN@)j$FN#cCD;ek1R#l zv%pGrhB~KWgoCj%GT?%{@@o(AJGt*PG#l3i>lhmb_twKH^EYvacVY-6bsCl5*^~L0 zonm@lk2UvvTKr2RS%}T>^~EYqdL1q4nD%0n&Xqr^cK^`J5W;lRRB^R-O8b&HENO||mo0xaD+S=I8RTlIfVgqN@SXDr2&-)we--K7w= zJVU8?Z+7k9dy;s;^gDkQa`0nz6N{T?(A&Iz)2!DEecLyRa&FI!id#5Z7B*O2=PsR0 zEvc|8{NS^)!d)MDX(97Xw}m&kEO@5jqRaDZ!+%`wYOI<23q|&js`&o4xvjP7D_xv@ z5hEwpsp{HezI9!~6O{~)lLR@oF7?J7i>1|5a~UuoN=q&6N}EJPV_GD`&M*v8Y`^2j zKII*d_@Fi$+i*YEW+Hbzn{iQk~yP z>7N{S4)r*!NwQ`(qcN#8SRQsNK6>{)X12nbF`*7#ecO7I)Q$uZsV+xS4E7aUn+U(K baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/mizql/frontend/ui/public/index.html b/mizql/frontend/ui/public/index.html new file mode 100644 index 0000000..4bfce95 --- /dev/null +++ b/mizql/frontend/ui/public/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + + React App + + + +
+ + + diff --git a/mizql/frontend/ui/public/manifest.json b/mizql/frontend/ui/public/manifest.json new file mode 100644 index 0000000..1f2f141 --- /dev/null +++ b/mizql/frontend/ui/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/mizql/frontend/ui/src/App.css b/mizql/frontend/ui/src/App.css new file mode 100644 index 0000000..92f956e --- /dev/null +++ b/mizql/frontend/ui/src/App.css @@ -0,0 +1,32 @@ +.App { + text-align: center; +} + +.App-logo { + animation: App-logo-spin infinite 20s linear; + height: 40vmin; +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/mizql/frontend/ui/src/App.js b/mizql/frontend/ui/src/App.js new file mode 100644 index 0000000..7e261ca --- /dev/null +++ b/mizql/frontend/ui/src/App.js @@ -0,0 +1,28 @@ +import React, { Component } from 'react'; +import logo from './logo.svg'; +import './App.css'; + +class App extends Component { + render() { + return ( +
+ ); + } +} + +export default App; diff --git a/mizql/frontend/ui/src/App.test.js b/mizql/frontend/ui/src/App.test.js new file mode 100644 index 0000000..a754b20 --- /dev/null +++ b/mizql/frontend/ui/src/App.test.js @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App'; + +it('renders without crashing', () => { + const div = document.createElement('div'); + ReactDOM.render(, div); + ReactDOM.unmountComponentAtNode(div); +}); diff --git a/mizql/frontend/ui/src/index.css b/mizql/frontend/ui/src/index.css new file mode 100644 index 0000000..cee5f34 --- /dev/null +++ b/mizql/frontend/ui/src/index.css @@ -0,0 +1,14 @@ +body { + margin: 0; + padding: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", + monospace; +} diff --git a/mizql/frontend/ui/src/index.js b/mizql/frontend/ui/src/index.js new file mode 100644 index 0000000..0c5e75d --- /dev/null +++ b/mizql/frontend/ui/src/index.js @@ -0,0 +1,12 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import * as serviceWorker from './serviceWorker'; + +ReactDOM.render(, document.getElementById('root')); + +// If you want your app to work offline and load faster, you can change +// unregister() to register() below. Note this comes with some pitfalls. +// Learn more about service workers: http://bit.ly/CRA-PWA +serviceWorker.unregister(); diff --git a/mizql/frontend/ui/src/logo.svg b/mizql/frontend/ui/src/logo.svg new file mode 100644 index 0000000..6b60c10 --- /dev/null +++ b/mizql/frontend/ui/src/logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/mizql/frontend/ui/src/serviceWorker.js b/mizql/frontend/ui/src/serviceWorker.js new file mode 100644 index 0000000..2283ff9 --- /dev/null +++ b/mizql/frontend/ui/src/serviceWorker.js @@ -0,0 +1,135 @@ +// This optional code is used to register a service worker. +// register() is not called by default. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on subsequent visits to a page, after all the +// existing tabs open on the page have been closed, since previously cached +// resources are updated in the background. + +// To learn more about the benefits of this model and instructions on how to +// opt-in, read http://bit.ly/CRA-PWA + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.1/8 is considered localhost for IPv4. + window.location.hostname.match( + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ + ) +); + +export function register(config) { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit http://bit.ly/CRA-PWA' + ); + }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); + } + }); + } +} + +function registerValidSW(swUrl, config) { + navigator.serviceWorker + .register(swUrl) + .then(registration => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker == null) { + return; + } + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the updated precached content has been fetched, + // but the previous service worker will still serve the older + // content until all client tabs are closed. + console.log( + 'New content is available and will be used when all ' + + 'tabs for this page are closed. See http://bit.ly/CRA-PWA.' + ); + + // Execute callback + if (config && config.onUpdate) { + config.onUpdate(registration); + } + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + + // Execute callback + if (config && config.onSuccess) { + config.onSuccess(registration); + } + } + } + }; + }; + }) + .catch(error => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl, config) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl) + .then(response => { + // Ensure service worker exists, and that we really are getting a JS file. + const contentType = response.headers.get('content-type'); + if ( + response.status === 404 || + (contentType != null && contentType.indexOf('javascript') === -1) + ) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then(registration => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl, config); + } + }) + .catch(() => { + console.log( + 'No internet connection found. App is running in offline mode.' + ); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready.then(registration => { + registration.unregister(); + }); + } +} diff --git a/mizql/frontend/ui/yarn.lock b/mizql/frontend/ui/yarn.lock new file mode 100644 index 0000000..26ab27a --- /dev/null +++ b/mizql/frontend/ui/yarn.lock @@ -0,0 +1,9805 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.0.tgz#08958f1371179f62df6966d8a614003d11faeb04" + integrity sha512-9EWmD0cQAbcXSc+31RIoYgEHx3KQ2CCSMDBhnXrShWvo45TMw+3/55KVxlhkG53kw9tl87DqINgHDgFVhZJV/Q== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helpers" "^7.1.0" + "@babel/parser" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + convert-source-map "^1.1.0" + debug "^3.1.0" + json5 "^0.5.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.0.1": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.2.tgz#f8d2a9ceb6832887329a7b60f9d035791400ba4e" + integrity sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw== + dependencies: + "@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" + convert-source-map "^1.1.0" + debug "^3.1.0" + json5 "^0.5.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.0.0", "@babel/generator@^7.1.2", "@babel/generator@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.3.tgz#2103ec9c42d9bdad9190a6ad5ff2d456fd7b8673" + integrity sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ== + dependencies: + "@babel/types" "^7.1.3" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" + integrity sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw== + dependencies: + "@babel/types" "^7.0.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" + integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" + integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" + integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helpers@^7.1.0", "@babel/helpers@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.2.tgz#ab752e8c35ef7d39987df4e8586c63b8846234b5" + integrity sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.1.2" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.2", "@babel/parser@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" + integrity sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w== + +"@babel/plugin-proposal-async-generator-functions@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" + integrity sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + +"@babel/plugin-proposal-class-properties@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz#9af01856b1241db60ec8838d84691aa0bd1e8df4" + integrity sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + +"@babel/plugin-proposal-decorators@7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.1.2.tgz#79829bd75fced6581ec6c7ab1930e8d738e892e7" + integrity sha512-YooynBO6PmBgHvAd0fl5e5Tq/a0pEC6RqF62ouafme8FzdIVH41Mz/u1dn8fFVm4jzEJ+g/MsOxouwybJPuP8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.1.0" + +"@babel/plugin-proposal-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" + integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.0.0" + +"@babel/plugin-proposal-object-rest-spread@7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" + integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" + integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" + integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" + integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" + integrity sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-decorators@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.1.0.tgz#2fa7c1a7905a299c9853ebcef340306675f9cbdc" + integrity sha512-uQvRSbgQ0nQg3jsmIixXXDCgSpkBolJ9X7NYThMKCcjvE8dN2uWJUzTUNNAeuKOjARTd+wUQV0ztXpgunZYKzQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" + integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" + integrity sha512-zGcuZWiWWDa5qTZ6iAnpG0fnX/GOu49pGR5PFvkQ9GmKNaSphXQnlNXh/LG20sqWtNrx/eB6krzfEzcwvUyeFA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" + integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" + integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" + integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" + integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-typescript@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0.tgz#90f4fe0a741ae9c0dcdc3017717c05a0cbbd5158" + integrity sha512-5fxmdqiAQVQTIS+KSvYeZuTt91wKtBTYi6JlIkvbQ6hmO+9fZE81ezxmMiFMIsxE7CdRSgzn7nQ1BChcvK9OpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" + integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" + integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" + integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" + integrity sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@7.1.0", "@babel/plugin-transform-classes@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" + integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" + integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz#68e911e1935dda2f06b6ccbbf184ffb024e9d43a" + integrity sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz#e69ff50ca01fac6cb72863c544e516c2b193012f" + integrity sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" + integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" + integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" + integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0.tgz#c40ced34c2783985d90d9f9ac77a13e6fb396a01" + integrity sha512-WhXUNb4It5a19RsgKKbQPrjmy4yWOY1KynpEbNw7bnd1QTcrT/EIl3MJvnGgpgvrKyKbqX7nUNOJfkpLOnoDKA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" + integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb" + integrity sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" + integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz#f9e0a7072c12e296079b5a59f408ff5b97bf86a8" + integrity sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" + integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.0.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz#2119a3e3db612fd74a19d88652efbfe9613a5db0" + integrity sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz#a29a7d85d6f28c3561c33964442257cc6a21f2a8" + integrity sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb" + integrity sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed" + integrity sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw== + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-constant-elements@7.0.0", "@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.0.0.tgz#ab413e33e9c46a766f5326014bcbf9e2b34ef7a4" + integrity sha512-z8yrW4KCVcqPYr0r9dHXe7fu3daLzn0r6TQEFoGbXahdrzEwT1d1ux+/EnFcqIHv9uPilUlnRnPIUf7GMO0ehg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@7.0.0", "@babel/plugin-transform-react-display-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" + integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz#a84bb70fea302d915ea81d9809e628266bb0bc11" + integrity sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" + integrity sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e" + integrity sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-runtime@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz#9f76920d42551bb577e2dc594df229b5f7624b63" + integrity sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" + integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" + integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" + integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" + integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" + integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typescript@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.1.0.tgz#81e7b4be90e7317cbd04bf1163ebf06b2adee60b" + integrity sha512-TOTtVeT+fekAesiCHnPz+PSkYSdOSLyLn42DI45nxg6iCdlQY6LIj/tYqpMB0y+YicoTUiYiXqF8rG6SKfhw6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" + integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/preset-env@7.1.0", "@babel/preset-env@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.0.tgz#e67ea5b0441cfeab1d6f41e9b5c79798800e8d11" + integrity sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.1.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.1.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.1.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-duplicate-keys" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.1.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.1.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.1.0" + "@babel/plugin-transform-modules-commonjs" "^7.1.0" + "@babel/plugin-transform-modules-systemjs" "^7.0.0" + "@babel/plugin-transform-modules-umd" "^7.1.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.1.0" + "@babel/plugin-transform-parameters" "^7.1.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typeof-symbol" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + browserslist "^4.1.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/preset-react@7.0.0", "@babel/preset-react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/preset-typescript@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz#49ad6e2084ff0bfb5f1f7fb3b5e76c434d442c7f" + integrity sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.1.0" + +"@babel/runtime@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" + integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.1.2" + "@babel/types" "^7.1.2" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.4.tgz#f4f83b93d649b4b2c91121a9087fa2fa949ec2b4" + integrity sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.1.3" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.1.3" + "@babel/types" "^7.1.3" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d" + integrity sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@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" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz#54c5a964462be3d4d78af631363c18d6fa91ac26" + integrity sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw== + +"@svgr/core@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-2.4.1.tgz#03a407c28c4a1d84305ae95021e8eabfda8fa731" + integrity sha512-2i1cUbjpKt1KcIP05e10vkmu9Aedp32EFqVcSQ08onbB8lVxJqMPci3Hr54aI14S9cLg4JdcpO0D35HHUtT8oQ== + dependencies: + camelcase "^5.0.0" + cosmiconfig "^5.0.6" + h2x-core "^1.1.0" + h2x-plugin-jsx "^1.1.0" + merge-deep "^3.0.2" + prettier "^1.14.2" + svgo "^1.0.5" + +"@svgr/webpack@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-2.4.1.tgz#68bc581ecb4c09fadeb7936bd1afaceb9da960d2" + integrity sha512-sMHYq0zbMtSHcc9kVfkYI2zrl88u4mKGyQLgKt7r+ul5nITcncm/EPBhzEUrJY5izdlaU6EvyH8zOhZnfaSmOA== + dependencies: + "@babel/core" "^7.0.1" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.0.0" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^2.4.1" + loader-utils "^1.1.0" + +"@types/tapable@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" + integrity sha512-42zEJkBpNfMEAvWR5WlwtTH22oDzcMjFsL9gDGExwF8X8WvAiw7Vwop7hPw03QT8TKfec83LwbHj6SvpqM4ELQ== + +"@webassemblyjs/ast@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" + integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/wast-parser" "1.7.6" + mamacro "^0.0.3" + +"@webassemblyjs/floating-point-hex-parser@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" + integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== + +"@webassemblyjs/helper-api-error@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" + integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== + +"@webassemblyjs/helper-buffer@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" + integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== + +"@webassemblyjs/helper-code-frame@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" + integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== + dependencies: + "@webassemblyjs/wast-printer" "1.7.6" + +"@webassemblyjs/helper-fsm@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" + integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== + +"@webassemblyjs/helper-module-context@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" + integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== + dependencies: + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" + integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== + +"@webassemblyjs/helper-wasm-section@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" + integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-buffer" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/wasm-gen" "1.7.6" + +"@webassemblyjs/ieee754@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" + integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" + integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== + dependencies: + "@xtuc/long" "4.2.1" + +"@webassemblyjs/utf8@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" + integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== + +"@webassemblyjs/wasm-edit@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" + integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-buffer" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/helper-wasm-section" "1.7.6" + "@webassemblyjs/wasm-gen" "1.7.6" + "@webassemblyjs/wasm-opt" "1.7.6" + "@webassemblyjs/wasm-parser" "1.7.6" + "@webassemblyjs/wast-printer" "1.7.6" + +"@webassemblyjs/wasm-gen@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" + integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/ieee754" "1.7.6" + "@webassemblyjs/leb128" "1.7.6" + "@webassemblyjs/utf8" "1.7.6" + +"@webassemblyjs/wasm-opt@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" + integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-buffer" "1.7.6" + "@webassemblyjs/wasm-gen" "1.7.6" + "@webassemblyjs/wasm-parser" "1.7.6" + +"@webassemblyjs/wasm-parser@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" + integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-api-error" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/ieee754" "1.7.6" + "@webassemblyjs/leb128" "1.7.6" + "@webassemblyjs/utf8" "1.7.6" + +"@webassemblyjs/wast-parser@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" + integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/floating-point-hex-parser" "1.7.6" + "@webassemblyjs/helper-api-error" "1.7.6" + "@webassemblyjs/helper-code-frame" "1.7.6" + "@webassemblyjs/helper-fsm" "1.7.6" + "@xtuc/long" "4.2.1" + mamacro "^0.0.3" + +"@webassemblyjs/wast-printer@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" + integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/wast-parser" "1.7.6" + "@xtuc/long" "4.2.1" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== + +abab@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== + dependencies: + acorn "^5.0.0" + +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" + integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.0.tgz#958584ddb60990c02c97c1bd9d521fce433bb101" + integrity sha512-XkB50fn0MURDyww9+UYL3c1yLbOBz0ZFvrdYlGB8l+Ije1oSC75qAqrzSPjYQbdnQUzhlUGNKuesryAv0gxZOg== + +acorn-walk@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.0.tgz#c957f4a1460da46af4a0388ce28b4c99355b0cbc" + integrity sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg== + +acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@^6.0.1, acorn@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.2.tgz#6a459041c320ab17592c6317abbfdf4bbaa98ca4" + integrity sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg== + +address@1.0.3, address@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== + +ajv-errors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" + integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= + +ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= + +ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.0.1, ajv@^6.1.0, ajv@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59" + integrity sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.1.tgz#9638047e4213f3428a11944a7d4b31cba0a3ff95" + integrity sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ== + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + integrity sha1-126/jKlNJ24keja61EpLdKthGZE= + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.1.4, async@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== + dependencies: + lodash "^4.17.10" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.1.5: + version "9.3.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.3.1.tgz#71b622174de2b783d5fd99f9ad617b7a3c78443e" + integrity sha512-DY9gOh8z3tnCbJ13JIWaeQsoYncTGdsrgCceBaQSIL4nvdrLxgbRSBPevg2XbX7u4QCSfLheSJEEIUUSlkbx6Q== + dependencies: + browserslist "^4.3.3" + caniuse-lite "^1.0.30000898" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.5" + postcss-value-parser "^3.3.1" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +axobject-query@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" + integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== + dependencies: + ast-types-flow "0.0.7" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + 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-core@^6.0.0, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" + integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-generator@^6.18.0, babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@23.6.0, babel-jest@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" + integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew== + dependencies: + babel-plugin-istanbul "^4.1.6" + babel-preset-jest "^23.2.0" + +babel-loader@8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" + integrity sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw== + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + util.promisify "^1.0.0" + +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-dynamic-import-node@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz#c0adfb07d95f4a4495e9aaac6ec386c4d7c2524e" + integrity sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== + dependencies: + babel-plugin-syntax-object-rest-spread "^6.13.0" + find-up "^2.1.0" + istanbul-lib-instrument "^1.10.1" + test-exclude "^4.2.1" + +babel-plugin-jest-hoist@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" + integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= + +babel-plugin-macros@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.2.tgz#21b1a2e82e2130403c5ff785cba6548e9b644b28" + integrity sha512-NBVpEWN4OQ/bHnu1fyDaAaTPAjnhXCEPqr1RwqxrU7b6tZ2hypp+zX4hlNfmVGfClD5c3Sl6Hfj5TJNF5VG5aA== + dependencies: + cosmiconfig "^5.0.5" + resolve "^1.8.1" + +babel-plugin-named-asset-import@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.2.3.tgz#b40ed50a848e7bb0a2a7e34d990d1f9d46fe9b38" + integrity sha512-9mx2Z9M4EGbutvXxoLV7aUBCY6ps3sqLFl094FeA2tFQzQffIh0XSsmwwQRxiSfpg3rnb5x/o46qRLxS/OzFTg== + +babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.18: + version "0.4.18" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.18.tgz#85ff79d66047b34288c6f7cc986b8854ab384f8c" + integrity sha512-azed2nHo8vmOy7EY26KH+om5oOcWRs0r1U8wOmhwta+SBMMnmJ4H6yaBZRCcHBtMeWp9AVhvBTL/lpR1kEx+Xw== + +babel-preset-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" + integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY= + dependencies: + babel-plugin-jest-hoist "^23.2.0" + babel-plugin-syntax-object-rest-spread "^6.13.0" + +babel-preset-react-app@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-6.1.0.tgz#477ae7f8557eb99ce26d179530127913b733310d" + integrity sha512-8PJ4N+acfYsjhDK4gMWkqJMVRMjDKb93D+nz7lWlNe73Jcv38FNu37i5K/dVQnFDdRYHbe1SjII+Y0mCgink9A== + dependencies: + "@babel/core" "7.1.0" + "@babel/plugin-proposal-class-properties" "7.1.0" + "@babel/plugin-proposal-decorators" "7.1.2" + "@babel/plugin-proposal-object-rest-spread" "7.0.0" + "@babel/plugin-syntax-dynamic-import" "7.0.0" + "@babel/plugin-transform-classes" "7.1.0" + "@babel/plugin-transform-destructuring" "7.0.0" + "@babel/plugin-transform-flow-strip-types" "7.0.0" + "@babel/plugin-transform-react-constant-elements" "7.0.0" + "@babel/plugin-transform-react-display-name" "7.0.0" + "@babel/plugin-transform-runtime" "7.1.0" + "@babel/preset-env" "7.1.0" + "@babel/preset-react" "7.0.0" + "@babel/preset-typescript" "7.1.0" + "@babel/runtime" "7.0.0" + babel-loader "8.0.4" + babel-plugin-dynamic-import-node "2.2.0" + babel-plugin-macros "2.4.2" + babel-plugin-transform-react-remove-prop-types "0.4.18" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +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= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0, babel-template@^6.24.1, 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.0.0, babel-traverse@^6.18.0, 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.0.0, babel-types@^6.18.0, 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" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz#05a3b7784fbd72cfa3c22e56002ef99336516c48" + integrity sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ== + dependencies: + bluebird "^3.5.1" + check-types "^7.3.0" + hoopy "^0.1.2" + tryer "^1.0.0" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== + +bluebird@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.18.3: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.1.1.tgz#328eb4ff1215b12df6589e9ab82f8adaa4fc8cd6" + integrity sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q== + dependencies: + caniuse-lite "^1.0.30000884" + electron-to-chromium "^1.3.62" + node-releases "^1.0.0-alpha.11" + +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.1.1, browserslist@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.4.tgz#4477b737db6a1b07077275b24791e680d4300425" + integrity sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA== + dependencies: + caniuse-lite "^1.0.30000899" + electron-to-chromium "^1.3.82" + node-releases "^1.0.1" + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cacache@^11.0.2: + version "11.2.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" + integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + figgy-pudding "^3.1.0" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.3" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.0" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000887, caniuse-lite@^1.0.30000898, caniuse-lite@^1.0.30000899: + version "1.0.30000903" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000903.tgz#86d46227759279b3db345ddbe778335dbba9e858" + integrity sha512-T1XVJEpGCoaq7MDw7/6hCdYUukmSaS+1l/OQJkLtw7Cr2+/+d67tNGKEbyiqf7Ck8x6EhNFUxjYFXXka0N/w5g== + +capture-exit@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= + dependencies: + rsvp "^3.3.3" + +case-sensitive-paths-webpack-plugin@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192" + integrity sha512-oEZgAFfEvKtjSRCu6VgYkuGxwrWXMnQzyBmlLPP7r6PWQVtHxP5Z5N6XsuJvtoVax78am/r7lr46bwo3IVEBOg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-types@^7.3.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" + integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== + +chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +chrome-trace-event@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== + dependencies: + tslib "^1.9.0" + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.0" + shallow-clone "^1.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af" + integrity sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ== + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc" + integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x, commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@^2.11.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +common-tags@^1.4.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +compressible@~2.0.14: + version "2.0.15" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" + integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw== + dependencies: + mime-db ">= 1.36.0 < 2" + +compression@^1.5.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.14" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.5.tgz#0171050cfdd4261e278978078bc00c4d88e135f4" + integrity sha512-tHo1tQL/9Ox5RELbkCAJhnViqWlzBz3MG1bB2czbHjH2mWd4aYUgNCNLfysFL7c4LoDws7pjg2tj48Gmpw4QHA== + +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo= + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= + +content-type@~1.0.4: + version "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.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@2.5.7, core-js@^2.4.0, core-js@^2.5.0: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + require-from-string "^2.0.1" + +cosmiconfig@^5.0.0, cosmiconfig@^5.0.5, cosmiconfig@^5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" + integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" + integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + postcss "^6.0.23" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select-base-adapter@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== + dependencies: + boolbase "^1.0.0" + css-what "^2.1.2" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-tree@1.0.0-alpha.28: + version "1.0.0-alpha.28" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" + integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-url-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= + +css-what@2.1, css-what@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" + integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== + +cssdb@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-3.2.1.tgz#65e7dc90be476ce5b6e567b19f3bd73a8c66bcb5" + integrity sha512-I0IS8zvxED8sQtFZnV7M+AkhWqTgp1HIyfMQJBbjdn4GgurBt7NCZaDgrWiAN2kNJN34mhF1p50aZIMQu290mA== + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssnano-preset-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.5.tgz#d1756c0259d98ad311e601ba76e95c60f6771ac1" + integrity sha512-f1uhya0ZAjPYtDD58QkBB0R+uYdzHPei7cDxJyQQIHt5acdhyGXaSXl2nDLzWHLwGFbZcHxQtkJS8mmNwnxTvw== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.0" + postcss-colormin "^4.0.2" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.1" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.9" + postcss-merge-rules "^4.0.2" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.1" + postcss-minify-params "^4.0.1" + postcss-minify-selectors "^4.0.1" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.1" + postcss-normalize-positions "^4.0.1" + postcss-normalize-repeat-style "^4.0.1" + postcss-normalize-string "^4.0.1" + postcss-normalize-timing-functions "^4.0.1" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.1" + postcss-ordered-values "^4.1.1" + postcss-reduce-initial "^4.0.2" + postcss-reduce-transforms "^4.0.1" + postcss-svgo "^4.0.1" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.0: + version "4.1.7" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.7.tgz#0bf112294bec103ab5f68d3f805732c8325a0b1b" + integrity sha512-AiXL90l+MDuQmRNyypG2P7ux7K4XklxYzNNUd5HXZCNcH8/N9bHPcpN97v8tXgRVeFL/Ed8iP8mVmAAu0ZpT7A== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.5" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== + dependencies: + css-tree "1.0.0-alpha.29" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" + integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" + integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== + dependencies: + cssom "0.3.x" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= + +damerau-levenshtein@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" + integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decamelize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== + dependencies: + xregexp "4.0.0" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-gateway@^2.6.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" + integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== + dependencies: + execa "^0.10.0" + ip-regex "^2.1.0" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +dom-converter@~0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.2.1.tgz#578558ef23befac043a1abb0db07635509393479" + integrity sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA== + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ= + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU= + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + +dotenv-expand@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" + integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= + +dotenv@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935" + integrity sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg== + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" + integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.62, electron-to-chromium@^1.3.82: + version "1.3.82" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.82.tgz#7d13ae4437d2a783de3f4efba96b186c540b67b1" + integrity sha512-NI4nB2IWGcU4JVT1AE8kBb/dFor4zjLHMLsOROPahppeHrR0FG5uslxMmkp/thO1MvPjM2xhlKoY29/I60s0ew== + +elliptic@^6.0.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-3.0.5.tgz#d199088ab486d7ccc56d40dedcb1482b01934fb2" + integrity sha512-GjPuy0pbaCkl4+9wm8p0xpl/x/AGFy3wKuju3WNVefDNDDu8T6Ap1OFMDDJbYnOAI+4jfyAE3VT06lAYcJVpdw== + dependencies: + confusing-browser-globals "^1.0.5" + +eslint-import-resolver-node@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-loader@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.1.tgz#2a9251523652430bfdd643efdb0afc1a2a89546a" + integrity sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ== + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" + integrity sha1-snA2LNiLGkitMIl2zn+lTphBF0Y= + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-flowtype@2.50.1: + version "2.50.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz#36d4c961ac8b9e9e1dc091d3fba0537dad34ae8a" + integrity sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ== + dependencies: + lodash "^4.17.10" + +eslint-plugin-import@2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.2.0" + has "^1.0.1" + lodash "^4.17.4" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + resolve "^1.6.0" + +eslint-plugin-jsx-a11y@6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz#69bca4890b36dcf0fe16dd2129d2d88b98f33f88" + integrity sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw== + dependencies: + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.1" + damerau-levenshtein "^1.0.4" + emoji-regex "^6.5.1" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + +eslint-plugin-react@7.11.1: + version "7.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.2" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.6.0.tgz#b6f7806041af01f71b3f1895cbb20971ea4b6223" + integrity sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + imurmurhash "^0.1.4" + inquirer "^6.1.0" + is-resolvable "^1.1.0" + js-yaml "^3.12.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== + dependencies: + merge "^1.2.0" + +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.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@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expect@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" + integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== + dependencies: + ansi-styles "^3.2.0" + jest-diff "^23.6.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + +express@^4.16.2: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.3" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.4" + qs "6.5.2" + range-parser "~1.2.0" + safe-buffer "5.1.2" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.0.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.3.tgz#d09d378e9ef6b0076a0fa1ba7519d9d4d9699c28" + integrity sha512-NiX+JXjnx43RzvVFwRWfPKo4U+1BrK5pJPsHQdKMlLoFHrrGktXglQhHliSihWAq+m1z6fHk3uwGHrtRbS9vLA== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.0.1" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.1" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + +figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" + integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + +filesize@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-cache-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^3.0.0" + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= + +flush-write-stream@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +follow-redirects@^1.0.0: + version "1.5.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.9.tgz#c9ed9d748b814a39535716e531b9196a845d89c6" + integrity sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w== + dependencies: + debug "=3.1.0" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.3, for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin-alt@0.4.14: + version "0.4.14" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin-alt/-/fork-ts-checker-webpack-plugin-alt-0.4.14.tgz#1bd6c0d97b7d4682dde61255fcbd78b72f7473a0" + integrity sha512-s0wjOBuPdylMRBzZ4yO8LSJuzem3g0MYZFxsjRXrFDQyL5KJBVSq30+GoHM/t/r2CRU4tI6zi04sq6OXK0UYnw== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^2.0.4" + lodash "^4.17.11" + micromatch "^3.1.10" + minimatch "^3.0.4" + resolve "^1.5.0" + tapable "^1.0.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@7.0.0, fs-extra@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" + integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + dependencies: + minipass "^2.2.1" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@1.2.4, fsevents@^1.2.2, fsevents@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +function-bind@^1.1.0, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "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.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@1.0.0, global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^11.1.0, globals@^11.7.0: + version "11.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d" + integrity sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA== + +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@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" + integrity sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw== + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= + +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.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" + integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA== + dependencies: + duplexer "^0.1.1" + pify "^3.0.0" + +h2x-core@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/h2x-core/-/h2x-core-1.1.1.tgz#7fb31ab28e30ebf11818e3c7d183487ecf489f9f" + integrity sha512-LdXe4Irs731knLtHgLyFrnJCumfiqXXQwKN1IMUhi37li29PLfLbMDvfK7Rk4wmgHLKP+sIITT1mcJV4QsC3nw== + dependencies: + h2x-generate "^1.1.0" + h2x-parse "^1.1.1" + h2x-traverse "^1.1.0" + +h2x-generate@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/h2x-generate/-/h2x-generate-1.1.0.tgz#c2c98c60070e1eed231e482d5826c3c5dab2a9ba" + integrity sha512-L7Hym0yb20QIjvqeULUPOeh/cyvScdOAyJ6oRlh5dF0+w92hf3OiTk1q15KBijde7jGEe+0R4aOmtW8gkPNIzg== + dependencies: + h2x-traverse "^1.1.0" + +h2x-parse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/h2x-parse/-/h2x-parse-1.1.1.tgz#875712cd3be75cf736c610d279b8653b24f58385" + integrity sha512-WRSmPF+tIWuUXVEZaYRhcZx/JGEJx8LjZpDDtrvMr5m/GTR0NerydCik5dRzcKXPWCtfXxuJRLR4v2P4HB2B1A== + dependencies: + h2x-types "^1.1.0" + jsdom ">=11.0.0" + +h2x-plugin-jsx@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/h2x-plugin-jsx/-/h2x-plugin-jsx-1.2.0.tgz#211fa02e5c4e0a07307b0005629923910e631c01" + integrity sha512-a7Vb3BHhJJq0dPDNdqguEyQirENkVsFtvM2YkiaT5h/fmGhmM1nDy3BLeJeSKi2tL2g9v4ykm2Z+GG9QrhDgPA== + dependencies: + h2x-types "^1.1.0" + +h2x-traverse@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/h2x-traverse/-/h2x-traverse-1.1.0.tgz#194b36c593f4e20a754dee47fa6b2288647b2271" + integrity sha512-1ND8ZbISLSUgpLHYJRvhvElITvs0g44L7RxjeXViz5XP6rooa+FtXTFLByl2Yg01zj2txubifHIuU4pgvj8l+A== + dependencies: + h2x-types "^1.1.0" + +h2x-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/h2x-types/-/h2x-types-1.1.0.tgz#ec0d5e3674e2207269f32976ac9c82aaff4818e6" + integrity sha512-QdH5qfLcdF209UsCdM0ZNZ9Dwm2PHvMfeLZtivBrjX3Y/df4US2pwsUC4HBfWhye/mx/t6puODeC7Oacb/Ol8g== + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= + +handlebars@^4.0.3: + version "4.0.12" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== + dependencies: + async "^2.5.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== + dependencies: + ajv "^5.3.0" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" + integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= + dependencies: + parse-passwd "^1.0.0" + +hoopy@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@4.0.0-alpha.2: + version "4.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-alpha.2.tgz#7745967e389a57a098e26963f328ebe4c19b598d" + integrity sha512-tyvhjVpuGqD7QYHi1l1drMQTg5i+qRxpQEGbdnYFREgOKy7aFDf/ocQ/V1fuEDlQx7jV2zMap3Hj2nE9i5eGXw== + dependencies: + "@types/tapable" "1.0.2" + html-minifier "^3.2.3" + loader-utils "^1.1.0" + lodash "^4.17.10" + pretty-error "^2.0.2" + tapable "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4= + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.4.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" + integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== + +http-proxy-middleware@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== + dependencies: + http-proxy "^1.16.2" + is-glob "^4.0.0" + lodash "^4.17.5" + micromatch "^3.1.9" + +http-proxy@^1.16.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + dependencies: + postcss "^6.0.1" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.1.12" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immer@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.7.2.tgz#a51e9723c50b27e132f6566facbec1c85fc69547" + integrity sha512-4Urocwu9+XLDJw4Tc6ZCg7APVjjLInCFvO4TwGsAYV5zT6YYSor14dsZR0+0tHlDIN92cFUOq+i7fC00G5vTxA== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@6.2.0, inquirer@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" + integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.0" + figures "^2.0.0" + lodash "^4.17.10" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.1.0" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +internal-ip@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" + integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== + dependencies: + default-gateway "^2.6.0" + ipaddr.js "^1.5.2" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= + +ipaddr.js@^1.5.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" + integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.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" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-generator-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + dependencies: + is-extglob "^2.1.1" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-obj@^1.0.0, is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0, is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" + integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^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= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isemail@3.x.x: + version "3.2.0" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" + integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== + dependencies: + punycode "2.x.x" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-api@^1.3.1: + version "1.3.7" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" + integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== + dependencies: + async "^2.1.4" + fileset "^2.0.2" + istanbul-lib-coverage "^1.2.1" + istanbul-lib-hook "^1.2.2" + istanbul-lib-instrument "^1.10.2" + istanbul-lib-report "^1.1.5" + istanbul-lib-source-maps "^1.2.6" + istanbul-reports "^1.5.1" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== + +istanbul-lib-hook@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" + integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" + integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.2.1" + semver "^5.3.0" + +istanbul-lib-report@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== + dependencies: + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" + integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== + dependencies: + handlebars "^4.0.3" + +jest-changed-files@^23.4.2: + version "23.4.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" + integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== + dependencies: + throat "^4.0.0" + +jest-cli@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" + integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.11" + import-local "^1.0.0" + is-ci "^1.0.10" + istanbul-api "^1.3.1" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-source-maps "^1.2.4" + jest-changed-files "^23.4.2" + jest-config "^23.6.0" + jest-environment-jsdom "^23.4.0" + jest-get-type "^22.1.0" + jest-haste-map "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + jest-resolve-dependencies "^23.6.0" + jest-runner "^23.6.0" + jest-runtime "^23.6.0" + jest-snapshot "^23.6.0" + jest-util "^23.4.0" + jest-validate "^23.6.0" + jest-watcher "^23.4.0" + jest-worker "^23.2.0" + micromatch "^2.3.11" + node-notifier "^5.2.1" + prompts "^0.1.9" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^1.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" + which "^1.2.12" + yargs "^11.0.0" + +jest-config@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" + integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== + dependencies: + babel-core "^6.0.0" + babel-jest "^23.6.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^23.4.0" + jest-environment-node "^23.4.0" + jest-get-type "^22.1.0" + jest-jasmine2 "^23.6.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.6.0" + jest-util "^23.4.0" + jest-validate "^23.6.0" + micromatch "^2.3.11" + pretty-format "^23.6.0" + +jest-diff@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" + integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + +jest-docblock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" + integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= + dependencies: + detect-newline "^2.1.0" + +jest-each@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" + integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== + dependencies: + chalk "^2.0.1" + pretty-format "^23.6.0" + +jest-environment-jsdom@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" + integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= + dependencies: + jest-mock "^23.2.0" + jest-util "^23.4.0" + jsdom "^11.5.1" + +jest-environment-node@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" + integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= + dependencies: + jest-mock "^23.2.0" + jest-util "^23.4.0" + +jest-get-type@^22.1.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== + +jest-haste-map@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" + integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg== + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + invariant "^2.2.4" + jest-docblock "^23.2.0" + jest-serializer "^23.0.1" + jest-worker "^23.2.0" + micromatch "^2.3.11" + sane "^2.0.0" + +jest-jasmine2@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" + integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== + dependencies: + babel-traverse "^6.0.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^23.6.0" + is-generator-fn "^1.0.0" + jest-diff "^23.6.0" + jest-each "^23.6.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-snapshot "^23.6.0" + jest-util "^23.4.0" + pretty-format "^23.6.0" + +jest-leak-detector@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" + integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg== + dependencies: + pretty-format "^23.6.0" + +jest-matcher-utils@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" + integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + +jest-message-util@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" + integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + +jest-mock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" + integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= + +jest-pnp-resolver@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.0.1.tgz#f397cd71dbcd4a1947b2e435f6da8e9a347308fa" + integrity sha512-kzhvJQp+9k0a/hpvIIzOJgOwfOqmnohdrAMZW2EscH3kxR2VWD7EcPa10cio8EK9V7PcD75bhG1pFnO70zGwSQ== + +jest-regex-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" + integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= + +jest-resolve-dependencies@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" + integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA== + dependencies: + jest-regex-util "^23.3.0" + jest-snapshot "^23.6.0" + +jest-resolve@23.6.0, jest-resolve@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" + integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== + dependencies: + browser-resolve "^1.11.3" + chalk "^2.0.1" + realpath-native "^1.0.0" + +jest-runner@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" + integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA== + dependencies: + exit "^0.1.2" + graceful-fs "^4.1.11" + jest-config "^23.6.0" + jest-docblock "^23.2.0" + jest-haste-map "^23.6.0" + jest-jasmine2 "^23.6.0" + jest-leak-detector "^23.6.0" + jest-message-util "^23.4.0" + jest-runtime "^23.6.0" + jest-util "^23.4.0" + jest-worker "^23.2.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" + integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw== + dependencies: + babel-core "^6.0.0" + babel-plugin-istanbul "^4.1.6" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.11" + jest-config "^23.6.0" + jest-haste-map "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.6.0" + jest-snapshot "^23.6.0" + jest-util "^23.4.0" + jest-validate "^23.6.0" + micromatch "^2.3.11" + realpath-native "^1.0.0" + slash "^1.0.0" + strip-bom "3.0.0" + write-file-atomic "^2.1.0" + yargs "^11.0.0" + +jest-serializer@^23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" + integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= + +jest-snapshot@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" + integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== + dependencies: + babel-types "^6.0.0" + chalk "^2.0.1" + jest-diff "^23.6.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-resolve "^23.6.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^23.6.0" + semver "^5.5.0" + +jest-util@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" + integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^23.4.0" + mkdirp "^0.5.1" + slash "^1.0.0" + source-map "^0.6.0" + +jest-validate@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" + integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + leven "^2.1.0" + pretty-format "^23.6.0" + +jest-watcher@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" + integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + string-length "^2.0.0" + +jest-worker@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" + integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= + dependencies: + merge-stream "^1.0.1" + +jest@23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" + integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw== + dependencies: + import-local "^1.0.0" + jest-cli "^23.6.0" + +joi@^11.1.1: + version "11.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" + integrity sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA== + dependencies: + hoek "4.x.x" + isemail "3.x.x" + topo "2.x.x" + +js-levenshtein@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@>=11.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.0.0.tgz#f1df2411b714a4e08d1bdc343c0a0889c688210f" + integrity sha512-Kmq4ASMNkgpY+YufE322EnIKoiz0UWY2DRkKlU7d5YrIW4xiVRhWFrZV1fr6w/ZNxQ50wGAH5gGRzydgnmkkvw== + dependencies: + abab "^2.0.0" + acorn "^6.0.2" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.0.1" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.0.9" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.3" + symbol-tree "^3.2.2" + tough-cookie "^2.4.3" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.0.0" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + ws "^6.1.0" + xml-name-validator "^3.0.0" + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + integrity sha1-6AGxs5mF4g//yHtA43SAgOLcrH8= + dependencies: + array-includes "^3.0.3" + +killable@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +kleur@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" + integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" + integrity sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw= + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" + integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw== + +loader-utils@1.1.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@^4.1.2: + version "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.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= + +lodash.template@^4.2.4, lodash.template@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^1.1.1: + version "1.1.4" + 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.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.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" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" + integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +math-random@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +mem@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^1.0.0" + p-is-promise "^1.1.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-deep@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" + integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= + dependencies: + readable-stream "^2.0.1" + +merge2@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" + integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== + +merge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + +mime@^2.0.3, mime@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mini-css-extract-plugin@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" + integrity sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" + integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg== + dependencies: + minipass "^2.2.1" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +nan@^2.9.2: + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + +neo-async@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-forge@0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== + +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-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-notifier@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" + integrity sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q== + dependencies: + growly "^1.3.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.0.0-alpha.11, node-releases@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.2.tgz#27c296d9fca3b659c64f7d43ea47a31ad2a90e4b" + integrity sha512-zP8Asfg13lG9KDAW85rylSxXBYvaSdtjMIYKHUk8c1fM8drmFwRqbSYKYD+UlNVPUvrceSvgLUKHMOWR5jPWQg== + dependencies: + semver "^5.3.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + +npm-packlist@^1.1.6: + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.0.7, nwsapi@^2.0.9: + version "2.0.9" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" + integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.0.tgz#76d9ba6ff113cf8efc0d996102851fe6723963e2" + integrity sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ== + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +opn@5.4.0, opn@^5.1.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" + integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== + dependencies: + is-wsl "^1.1.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optimize-css-assets-webpack-plugin@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" + integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== + dependencies: + cssnano "^4.1.0" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +original@>=0.0.5: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-locale@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== + dependencies: + execa "^0.10.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-up@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.1.0.tgz#947a96d1db94bb5a1fc014d83b581e428699ac8c" + integrity sha512-CPCdcFxx7fEcDMWTDjXe2Wypt4JuMt4q5Q2UrpTcyBBkLiCIyPEh/mCGmUWIcNkKGyXwQ9Y2wVhlKm6ketiBNQ== + +portfinder@^1.0.9: + version "1.0.19" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.19.tgz#07e87914a55242dcda5b833d42f018d6875b595f" + integrity sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw== + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.0.tgz#807b6a797ad8bf1c821b2d51cf641e9dd3837624" + integrity sha512-K/zqdg0/UgUgC8qR0lDuxYzmowPpnvrrNC5YuoqzhHMubR9AuhsPlpVu3jjkLHgDAzR+ohD/m7//iGnN9WxbzQ== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-calc@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.2.tgz#e9b1886bb038daed33f6394168c210b40bb4fdb6" + integrity sha512-8bIOzQMGdZVifoBQUJdw+yIY00omBd2EwkJXepQo9cjp1UOHHHoeRDeSzTP6vakEpaRc6GAIOfvcQR7jBYaG5Q== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99" + integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.4: + version "7.0.7" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.7.tgz#bbc698ed3089ded61aad0f5bfb1fb48bf6969e73" + integrity sha512-bWPCdZKdH60wKOTG4HKEgxWnZVjAIVNOJDvi3lkuTa90xo/K0YHa2ZnlKLC5e2qF8qCcMQXt0yzQITBp8d0OFA== + dependencies: + postcss "^7.0.5" + +postcss-custom-properties@^8.0.5: + version "8.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.8.tgz#1812e2553805e1affce93164dd1709ef6b69c53e" + integrity sha512-G3U8uSxj0B4jPJ1QBF5WYeW716n5HV/wcH2lOTV1V+EI+F0T0/ZOhl32MLLTMD79bN2mE77IOoclbCoLl4QtPA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d" + integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.0.tgz#1772512faf11421b791fb2ca6879df5f68aa0517" + integrity sha512-WzrqZ5nG9R9fUtrA+we92R4jhVvEB32IIRTzfIG/PLL8UV4CvbF1ugTEHEFX6vWxl41Xt5RTCJPEZkuWzrOM+Q== + dependencies: + lodash.template "^4.2.4" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" + integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== + dependencies: + cosmiconfig "^4.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.9: + version "4.0.9" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.9.tgz#c2428b994833ffb2a072f290ca642e75ceabcd6f" + integrity sha512-UVMXrXF5K/kIwUbK/crPFCytpWbNX2Q3dZSc8+nQUgfOHrCT4+MHncpdxVphUlQeZxlLXUJbDyXc5NBhTnS2tA== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74" + integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd" + integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2" + integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd" + integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-nesting@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.0.tgz#6e26a770a0c8fcba33782a6b6f350845e1a448f6" + integrity sha512-WSsbVd5Ampi3Y0nk/SKr5+K34n52PqMqEfswu6RtU4r7wA8vSD+gM8/D9qq4aJkHImwn1+9iEFTbjoWsQeqtaQ== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c" + integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1" + integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5" + integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3" + integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7" + integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e" + integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2" + integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.0.6.tgz#f728b9a43bf01c24eb06efeeff59de0b31ee1105" + integrity sha512-W1Wtqngl7BMe4s9o76odTaVs4HXVLhOHD+L5Ez+7x15yiA+98W/WVO6IPlC1q9BIkgAckRtUFmEDr0sNufXZIQ== + dependencies: + autoprefixer "^9.1.5" + browserslist "^4.1.1" + caniuse-lite "^1.0.30000887" + cssdb "^3.2.1" + postcss "^7.0.2" + postcss-attribute-case-insensitive "^4.0.0" + postcss-color-functional-notation "^2.0.1" + postcss-color-hex-alpha "^5.0.2" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.4" + postcss-custom-properties "^8.0.5" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15" + integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561" + integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0-rc.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0-rc.4.tgz#ca5e77238bf152966378c13e91ad6d611568ea87" + integrity sha512-0XvfYuShrKlTk1ooUrVzMCFQRcypsdEIsGqh5IxC5rdtBi4/M/tDAJeSONwC2MTqEFsmPZYAV7Dd4X8rgAfV0A== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d" + integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-values-parser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.0.tgz#1ba42cae31367c44f96721cb5eb99462bfb39705" + integrity sha512-cyRdkgbRRefu91ByAlJow4y9w/hnBmmWgLpWmlFQ2bpIy2eKrqowt3VeYcaHQ08otVXmC9V2JtYW1Z/RpvYR8A== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^6.0.1, postcss@^6.0.23: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2, postcss@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.5.tgz#70e6443e36a6d520b0fd4e7593fcca3635ee9f55" + integrity sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.5.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +prettier@^1.14.2: + version "1.14.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.3.tgz#90238dd4c0684b7edce5f83b0fb7328e48bd0895" + integrity sha512-qZDVnCrnpsRJJq5nSsiHCE3BYMED2OtsI+cmzIzF1QIfqm5ALf8tEJcO27zV1gKNKRPdhjO0dNWnrzssDQ1tFg== + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" + integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.2.tgz#9dcd0672192c589477d56891271bdc27547ae9f0" + integrity sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw== + dependencies: + asap "~2.0.6" + +prompts@^0.1.9: + version "0.1.14" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" + integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== + dependencies: + kleur "^2.0.1" + sisteransi "^0.1.1" + +prop-types@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + +proxy-addr@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24: + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@2.x.x, punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.5.2, qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" + integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== + +raf@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" + integrity sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw== + dependencies: + performance-now "^2.1.0" + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-app-polyfill@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-0.1.3.tgz#e57bb50f3751dac0e6b3ac27673812c68c679a1d" + integrity sha512-Fl5Pic4F15G05qX7RmUqPZr1MtyFKJKSlRwMhel4kvDLrk/KcQ9QbpvyMTzv/0NN5957XFQ7r1BNHWi7qN59Pw== + dependencies: + core-js "2.5.7" + object-assign "4.1.1" + promise "8.0.2" + raf "3.4.0" + whatwg-fetch "3.0.0" + +react-dev-utils@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-6.1.1.tgz#a07e3e8923c4609d9f27e5af5207e3ca20724895" + integrity sha512-ThbJ86coVd6wV/QiTo8klDTvdAJ1WsFCGQN07+UkN+QN9CtCSsl/+YuDJToKGeG8X4j9HMGXNKbk2QhPAZr43w== + dependencies: + "@babel/code-frame" "7.0.0" + address "1.0.3" + browserslist "4.1.1" + chalk "2.4.1" + cross-spawn "6.0.5" + detect-port-alt "1.1.6" + escape-string-regexp "1.0.5" + filesize "3.6.1" + find-up "3.0.0" + global-modules "1.0.0" + globby "8.0.1" + gzip-size "5.0.0" + immer "1.7.2" + inquirer "6.2.0" + is-root "2.0.0" + loader-utils "1.1.0" + opn "5.4.0" + pkg-up "2.0.0" + react-error-overlay "^5.1.0" + recursive-readdir "2.2.2" + shell-quote "1.6.1" + sockjs-client "1.1.5" + strip-ansi "4.0.0" + text-table "0.2.0" + +react-dom@16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.0.tgz#6375b8391e019a632a89a0988bce85f0cc87a92f" + integrity sha512-Stm2D9dXEUUAQdvpvhvFj/DEXwC2PAL/RwEMhoN4dvvD2ikTlJegEXf97xryg88VIAU22ZAP7n842l+9BTz6+w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.10.0" + +react-error-overlay@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.0.tgz#c516995a5652e7bfbed8b497910d5280df74a7e8" + integrity sha512-akMy/BQT5m1J3iJIHkSb4qycq2wzllWsmmolaaFVnb+LPV9cIJ/nTud40ZsiiT0H3P+/wXIdbjx2fzF61OaeOQ== + +react-scripts@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-2.1.1.tgz#c2959a756b0b61d3090adece0d7aedd324dff8a5" + integrity sha512-f6KCUy7opItgeana1Ghwj+lYQp5BTHSaivG/dbfiIqSm5QdOIUV5eiFSBsbaAE6GEKqGYmZDK6Yw5WmbrhxaFg== + dependencies: + "@babel/core" "7.1.0" + "@svgr/webpack" "2.4.1" + babel-core "7.0.0-bridge.0" + babel-eslint "9.0.0" + babel-jest "23.6.0" + babel-loader "8.0.4" + babel-plugin-named-asset-import "^0.2.3" + babel-preset-react-app "^6.1.0" + bfj "6.1.1" + case-sensitive-paths-webpack-plugin "2.1.2" + chalk "2.4.1" + css-loader "1.0.0" + dotenv "6.0.0" + dotenv-expand "4.2.0" + eslint "5.6.0" + eslint-config-react-app "^3.0.5" + eslint-loader "2.1.1" + eslint-plugin-flowtype "2.50.1" + eslint-plugin-import "2.14.0" + eslint-plugin-jsx-a11y "6.1.2" + eslint-plugin-react "7.11.1" + file-loader "2.0.0" + fork-ts-checker-webpack-plugin-alt "0.4.14" + fs-extra "7.0.0" + html-webpack-plugin "4.0.0-alpha.2" + identity-obj-proxy "3.0.0" + jest "23.6.0" + jest-pnp-resolver "1.0.1" + jest-resolve "23.6.0" + mini-css-extract-plugin "0.4.3" + optimize-css-assets-webpack-plugin "5.0.1" + pnp-webpack-plugin "1.1.0" + postcss-flexbugs-fixes "4.1.0" + postcss-loader "3.0.0" + postcss-preset-env "6.0.6" + postcss-safe-parser "4.0.1" + react-app-polyfill "^0.1.3" + react-dev-utils "^6.1.1" + resolve "1.8.1" + sass-loader "7.1.0" + style-loader "0.23.0" + terser-webpack-plugin "1.1.0" + url-loader "1.1.1" + webpack "4.19.1" + webpack-dev-server "3.1.9" + webpack-manifest-plugin "2.0.4" + workbox-webpack-plugin "3.6.3" + optionalDependencies: + fsevents "1.2.4" + +react@16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.6.0.tgz#b34761cfaf3e30f5508bc732fb4736730b7da246" + integrity sha512-zJPnx/jKtuOEXCbQ9BKaxDMxR0001/hzxXwYxG8septeyYGfsgAei6NgfbVgOhbY1WOP2o3VPs/E9HaN+9hV3Q== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.10.0" + +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" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@1.0: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +realpath-native@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" + integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g== + dependencies: + util.promisify "^1.0.0" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== + dependencies: + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" + integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.4.0" + regjsparser "^0.3.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsgen@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" + integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" + integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa" + integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg== + dependencies: + css-select "^1.1.0" + dom-converter "~0.2" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request-promise-core@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= + dependencies: + lodash "^4.13.1" + +request-promise-native@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" + integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= + dependencies: + request-promise-core "1.1.1" + stealthy-require "^1.1.0" + tough-cookie ">=2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.8.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== + dependencies: + path-parse "^1.0.5" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsvp@^3.3.3: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.1.0: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^2.0.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" + integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + +sass-loader@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" + integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== + dependencies: + clone-deep "^2.0.1" + loader-utils "^1.0.1" + lodash.tail "^4.1.1" + neo-async "^2.5.0" + pify "^3.0.0" + semver "^5.5.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.3.tgz#334ab3b802a465ccda96fff9bdefbd505546ffa8" + integrity sha512-Nc5DXc5A+m3rUDtkS+vHlBWKT7mCKjJPyia7f8YMW773hsXVv2wEHQZGE0zs4+5PLwz9U5Sbl/94Cnd9vHV7Bg== + dependencies: + xmlchars "^1.3.1" + +scheduler@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.10.0.tgz#7988de90fe7edccc774ea175a783e69c40c521e1" + integrity sha512-+TSTVTCBAA3h8Anei3haDc1IRwMeDmtI/y/o3iBe3Mjl2vwYF9DtPDt929HyRmV/e7au7CLu8sc4C4W0VOs29w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^0.4.4, schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.9.1: + version "1.10.4" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" + integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== + dependencies: + node-forge "0.7.5" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-javascript@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== + dependencies: + is-extendable "^0.1.1" + kind-of "^5.0.0" + mixin-object "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +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== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" + integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM= + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.6, source-map-support@~0.5.6: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" + integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" + integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg== + +spdy-transport@^2.0.18: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" + integrity sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g== + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" + integrity sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== + dependencies: + safe-buffer "^5.1.1" + +ssri@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +stable@~0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" + integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA= + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +stealthy-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.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" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +stringify-object@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@4.0.0, strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-bom@3.0.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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +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= + +style-loader@0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1" + integrity sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ== + dependencies: + loader-utils "^1.1.0" + schema-utils "^0.4.5" + +stylehacks@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" + integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +svgo@^1.0.0, svgo@^1.0.5: + version "1.1.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" + integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g== + dependencies: + coa "~2.0.1" + colors "~1.1.2" + css-select "^2.0.0" + css-select-base-adapter "~0.1.0" + css-tree "1.0.0-alpha.28" + css-url-regex "^1.1.0" + csso "^3.5.0" + js-yaml "^3.12.0" + mkdirp "~0.5.1" + object.values "^1.0.4" + sax "~1.2.4" + stable "~0.1.6" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" + integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== + +tar@^4: + version "4.4.6" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" + integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +terser-webpack-plugin@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" + integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.8.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser@^3.8.1: + version "3.10.8" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.8.tgz#2fe3967396a10cdc3d575074fe857efd30a2895a" + integrity sha512-GQJHWJ/vbx0EgRk+lBMONMmKaT+ifeo/XgT/hi3KpzEEFOERVyFuJSVXH8grcmJjiqKY35ds8rBCxvABUeyyuQ== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + source-map-support "~0.5.6" + +test-exclude@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" + integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +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" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + 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" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +topo@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" + integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI= + dependencies: + hoek "4.x.x" + +tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3, tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +tryer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-es@^3.3.4: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +uglify-js@3.4.x, uglify-js@^3.1.4: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + +uglifyjs-webpack-plugin@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" + integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" + integrity sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg== + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse@^1.1.8, url-parse@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" + integrity sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw== + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +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" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" + integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= + dependencies: + indexof "0.0.1" + +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + dependencies: + browser-process-hrtime "^0.1.2" + +w3c-xmlserializer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.0.0.tgz#d23e20de595b892056f20a359fc2622908d48695" + integrity sha512-0et1+9uXYiIRAecx1D5Z1nk60+vimniGdIKl4XjeqkWi6acoHNlXMv1VR5jV+jF4ooeO08oWbYxeAJOcon1oMA== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +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" + +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-dev-middleware@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" + integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== + dependencies: + memory-fs "~0.4.1" + mime "^2.3.1" + range-parser "^1.0.3" + webpack-log "^2.0.0" + +webpack-dev-server@3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.9.tgz#8b32167624d2faff40dcedc2cbce17ed1f34d3e0" + integrity sha512-fqPkuNalLuc/hRC2QMkVYJkgNmRvxZQo7ykA2e1XRg/tMJm3qY7ZaD6d89/Fqjxtj9bOrn5wZzLD2n84lJdvWg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.18.0" + import-local "^2.0.0" + internal-ip "^3.0.1" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + schema-utils "^1.0.0" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.19" + sockjs-client "1.1.5" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + webpack-dev-middleware "3.4.0" + webpack-log "^2.0.0" + yargs "12.0.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz#e4ca2999b09557716b8ba4475fb79fab5986f0cd" + integrity sha512-nejhOHexXDBKQOj/5v5IZSfCeTO3x1Dt1RZEcGfBSul891X/eLIcIVH31gwxPDdsi2Z8LKKFGpM4w9+oTBOSCg== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.1.tgz#096674bc3b573f8756c762754366e5b333d6576f" + integrity sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-module-context" "1.7.6" + "@webassemblyjs/wasm-edit" "1.7.6" + "@webassemblyjs/wasm-parser" "1.7.6" + acorn "^5.6.2" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.4" + tapable "^1.1.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" + webpack-sources "^1.2.0" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, 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-fetch@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171" + integrity sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +workbox-background-sync@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" + integrity sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q== + dependencies: + workbox-core "^3.6.3" + +workbox-broadcast-cache-update@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" + integrity sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg== + dependencies: + workbox-core "^3.6.3" + +workbox-build@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" + integrity sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g== + dependencies: + babel-runtime "^6.26.0" + common-tags "^1.4.0" + fs-extra "^4.0.2" + glob "^7.1.2" + joi "^11.1.1" + lodash.template "^4.4.0" + pretty-bytes "^4.0.2" + stringify-object "^3.2.2" + strip-comments "^1.0.2" + workbox-background-sync "^3.6.3" + workbox-broadcast-cache-update "^3.6.3" + workbox-cache-expiration "^3.6.3" + workbox-cacheable-response "^3.6.3" + workbox-core "^3.6.3" + workbox-google-analytics "^3.6.3" + workbox-navigation-preload "^3.6.3" + workbox-precaching "^3.6.3" + workbox-range-requests "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + workbox-streams "^3.6.3" + workbox-sw "^3.6.3" + +workbox-cache-expiration@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" + integrity sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA== + dependencies: + workbox-core "^3.6.3" + +workbox-cacheable-response@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" + integrity sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg== + dependencies: + workbox-core "^3.6.3" + +workbox-core@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" + integrity sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ== + +workbox-google-analytics@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" + integrity sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig== + dependencies: + workbox-background-sync "^3.6.3" + workbox-core "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + +workbox-navigation-preload@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" + integrity sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw== + dependencies: + workbox-core "^3.6.3" + +workbox-precaching@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" + integrity sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw== + dependencies: + workbox-core "^3.6.3" + +workbox-range-requests@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" + integrity sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A== + dependencies: + workbox-core "^3.6.3" + +workbox-routing@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" + integrity sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ== + dependencies: + workbox-core "^3.6.3" + +workbox-strategies@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" + integrity sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g== + dependencies: + workbox-core "^3.6.3" + +workbox-streams@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" + integrity sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w== + dependencies: + workbox-core "^3.6.3" + +workbox-sw@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" + integrity sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg== + +workbox-webpack-plugin@3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-3.6.3.tgz#a807bb891b4e4e3c808df07e58f17de2d5ba6182" + integrity sha512-RwmKjc7HFHUFHoOlKoZUq9349u0QN3F8W5tZZU0vc1qsBZDINWXRiIBCAKvo/Njgay5sWz7z4I2adnyTo97qIQ== + dependencies: + babel-runtime "^6.26.0" + json-stable-stringify "^1.0.1" + workbox-build "^3.6.3" + +worker-farm@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.0.tgz#119a9dbf92c54e190ec18d10e871d55c95cf9373" + integrity sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg== + dependencies: + async-limiter "~1.0.0" + +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@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" + integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw== + +xregexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= + +yargs-parser@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= + dependencies: + camelcase "^4.1.0" + +yargs@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== + dependencies: + cliui "^4.0.0" + decamelize "^2.0.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^10.1.0" + +yargs@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" From 36bb3aa2f71c731cea5e1b53fa31412a2be39b69 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 16:50:29 +0900 Subject: [PATCH 006/162] ignore .idea dir --- mizql/frontend/ui/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mizql/frontend/ui/.gitignore b/mizql/frontend/ui/.gitignore index 4d29575..1450972 100644 --- a/mizql/frontend/ui/.gitignore +++ b/mizql/frontend/ui/.gitignore @@ -21,3 +21,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +.idea/ \ No newline at end of file From faf7c1c99bd4b0fbd9c3a3f5ad9a315e15eb51d8 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 17:09:28 +0900 Subject: [PATCH 007/162] `yarn add dotenv` --- mizql/frontend/ui/package.json | 1 + mizql/frontend/ui/yarn.lock | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mizql/frontend/ui/package.json b/mizql/frontend/ui/package.json index 261adb9..8541f21 100644 --- a/mizql/frontend/ui/package.json +++ b/mizql/frontend/ui/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "dotenv": "^6.1.0", "react": "^16.6.0", "react-dom": "^16.6.0", "react-scripts": "2.1.1" diff --git a/mizql/frontend/ui/yarn.lock b/mizql/frontend/ui/yarn.lock index 26ab27a..0ddc0ce 100644 --- a/mizql/frontend/ui/yarn.lock +++ b/mizql/frontend/ui/yarn.lock @@ -2995,6 +2995,11 @@ dotenv@6.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935" integrity sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg== +dotenv@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz#9853b6ca98292acb7dec67a95018fa40bccff42c" + integrity sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw== + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -7705,7 +7710,7 @@ react-dev-utils@^6.1.1: strip-ansi "4.0.0" text-table "0.2.0" -react-dom@16.6.0: +react-dom@^16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.0.tgz#6375b8391e019a632a89a0988bce85f0cc87a92f" integrity sha512-Stm2D9dXEUUAQdvpvhvFj/DEXwC2PAL/RwEMhoN4dvvD2ikTlJegEXf97xryg88VIAU22ZAP7n842l+9BTz6+w== @@ -7775,7 +7780,7 @@ react-scripts@2.1.1: optionalDependencies: fsevents "1.2.4" -react@16.6.0: +react@^16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/react/-/react-16.6.0.tgz#b34761cfaf3e30f5508bc732fb4736730b7da246" integrity sha512-zJPnx/jKtuOEXCbQ9BKaxDMxR0001/hzxXwYxG8septeyYGfsgAei6NgfbVgOhbY1WOP2o3VPs/E9HaN+9hV3Q== From f961030c0423a4de87322db72738f875d74bbe08 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 17:52:12 +0900 Subject: [PATCH 008/162] `yarn add react-router-dom` --- mizql/frontend/ui/package.json | 1 + mizql/frontend/ui/yarn.lock | 78 ++++++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/mizql/frontend/ui/package.json b/mizql/frontend/ui/package.json index 8541f21..74669d8 100644 --- a/mizql/frontend/ui/package.json +++ b/mizql/frontend/ui/package.json @@ -6,6 +6,7 @@ "dotenv": "^6.1.0", "react": "^16.6.0", "react-dom": "^16.6.0", + "react-router-dom": "^4.3.1", "react-scripts": "2.1.1" }, "scripts": { diff --git a/mizql/frontend/ui/yarn.lock b/mizql/frontend/ui/yarn.lock index 0ddc0ce..9ef8437 100644 --- a/mizql/frontend/ui/yarn.lock +++ b/mizql/frontend/ui/yarn.lock @@ -4228,6 +4228,17 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +history@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" + integrity sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA== + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + value-equal "^0.4.0" + warning "^3.0.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4242,6 +4253,11 @@ hoek@4.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== +hoist-non-react-statics@^2.5.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -4553,7 +4569,7 @@ internal-ip@^3.0.1: default-gateway "^2.6.0" ipaddr.js "^1.5.2" -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -5742,7 +5758,7 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6705,6 +6721,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + dependencies: + isarray "0.0.1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -7505,7 +7528,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@^15.6.2: +prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7725,6 +7748,31 @@ react-error-overlay@^5.1.0: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.0.tgz#c516995a5652e7bfbed8b497910d5280df74a7e8" integrity sha512-akMy/BQT5m1J3iJIHkSb4qycq2wzllWsmmolaaFVnb+LPV9cIJ/nTud40ZsiiT0H3P+/wXIdbjx2fzF61OaeOQ== +react-router-dom@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" + integrity sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA== + dependencies: + history "^4.7.2" + invariant "^2.2.4" + loose-envify "^1.3.1" + prop-types "^15.6.1" + react-router "^4.3.1" + warning "^4.0.1" + +react-router@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" + integrity sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg== + dependencies: + history "^4.7.2" + hoist-non-react-statics "^2.5.0" + invariant "^2.2.4" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.1" + warning "^4.0.1" + react-scripts@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-2.1.1.tgz#c2959a756b0b61d3090adece0d7aedd324dff8a5" @@ -8097,6 +8145,11 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -9288,6 +9341,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -9337,6 +9395,20 @@ walker@~1.0.5: dependencies: makeerror "1.0.x" +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz#aa6876480872116fa3e11d434b0d0d8d91e44607" + integrity sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug== + dependencies: + loose-envify "^1.0.0" + watch@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" From 4e1caa67c2b9d2078b4ce0f4e8d6ffc1113a27ce Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 17:52:37 +0900 Subject: [PATCH 009/162] routing --- mizql/frontend/ui/src/App.js | 48 ++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/mizql/frontend/ui/src/App.js b/mizql/frontend/ui/src/App.js index 7e261ca..df05f81 100644 --- a/mizql/frontend/ui/src/App.js +++ b/mizql/frontend/ui/src/App.js @@ -1,28 +1,28 @@ -import React, { Component } from 'react'; -import logo from './logo.svg'; +import React from 'react'; import './App.css'; +import {BrowserRouter, Route} from 'react-router-dom'; -class App extends Component { - render() { - return ( -
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
-
- ); - } -} +const App = () => ( + +
+ + +
+
+); + +const Home = () => ( +
+

Home

+

Not Implemented

+
+); + +const Login = () => ( +
+

Login

+

Not Implemented

+
+); export default App; From e386478eabc2732b16605fe571042865997919cd Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 19:21:13 +0900 Subject: [PATCH 010/162] readme --- mizql/frontend/ui/README.md | 61 +++++++++++-------------------------- 1 file changed, 17 insertions(+), 44 deletions(-) diff --git a/mizql/frontend/ui/README.md b/mizql/frontend/ui/README.md index 897dc83..2695776 100644 --- a/mizql/frontend/ui/README.md +++ b/mizql/frontend/ui/README.md @@ -1,44 +1,17 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). +## Mizql UI + +### Environment +```bash +yarn install +``` + +### Build +```bash +yarn build +``` + +### Run +```bash +yarn start +``` +access `http://localhost:3000` \ No newline at end of file From ffd2516110c442d86b5f3d68235e0a23360fd4ca Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 19:27:05 +0900 Subject: [PATCH 011/162] refactor dir --- .idea/jsLibraryMappings.xml | 7 ++ .idea/markdown-exported-files.xml | 8 ++ .idea/markdown-navigator.xml | 72 ++++++++++++++++++ .../markdown-navigator/profiles_settings.xml | 3 + .idea/mizql.iml | 2 +- mizql/frontend/__init__.py | 0 mizql/frontend/admin.py | 3 - mizql/frontend/apps.py | 5 -- mizql/frontend/migrations/__init__.py | 0 mizql/frontend/models.py | 3 - mizql/frontend/tests.py | 3 - mizql/frontend/views.py | 3 - mizql/{frontend => }/ui/.gitignore | 0 mizql/{frontend => }/ui/README.md | 0 mizql/{frontend => }/ui/package.json | 0 mizql/{frontend => }/ui/public/favicon.ico | Bin mizql/{frontend => }/ui/public/index.html | 0 mizql/{frontend => }/ui/public/manifest.json | 0 mizql/{frontend => }/ui/src/App.css | 0 mizql/{frontend => }/ui/src/App.js | 0 mizql/{frontend => }/ui/src/App.test.js | 0 mizql/{frontend => }/ui/src/index.css | 0 mizql/{frontend => }/ui/src/index.js | 0 mizql/{frontend => }/ui/src/logo.svg | 0 mizql/{frontend => }/ui/src/serviceWorker.js | 0 mizql/{frontend => }/ui/yarn.lock | 0 26 files changed, 91 insertions(+), 18 deletions(-) create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/markdown-exported-files.xml create mode 100644 .idea/markdown-navigator.xml create mode 100644 .idea/markdown-navigator/profiles_settings.xml delete mode 100644 mizql/frontend/__init__.py delete mode 100644 mizql/frontend/admin.py delete mode 100644 mizql/frontend/apps.py delete mode 100644 mizql/frontend/migrations/__init__.py delete mode 100644 mizql/frontend/models.py delete mode 100644 mizql/frontend/tests.py delete mode 100644 mizql/frontend/views.py rename mizql/{frontend => }/ui/.gitignore (100%) rename mizql/{frontend => }/ui/README.md (100%) rename mizql/{frontend => }/ui/package.json (100%) rename mizql/{frontend => }/ui/public/favicon.ico (100%) rename mizql/{frontend => }/ui/public/index.html (100%) rename mizql/{frontend => }/ui/public/manifest.json (100%) rename mizql/{frontend => }/ui/src/App.css (100%) rename mizql/{frontend => }/ui/src/App.js (100%) rename mizql/{frontend => }/ui/src/App.test.js (100%) rename mizql/{frontend => }/ui/src/index.css (100%) rename mizql/{frontend => }/ui/src/index.js (100%) rename mizql/{frontend => }/ui/src/logo.svg (100%) rename mizql/{frontend => }/ui/src/serviceWorker.js (100%) rename mizql/{frontend => }/ui/yarn.lock (100%) diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..69b6c67 --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-exported-files.xml b/.idea/markdown-exported-files.xml new file mode 100644 index 0000000..5d1f129 --- /dev/null +++ b/.idea/markdown-exported-files.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml new file mode 100644 index 0000000..d819570 --- /dev/null +++ b/.idea/markdown-navigator.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..57927c5 --- /dev/null +++ b/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/mizql.iml b/.idea/mizql.iml index 369e0b6..1d8333d 100644 --- a/.idea/mizql.iml +++ b/.idea/mizql.iml @@ -16,7 +16,7 @@ - + diff --git a/mizql/frontend/__init__.py b/mizql/frontend/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/mizql/frontend/admin.py b/mizql/frontend/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/mizql/frontend/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/mizql/frontend/apps.py b/mizql/frontend/apps.py deleted file mode 100644 index 33ae5ca..0000000 --- a/mizql/frontend/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class FrontendConfig(AppConfig): - name = 'frontend' diff --git a/mizql/frontend/migrations/__init__.py b/mizql/frontend/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/mizql/frontend/models.py b/mizql/frontend/models.py deleted file mode 100644 index 71a8362..0000000 --- a/mizql/frontend/models.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.db import models - -# Create your models here. diff --git a/mizql/frontend/tests.py b/mizql/frontend/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/mizql/frontend/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/mizql/frontend/views.py b/mizql/frontend/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/mizql/frontend/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/mizql/frontend/ui/.gitignore b/mizql/ui/.gitignore similarity index 100% rename from mizql/frontend/ui/.gitignore rename to mizql/ui/.gitignore diff --git a/mizql/frontend/ui/README.md b/mizql/ui/README.md similarity index 100% rename from mizql/frontend/ui/README.md rename to mizql/ui/README.md diff --git a/mizql/frontend/ui/package.json b/mizql/ui/package.json similarity index 100% rename from mizql/frontend/ui/package.json rename to mizql/ui/package.json diff --git a/mizql/frontend/ui/public/favicon.ico b/mizql/ui/public/favicon.ico similarity index 100% rename from mizql/frontend/ui/public/favicon.ico rename to mizql/ui/public/favicon.ico diff --git a/mizql/frontend/ui/public/index.html b/mizql/ui/public/index.html similarity index 100% rename from mizql/frontend/ui/public/index.html rename to mizql/ui/public/index.html diff --git a/mizql/frontend/ui/public/manifest.json b/mizql/ui/public/manifest.json similarity index 100% rename from mizql/frontend/ui/public/manifest.json rename to mizql/ui/public/manifest.json diff --git a/mizql/frontend/ui/src/App.css b/mizql/ui/src/App.css similarity index 100% rename from mizql/frontend/ui/src/App.css rename to mizql/ui/src/App.css diff --git a/mizql/frontend/ui/src/App.js b/mizql/ui/src/App.js similarity index 100% rename from mizql/frontend/ui/src/App.js rename to mizql/ui/src/App.js diff --git a/mizql/frontend/ui/src/App.test.js b/mizql/ui/src/App.test.js similarity index 100% rename from mizql/frontend/ui/src/App.test.js rename to mizql/ui/src/App.test.js diff --git a/mizql/frontend/ui/src/index.css b/mizql/ui/src/index.css similarity index 100% rename from mizql/frontend/ui/src/index.css rename to mizql/ui/src/index.css diff --git a/mizql/frontend/ui/src/index.js b/mizql/ui/src/index.js similarity index 100% rename from mizql/frontend/ui/src/index.js rename to mizql/ui/src/index.js diff --git a/mizql/frontend/ui/src/logo.svg b/mizql/ui/src/logo.svg similarity index 100% rename from mizql/frontend/ui/src/logo.svg rename to mizql/ui/src/logo.svg diff --git a/mizql/frontend/ui/src/serviceWorker.js b/mizql/ui/src/serviceWorker.js similarity index 100% rename from mizql/frontend/ui/src/serviceWorker.js rename to mizql/ui/src/serviceWorker.js diff --git a/mizql/frontend/ui/yarn.lock b/mizql/ui/yarn.lock similarity index 100% rename from mizql/frontend/ui/yarn.lock rename to mizql/ui/yarn.lock From 797be7b70158a8d0a57730f5148c5fc9f7e31e69 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 19:39:15 +0900 Subject: [PATCH 012/162] `yarn add @material-ui/core` --- mizql/ui/package.json | 1 + mizql/ui/yarn.lock | 303 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 296 insertions(+), 8 deletions(-) diff --git a/mizql/ui/package.json b/mizql/ui/package.json index 74669d8..76ff2fa 100644 --- a/mizql/ui/package.json +++ b/mizql/ui/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "@material-ui/core": "^3.3.2", "dotenv": "^6.1.0", "react": "^16.6.0", "react-dom": "^16.6.0", diff --git a/mizql/ui/yarn.lock b/mizql/ui/yarn.lock index 9ef8437..67ddcf1 100644 --- a/mizql/ui/yarn.lock +++ b/mizql/ui/yarn.lock @@ -741,6 +741,13 @@ dependencies: regenerator-runtime "^0.12.0" +"@babel/runtime@7.1.2", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3" + integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg== + dependencies: + regenerator-runtime "^0.12.0" + "@babel/template@^7.1.0", "@babel/template@^7.1.2": version "7.1.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" @@ -779,6 +786,38 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@material-ui/core@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-3.3.2.tgz#ca9ce331ac5a31ef8acc732305967f3e5cfe4934" + integrity sha512-3yYGrWBzML7OhzmgwBvWpQnFq9ROWj+so+ULADB+lXjpOuxbUf8IUWbR4/S4chh+8/DTNMjTGIUdpj//XeubLQ== + dependencies: + "@babel/runtime" "7.1.2" + "@types/jss" "^9.5.6" + "@types/react-transition-group" "^2.0.8" + brcast "^3.0.1" + classnames "^2.2.5" + csstype "^2.5.2" + debounce "^1.1.0" + deepmerge "^2.0.1" + dom-helpers "^3.2.1" + hoist-non-react-statics "^2.5.0" + is-plain-object "^2.0.4" + jss "^9.3.3" + jss-camel-case "^6.0.0" + jss-default-unit "^8.0.2" + jss-global "^3.0.0" + jss-nested "^6.0.1" + jss-props-sort "^6.0.0" + jss-vendor-prefixer "^7.0.0" + keycode "^2.1.9" + normalize-scroll-left "^0.1.2" + popper.js "^1.14.1" + prop-types "^15.6.0" + react-event-listener "^0.6.2" + react-transition-group "^2.2.1" + recompose "0.28.0 - 0.30.0" + warning "^4.0.1" + "@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" @@ -817,6 +856,34 @@ "@svgr/core" "^2.4.1" loader-utils "^1.1.0" +"@types/jss@^9.5.6": + version "9.5.7" + resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.7.tgz#fa57a6d0b38a3abef8a425e3eb6a53495cb9d5a0" + integrity sha512-OZimStu2QdDMtZ0h72JXqvLVbWUjXd5ZLk8vxLmfuC/nM1AabRyyGoxSufnzixrbpEcVcyy/JV5qeQu2JnjVZw== + dependencies: + csstype "^2.0.0" + indefinite-observable "^1.0.1" + +"@types/prop-types@*": + version "15.5.6" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.6.tgz#9c03d3fed70a8d517c191b7734da2879b50ca26c" + integrity sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ== + +"@types/react-transition-group@^2.0.8": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.0.14.tgz#afd0cd785a97f070b55765e9f9d76ff568269001" + integrity sha512-pa7qB0/mkhwWMBFoXhX8BcntK8G4eQl4sIfSrJCxnivTYRQWjOWf2ClR9bWdm0EUFBDHzMbKYS+QYfDtBzkY4w== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.4.18" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.18.tgz#2e28a2e7f92d3fa7d6a65f2b73275c3e3138a13d" + integrity sha512-eFzJKEg6pdeaukVLVZ8Xb79CTl/ysX+ExmOfAAqcFlCCK5TgFDD9kWR0S18sglQ3EmM8U+80enjUqbfnUyqpdA== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + "@types/tapable@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" @@ -1239,7 +1306,7 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.6: +asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -1732,6 +1799,11 @@ braces@^2.3.0, braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +brcast@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/brcast/-/brcast-3.0.1.tgz#6256a8349b20de9eed44257a9b24d71493cd48dd" + integrity sha512-eI3yqf9YEqyGl9PCNTR46MGvDylGtaHjalcz6Q3fAPnP/PhpKkkve52vFdfGpwp4VUvK6LUr4TQN+2stCrEwTg== + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -2018,6 +2090,11 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +change-emitter@^0.1.2: + version "0.1.6" + resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" + integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2088,6 +2165,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@^2.2.5: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + clean-css@4.2.x: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" @@ -2353,6 +2435,11 @@ core-js@2.5.7, core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2536,6 +2623,13 @@ css-url-regex@^1.1.0: resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= +css-vendor@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-0.3.8.tgz#6421cfd3034ce664fe7673972fd0119fc28941fa" + integrity sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo= + dependencies: + is-in-browser "^1.0.2" + css-what@2.1, css-what@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" @@ -2643,6 +2737,11 @@ cssstyle@^1.0.0, cssstyle@^1.1.1: dependencies: cssom "0.3.x" +csstype@^2.0.0, csstype@^2.2.0, csstype@^2.5.2: + version "2.5.7" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.7.tgz#bf9235d5872141eccfb2d16d82993c6b149179ff" + integrity sha512-Nt5VDyOTIIV4/nRFswoCKps1R5CD1hkiyjBE9/thNaNZILLEviVw9yWQw15+O+CpNjQKB/uvdcxFFOrSflY3Yw== + cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -2674,6 +2773,11 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +debounce@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2727,6 +2831,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + default-gateway@^2.6.0: version "2.7.2" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" @@ -2918,6 +3027,13 @@ dom-converter@~0.2: dependencies: utila "~0.4" +dom-helpers@^3.2.1, dom-helpers@^3.3.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" @@ -3061,6 +3177,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -3601,6 +3724,19 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fbjs@^0.8.1: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -4253,7 +4389,7 @@ hoek@4.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== -hoist-non-react-statics@^2.5.0: +hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== @@ -4409,6 +4545,11 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +hyphenate-style-name@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" + integrity sha1-MRYKNpMK2vH8BMYHT360FGXU7Es= + iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -4416,7 +4557,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4509,6 +4650,13 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indefinite-observable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-1.0.1.tgz#09915423cc8d6f7eb1cb7882ad134633c9a6edc3" + integrity sha1-CZFUI8yNb36xy3iCrRNGM8mm7cM= + dependencies: + symbol-observable "1.0.4" + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -4799,6 +4947,11 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -4886,7 +5039,7 @@ is-root@2.0.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== -is-stream@^1.1.0: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -4959,6 +5112,14 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -5541,6 +5702,51 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jss-camel-case@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.1.0.tgz#ccb1ff8d6c701c02a1fed6fb6fb6b7896e11ce44" + integrity sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ== + dependencies: + hyphenate-style-name "^1.0.2" + +jss-default-unit@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/jss-default-unit/-/jss-default-unit-8.0.2.tgz#cc1e889bae4c0b9419327b314ab1c8e2826890e6" + integrity sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg== + +jss-global@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jss-global/-/jss-global-3.0.0.tgz#e19e5c91ab2b96353c227e30aa2cbd938cdaafa2" + integrity sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q== + +jss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jss-nested/-/jss-nested-6.0.1.tgz#ef992b79d6e8f63d939c4397b9d99b5cbbe824ca" + integrity sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA== + dependencies: + warning "^3.0.0" + +jss-props-sort@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/jss-props-sort/-/jss-props-sort-6.0.0.tgz#9105101a3b5071fab61e2d85ea74cc22e9b16323" + integrity sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g== + +jss-vendor-prefixer@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz#0166729650015ef19d9f02437c73667231605c71" + integrity sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA== + dependencies: + css-vendor "^0.3.8" + +jss@^9.3.3: + version "9.8.7" + resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.7.tgz#ed9763fc0f2f0260fc8260dac657af61e622ce05" + integrity sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ== + dependencies: + is-in-browser "^1.1.3" + symbol-observable "^1.1.0" + warning "^3.0.0" + jsx-ast-utils@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" @@ -5548,6 +5754,11 @@ jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" +keycode@^2.1.9: + version "2.2.0" + resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" + integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ= + killable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -5758,7 +5969,7 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6182,6 +6393,14 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" @@ -6284,6 +6503,11 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +normalize-scroll-left@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz#6b79691ba79eb5fb107fa5edfbdc06b55caee2aa" + integrity sha512-F9YMRls0zCF6BFIE2YnXDRpHPpfd91nOIaNdDgrx5YMoPLo8Wqj+6jNXHQsYBavJeXP4ww8HCt0xQAKc5qk2Fg== + normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" @@ -6832,6 +7056,11 @@ pnp-webpack-plugin@1.1.0: resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.1.0.tgz#947a96d1db94bb5a1fc014d83b581e428699ac8c" integrity sha512-CPCdcFxx7fEcDMWTDjXe2Wypt4JuMt4q5Q2UrpTcyBBkLiCIyPEh/mCGmUWIcNkKGyXwQ9Y2wVhlKm6ketiBNQ== +popper.js@^1.14.1: + version "1.14.4" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6" + integrity sha1-juwdj/AqWjoVLdQ0FKFce3n9abY= + portfinder@^1.0.9: version "1.0.19" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.19.tgz#07e87914a55242dcda5b833d42f018d6875b595f" @@ -7520,6 +7749,13 @@ promise@8.0.2: dependencies: asap "~2.0.6" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^0.1.9: version "0.1.14" resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" @@ -7528,7 +7764,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7748,6 +7984,20 @@ react-error-overlay@^5.1.0: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.0.tgz#c516995a5652e7bfbed8b497910d5280df74a7e8" integrity sha512-akMy/BQT5m1J3iJIHkSb4qycq2wzllWsmmolaaFVnb+LPV9cIJ/nTud40ZsiiT0H3P+/wXIdbjx2fzF61OaeOQ== +react-event-listener@^0.6.2: + version "0.6.4" + resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.4.tgz#d0ea5ed897da1a796616c44b5a8758898140f203" + integrity sha512-t7VSjIuUFmN+GeyKb+wm025YLeojVB85kJL6sSs0wEBJddfmKBEQz+CNBZ2zBLKVWkPy/fZXM6U5yvojjYBVYQ== + dependencies: + "@babel/runtime" "7.0.0" + prop-types "^15.6.0" + warning "^4.0.1" + +react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + react-router-dom@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" @@ -7828,6 +8078,16 @@ react-scripts@2.1.1: optionalDependencies: fsevents "1.2.4" +react-transition-group@^2.2.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.5.0.tgz#70bca0e3546102c4dc5cf3f5f57f73447cce6874" + integrity sha512-qYB3JBF+9Y4sE4/Mg/9O6WFpdoYjeeYqx0AFb64PTazVy8RPMiE3A47CG9QmM4WJ/mzDiZYslV+Uly6O1Erlgw== + dependencies: + dom-helpers "^3.3.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.4" + react@^16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/react/-/react-16.6.0.tgz#b34761cfaf3e30f5508bc732fb4736730b7da246" @@ -7911,6 +8171,18 @@ realpath-native@^1.0.0: dependencies: util.promisify "^1.0.0" +"recompose@0.28.0 - 0.30.0": + version "0.30.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" + integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== + dependencies: + "@babel/runtime" "^7.0.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" @@ -8402,7 +8674,7 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -8894,6 +9166,16 @@ svgo@^1.0.0, svgo@^1.0.5: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" + integrity sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0= + +symbol-observable@^1.0.4, symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -9129,6 +9411,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ua-parser-js@^0.7.18: + version "0.7.19" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" + integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== + uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -9557,7 +9844,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@3.0.0: +whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== From 2d636ff9c1012a4e3e8e344149200598b486723a Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 3 Nov 2018 19:39:59 +0900 Subject: [PATCH 013/162] add .idea files --- mizql/ui/.gitignore | 2 - mizql/ui/.idea/codeStyles/codeStyleConfig.xml | 5 + mizql/ui/.idea/dictionaries/taxio.xml | 3 + .../inspectionProfiles/Project_Default.xml | 6 + mizql/ui/.idea/markdown-navigator.xml | 72 ++++ .../markdown-navigator/profiles_settings.xml | 3 + mizql/ui/.idea/misc.xml | 6 + mizql/ui/.idea/modules.xml | 8 + mizql/ui/.idea/ui.iml | 12 + mizql/ui/.idea/vcs.xml | 6 + mizql/ui/.idea/workspace.xml | 352 ++++++++++++++++++ 11 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 mizql/ui/.idea/codeStyles/codeStyleConfig.xml create mode 100644 mizql/ui/.idea/dictionaries/taxio.xml create mode 100644 mizql/ui/.idea/inspectionProfiles/Project_Default.xml create mode 100644 mizql/ui/.idea/markdown-navigator.xml create mode 100644 mizql/ui/.idea/markdown-navigator/profiles_settings.xml create mode 100644 mizql/ui/.idea/misc.xml create mode 100644 mizql/ui/.idea/modules.xml create mode 100644 mizql/ui/.idea/ui.iml create mode 100644 mizql/ui/.idea/vcs.xml create mode 100644 mizql/ui/.idea/workspace.xml diff --git a/mizql/ui/.gitignore b/mizql/ui/.gitignore index 1450972..4d29575 100644 --- a/mizql/ui/.gitignore +++ b/mizql/ui/.gitignore @@ -21,5 +21,3 @@ npm-debug.log* yarn-debug.log* yarn-error.log* - -.idea/ \ No newline at end of file diff --git a/mizql/ui/.idea/codeStyles/codeStyleConfig.xml b/mizql/ui/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/mizql/ui/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/dictionaries/taxio.xml b/mizql/ui/.idea/dictionaries/taxio.xml new file mode 100644 index 0000000..07d34bf --- /dev/null +++ b/mizql/ui/.idea/dictionaries/taxio.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/mizql/ui/.idea/inspectionProfiles/Project_Default.xml b/mizql/ui/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..c6cc8c8 --- /dev/null +++ b/mizql/ui/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/markdown-navigator.xml b/mizql/ui/.idea/markdown-navigator.xml new file mode 100644 index 0000000..d819570 --- /dev/null +++ b/mizql/ui/.idea/markdown-navigator.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/markdown-navigator/profiles_settings.xml b/mizql/ui/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..57927c5 --- /dev/null +++ b/mizql/ui/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/mizql/ui/.idea/misc.xml b/mizql/ui/.idea/misc.xml new file mode 100644 index 0000000..24eb271 --- /dev/null +++ b/mizql/ui/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/modules.xml b/mizql/ui/.idea/modules.xml new file mode 100644 index 0000000..8e200d9 --- /dev/null +++ b/mizql/ui/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/ui.iml b/mizql/ui/.idea/ui.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/mizql/ui/.idea/ui.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/vcs.xml b/mizql/ui/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/mizql/ui/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/workspace.xml b/mizql/ui/.idea/workspace.xml new file mode 100644 index 0000000..32c5d13 --- /dev/null +++ b/mizql/ui/.idea/workspace.xml @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + false + true + true + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + AngularJS + + + + + + + + + + + + + + + + + + + + + + @@ -241,22 +355,24 @@ - + - + - + + - + @@ -282,13 +398,6 @@ - - - - - - - @@ -299,7 +408,7 @@ - + @@ -307,8 +416,8 @@ - - + + @@ -316,9 +425,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -326,10 +483,13 @@ - + - - + + + + + diff --git a/mizql/ui/src/App.js b/mizql/ui/src/App.js index a6d7f08..668fb8e 100644 --- a/mizql/ui/src/App.js +++ b/mizql/ui/src/App.js @@ -1,21 +1,20 @@ import React from 'react'; import {BrowserRouter, Route} from 'react-router-dom'; import Home from './components/Home'; +import Login from './components/Login'; +import {MuiThemeProvider} from '@material-ui/core/styles'; +import {theme} from './contains/theme'; +import {Store} from './store'; const App = () => ( -
- - -
+ + + + + +
); -const Login = () => ( -
-

Login

-

Not Implemented

-
-); - export default App; diff --git a/mizql/ui/src/components/Home.js b/mizql/ui/src/components/Home.js index ca7af59..51e48b1 100644 --- a/mizql/ui/src/components/Home.js +++ b/mizql/ui/src/components/Home.js @@ -1,25 +1,21 @@ import React, {Component} from 'react'; -import {theme} from '../contains/theme'; -import { MuiThemeProvider } from '@material-ui/core/styles'; import AppBar from '@material-ui/core/AppBar'; import Button from '@material-ui/core/Button'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; export default class Home extends Component { - render(){ - return( + render() { + return ( - - - - - Mizukuru Map - - - - - + + + + Mizukuru Map + + + + ) } diff --git a/mizql/ui/src/components/Login.js b/mizql/ui/src/components/Login.js new file mode 100644 index 0000000..87f3041 --- /dev/null +++ b/mizql/ui/src/components/Login.js @@ -0,0 +1,86 @@ +import React, {Component} from 'react'; +import AppBar from '@material-ui/core/AppBar'; +import Button from '@material-ui/core/Button'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import FormControl from '@material-ui/core/FormControl'; +import Grid from '@material-ui/core/Grid'; +import Toolbar from '@material-ui/core/Toolbar'; +import Typography from '@material-ui/core/Typography'; +import TextField from '@material-ui/core/TextField'; + +export default class Login extends Component { + constructor(props) { + super(props); + this.state = { + username: '', + password: '', + } + } + + handleLogin(){ + console.log('login'); + console.log(this.state.username); + console.log(this.state.password); + // TODO: Login API + } + + render() { + return ( + + + + + Mizukuru Map + + + + + + + + + this.setState({username: e.target.value})} + /> + this.setState({password: e.target.value})} + /> + + + + + + + + ) + } +} diff --git a/mizql/ui/src/store/index.js b/mizql/ui/src/store/index.js new file mode 100644 index 0000000..a361e56 --- /dev/null +++ b/mizql/ui/src/store/index.js @@ -0,0 +1,3 @@ +import React from 'react'; + +export const Store = React.createContext(); \ No newline at end of file From 887c842186d0ddad1d2f2615c5de34cec3d90ab7 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 12:31:44 +0900 Subject: [PATCH 019/162] to root dir --- {mizql/ui => frontend}/.gitignore | 0 .../.idea/codeStyles/codeStyleConfig.xml | 0 .../.idea/dictionaries/taxio.xml | 0 .../inspectionProfiles/Project_Default.xml | 0 frontend/.idea/markdown-exported-files.xml | 8 + .../.idea/markdown-navigator.xml | 0 .../markdown-navigator/profiles_settings.xml | 0 {mizql/ui => frontend}/.idea/misc.xml | 0 {mizql/ui => frontend}/.idea/modules.xml | 0 {mizql/ui => frontend}/.idea/ui.iml | 0 {mizql/ui => frontend}/.idea/vcs.xml | 2 +- {mizql/ui => frontend}/.idea/workspace.xml | 147 +++++++++++------- {mizql/ui => frontend}/README.md | 0 {mizql/ui => frontend}/package.json | 0 {mizql/ui => frontend}/public/favicon.ico | Bin {mizql/ui => frontend}/public/index.html | 0 {mizql/ui => frontend}/public/manifest.json | 0 {mizql/ui => frontend}/src/App.css | 0 {mizql/ui => frontend}/src/App.js | 0 {mizql/ui => frontend}/src/App.test.js | 0 {mizql/ui => frontend}/src/components/Home.js | 0 .../ui => frontend}/src/components/Login.js | 0 {mizql/ui => frontend}/src/contains/theme.js | 0 {mizql/ui => frontend}/src/index.css | 0 {mizql/ui => frontend}/src/index.js | 0 {mizql/ui => frontend}/src/logo.svg | 0 {mizql/ui => frontend}/src/serviceWorker.js | 0 {mizql/ui => frontend}/src/store/index.js | 0 {mizql/ui => frontend}/yarn.lock | 0 29 files changed, 100 insertions(+), 57 deletions(-) rename {mizql/ui => frontend}/.gitignore (100%) rename {mizql/ui => frontend}/.idea/codeStyles/codeStyleConfig.xml (100%) rename {mizql/ui => frontend}/.idea/dictionaries/taxio.xml (100%) rename {mizql/ui => frontend}/.idea/inspectionProfiles/Project_Default.xml (100%) create mode 100644 frontend/.idea/markdown-exported-files.xml rename {mizql/ui => frontend}/.idea/markdown-navigator.xml (100%) rename {mizql/ui => frontend}/.idea/markdown-navigator/profiles_settings.xml (100%) rename {mizql/ui => frontend}/.idea/misc.xml (100%) rename {mizql/ui => frontend}/.idea/modules.xml (100%) rename {mizql/ui => frontend}/.idea/ui.iml (100%) rename {mizql/ui => frontend}/.idea/vcs.xml (68%) rename {mizql/ui => frontend}/.idea/workspace.xml (81%) rename {mizql/ui => frontend}/README.md (100%) rename {mizql/ui => frontend}/package.json (100%) rename {mizql/ui => frontend}/public/favicon.ico (100%) rename {mizql/ui => frontend}/public/index.html (100%) rename {mizql/ui => frontend}/public/manifest.json (100%) rename {mizql/ui => frontend}/src/App.css (100%) rename {mizql/ui => frontend}/src/App.js (100%) rename {mizql/ui => frontend}/src/App.test.js (100%) rename {mizql/ui => frontend}/src/components/Home.js (100%) rename {mizql/ui => frontend}/src/components/Login.js (100%) rename {mizql/ui => frontend}/src/contains/theme.js (100%) rename {mizql/ui => frontend}/src/index.css (100%) rename {mizql/ui => frontend}/src/index.js (100%) rename {mizql/ui => frontend}/src/logo.svg (100%) rename {mizql/ui => frontend}/src/serviceWorker.js (100%) rename {mizql/ui => frontend}/src/store/index.js (100%) rename {mizql/ui => frontend}/yarn.lock (100%) diff --git a/mizql/ui/.gitignore b/frontend/.gitignore similarity index 100% rename from mizql/ui/.gitignore rename to frontend/.gitignore diff --git a/mizql/ui/.idea/codeStyles/codeStyleConfig.xml b/frontend/.idea/codeStyles/codeStyleConfig.xml similarity index 100% rename from mizql/ui/.idea/codeStyles/codeStyleConfig.xml rename to frontend/.idea/codeStyles/codeStyleConfig.xml diff --git a/mizql/ui/.idea/dictionaries/taxio.xml b/frontend/.idea/dictionaries/taxio.xml similarity index 100% rename from mizql/ui/.idea/dictionaries/taxio.xml rename to frontend/.idea/dictionaries/taxio.xml diff --git a/mizql/ui/.idea/inspectionProfiles/Project_Default.xml b/frontend/.idea/inspectionProfiles/Project_Default.xml similarity index 100% rename from mizql/ui/.idea/inspectionProfiles/Project_Default.xml rename to frontend/.idea/inspectionProfiles/Project_Default.xml diff --git a/frontend/.idea/markdown-exported-files.xml b/frontend/.idea/markdown-exported-files.xml new file mode 100644 index 0000000..5d1f129 --- /dev/null +++ b/frontend/.idea/markdown-exported-files.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/mizql/ui/.idea/markdown-navigator.xml b/frontend/.idea/markdown-navigator.xml similarity index 100% rename from mizql/ui/.idea/markdown-navigator.xml rename to frontend/.idea/markdown-navigator.xml diff --git a/mizql/ui/.idea/markdown-navigator/profiles_settings.xml b/frontend/.idea/markdown-navigator/profiles_settings.xml similarity index 100% rename from mizql/ui/.idea/markdown-navigator/profiles_settings.xml rename to frontend/.idea/markdown-navigator/profiles_settings.xml diff --git a/mizql/ui/.idea/misc.xml b/frontend/.idea/misc.xml similarity index 100% rename from mizql/ui/.idea/misc.xml rename to frontend/.idea/misc.xml diff --git a/mizql/ui/.idea/modules.xml b/frontend/.idea/modules.xml similarity index 100% rename from mizql/ui/.idea/modules.xml rename to frontend/.idea/modules.xml diff --git a/mizql/ui/.idea/ui.iml b/frontend/.idea/ui.iml similarity index 100% rename from mizql/ui/.idea/ui.iml rename to frontend/.idea/ui.iml diff --git a/mizql/ui/.idea/vcs.xml b/frontend/.idea/vcs.xml similarity index 68% rename from mizql/ui/.idea/vcs.xml rename to frontend/.idea/vcs.xml index b2bdec2..6c0b863 100644 --- a/mizql/ui/.idea/vcs.xml +++ b/frontend/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/mizql/ui/.idea/workspace.xml b/frontend/.idea/workspace.xml similarity index 81% rename from mizql/ui/.idea/workspace.xml rename to frontend/.idea/workspace.xml index 0dcf457..91ed9d8 100644 --- a/mizql/ui/.idea/workspace.xml +++ b/frontend/.idea/workspace.xml @@ -2,11 +2,34 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -74,25 +97,27 @@ + + - + - + - + - + @@ -114,6 +139,14 @@ + + + + + + + + @@ -122,17 +155,17 @@ - + - + - - + + @@ -149,11 +182,11 @@ - + - - + + @@ -164,7 +197,7 @@ - + @@ -176,7 +209,7 @@ - + @@ -219,7 +252,7 @@ - - - - - + @@ -381,6 +414,7 @@ + @@ -395,6 +429,7 @@ + @@ -405,13 +440,6 @@
- - - - - - - @@ -432,63 +460,70 @@ - + - - + + - + - - + + - + - + - + - - + + - + - - + + + + + - + - - - - - + + - + + + + + + + + - - + + - + diff --git a/mizql/ui/README.md b/frontend/README.md similarity index 100% rename from mizql/ui/README.md rename to frontend/README.md diff --git a/mizql/ui/package.json b/frontend/package.json similarity index 100% rename from mizql/ui/package.json rename to frontend/package.json diff --git a/mizql/ui/public/favicon.ico b/frontend/public/favicon.ico similarity index 100% rename from mizql/ui/public/favicon.ico rename to frontend/public/favicon.ico diff --git a/mizql/ui/public/index.html b/frontend/public/index.html similarity index 100% rename from mizql/ui/public/index.html rename to frontend/public/index.html diff --git a/mizql/ui/public/manifest.json b/frontend/public/manifest.json similarity index 100% rename from mizql/ui/public/manifest.json rename to frontend/public/manifest.json diff --git a/mizql/ui/src/App.css b/frontend/src/App.css similarity index 100% rename from mizql/ui/src/App.css rename to frontend/src/App.css diff --git a/mizql/ui/src/App.js b/frontend/src/App.js similarity index 100% rename from mizql/ui/src/App.js rename to frontend/src/App.js diff --git a/mizql/ui/src/App.test.js b/frontend/src/App.test.js similarity index 100% rename from mizql/ui/src/App.test.js rename to frontend/src/App.test.js diff --git a/mizql/ui/src/components/Home.js b/frontend/src/components/Home.js similarity index 100% rename from mizql/ui/src/components/Home.js rename to frontend/src/components/Home.js diff --git a/mizql/ui/src/components/Login.js b/frontend/src/components/Login.js similarity index 100% rename from mizql/ui/src/components/Login.js rename to frontend/src/components/Login.js diff --git a/mizql/ui/src/contains/theme.js b/frontend/src/contains/theme.js similarity index 100% rename from mizql/ui/src/contains/theme.js rename to frontend/src/contains/theme.js diff --git a/mizql/ui/src/index.css b/frontend/src/index.css similarity index 100% rename from mizql/ui/src/index.css rename to frontend/src/index.css diff --git a/mizql/ui/src/index.js b/frontend/src/index.js similarity index 100% rename from mizql/ui/src/index.js rename to frontend/src/index.js diff --git a/mizql/ui/src/logo.svg b/frontend/src/logo.svg similarity index 100% rename from mizql/ui/src/logo.svg rename to frontend/src/logo.svg diff --git a/mizql/ui/src/serviceWorker.js b/frontend/src/serviceWorker.js similarity index 100% rename from mizql/ui/src/serviceWorker.js rename to frontend/src/serviceWorker.js diff --git a/mizql/ui/src/store/index.js b/frontend/src/store/index.js similarity index 100% rename from mizql/ui/src/store/index.js rename to frontend/src/store/index.js diff --git a/mizql/ui/yarn.lock b/frontend/yarn.lock similarity index 100% rename from mizql/ui/yarn.lock rename to frontend/yarn.lock From a47f65d820fd3761689b78c579269776301fbc29 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 12:51:49 +0900 Subject: [PATCH 020/162] fix dir --- frontend/.idea/workspace.xml | 146 ++++++++++-------- frontend/src/App.js | 4 +- frontend/src/{contains => config}/theme.js | 0 .../src/{store/index.js => modules/store.js} | 0 4 files changed, 81 insertions(+), 69 deletions(-) rename frontend/src/{contains => config}/theme.js (100%) rename frontend/src/{store/index.js => modules/store.js} (100%) diff --git a/frontend/.idea/workspace.xml b/frontend/.idea/workspace.xml index 91ed9d8..8127f82 100644 --- a/frontend/.idea/workspace.xml +++ b/frontend/.idea/workspace.xml @@ -2,34 +2,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + @@ -146,6 +122,23 @@ + + + + + + + + + + + + + + + + + @@ -164,8 +157,8 @@ - - + + @@ -174,7 +167,7 @@ - + @@ -210,11 +203,11 @@ - + - - + + @@ -222,11 +215,11 @@ - - + + - - + + @@ -234,8 +227,8 @@ - - + + @@ -260,12 +253,12 @@ @@ -324,12 +317,12 @@ - - + + - - + + @@ -354,6 +347,13 @@
+ + + + + + + - + + + + + + + + @@ -374,6 +381,10 @@ + + + + @@ -390,22 +401,23 @@ - + - + - + @@ -467,13 +479,6 @@ - - - - - - - @@ -496,32 +501,39 @@ - - + + - + - - + + - + - - + + + + + + + + + - - + + diff --git a/frontend/src/App.js b/frontend/src/App.js index 668fb8e..814381f 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -3,8 +3,8 @@ import {BrowserRouter, Route} from 'react-router-dom'; import Home from './components/Home'; import Login from './components/Login'; import {MuiThemeProvider} from '@material-ui/core/styles'; -import {theme} from './contains/theme'; -import {Store} from './store'; +import {theme} from './config/theme'; +import {Store} from './modules/store'; const App = () => ( diff --git a/frontend/src/contains/theme.js b/frontend/src/config/theme.js similarity index 100% rename from frontend/src/contains/theme.js rename to frontend/src/config/theme.js diff --git a/frontend/src/store/index.js b/frontend/src/modules/store.js similarity index 100% rename from frontend/src/store/index.js rename to frontend/src/modules/store.js From b2a7df25e9cb8feb8e6a45ffe8fc2c259a5351c2 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 12:52:43 +0900 Subject: [PATCH 021/162] delete no use --- frontend/src/App.css | 32 -------------------------------- frontend/src/index.css | 14 -------------- 2 files changed, 46 deletions(-) delete mode 100644 frontend/src/App.css delete mode 100644 frontend/src/index.css diff --git a/frontend/src/App.css b/frontend/src/App.css deleted file mode 100644 index 92f956e..0000000 --- a/frontend/src/App.css +++ /dev/null @@ -1,32 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - animation: App-logo-spin infinite 20s linear; - height: 40vmin; -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/frontend/src/index.css b/frontend/src/index.css deleted file mode 100644 index cee5f34..0000000 --- a/frontend/src/index.css +++ /dev/null @@ -1,14 +0,0 @@ -body { - margin: 0; - padding: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", - monospace; -} From 7c445bfe2d5d01d13ac882bd4fafe5192d7870a8 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 14:01:55 +0900 Subject: [PATCH 022/162] delete no use --- frontend/src/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/frontend/src/index.js b/frontend/src/index.js index 0c5e75d..ef1ddc3 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -1,12 +1,8 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import './index.css'; import App from './App'; import * as serviceWorker from './serviceWorker'; ReactDOM.render(, document.getElementById('root')); -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: http://bit.ly/CRA-PWA serviceWorker.unregister(); From 404f0027dc6836b503a31f4661f3f17a6c719e35 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 14:38:58 +0900 Subject: [PATCH 023/162] `yarn add react-google-maps` --- frontend/package.json | 1 + frontend/yarn.lock | 58 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 76ff2fa..12a15fd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,6 +7,7 @@ "dotenv": "^6.1.0", "react": "^16.6.0", "react-dom": "^16.6.0", + "react-google-maps": "^9.4.5", "react-router-dom": "^4.3.1", "react-scripts": "2.1.1" }, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 67ddcf1..c27ce4b 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1619,7 +1619,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.11.6, 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= @@ -2038,6 +2038,11 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== +can-use-dom@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" + integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo= + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -4178,6 +4183,11 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +google-maps-infobox@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/google-maps-infobox/-/google-maps-infobox-2.0.0.tgz#1ea6de93c0cdf4138c2d586331835c83dcc59dc2" + integrity sha512-hTuWmWZZSOxf5D/z7l3/hTF1grgRvLG53BEKMdjiKOG+FcK/kH7vqseUeyIU9Zj2ZIqKTOaro0nknxpAuRq4Vw== + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -5959,7 +5969,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: +"lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -6027,6 +6037,16 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +marker-clusterer-plus@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/marker-clusterer-plus/-/marker-clusterer-plus-2.1.4.tgz#f8eff74d599dab3b7d0e3fed5264ea0e704f5d67" + integrity sha1-+O/3TVmdqzt9Dj/tUmTqDnBPXWc= + +markerwithlabel@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/markerwithlabel/-/markerwithlabel-2.0.2.tgz#fa6aee4abb0ee553e24e2b708226858f58b8729e" + integrity sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg== + math-random@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" @@ -7764,7 +7784,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7993,6 +8013,23 @@ react-event-listener@^0.6.2: prop-types "^15.6.0" warning "^4.0.1" +react-google-maps@^9.4.5: + version "9.4.5" + resolved "https://registry.yarnpkg.com/react-google-maps/-/react-google-maps-9.4.5.tgz#920c199bdc925e0ce93880edffb09428d263aafa" + integrity sha512-8z5nX9DxIcBCXuEiurmRT1VXVwnzx0C6+3Es6lxB2/OyY2SLax2/LcDu6Aldxnl3HegefTL7NJzGeaKAJ61pOA== + dependencies: + babel-runtime "^6.11.6" + can-use-dom "^0.1.0" + google-maps-infobox "^2.0.0" + invariant "^2.2.1" + lodash "^4.16.2" + marker-clusterer-plus "^2.1.4" + markerwithlabel "^2.0.1" + prop-types "^15.5.8" + recompose "^0.26.0" + scriptjs "^2.5.8" + warning "^3.0.0" + react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -8183,6 +8220,16 @@ realpath-native@^1.0.0: react-lifecycles-compat "^3.0.2" symbol-observable "^1.0.4" +recompose@^0.26.0: + version "0.26.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.26.0.tgz#9babff039cb72ba5bd17366d55d7232fbdfb2d30" + integrity sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog== + dependencies: + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + symbol-observable "^1.0.4" + recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" @@ -8585,6 +8632,11 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +scriptjs@^2.5.8: + version "2.5.9" + resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f" + integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" From 24f812b0a546f4adf59670a78a5c6364a8c0ab07 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 15:12:26 +0900 Subject: [PATCH 024/162] fix broken on QA --- Makefile | 2 +- Pipfile | 2 ++ Pipfile.lock | 11 ++++++++++- docker-compose.yml | 3 +-- env_files/conf_qa/mizql.conf | 14 +++++--------- mizql/mizql/settings.py | 5 ++++- mizql/mizql/urls.py | 4 ++-- 7 files changed, 25 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 18c3685..2f7e589 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ deps: image: $(SRCS) $(DOCKERFILE) $(eval VERSION := $(shell git describe --tags || echo "v0.0.0")) $(eval REVISION:= $(shell git rev-parse --short HEAD || echo "None")) - docker build . -t studioaquatan/plannap-api:latest + docker build . -t studioaquatan/$(NAME):latest pull: docker pull studioaquatan/plannap-api:latest diff --git a/Pipfile b/Pipfile index dba7496..f596508 100644 --- a/Pipfile +++ b/Pipfile @@ -12,6 +12,8 @@ django-filter = "*" django-rest-swagger = "*" python-dotenv = "*" mysqlclient = "*" +gunicorn = "*" +requests = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index e2d98a1..65fb67d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9fc4699a582f3e51872290302da64d335de59328a0d9d6d359576ac99acf95a1" + "sha256": "e1443e696384030e59e3d25b51d75358567d0a5c0d51ec822860bbe3805a5588" }, "pipfile-spec": 6, "requires": { @@ -99,6 +99,14 @@ "index": "pypi", "version": "==1.3.1" }, + "gunicorn": { + "hashes": [ + "sha256:aa8e0b40b4157b36a5df5e599f45c9c76d6af43845ba3b3b0efe2c70473c2471", + "sha256:fa2662097c66f920f53f70621c6c58ca4a3c4d3434205e608e121b5b3b71f4f3" + ], + "index": "pypi", + "version": "==19.9.0" + }, "idna": { "hashes": [ "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e", @@ -165,6 +173,7 @@ "sha256:99dcfdaaeb17caf6e526f32b6a7b780461512ab3f1d992187801694cba42770c", "sha256:a84b8c9ab6239b578f22d1c21d51b696dcfe004032bb80ea832398d6909d7279" ], + "index": "pypi", "version": "==2.20.0" }, "simplejson": { diff --git a/docker-compose.yml b/docker-compose.yml index 8ba8668..8cd4eea 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,8 +32,7 @@ services: - env_files/static.env volumes: - ./env_files/conf_qa:/etc/nginx/conf.d - - ./src/static:/usr/share/www/html/static - - ./src/media:/usr/share/www/html/media + - ./mizql/static:/usr/share/www/html/static depends_on: - webapp ports: diff --git a/env_files/conf_qa/mizql.conf b/env_files/conf_qa/mizql.conf index 50035ed..585db4d 100644 --- a/env_files/conf_qa/mizql.conf +++ b/env_files/conf_qa/mizql.conf @@ -9,22 +9,18 @@ server { server_tokens off; client_max_body_size 50M; - location /static/ { + location /api/static/ { alias /usr/share/www/html/static/; } - location /media/ { - alias /usr/share/www/html/media/; - } - - location / { + location /api/ { + rewrite ^/api/(.*)$ $1 break; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; - proxy_set_header Connection ""; - proxy_set_header SCRIPT_NAME ""; - proxy_pass http://app; + proxy_set_header X-Script-Name /api; + proxy_pass http://app/$uri$is_args$args; } } \ No newline at end of file diff --git a/mizql/mizql/settings.py b/mizql/mizql/settings.py index 0fceed5..aaaa55f 100644 --- a/mizql/mizql/settings.py +++ b/mizql/mizql/settings.py @@ -146,7 +146,7 @@ # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.1/howto/static-files/ -STATIC_URL = '/static/' +STATIC_URL = '/api/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') DJOSER = { @@ -173,4 +173,7 @@ 'JWT_VERIFY_EXPIRATION': False } +if not DEBUG: + FORCE_SCRIPT_NAME = '/api' + YOLP_APP_ID = os.getenv('YOLP_APP_ID') diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index 089bf6f..36bf9aa 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -26,7 +26,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('_/', include('accounts.urls')), - path('api/', include(router.urls)), - path('api/auth/', include('djoser.urls.jwt')), + path('', include(router.urls)), + path('auth/', include('djoser.urls.jwt')), path('swagger/', get_swagger_view(title='mizql API Doc')), ] From 8cc55485de32b50ab46eeeab3911e4e77ab69a88 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 15:21:14 +0900 Subject: [PATCH 025/162] get position --- frontend/src/components/Home.js | 33 ++++++++++++++++++++++++++++++++ frontend/src/modules/location.js | 12 ++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 frontend/src/modules/location.js diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 51e48b1..e77c276 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -3,8 +3,32 @@ import AppBar from '@material-ui/core/AppBar'; import Button from '@material-ui/core/Button'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; +import {GetPosition} from '../modules/location'; export default class Home extends Component { + constructor(props) { + super(props); + this.state = { + location: null, + canUseGeolocation: null, + }; + } + + componentDidMount() { + console.log("get location"); + GetPosition().then((value) => { + console.log(value); + this.setState({ + location: { + lat: value.lat, + lng: value.lng, + } + }); + }).catch((error) => { + console.error(error); + }); + } + render() { return ( @@ -16,6 +40,15 @@ export default class Home extends Component { + {this.state.location ? +
+

緯度 : {this.state.location.lat}

+

軽度 : {this.state.location.lng}

+
: + this.state.canUseGeolocation ? +

GPSを使用できません

: +

現在地取得中です...

+ }
) } diff --git a/frontend/src/modules/location.js b/frontend/src/modules/location.js new file mode 100644 index 0000000..d063025 --- /dev/null +++ b/frontend/src/modules/location.js @@ -0,0 +1,12 @@ +export const GetPosition = () => { + return new Promise((resolve, reject) => { + if(!navigator.geolocation) { + reject("このブラウザは現在地の取得に対応していません:("); + } + + navigator.geolocation.getCurrentPosition(position => resolve({ + lat: position.coords.latitude, + lng: position.coords.longitude, + }), e => reject(`エラー(${e.code}): ${e.message}`)); + }); +}; From d3cdf0b1c41943f7def00cec70eb76ad3fee15d8 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 15:42:00 +0900 Subject: [PATCH 026/162] add shelters endpoint --- mizql/evacuation/models.py | 61 ++++++++++++++++++++------------- mizql/evacuation/serializers.py | 16 +++++++++ mizql/evacuation/views.py | 39 +++++++++++++++++++-- mizql/mizql/urls.py | 4 ++- 4 files changed, 94 insertions(+), 26 deletions(-) diff --git a/mizql/evacuation/models.py b/mizql/evacuation/models.py index fd8c4eb..938dee3 100644 --- a/mizql/evacuation/models.py +++ b/mizql/evacuation/models.py @@ -2,31 +2,16 @@ from django.db.models.expressions import RawSQL -class Shelter(models.Model): - """ - 避難所のモデル - """ - - name = models.CharField(verbose_name='名前', max_length=255) - address = models.CharField(verbose_name='住所', max_length=255) - lat = models.FloatField(verbose_name='緯度') - lon = models.FloatField(verbose_name='経度') +class NearbyShelterManager(models.Manager): - class Meta: - unique_together = ('lat', 'lon') - ordering = ['name'] - - @classmethod - def get_nearby_shelters_list(cls, lat: float, lon: float, distance: int): + def with_distance(self, lat: float, lon: float): """ - 自身の緯度経度から範囲を指定して避難所の情報一覧を取得する - :param lat: 自身の緯度 - :param lon: 自身の経度 - :param distance: 取得する半径(メートル) - :return: queryset + Shelterクエリセットに対してdistanceカラムを追加する + :param lat: + :param lon: + :return: """ - # キロメートルに変換 - distance = distance / 1000 + raw_queryset = self.get_queryset() # 距離を計算するクエリ query = """ 6371 * acos( @@ -35,6 +20,36 @@ def get_nearby_shelters_list(cls, lat: float, lon: float, distance: int): ) """ # 計算したdistanceフィールドをannotate - queryset = cls.objects.annotate(distance=RawSQL(query, (lat, lon, lat))) + queryset = raw_queryset.annotate(distance=RawSQL(query, (lat, lon, lat))) + return queryset + + def get_nearby_shelters_list(self, lat: float, lon: float, distance: int): + """ + 自身の緯度経度から範囲を指定して避難所の情報一覧を取得する + :param lat: 自身の緯度 + :param lon: 自身の経度 + :param distance: 取得する半径(メートル) + :return: queryset + """ + queryset = self.with_distance(lat, lon) + # キロメートルに変換 + distance = distance / 1000 # distanceの内容でフィルタ return queryset.filter(distance__lte=distance) + + +class Shelter(models.Model): + """ + 避難所のモデル + """ + + name = models.CharField(verbose_name='名前', max_length=255) + address = models.CharField(verbose_name='住所', max_length=255) + lat = models.FloatField(verbose_name='緯度') + lon = models.FloatField(verbose_name='経度') + + objects = NearbyShelterManager() + + class Meta: + unique_together = ('lat', 'lon') + ordering = ['name'] diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index 23081cb..0696df1 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -1,7 +1,23 @@ from rest_framework import serializers +from .models import Shelter + + +def round_distance(distance: float, digit: int=-1) -> int: + """ + 10の位で丸める + """ + p = 10 ** digit + return (distance * p * 2 + 1) // 2 / p class ShelterSerializer(serializers.ModelSerializer): class Meta: + model = Shelter fields = ('name', 'address', 'lat', 'lon') + + def to_representation(self, instance): + data = super(ShelterSerializer, self).to_representation(instance) + dist_key = 'distance' + data[dist_key] = round_distance(getattr(instance, dist_key, 0.0) * 1000) + return data diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index 018eeac..35ad1ae 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -1,10 +1,45 @@ -from rest_framework import viewsets, permissions +import coreapi +import coreschema +from rest_framework import viewsets, permissions, schemas from .models import Shelter from .serializers import ShelterSerializer class ShelterViewSets(viewsets.ReadOnlyModelViewSet): - queryset = Shelter.objects.all() permission_classes = (permissions.IsAuthenticated,) serializer_class = ShelterSerializer + schema = schemas.AutoSchema( + manual_fields=[ + coreapi.Field( + 'lat', + required=True, + location='query', + schema=coreschema.String(description='latitude'), + ), + coreapi.Field( + 'lon', + required=True, + location='query', + schema=coreschema.String(description='longitude'), + ), + coreapi.Field( + 'distance', + required=True, + location='query', + schema=coreschema.Integer(description='radius'), + ), + ] + ) + + def get_queryset(self): + params = self.request.query_params + distance = int(params.get('distance', '1000')) + lat = params.get('lat', None) + lon = params.get('lon', None) + if lat and lon: + lat = float(lat) + lon = float(lon) + return Shelter.objects.get_nearby_shelters_list(lat, lon, distance)\ + .order_by('distance').all() + return Shelter.objects.all() diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index 36bf9aa..12e3a76 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -19,9 +19,11 @@ from rest_framework_swagger.views import get_swagger_view from accounts.views import UserViewSets +from evacuation.views import ShelterViewSets router = DefaultRouter() -router.register(r'users', UserViewSets, base_name='users') +router.register(r'users', UserViewSets, basename='users') +router.register(r'shelters', ShelterViewSets, basename='shelters') urlpatterns = [ path('admin/', admin.site.urls), From a5984dbcc410f4a9519a78d1439baf4c501a57c5 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 15:55:10 +0900 Subject: [PATCH 027/162] `yarn add react-google-maps-loader` --- frontend/package.json | 1 + frontend/yarn.lock | 81 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 79 insertions(+), 3 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 12a15fd..7ed3994 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,6 +8,7 @@ "react": "^16.6.0", "react-dom": "^16.6.0", "react-google-maps": "^9.4.5", + "react-google-maps-loader": "^4.2.3", "react-router-dom": "^4.3.1", "react-scripts": "2.1.1" }, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index c27ce4b..f82dd0b 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1929,6 +1929,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.0.3: + version "5.2.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -2537,6 +2545,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -2602,6 +2615,15 @@ css-selector-tokenizer@^0.7.0: fastparse "^1.1.1" regexpu-core "^1.0.0" +css-to-react-native@^2.0.3: + version "2.2.2" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.2.2.tgz#c077d0f7bf3e6c915a539e7325821c9dd01f9965" + integrity sha512-w99Fzop1FO8XKm0VpbQp3y5mnTnaS+rtCvS+ylSEOK76YXO5zoHQx/QMB1N54Cp+Ya9jB9922EHrh14ld4xmmw== + dependencies: + css-color-keywords "^1.0.0" + fbjs "^0.8.5" + postcss-value-parser "^3.3.0" + css-tree@1.0.0-alpha.28: version "1.0.0-alpha.28" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" @@ -3729,7 +3751,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.1: +fbjs@^0.8.1, fbjs@^0.8.5, fbjs@^0.8.9: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -4399,6 +4421,11 @@ hoek@4.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== +hoist-non-react-statics@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + integrity sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs= + hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" @@ -5860,6 +5887,11 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +little-loader@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/little-loader/-/little-loader-0.1.1.tgz#516207701524e795feafa8e64cfc6881af39503f" + integrity sha1-UWIHcBUk55X+r6jmTPxoga85UD8= + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -7784,7 +7816,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7877,6 +7909,15 @@ qs@6.5.2, qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -8013,6 +8054,16 @@ react-event-listener@^0.6.2: prop-types "^15.6.0" warning "^4.0.1" +react-google-maps-loader@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/react-google-maps-loader/-/react-google-maps-loader-4.2.3.tgz#cec58bce81399d433d68f0f6a82617c62957ffef" + integrity sha512-qW+W6r7iMrw1ptYeLIHFjxa11f2j01aI8hms39A5yuzMBiyPVaOTtpjZKr+kdvqwxDtAoU99c5rJU51Bq8Pk9w== + dependencies: + little-loader "~0.1.0" + prop-types "^15.6.0" + query-string "^5.0.1" + styled-components "^2.1.2" + react-google-maps@^9.4.5: version "9.4.5" resolved "https://registry.yarnpkg.com/react-google-maps/-/react-google-maps-9.4.5.tgz#920c199bdc925e0ce93880edffb09428d263aafa" @@ -9072,6 +9123,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -9170,6 +9226,20 @@ style-loader@0.23.0: loader-utils "^1.1.0" schema-utils "^0.4.5" +styled-components@^2.1.2: + version "2.4.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.4.1.tgz#663bd0485d4b6ab46f946210dc03d2398d1ade74" + integrity sha1-ZjvQSF1LarRvlGIQ3APSOY0a3nQ= + dependencies: + buffer "^5.0.3" + css-to-react-native "^2.0.3" + fbjs "^0.8.9" + hoist-non-react-statics "^1.2.0" + is-plain-object "^2.0.1" + prop-types "^15.5.4" + stylis "^3.4.0" + supports-color "^3.2.3" + stylehacks@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" @@ -9179,12 +9249,17 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +stylis@^3.4.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.3.tgz#99fdc46afba6af4deff570825994181a5e6ce546" + integrity sha512-TxU0aAscJghF9I3V9q601xcK3Uw1JbXvpsBGj/HULqexKOKlOEzzlIpLFRbKkCK990ccuxfXUqmPbIIo7Fq/cQ== + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.1.2: +supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= From 12c1c80a64e2da51a567eff453efc1dec91d500a Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 16:25:30 +0900 Subject: [PATCH 028/162] `yarn add recompose` --- frontend/package.json | 3 ++- frontend/yarn.lock | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 7ed3994..13391ad 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,7 +10,8 @@ "react-google-maps": "^9.4.5", "react-google-maps-loader": "^4.2.3", "react-router-dom": "^4.3.1", - "react-scripts": "2.1.1" + "react-scripts": "2.1.1", + "recompose": "^0.30.0" }, "scripts": { "start": "react-scripts start", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index f82dd0b..f5566b7 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -8259,7 +8259,7 @@ realpath-native@^1.0.0: dependencies: util.promisify "^1.0.0" -"recompose@0.28.0 - 0.30.0": +"recompose@0.28.0 - 0.30.0", recompose@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== From e832d159c2907726ff153aec2abfdf62381c7f52 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 17:49:57 +0900 Subject: [PATCH 029/162] env file --- frontend/.env.sample | 1 + frontend/.gitignore | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 frontend/.env.sample diff --git a/frontend/.env.sample b/frontend/.env.sample new file mode 100644 index 0000000..cbd2d73 --- /dev/null +++ b/frontend/.env.sample @@ -0,0 +1 @@ +REACT_APP_GOOGLE_MAP= \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore index 4d29575..1bb33fd 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -21,3 +21,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +.env.development +.env.production From 1f3014da5793555aa562cd55a40caef38cd4950f Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 17:51:26 +0900 Subject: [PATCH 030/162] google map --- frontend/src/components/Home.js | 12 +++++------- frontend/src/components/Login.js | 2 +- frontend/src/components/Map.js | 21 +++++++++++++++++++++ frontend/src/index.js | 1 - 4 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 frontend/src/components/Map.js diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index e77c276..dcd6cac 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -4,6 +4,7 @@ import Button from '@material-ui/core/Button'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import {GetPosition} from '../modules/location'; +import {MapComponent} from "./Map"; export default class Home extends Component { constructor(props) { @@ -15,9 +16,7 @@ export default class Home extends Component { } componentDidMount() { - console.log("get location"); GetPosition().then((value) => { - console.log(value); this.setState({ location: { lat: value.lat, @@ -32,7 +31,7 @@ export default class Home extends Component { render() { return ( - + Mizukuru Map @@ -41,10 +40,9 @@ export default class Home extends Component { {this.state.location ? -
-

緯度 : {this.state.location.lat}

-

軽度 : {this.state.location.lng}

-
: + : this.state.canUseGeolocation ?

GPSを使用できません

:

現在地取得中です...

diff --git a/frontend/src/components/Login.js b/frontend/src/components/Login.js index 87f3041..965f9d2 100644 --- a/frontend/src/components/Login.js +++ b/frontend/src/components/Login.js @@ -28,7 +28,7 @@ export default class Login extends Component { render() { return ( - + Mizukuru Map diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js new file mode 100644 index 0000000..8b7ce96 --- /dev/null +++ b/frontend/src/components/Map.js @@ -0,0 +1,21 @@ +import React from 'react'; +import {compose, withProps} from 'recompose'; +import {GoogleMap, Marker, withGoogleMap, withScriptjs} from 'react-google-maps'; + +export const MapComponent = compose( + withProps({ + googleMapURL: `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=${process.env.REACT_APP_GOOGLE_MAP}`, + loadingElement:
, + containerElement:
, + mapElement:
, + }), + withScriptjs, + withGoogleMap +)((props) => ( + + + +)); diff --git a/frontend/src/index.js b/frontend/src/index.js index ef1ddc3..e1a9667 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -2,7 +2,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import * as serviceWorker from './serviceWorker'; - ReactDOM.render(, document.getElementById('root')); serviceWorker.unregister(); From bdf667412f10d670f9a7b7adbe545c097e0771b5 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 18:32:21 +0900 Subject: [PATCH 031/162] marker --- frontend/src/components/Map.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index 8b7ce96..6382981 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -1,6 +1,7 @@ import React from 'react'; import {compose, withProps} from 'recompose'; import {GoogleMap, Marker, withGoogleMap, withScriptjs} from 'react-google-maps'; +import {MarkerWithLabel} from 'react-google-maps/lib/components/addons/MarkerWithLabel'; export const MapComponent = compose( withProps({ @@ -17,5 +18,13 @@ export const MapComponent = compose( defaultCenter={props.myPosition} > + {props.shelters.map((shelter, key) => ( + console.log(shelter.name)} + /> + ))} )); From 7339f16f8b10af77df1b8721964d97eb3de766a2 Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 20:03:37 +0900 Subject: [PATCH 032/162] remove no use module --- frontend/package.json | 2 - frontend/yarn.lock | 86 ++----------------------------------------- 2 files changed, 3 insertions(+), 85 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 13391ad..7cf620c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,11 +4,9 @@ "private": true, "dependencies": { "@material-ui/core": "^3.3.2", - "dotenv": "^6.1.0", "react": "^16.6.0", "react-dom": "^16.6.0", "react-google-maps": "^9.4.5", - "react-google-maps-loader": "^4.2.3", "react-router-dom": "^4.3.1", "react-scripts": "2.1.1", "recompose": "^0.30.0" diff --git a/frontend/yarn.lock b/frontend/yarn.lock index f5566b7..2a32b44 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1929,14 +1929,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.3: - version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -2545,11 +2537,6 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= - css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -2615,15 +2602,6 @@ css-selector-tokenizer@^0.7.0: fastparse "^1.1.1" regexpu-core "^1.0.0" -css-to-react-native@^2.0.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.2.2.tgz#c077d0f7bf3e6c915a539e7325821c9dd01f9965" - integrity sha512-w99Fzop1FO8XKm0VpbQp3y5mnTnaS+rtCvS+ylSEOK76YXO5zoHQx/QMB1N54Cp+Ya9jB9922EHrh14ld4xmmw== - dependencies: - css-color-keywords "^1.0.0" - fbjs "^0.8.5" - postcss-value-parser "^3.3.0" - css-tree@1.0.0-alpha.28: version "1.0.0-alpha.28" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" @@ -3138,11 +3116,6 @@ dotenv@6.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935" integrity sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg== -dotenv@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz#9853b6ca98292acb7dec67a95018fa40bccff42c" - integrity sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw== - duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -3751,7 +3724,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.1, fbjs@^0.8.5, fbjs@^0.8.9: +fbjs@^0.8.1: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -4421,11 +4394,6 @@ hoek@4.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== -hoist-non-react-statics@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" - integrity sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs= - hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" @@ -5887,11 +5855,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -little-loader@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/little-loader/-/little-loader-0.1.1.tgz#516207701524e795feafa8e64cfc6881af39503f" - integrity sha1-UWIHcBUk55X+r6jmTPxoga85UD8= - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -7816,7 +7779,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7909,15 +7872,6 @@ qs@6.5.2, qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -8054,16 +8008,6 @@ react-event-listener@^0.6.2: prop-types "^15.6.0" warning "^4.0.1" -react-google-maps-loader@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/react-google-maps-loader/-/react-google-maps-loader-4.2.3.tgz#cec58bce81399d433d68f0f6a82617c62957ffef" - integrity sha512-qW+W6r7iMrw1ptYeLIHFjxa11f2j01aI8hms39A5yuzMBiyPVaOTtpjZKr+kdvqwxDtAoU99c5rJU51Bq8Pk9w== - dependencies: - little-loader "~0.1.0" - prop-types "^15.6.0" - query-string "^5.0.1" - styled-components "^2.1.2" - react-google-maps@^9.4.5: version "9.4.5" resolved "https://registry.yarnpkg.com/react-google-maps/-/react-google-maps-9.4.5.tgz#920c199bdc925e0ce93880edffb09428d263aafa" @@ -9123,11 +9067,6 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -9226,20 +9165,6 @@ style-loader@0.23.0: loader-utils "^1.1.0" schema-utils "^0.4.5" -styled-components@^2.1.2: - version "2.4.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.4.1.tgz#663bd0485d4b6ab46f946210dc03d2398d1ade74" - integrity sha1-ZjvQSF1LarRvlGIQ3APSOY0a3nQ= - dependencies: - buffer "^5.0.3" - css-to-react-native "^2.0.3" - fbjs "^0.8.9" - hoist-non-react-statics "^1.2.0" - is-plain-object "^2.0.1" - prop-types "^15.5.4" - stylis "^3.4.0" - supports-color "^3.2.3" - stylehacks@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" @@ -9249,17 +9174,12 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylis@^3.4.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.3.tgz#99fdc46afba6af4deff570825994181a5e6ce546" - integrity sha512-TxU0aAscJghF9I3V9q601xcK3Uw1JbXvpsBGj/HULqexKOKlOEzzlIpLFRbKkCK990ccuxfXUqmPbIIo7Fq/cQ== - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.1.2, supports-color@^3.2.3: +supports-color@^3.1.2: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= From 2d4519c34e39de78f8211318940ad73ef009e83a Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 20:21:20 +0900 Subject: [PATCH 033/162] documents --- frontend/README.md | 24 +++++++++++++++++++++++- frontend/src/components/Map.js | 18 ++++++++++-------- frontend/src/index.js | 3 ++- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/frontend/README.md b/frontend/README.md index 2695776..1d66944 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,17 +1,39 @@ ## Mizql UI ### Environment +install `node_modules` ```bash yarn install ``` +cp env files +```bash +cp .env.sample .env.development +cp .env.sample .env.production +``` + +and, set params. + ### Build ```bash yarn build ``` ### Run +#### Development mode ```bash yarn start ``` -access `http://localhost:3000` \ No newline at end of file + +#### Production mode +install http-server +```bash +npm install -g http-server +``` + +build & run +```bash +yarn build +cd build +hs +``` \ No newline at end of file diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index 6382981..27bf1a7 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -18,13 +18,15 @@ export const MapComponent = compose( defaultCenter={props.myPosition} > - {props.shelters.map((shelter, key) => ( - console.log(shelter.name)} - /> - ))} + {props.shelters ? + props.shelters.map((shelter, key) => ( + console.log(shelter.name)} + /> + )) : null + } )); diff --git a/frontend/src/index.js b/frontend/src/index.js index e1a9667..a9fb9ed 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -2,6 +2,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import * as serviceWorker from './serviceWorker'; -ReactDOM.render(, document.getElementById('root')); + +ReactDOM.render(, document.getElementById('root')); serviceWorker.unregister(); From 2ec2df73339f39f591b73a7e090580f4975de303 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 20:43:56 +0900 Subject: [PATCH 034/162] dockernize front --- Dockerfile.front | 14 ++++++++++++++ Makefile | 7 ++++++- docker-compose.yml | 2 +- env_files/conf_qa/mizql.conf | 4 ++++ 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 Dockerfile.front diff --git a/Dockerfile.front b/Dockerfile.front new file mode 100644 index 0000000..70a8899 --- /dev/null +++ b/Dockerfile.front @@ -0,0 +1,14 @@ +FROM node:11.1.0-alpine as builder + +ENV PROJECT_DIR /opt/mizql + +ADD ./frontend ${PROJECT_DIR} + +WORKDIR ${PROJECT_DIR} + +RUN yarn install && \ + yarn build + +FROM nginx:latest + +COPY --from=builder /opt/mizql/build/ /usr/share/www/html/front \ No newline at end of file diff --git a/Makefile b/Makefile index 2f7e589..90d95d9 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ SHELL := /bin/bash NAME := mizql SRCS := $(shell find ./mizql -type f \( -name '*.css' -o -name '*.py' -o -name '*.html' -o -name '*.js' \) -print) +FRONT_SRCS := $(shell find ./frontend -type f \( -name '*.css' -o -name '*.html' -o -name '*.js' \) -print) DOCKERFILE := Dockerfile DB_USER := develop DB_PASSWORD := password @@ -29,13 +30,17 @@ deps: echo "'$(DB_IMAGE):$(DB_IMAGE_VERSION)' has already been pulled."; \ fi +frontimage: $(FRONT_SRCS) + docker build . -t studioaquatan/$(NAME)-front:latest -f Dockerfile.front + image: $(SRCS) $(DOCKERFILE) $(eval VERSION := $(shell git describe --tags || echo "v0.0.0")) $(eval REVISION:= $(shell git rev-parse --short HEAD || echo "None")) docker build . -t studioaquatan/$(NAME):latest pull: - docker pull studioaquatan/plannap-api:latest + docker pull studioaquatan/$(NAME):latest + docker pull studioaquatan/$(NAME)-front:latest rundb: $(eval RUNNING := $(shell docker ps -q -f name=$(DEV_DB_CONTAINER))) diff --git a/docker-compose.yml b/docker-compose.yml index 8cd4eea..f4e51fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,7 +26,7 @@ services: aliases: - mizql-db nginx: - image: nginx:latest + image: studioaquatan/mizql-front:latest container_name: mizql-nginx-qa env_file: - env_files/static.env diff --git a/env_files/conf_qa/mizql.conf b/env_files/conf_qa/mizql.conf index 585db4d..35f7582 100644 --- a/env_files/conf_qa/mizql.conf +++ b/env_files/conf_qa/mizql.conf @@ -23,4 +23,8 @@ server { proxy_set_header X-Script-Name /api; proxy_pass http://app/$uri$is_args$args; } + + location / { + alias /usr/share/www/html/front/; + } } \ No newline at end of file From 6e3bb3cc5c967212cb8b8f50d270f5b2b6db01f3 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 21:09:52 +0900 Subject: [PATCH 035/162] return index.html if specified path is not found --- env_files/conf_qa/mizql.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/env_files/conf_qa/mizql.conf b/env_files/conf_qa/mizql.conf index 35f7582..a6caae0 100644 --- a/env_files/conf_qa/mizql.conf +++ b/env_files/conf_qa/mizql.conf @@ -25,6 +25,7 @@ server { } location / { + try_files $uri /index.html; alias /usr/share/www/html/front/; } } \ No newline at end of file From 3fb73a9cd681fd8c771790b0a5b39bc5673d0b81 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 21:18:08 +0900 Subject: [PATCH 036/162] update README --- README.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/README.md b/README.md index 7945b20..0209772 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,73 @@ 大雨洪水等の災害における逃げ遅れ防止アプリ +## Development + +envファイルを用意する + +```bash +$ cp frontend/.env.sample frontend/.env.production +$ cp env_files/app.env.sample env_files/app.env +$ cp env_files/db.env.sample env_files/db.env +$ cp env_files/static.env.sample env_files/static.env +``` + +DBコンテナを起動する + +```bash +$ make rundb +``` + +イメージをビルドする. + +```bash +# バックエンド +$ make image +# フロントエンド +$ make frontimage +``` + +#### Q. 毎回イメージのビルドしたくないんだけど? + +根本的な解決方法はない.ワークアラウンドを紹介する. +`docker-compose.yml` を編集してコンテナに直接build結果のディレクトリをマウントする. + +```yaml +version: "3" + +services: + # 省略 + nginx: + image: studioaquatan/mizql-front:latest + container_name: mizql-nginx-qa + env_file: + - env_files/static.env + volumes: + - ./env_files/conf_qa:/etc/nginx/conf.d + - ./mizql/static:/usr/share/www/html/static + # ビルド結果をマウント + - ./frontend/build:/usr/share/www/html/front + depends_on: + - webapp + ports: + - 8800:80 +``` + +## QA + +```bash +# スタート +$ make qa-start +# ストップ +$ make qa-stop +# DBをデリート +$ make qa-clean +# マイグレーション +$ make qa-manage ARGS=migrate +# スーパユーザを作成 +$ make qa-manage ARGS=createsuperuser +``` + ## Author - pudding From 5cb4e4bee41c5d49f61970f116adb655e79463ab Mon Sep 17 00:00:00 2001 From: taxio Date: Sun, 4 Nov 2018 22:27:20 +0900 Subject: [PATCH 037/162] add `build-dev` --- frontend/README.md | 5 +++++ frontend/package.json | 2 ++ frontend/yarn.lock | 24 +++++++++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/frontend/README.md b/frontend/README.md index 1d66944..5c5515d 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -25,6 +25,11 @@ yarn build yarn start ``` +Build importing `.env.development` as production mode +```bash +yarn build-dev +``` + #### Production mode install http-server ```bash diff --git a/frontend/package.json b/frontend/package.json index 7cf620c..faac39a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "@material-ui/core": "^3.3.2", + "dotenv-cli": "^1.4.0", "react": "^16.6.0", "react-dom": "^16.6.0", "react-google-maps": "^9.4.5", @@ -14,6 +15,7 @@ "scripts": { "start": "react-scripts start", "build": "react-scripts build", + "build-dev": "dotenv -e .env.development react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 2a32b44..815dcdf 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2511,6 +2511,14 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -3106,6 +3114,15 @@ dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" +dotenv-cli@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/dotenv-cli/-/dotenv-cli-1.4.0.tgz#e8e80830ed88b48a03b5eb7ec26147ca717f7409" + integrity sha1-6OgIMO2ItIoDtet+wmFHynF/dAk= + dependencies: + cross-spawn "^4.0.0" + dotenv "^4.0.0" + minimist "^1.1.3" + dotenv-expand@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" @@ -3116,6 +3133,11 @@ dotenv@6.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935" integrity sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg== +dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0= + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -6230,7 +6252,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.1, minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= From 037525463a1aeb4b7aaa55a68a5367f6336d8386 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 22:36:06 +0900 Subject: [PATCH 038/162] make docker-compose.yml as QA env --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f4e51fe..1025d62 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,13 +26,14 @@ services: aliases: - mizql-db nginx: - image: studioaquatan/mizql-front:latest + image: nginx:latest container_name: mizql-nginx-qa env_file: - env_files/static.env volumes: - ./env_files/conf_qa:/etc/nginx/conf.d - ./mizql/static:/usr/share/www/html/static + - ./frontend/build:/usr/share/www/html/front depends_on: - webapp ports: From 2268ac9e95a0d012d30fde40f3cd2e1dd9cf7d61 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 22:37:25 +0900 Subject: [PATCH 039/162] move Dockerfile.front into frontend dir --- Makefile | 2 +- Dockerfile.front => frontend/Dockerfile | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename Dockerfile.front => frontend/Dockerfile (100%) diff --git a/Makefile b/Makefile index 90d95d9..68bdc27 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ deps: fi frontimage: $(FRONT_SRCS) - docker build . -t studioaquatan/$(NAME)-front:latest -f Dockerfile.front + docker build . -t studioaquatan/$(NAME)-front:latest -f frontend/Dockerfile image: $(SRCS) $(DOCKERFILE) $(eval VERSION := $(shell git describe --tags || echo "v0.0.0")) diff --git a/Dockerfile.front b/frontend/Dockerfile similarity index 100% rename from Dockerfile.front rename to frontend/Dockerfile From 86874313ac53eeb56ef4cf27f6da9861b7745bac Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 22:43:29 +0900 Subject: [PATCH 040/162] add manifest for production --- Makefile | 3 +++ docker-compose.prod.yml | 45 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 docker-compose.prod.yml diff --git a/Makefile b/Makefile index 68bdc27..7c15ae3 100644 --- a/Makefile +++ b/Makefile @@ -92,4 +92,7 @@ prod-start: prod-manage: docker-compose -f docker-compose.prod.yml exec webapp pipenv run python manage.py $(ARGS) +prod-stop: + docker-compose -f docker-compose.prod.yml stop + .PHONY: deps image rundb stopdb cleandb qa-start qa-stop qa-manage qa-clean ; diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..d84deff --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,45 @@ +version: "3" + +services: + webapp: + container_name: mizql-app-prod + image: studioaquatan/mizql:latest + env_file: + - env_files/app.env + expose: + - 8000 + depends_on: + - db + networks: + default: + aliases: + - mizql-app + db: + image: studioaquatan/mysql-utf8mb4:latest + container_name: mizql-db-prod + env_file: + - env_files/db.env + volumes: + - ./env_files/data:/var/lib/mysql:rw + networks: + default: + aliases: + - mizql-db + nginx: + image: studioaquatan/mizql-front:latest + container_name: mizql-nginx-prod + env_file: + - env_files/static.env + volumes: + - ./env_files/conf_qa:/etc/nginx/conf.d + - ./mizql/static:/usr/share/www/html/static + depends_on: + - webapp + networks: + - default + - shared + +networks: + shared: + external: + name: internal_shared \ No newline at end of file From 024d5e36e12d4b2a16f2d61c53a25e22c3e3dab8 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 22:48:25 +0900 Subject: [PATCH 041/162] add nginx conf for production --- env_files/conf_prod/mizql.conf | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 env_files/conf_prod/mizql.conf diff --git a/env_files/conf_prod/mizql.conf b/env_files/conf_prod/mizql.conf new file mode 100644 index 0000000..e0efe5e --- /dev/null +++ b/env_files/conf_prod/mizql.conf @@ -0,0 +1,35 @@ +upstream app { + server mizql-app:8000; + keepalive 128; +} + +server { + listen 80; + server_name mizql.aquatan.studio default_server; + server_tokens off; + client_max_body_size 50M; + + if ($http_x_forwarded_proto != https) { + return 301 https://$host$request_uri; + } + + location /api/static/ { + alias /usr/share/www/html/static/; + } + + location /api/ { + rewrite ^/api/(.*)$ $1 break; + proxy_http_version 1.1; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; + proxy_set_header X-Script-Name /api; + proxy_pass http://app/$uri$is_args$args; + } + + location / { + try_files $uri /index.html; + alias /usr/share/www/html/front/; + } +} \ No newline at end of file From 4f13a6daa3fd9655c07440fae0b7dee4e8f9d822 Mon Sep 17 00:00:00 2001 From: Pudding Date: Sun, 4 Nov 2018 23:43:54 +0900 Subject: [PATCH 042/162] fix conf path in prod --- docker-compose.prod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index d84deff..4862096 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -31,7 +31,7 @@ services: env_file: - env_files/static.env volumes: - - ./env_files/conf_qa:/etc/nginx/conf.d + - ./env_files/conf_prod:/etc/nginx/conf.d - ./mizql/static:/usr/share/www/html/static depends_on: - webapp From b488ea3d0197330c8cd4f6cea7625f43a0c602a5 Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 11:35:46 +0900 Subject: [PATCH 043/162] fix fail to build on docker hub --- Makefile | 9 ++-- frontend/.dockerignore | 116 +++++++++++++++++++++++++++++++++++++++++ frontend/Dockerfile | 2 +- 3 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 frontend/.dockerignore diff --git a/Makefile b/Makefile index 7c15ae3..79090ae 100644 --- a/Makefile +++ b/Makefile @@ -30,8 +30,8 @@ deps: echo "'$(DB_IMAGE):$(DB_IMAGE_VERSION)' has already been pulled."; \ fi -frontimage: $(FRONT_SRCS) - docker build . -t studioaquatan/$(NAME)-front:latest -f frontend/Dockerfile +frontimage: $(FRONT_SRCS) frontend/$(DOCKERFILE) + cd frontend && docker build . -t studioaquatan/$(NAME)-front:latest image: $(SRCS) $(DOCKERFILE) $(eval VERSION := $(shell git describe --tags || echo "v0.0.0")) @@ -92,7 +92,4 @@ prod-start: prod-manage: docker-compose -f docker-compose.prod.yml exec webapp pipenv run python manage.py $(ARGS) -prod-stop: - docker-compose -f docker-compose.prod.yml stop - -.PHONY: deps image rundb stopdb cleandb qa-start qa-stop qa-manage qa-clean ; +.PHONY: deps image rundb stopdb cleandb qa-start qa-stop qa-manage qa-clean $(FRONT_SRCS) ; diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..f635ce1 --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,116 @@ +# Created by .ignore support plugin (hsz.mobi) +### Node template +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/dictionaries +.idea/**/shelf + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 70a8899..5b69c58 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -2,7 +2,7 @@ FROM node:11.1.0-alpine as builder ENV PROJECT_DIR /opt/mizql -ADD ./frontend ${PROJECT_DIR} +ADD ./ ${PROJECT_DIR} WORKDIR ${PROJECT_DIR} From 812d776d4040798b3394e90da02ab1c1f6a9c287 Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 11:37:30 +0900 Subject: [PATCH 044/162] fix to add prod-stop --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 79090ae..210a35e 100644 --- a/Makefile +++ b/Makefile @@ -92,4 +92,7 @@ prod-start: prod-manage: docker-compose -f docker-compose.prod.yml exec webapp pipenv run python manage.py $(ARGS) +prod-stop: + docker-compose -f docker-compose.prod.yml stop + .PHONY: deps image rundb stopdb cleandb qa-start qa-stop qa-manage qa-clean $(FRONT_SRCS) ; From 232b6cf6fa301e4682ff63dcddefb0ab3394cbfd Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 11:46:53 +0900 Subject: [PATCH 045/162] fix missing production Google Maps API Key --- frontend/.env.production | 1 + frontend/.gitignore | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 frontend/.env.production diff --git a/frontend/.env.production b/frontend/.env.production new file mode 100644 index 0000000..5679317 --- /dev/null +++ b/frontend/.env.production @@ -0,0 +1 @@ +REACT_APP_GOOGLE_MAP=AIzaSyATSIXv9BImvW9ivbbGL-aVvyMxyCgjT7c \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore index 1bb33fd..a732a8f 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -23,4 +23,3 @@ yarn-debug.log* yarn-error.log* .env.development -.env.production From 8ecad3b866e0e5abf25b7f8032aca214486b8c4d Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 12:00:53 +0900 Subject: [PATCH 046/162] user point on google map --- frontend/public/index.html | 4 ++- frontend/src/UserMapPoint.svg | 1 + frontend/src/components/Home.js | 43 +++++++++++++++++++++++++------- frontend/src/components/Login.js | 5 +++- frontend/src/components/Map.js | 10 ++++++-- 5 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 frontend/src/UserMapPoint.svg diff --git a/frontend/public/index.html b/frontend/public/index.html index 4bfce95..e378a10 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -21,7 +21,9 @@ --> React App - + diff --git a/frontend/src/UserMapPoint.svg b/frontend/src/UserMapPoint.svg new file mode 100644 index 0000000..561f400 --- /dev/null +++ b/frontend/src/UserMapPoint.svg @@ -0,0 +1 @@ +UserMapPoint \ No newline at end of file diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index dcd6cac..6883735 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -1,6 +1,9 @@ import React, {Component} from 'react'; import AppBar from '@material-ui/core/AppBar'; import Button from '@material-ui/core/Button'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import Grid from '@material-ui/core/Grid'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import {GetPosition} from '../modules/location'; @@ -31,7 +34,9 @@ export default class Home extends Component { render() { return ( - + Mizukuru Map @@ -39,14 +44,34 @@ export default class Home extends Component { - {this.state.location ? - : - this.state.canUseGeolocation ? -

GPSを使用できません

: -

現在地取得中です...

- } + + + + + {this.state.location ? + : + this.state.canUseGeolocation ? +

GPSを使用できません

: +

現在地取得中です...

+ } +
+
+
+
) } diff --git a/frontend/src/components/Login.js b/frontend/src/components/Login.js index 965f9d2..2785989 100644 --- a/frontend/src/components/Login.js +++ b/frontend/src/components/Login.js @@ -28,7 +28,10 @@ export default class Login extends Component { render() { return ( - + Mizukuru Map diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index 27bf1a7..b7ce107 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -1,7 +1,7 @@ import React from 'react'; import {compose, withProps} from 'recompose'; import {GoogleMap, Marker, withGoogleMap, withScriptjs} from 'react-google-maps'; -import {MarkerWithLabel} from 'react-google-maps/lib/components/addons/MarkerWithLabel'; +import UserPoint from '../UserMapPoint.svg'; export const MapComponent = compose( withProps({ @@ -17,7 +17,13 @@ export const MapComponent = compose( defaultZoom={15} defaultCenter={props.myPosition} > - + {props.shelters ? props.shelters.map((shelter, key) => ( Date: Mon, 5 Nov 2018 17:48:51 +0900 Subject: [PATCH 047/162] `yarn add @material-ui/icons` --- frontend/package.json | 1 + frontend/yarn.lock | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index faac39a..97a9f93 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "@material-ui/core": "^3.3.2", + "@material-ui/icons": "^3.0.1", "dotenv-cli": "^1.4.0", "react": "^16.6.0", "react-dom": "^16.6.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 815dcdf..5db081c 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -818,6 +818,14 @@ recompose "0.28.0 - 0.30.0" warning "^4.0.1" +"@material-ui/icons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-3.0.1.tgz#671fb3d04dcaf9351dbbd2bf82ae2ae72e3d93cd" + integrity sha512-1kNcxYiIT1x8iDPEAlgmKrfRTIV8UyK6fLVcZ9kMHIKGWft9I451V5mvSrbCjbf7MX1TbLWzZjph0aVCRf9MqQ== + dependencies: + "@babel/runtime" "7.0.0" + recompose "^0.29.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" @@ -8247,6 +8255,18 @@ recompose@^0.26.0: hoist-non-react-statics "^2.3.1" symbol-observable "^1.0.4" +recompose@^0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.29.0.tgz#f1a4e20d5f24d6ef1440f83924e821de0b1bccef" + integrity sha512-J/qLXNU4W+AeHCDR70ajW8eMd1uroqZaECTj6qqDLPMILz3y0EzpYlvrnxKB9DnqcngWrtGwjXY9JeXaW9kS1A== + dependencies: + "@babel/runtime" "^7.0.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" From 50fbfc5f95ca32e6f94241f6e5f55381353b2b9c Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 19:02:23 +0900 Subject: [PATCH 048/162] add mock data --- frontend/src/config/mockdata.js | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 frontend/src/config/mockdata.js diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js new file mode 100644 index 0000000..ed1c3f5 --- /dev/null +++ b/frontend/src/config/mockdata.js @@ -0,0 +1,37 @@ +export const mockShelters = [ + { + "name": "京都工芸繊維大学", + "address": "京都府京都市左京区松ヶ崎橋上町", + "lat": 35.05004017, + "lon": 135.782933, + "distance": 0.0 + }, + { + "name": "京都市立松ヶ崎小学校", + "address": "京都府京都市左京区松ヶ崎堀町40", + "lat": 35.05333076, + "lon": 135.7821715, + "distance": 370.0 + }, + { + "name": "京都市立修学院第二小学校", + "address": "京都府京都市左京区一乗寺里ノ西町35", + "lat": 35.04478349, + "lon": 135.7886697, + "distance": 780.0 + }, + { + "name": "京都ノートルダム女子大学", + "address": "京都府京都市左京区下鴨南野々神町1", + "lat": 35.05070445, + "lon": 135.7723571, + "distance": 970.0 + }, + { + "name": "京都市立修学院中学校", + "address": "京都府京都市左京区一乗寺御祭田町2", + "lat": 35.04245594, + "lon": 135.7885355, + "distance": 990.0 + } +]; \ No newline at end of file From 3cc8fab407741e385dd9f94b913291702d7a4782 Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 19:02:50 +0900 Subject: [PATCH 049/162] shelter list component --- frontend/src/components/Home.js | 17 ++++++++- frontend/src/components/Map.js | 5 ++- frontend/src/components/ShelterList.js | 52 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 frontend/src/components/ShelterList.js diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 6883735..e4d6f45 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -8,6 +8,9 @@ import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import {GetPosition} from '../modules/location'; import {MapComponent} from "./Map"; +import ShelterList from './ShelterList'; + +import {mockShelters} from "../config/mockdata"; export default class Home extends Component { constructor(props) { @@ -15,6 +18,7 @@ export default class Home extends Component { this.state = { location: null, canUseGeolocation: null, + shelters: mockShelters, }; } @@ -24,7 +28,7 @@ export default class Home extends Component { location: { lat: value.lat, lng: value.lng, - } + }, }); }).catch((error) => { console.error(error); @@ -63,7 +67,9 @@ export default class Home extends Component { {this.state.location ? : + shelters={this.state.shelters} + /> + : this.state.canUseGeolocation ?

GPSを使用できません

:

現在地取得中です...

@@ -71,6 +77,13 @@ export default class Home extends Component { + + + + + + +
) diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index b7ce107..7c486b1 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -29,7 +29,10 @@ export const MapComponent = compose( console.log(shelter.name)} /> )) : null diff --git a/frontend/src/components/ShelterList.js b/frontend/src/components/ShelterList.js new file mode 100644 index 0000000..7e3ef1f --- /dev/null +++ b/frontend/src/components/ShelterList.js @@ -0,0 +1,52 @@ +import React, {Component} from 'react'; +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableHead from '@material-ui/core/TableHead'; +import TableRow from '@material-ui/core/TableRow'; +import Paper from '@material-ui/core/Paper'; + + +export default class ShelterList extends Component { + + handleShelterClick(e, shelter) { + console.log(`clicked ${shelter.name}`); + } + + render(){ + if(!this.props.shelters){ + console.log(("no shelters")); + return null + } + return( + + + + + 避難所名 + 距離 [m] + 住所 + + + + {this.props.shelters.map((shelter, key) => ( + this.handleShelterClick(e, shelter)} + > + {shelter.name} + {shelter.distance} m + {shelter.address} + + ))} + +
+
+ ) + } +} + From 79fdbcddaf0923b92fbbe381bf3c70131f194f53 Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:40:59 +0900 Subject: [PATCH 050/162] allow CORS if DEBUG is True --- Pipfile | 1 + Pipfile.lock | 10 +++++++++- mizql/mizql/settings.py | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index f596508..496d123 100644 --- a/Pipfile +++ b/Pipfile @@ -14,6 +14,7 @@ python-dotenv = "*" mysqlclient = "*" gunicorn = "*" requests = "*" +django-cors-headers = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 65fb67d..3c2159e 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "e1443e696384030e59e3d25b51d75358567d0a5c0d51ec822860bbe3805a5588" + "sha256": "e10094ffc868a02f5c4dc9701c7ef4c7fa7bed0af9268c6bfd1ca2f88472e841" }, "pipfile-spec": 6, "requires": { @@ -52,6 +52,14 @@ "index": "pypi", "version": "==2.1.3" }, + "django-cors-headers": { + "hashes": [ + "sha256:5545009c9b233ea7e70da7dbab7cb1c12afa01279895086f98ec243d7eab46fa", + "sha256:c4c2ee97139d18541a1be7d96fe337d1694623816d83f53cb7c00da9b94acae1" + ], + "index": "pypi", + "version": "==2.4.0" + }, "django-filter": { "hashes": [ "sha256:6f4e4bc1a11151178520567b50320e5c32f8edb552139d93ea3e30613b886f56", diff --git a/mizql/mizql/settings.py b/mizql/mizql/settings.py index aaaa55f..b266699 100644 --- a/mizql/mizql/settings.py +++ b/mizql/mizql/settings.py @@ -58,6 +58,7 @@ 'django_filters', 'accounts', 'evacuation', + 'corsheaders', ] MIDDLEWARE = [ @@ -68,6 +69,7 @@ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'corsheaders.middleware.CorsMiddleware', ] ROOT_URLCONF = 'mizql.urls' @@ -175,5 +177,6 @@ if not DEBUG: FORCE_SCRIPT_NAME = '/api' + CORS_ORIGIN_ALLOW_ALL = True YOLP_APP_ID = os.getenv('YOLP_APP_ID') From af86d5faed8c89f602dad06dae34c42c82e0f1c8 Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:42:57 +0900 Subject: [PATCH 051/162] fix allow on DEBUG==True only --- mizql/mizql/settings.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mizql/mizql/settings.py b/mizql/mizql/settings.py index b266699..2aff5b8 100644 --- a/mizql/mizql/settings.py +++ b/mizql/mizql/settings.py @@ -175,8 +175,9 @@ 'JWT_VERIFY_EXPIRATION': False } -if not DEBUG: - FORCE_SCRIPT_NAME = '/api' +if DEBUG: CORS_ORIGIN_ALLOW_ALL = True +else: + FORCE_SCRIPT_NAME = '/api' YOLP_APP_ID = os.getenv('YOLP_APP_ID') From 56597ee43171c29395c28da2f95291680abadc18 Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 12:00:53 +0900 Subject: [PATCH 052/162] user point on google map --- frontend/public/index.html | 4 ++- frontend/src/UserMapPoint.svg | 1 + frontend/src/components/Home.js | 43 +++++++++++++++++++++++++------- frontend/src/components/Login.js | 5 +++- frontend/src/components/Map.js | 10 ++++++-- 5 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 frontend/src/UserMapPoint.svg diff --git a/frontend/public/index.html b/frontend/public/index.html index 4bfce95..e378a10 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -21,7 +21,9 @@ --> React App - + diff --git a/frontend/src/UserMapPoint.svg b/frontend/src/UserMapPoint.svg new file mode 100644 index 0000000..561f400 --- /dev/null +++ b/frontend/src/UserMapPoint.svg @@ -0,0 +1 @@ +UserMapPoint \ No newline at end of file diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index dcd6cac..6883735 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -1,6 +1,9 @@ import React, {Component} from 'react'; import AppBar from '@material-ui/core/AppBar'; import Button from '@material-ui/core/Button'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import Grid from '@material-ui/core/Grid'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import {GetPosition} from '../modules/location'; @@ -31,7 +34,9 @@ export default class Home extends Component { render() { return ( - + Mizukuru Map @@ -39,14 +44,34 @@ export default class Home extends Component { - {this.state.location ? - : - this.state.canUseGeolocation ? -

GPSを使用できません

: -

現在地取得中です...

- } + + + + + {this.state.location ? + : + this.state.canUseGeolocation ? +

GPSを使用できません

: +

現在地取得中です...

+ } +
+
+
+
) } diff --git a/frontend/src/components/Login.js b/frontend/src/components/Login.js index 965f9d2..2785989 100644 --- a/frontend/src/components/Login.js +++ b/frontend/src/components/Login.js @@ -28,7 +28,10 @@ export default class Login extends Component { render() { return ( - + Mizukuru Map diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index 27bf1a7..b7ce107 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -1,7 +1,7 @@ import React from 'react'; import {compose, withProps} from 'recompose'; import {GoogleMap, Marker, withGoogleMap, withScriptjs} from 'react-google-maps'; -import {MarkerWithLabel} from 'react-google-maps/lib/components/addons/MarkerWithLabel'; +import UserPoint from '../UserMapPoint.svg'; export const MapComponent = compose( withProps({ @@ -17,7 +17,13 @@ export const MapComponent = compose( defaultZoom={15} defaultCenter={props.myPosition} > - + {props.shelters ? props.shelters.map((shelter, key) => ( Date: Mon, 5 Nov 2018 17:48:51 +0900 Subject: [PATCH 053/162] `yarn add @material-ui/icons` --- frontend/package.json | 1 + frontend/yarn.lock | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index faac39a..97a9f93 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "@material-ui/core": "^3.3.2", + "@material-ui/icons": "^3.0.1", "dotenv-cli": "^1.4.0", "react": "^16.6.0", "react-dom": "^16.6.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 815dcdf..5db081c 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -818,6 +818,14 @@ recompose "0.28.0 - 0.30.0" warning "^4.0.1" +"@material-ui/icons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-3.0.1.tgz#671fb3d04dcaf9351dbbd2bf82ae2ae72e3d93cd" + integrity sha512-1kNcxYiIT1x8iDPEAlgmKrfRTIV8UyK6fLVcZ9kMHIKGWft9I451V5mvSrbCjbf7MX1TbLWzZjph0aVCRf9MqQ== + dependencies: + "@babel/runtime" "7.0.0" + recompose "^0.29.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" @@ -8247,6 +8255,18 @@ recompose@^0.26.0: hoist-non-react-statics "^2.3.1" symbol-observable "^1.0.4" +recompose@^0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.29.0.tgz#f1a4e20d5f24d6ef1440f83924e821de0b1bccef" + integrity sha512-J/qLXNU4W+AeHCDR70ajW8eMd1uroqZaECTj6qqDLPMILz3y0EzpYlvrnxKB9DnqcngWrtGwjXY9JeXaW9kS1A== + dependencies: + "@babel/runtime" "^7.0.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" From 204f67d014f3b3ca99941ddf863de4fc05d3ee14 Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 19:02:23 +0900 Subject: [PATCH 054/162] add mock data --- frontend/src/config/mockdata.js | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 frontend/src/config/mockdata.js diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js new file mode 100644 index 0000000..ed1c3f5 --- /dev/null +++ b/frontend/src/config/mockdata.js @@ -0,0 +1,37 @@ +export const mockShelters = [ + { + "name": "京都工芸繊維大学", + "address": "京都府京都市左京区松ヶ崎橋上町", + "lat": 35.05004017, + "lon": 135.782933, + "distance": 0.0 + }, + { + "name": "京都市立松ヶ崎小学校", + "address": "京都府京都市左京区松ヶ崎堀町40", + "lat": 35.05333076, + "lon": 135.7821715, + "distance": 370.0 + }, + { + "name": "京都市立修学院第二小学校", + "address": "京都府京都市左京区一乗寺里ノ西町35", + "lat": 35.04478349, + "lon": 135.7886697, + "distance": 780.0 + }, + { + "name": "京都ノートルダム女子大学", + "address": "京都府京都市左京区下鴨南野々神町1", + "lat": 35.05070445, + "lon": 135.7723571, + "distance": 970.0 + }, + { + "name": "京都市立修学院中学校", + "address": "京都府京都市左京区一乗寺御祭田町2", + "lat": 35.04245594, + "lon": 135.7885355, + "distance": 990.0 + } +]; \ No newline at end of file From 7477845f3dbc4e606e33ecf18939b6930a330997 Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 19:02:50 +0900 Subject: [PATCH 055/162] shelter list component --- frontend/src/components/Home.js | 17 ++++++++- frontend/src/components/Map.js | 5 ++- frontend/src/components/ShelterList.js | 52 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 frontend/src/components/ShelterList.js diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 6883735..e4d6f45 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -8,6 +8,9 @@ import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import {GetPosition} from '../modules/location'; import {MapComponent} from "./Map"; +import ShelterList from './ShelterList'; + +import {mockShelters} from "../config/mockdata"; export default class Home extends Component { constructor(props) { @@ -15,6 +18,7 @@ export default class Home extends Component { this.state = { location: null, canUseGeolocation: null, + shelters: mockShelters, }; } @@ -24,7 +28,7 @@ export default class Home extends Component { location: { lat: value.lat, lng: value.lng, - } + }, }); }).catch((error) => { console.error(error); @@ -63,7 +67,9 @@ export default class Home extends Component { {this.state.location ? : + shelters={this.state.shelters} + /> + : this.state.canUseGeolocation ?

GPSを使用できません

:

現在地取得中です...

@@ -71,6 +77,13 @@ export default class Home extends Component { + + + + + + +
) diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index b7ce107..7c486b1 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -29,7 +29,10 @@ export const MapComponent = compose( console.log(shelter.name)} /> )) : null diff --git a/frontend/src/components/ShelterList.js b/frontend/src/components/ShelterList.js new file mode 100644 index 0000000..7e3ef1f --- /dev/null +++ b/frontend/src/components/ShelterList.js @@ -0,0 +1,52 @@ +import React, {Component} from 'react'; +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableHead from '@material-ui/core/TableHead'; +import TableRow from '@material-ui/core/TableRow'; +import Paper from '@material-ui/core/Paper'; + + +export default class ShelterList extends Component { + + handleShelterClick(e, shelter) { + console.log(`clicked ${shelter.name}`); + } + + render(){ + if(!this.props.shelters){ + console.log(("no shelters")); + return null + } + return( + + + + + 避難所名 + 距離 [m] + 住所 + + + + {this.props.shelters.map((shelter, key) => ( + this.handleShelterClick(e, shelter)} + > + {shelter.name} + {shelter.distance} m + {shelter.address} + + ))} + +
+
+ ) + } +} + From 336feea1a914fd1d8ebcc65e3062f29b80a93292 Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 21:21:15 +0900 Subject: [PATCH 056/162] add components --- frontend/src/components/Home.js | 65 +++++++++++++++--------- frontend/src/components/Information.js | 12 +++++ frontend/src/components/Map.js | 2 +- frontend/src/components/ShelterDetail.js | 22 ++++++++ frontend/src/components/ShelterList.js | 6 +-- 5 files changed, 78 insertions(+), 29 deletions(-) create mode 100644 frontend/src/components/Information.js create mode 100644 frontend/src/components/ShelterDetail.js diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index e4d6f45..d517209 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -9,6 +9,8 @@ import Typography from '@material-ui/core/Typography'; import {GetPosition} from '../modules/location'; import {MapComponent} from "./Map"; import ShelterList from './ShelterList'; +import Information from './Information'; +import ShelterDetail from './ShelterDetail'; import {mockShelters} from "../config/mockdata"; @@ -19,6 +21,7 @@ export default class Home extends Component { location: null, canUseGeolocation: null, shelters: mockShelters, + pickShelter: null, }; } @@ -35,12 +38,15 @@ export default class Home extends Component { }); } + pickShelter(shelter) { + console.log(shelter); + this.setState({pickShelter: shelter}); + } + render() { return ( - + Mizukuru Map @@ -48,26 +54,16 @@ export default class Home extends Component { - - - - + + + + + {this.state.location ? : this.state.canUseGeolocation ? @@ -77,13 +73,36 @@ export default class Home extends Component { - - - - + + + + + + + {this.state.pickShelter ? + + + + + + + + : + + + + + + + + } + ) diff --git a/frontend/src/components/Information.js b/frontend/src/components/Information.js new file mode 100644 index 0000000..511162e --- /dev/null +++ b/frontend/src/components/Information.js @@ -0,0 +1,12 @@ +import React, {Component} from 'react'; + +export default class Information extends Component{ + render(){ + return( + +

現在地情報

+

TODO: Implement

+
+ ) + } +} \ No newline at end of file diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index 7c486b1..d0fb278 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -33,7 +33,7 @@ export const MapComponent = compose( lat: shelter.lat, lng: shelter.lon, }} - onClick={() => console.log(shelter.name)} + onClick={() => props.pickShelter(shelter)} /> )) : null } diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js new file mode 100644 index 0000000..c83277e --- /dev/null +++ b/frontend/src/components/ShelterDetail.js @@ -0,0 +1,22 @@ +import React, {Component} from 'react'; + +export default class ShelterDetail extends Component { + constructor(props) { + super(props); + this.state = { + shelter: props.shelter, + }; + } + + render(){ + return ( + +

避難所詳細情報

+

{this.state.shelter.name}

+

{this.state.shelter.distance}

+

{this.state.shelter.address}

+ +
+ ); + } +} diff --git a/frontend/src/components/ShelterList.js b/frontend/src/components/ShelterList.js index 7e3ef1f..095c87d 100644 --- a/frontend/src/components/ShelterList.js +++ b/frontend/src/components/ShelterList.js @@ -9,10 +9,6 @@ import Paper from '@material-ui/core/Paper'; export default class ShelterList extends Component { - handleShelterClick(e, shelter) { - console.log(`clicked ${shelter.name}`); - } - render(){ if(!this.props.shelters){ console.log(("no shelters")); @@ -36,7 +32,7 @@ export default class ShelterList extends Component { this.handleShelterClick(e, shelter)} + onClick={(e) => this.props.pickShelter(shelter)} > {shelter.name} {shelter.distance} m From 99860657656ef92564424debcea8637ae0a12acc Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 22:31:29 +0900 Subject: [PATCH 057/162] fix login link --- frontend/src/components/Home.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index d517209..9b77727 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -1,4 +1,5 @@ import React, {Component} from 'react'; +import {Link} from 'react-router-dom'; import AppBar from '@material-ui/core/AppBar'; import Button from '@material-ui/core/Button'; import Card from '@material-ui/core/Card'; @@ -51,7 +52,7 @@ export default class Home extends Component { Mizukuru Map - + From f2850d87b74697e937d0f7d0d37222063acbed74 Mon Sep 17 00:00:00 2001 From: taxio Date: Mon, 5 Nov 2018 22:50:27 +0900 Subject: [PATCH 058/162] fix login style --- frontend/src/components/Login.js | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/frontend/src/components/Login.js b/frontend/src/components/Login.js index 2785989..7b4a4bb 100644 --- a/frontend/src/components/Login.js +++ b/frontend/src/components/Login.js @@ -28,31 +28,18 @@ export default class Login extends Component { render() { return ( - + Mizukuru Map - - - - - + + + + + Date: Mon, 5 Nov 2018 23:33:40 +0900 Subject: [PATCH 059/162] add model for disaster information --- mizql/disaster/__init__.py | 0 mizql/disaster/admin.py | 3 + mizql/disaster/apps.py | 5 ++ mizql/disaster/migrations/0001_initial.py | 77 +++++++++++++++++++++++ mizql/disaster/migrations/__init__.py | 0 mizql/disaster/models.py | 67 ++++++++++++++++++++ mizql/disaster/tests.py | 3 + mizql/mizql/settings.py | 1 + 8 files changed, 156 insertions(+) create mode 100644 mizql/disaster/__init__.py create mode 100644 mizql/disaster/admin.py create mode 100644 mizql/disaster/apps.py create mode 100644 mizql/disaster/migrations/0001_initial.py create mode 100644 mizql/disaster/migrations/__init__.py create mode 100644 mizql/disaster/models.py create mode 100644 mizql/disaster/tests.py diff --git a/mizql/disaster/__init__.py b/mizql/disaster/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/disaster/admin.py b/mizql/disaster/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/mizql/disaster/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/mizql/disaster/apps.py b/mizql/disaster/apps.py new file mode 100644 index 0000000..e4001fb --- /dev/null +++ b/mizql/disaster/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class DisasterConfig(AppConfig): + name = 'disaster' diff --git a/mizql/disaster/migrations/0001_initial.py b/mizql/disaster/migrations/0001_initial.py new file mode 100644 index 0000000..ad344ad --- /dev/null +++ b/mizql/disaster/migrations/0001_initial.py @@ -0,0 +1,77 @@ +# Generated by Django 2.1.3 on 2018-11-05 13:33 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Alarm', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('code', models.IntegerField(verbose_name='区分コード')), + ('name', models.CharField(max_length=100, verbose_name='名称')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'ordering': ['-created_at'], + }, + ), + migrations.CreateModel( + name='DemoAlarm', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('code', models.IntegerField(verbose_name='区分コード')), + ('name', models.CharField(max_length=100, verbose_name='名称')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'ordering': ['-created_at'], + }, + ), + migrations.CreateModel( + name='DemoLocation', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('code', models.IntegerField(unique=True, verbose_name='地域コード')), + ('name', models.CharField(max_length=100, verbose_name='地域名')), + ('updated_at', models.DateTimeField(verbose_name='更新日時')), + ], + options={ + 'ordering': ['-updated_at'], + }, + ), + migrations.CreateModel( + name='Location', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('code', models.IntegerField(unique=True, verbose_name='地域コード')), + ('name', models.CharField(max_length=100, verbose_name='地域名')), + ('updated_at', models.DateTimeField(verbose_name='更新日時')), + ], + options={ + 'ordering': ['-updated_at'], + }, + ), + migrations.AddField( + model_name='demoalarm', + name='location', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='alarms', to='disaster.DemoLocation'), + ), + migrations.AddField( + model_name='alarm', + name='location', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='alarms', to='disaster.Location'), + ), + ] diff --git a/mizql/disaster/migrations/__init__.py b/mizql/disaster/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/disaster/models.py b/mizql/disaster/models.py new file mode 100644 index 0000000..67d6147 --- /dev/null +++ b/mizql/disaster/models.py @@ -0,0 +1,67 @@ +from django.db import models + + +class Location(models.Model): + """ + 地域の情報 + """ + code = models.IntegerField('地域コード', unique=True) + name = models.CharField('地域名', max_length=100) + updated_at = models.DateTimeField('更新日時') + + class Meta: + ordering = ['-updated_at'] + + +class Alarm(models.Model): + """ + 警報・注意報 + """ + code = models.IntegerField('区分コード') + name = models.CharField('名称', max_length=100) + location = models.ForeignKey(Location, on_delete=models.CASCADE, related_name='alarms', null=True, blank=True) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + deleted_at = models.DateTimeField(null=True, blank=True) + + class Meta: + ordering = ['-created_at'] + + @property + def is_deleted(self): + if self.deleted_at is None: + return False + return True + + +class DemoLocation(models.Model): + """ + デモ用のLocation情報 + """ + code = models.IntegerField('地域コード', unique=True) + name = models.CharField('地域名', max_length=100) + updated_at = models.DateTimeField('更新日時') + + class Meta: + ordering = ['-updated_at'] + + +class DemoAlarm(models.Model): + """ + デモ用の注意報・警報情報 + """ + code = models.IntegerField('区分コード') + name = models.CharField('名称', max_length=100) + location = models.ForeignKey(DemoLocation, on_delete=models.CASCADE, related_name='alarms', null=True, blank=True) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + deleted_at = models.DateTimeField(null=True, blank=True) + + class Meta: + ordering = ['-created_at'] + + @property + def is_deleted(self): + if self.deleted_at is None: + return False + return True diff --git a/mizql/disaster/tests.py b/mizql/disaster/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/mizql/disaster/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/mizql/mizql/settings.py b/mizql/mizql/settings.py index 2aff5b8..36385c0 100644 --- a/mizql/mizql/settings.py +++ b/mizql/mizql/settings.py @@ -58,6 +58,7 @@ 'django_filters', 'accounts', 'evacuation', + 'disaster', 'corsheaders', ] From a00de68baab7b74efdcfa5f298dc1d051c6ac8b8 Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:34:13 +0900 Subject: [PATCH 060/162] implement get alarms --- mizql/disaster/info.py | 109 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 mizql/disaster/info.py diff --git a/mizql/disaster/info.py b/mizql/disaster/info.py new file mode 100644 index 0000000..e202e08 --- /dev/null +++ b/mizql/disaster/info.py @@ -0,0 +1,109 @@ +import requests +from datetime import datetime, timedelta +from django.utils import timezone +from typing import Optional, List + +from .models import Location, Alarm + + +class DisasterReport(object): + base_url = 'http://api.aitc.jp/jmardb-api/' + area_path = 'area' + search_path = 'search' + datetime_format = '%Y-%m-%d %H:%M:%S' + datetime_parse_format = '%Y-%m-%dT%H:%M:%S.%f%z' + demo_coordinates = (135.780418, 35.048900) + location_class = Location + alarm_class = Alarm + + def __init__(self, lat: float, lon: float): + self.lat = lat + self.lon = lon + + def get_area(self) -> Optional[dict]: + payload = { + 'latitude': self.lat, + 'longitude': self.lon, + } + res = requests.get(self.base_url + self.area_path, params=payload) + if res.status_code != 200: + return None + data = res.json()['data'] + if len(data) == 0: + return None + # 地域の最も大きい区分(都道府県)のエリア情報を返却 + return data[0]['forecast'][-1] + + def _get_abstract(self, areacode: int, info_type: str, since_day: datetime=None, days: int=7) -> Optional[dict]: + if since_day is None: + since_day = datetime.now() + payload = { + 'datetime': [ + since_day.strftime(self.datetime_format), + (since_day - timedelta(days=days)).strftime(self.datetime_format), + ], + 'areacode': areacode, + 'order': 'new', + 'title': info_type + } + res = requests.get(self.base_url + self.search_path, params=payload) + if res.status_code != 200: + return None + data = res.json()['data'] + if len(data) == 0: + return {'count': 0} + return { + 'count': len(data), + 'link': data[0]['link'], + 'text': data[0]['headline'], + 'datetime': datetime.strptime(data[0]['datetime'], self.datetime_parse_format) + } + + def _get_alarm_detail(self, url: str) -> Optional[List[dict]]: + suffix = '.json?path=/report/body/warning/0' + res = requests.get(url + suffix) + if res.status_code != 200: + return None + data = res.json()['item'][0] + alarms = list() + for kind in data['kind']: + alarms.append({ + 'code': int(kind['code']), + 'name': kind['name'], + 'status': kind['status'], + }) + return alarms + + def update_alarm(self, loc_id: int, code: int, name: str, status: str): + now = datetime.now() + if status == '解除': + try: + exists_alarm = self.alarm_class.objects.get(code=code, name=name, location_id=loc_id) + exists_alarm.deleted_at = now + exists_alarm.save() + except self.alarm_class.DoesNotExist: + exists_alarm = self.alarm_class.objects.create( + code=code, name=name, deleted_at=datetime.now(), location_id=loc_id + ) + return exists_alarm + alarm, _ = self.alarm_class.objects.get_or_create( + code=code, name=name, location_id=loc_id + ) + return alarm + + def get_area_info(self, since_day: datetime=None, days: int=7) -> Optional[Location]: + area = self.get_area() + if area is None: + return None + loc, created = self.location_class.objects.update_or_create(**area, defaults={'updated_at': timezone.now()}) + alarm_kinds = ['気象特別警報・警報・注意報', '指定河川洪水予報', '土砂災害警戒情報', '記録的短時間大雨情報'] + for alarm_kind in alarm_kinds: + alarm = self._get_abstract(loc.code, alarm_kind, since_day, days) + if alarm['count'] == 0: + continue + details = self._get_alarm_detail(alarm['link']) + if details is None: + continue + for detail in details: + self.update_alarm(loc.pk, **detail) + return loc From 00dade9d83a3bb94f21092ba68e2c0d16eca413c Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:34:36 +0900 Subject: [PATCH 061/162] implement custom command to get alarms --- mizql/disaster/management/__init__.py | 0 .../disaster/management/commands/__init__.py | 0 .../management/commands/createdata.py | 54 +++++++++++++++++++ mizql/mizql/urls.py | 3 ++ 4 files changed, 57 insertions(+) create mode 100644 mizql/disaster/management/__init__.py create mode 100644 mizql/disaster/management/commands/__init__.py create mode 100644 mizql/disaster/management/commands/createdata.py diff --git a/mizql/disaster/management/__init__.py b/mizql/disaster/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/disaster/management/commands/__init__.py b/mizql/disaster/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/disaster/management/commands/createdata.py b/mizql/disaster/management/commands/createdata.py new file mode 100644 index 0000000..885fc96 --- /dev/null +++ b/mizql/disaster/management/commands/createdata.py @@ -0,0 +1,54 @@ +from datetime import datetime +from django.core.management.base import BaseCommand + +from disaster.info import DisasterReport +from disaster.models import DemoAlarm, DemoLocation + + +class Command(BaseCommand): + + date_format = '%Y/%m/%d_%H:%M:%S' + + def add_arguments(self, parser): + parser.add_argument( + '--lat', type=float, default=35.0249596, help='Latitude' + ) + parser.add_argument( + '--lon', type=float, default=135.774979, help='longitude' + ) + parser.add_argument( + '-d', '--datetime', dest='datetime', type=str, help='Format is {}'.format(self.date_format) + ) + parser.add_argument( + '--days', type=int, default=7, help='Get information days' + ) + parser.add_argument( + '--demo', action='store_true', default=False, help='Whether demo or prod' + ) + + def handle(self, *args, **options): + raw_date = options['datetime'] + days = options['days'] + is_demo = options['demo'] + lat = options['lat'] + lon = options['lon'] + reporter = DisasterReport(lat, lon) + if raw_date is None: + date = datetime.now() + else: + date = datetime.strptime(raw_date, self.date_format) + if is_demo: + reporter.location_class = DemoLocation + reporter.alarm_class = DemoAlarm + loc = reporter.get_area_info(date, days) + if loc is None: + print("Failed to add data") + exit(1) + print("Area name:", loc.name) + print("Alarms:") + for alarm in loc.alarms.all(): + print('\t', alarm.name, end='') + if alarm.is_deleted: + print(': 解除済') + else: + print(': 発令中') diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index 12e3a76..d721216 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -20,6 +20,7 @@ from accounts.views import UserViewSets from evacuation.views import ShelterViewSets +from disaster.views import LocationView, DemoLocationView router = DefaultRouter() router.register(r'users', UserViewSets, basename='users') @@ -29,6 +30,8 @@ path('admin/', admin.site.urls), path('_/', include('accounts.urls')), path('', include(router.urls)), + path('area/', LocationView.as_view()), + path('demo-area/', DemoLocationView.as_view()), path('auth/', include('djoser.urls.jwt')), path('swagger/', get_swagger_view(title='mizql API Doc')), ] From aed54597c841dbfc0a02c0debb9a1a66cc6eff64 Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:34:58 +0900 Subject: [PATCH 062/162] implement serializer for location and alarm --- mizql/disaster/serializers.py | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 mizql/disaster/serializers.py diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py new file mode 100644 index 0000000..5d18d30 --- /dev/null +++ b/mizql/disaster/serializers.py @@ -0,0 +1,38 @@ +from rest_framework import serializers +from .models import Location, Alarm, DemoLocation, DemoAlarm + + +class AlarmSerializer(serializers.ModelSerializer): + """ + 注意報・警報のシリアライザ + """ + + class Meta: + model = Alarm + fields = ('pk', 'code', 'name', 'created_at', 'updated_at', 'deleted_at') + + +class LocationSerializer(serializers.ModelSerializer): + """ + 地域情報のシリアライザ + """ + + alarms = AlarmSerializer(read_only=True, allow_null=True, many=True) + + class Meta: + model = Location + fields = ('pk', 'name', 'alarms', 'updated_at') + + +class DemoAlarmSerializer(serializers.ModelSerializer): + class Meta: + model = DemoAlarm + fields = ('pk', 'code', 'name', 'created_at', 'updated_at', 'deleted_at') + + +class DemoLocationSerializer(serializers.ModelSerializer): + alarms = DemoAlarmSerializer(read_only=True, allow_null=True, many=True) + + class Meta: + model = DemoLocation + fields = ('pk', 'name', 'alarms', 'updated_at') From 02f3fc16cad5f2fddcb6661d4407184d30f2b15c Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:35:21 +0900 Subject: [PATCH 063/162] add view for area information --- mizql/disaster/views.py | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 mizql/disaster/views.py diff --git a/mizql/disaster/views.py b/mizql/disaster/views.py new file mode 100644 index 0000000..4a2469e --- /dev/null +++ b/mizql/disaster/views.py @@ -0,0 +1,48 @@ +from datetime import datetime +from rest_framework import generics, permissions, status +from rest_framework.response import Response + +from .serializers import LocationSerializer, DemoLocationSerializer +from .info import DisasterReport + + +class LocationView(generics.RetrieveAPIView): + """ + 地域の情報を取得するエンドポイント + """ + serializer_class = LocationSerializer + permission_classes = (permissions.IsAuthenticated,) + + def get_object(self): + """クエリパラメータから緯度経度取得して情報を返す""" + lat = self.request.query_params.get('lat') + lon = self.request.query_params.get('lon') + if lat is None or lon is None: + return Response(status=status.HTTP_404_NOT_FOUND) + reporter = DisasterReport(lat, lon) + loc = reporter.get_area_info() + return loc + + +class DemoLocationView(generics.RetrieveAPIView): + """ + デモの情報を返す + """ + serializer_class = DemoLocationSerializer + permission_classes = (permissions.IsAuthenticated,) + + def get_object(self): + """クエリパラメータから緯度経度取得して情報を返す""" + lat = self.request.query_params.get('lat') + lon = self.request.query_params.get('lon') + d_str = self.request.query_params.get('date') + if lat is None or lon is None: + return Response(status=status.HTTP_404_NOT_FOUND) + reporter = DisasterReport(lat, lon) + if d_str is None: + d_str = '2018-09-04_12:00:00' + loc = reporter.get_area_info(datetime.strptime(d_str, "%Y-%m-%d_%H:%M:%S")) + if loc is None: + return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) + return loc + From c15385ddef16d29801680b35ea26b7ba0e918cad Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:37:47 +0900 Subject: [PATCH 064/162] add example json --- mizql/disaster/json_samples/area.json | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 mizql/disaster/json_samples/area.json diff --git a/mizql/disaster/json_samples/area.json b/mizql/disaster/json_samples/area.json new file mode 100644 index 0000000..4f8b190 --- /dev/null +++ b/mizql/disaster/json_samples/area.json @@ -0,0 +1,55 @@ +{ + "pk": 2, + "name": "愛知県", + "alarms": [ + { + "pk": 12, + "code": 18, + "name": "洪水注意報", + "created_at": "2018-11-05T23:32:12.437693+09:00", + "updated_at": "2018-11-05T23:32:12.437860+09:00", + "deleted_at": null + }, + { + "pk": 11, + "code": 14, + "name": "雷注意報", + "created_at": "2018-11-05T23:32:12.425089+09:00", + "updated_at": "2018-11-05T23:32:12.425194+09:00", + "deleted_at": null + }, + { + "pk": 10, + "code": 8, + "name": "高潮警報", + "created_at": "2018-11-05T23:32:12.410925+09:00", + "updated_at": "2018-11-05T23:32:12.411118+09:00", + "deleted_at": null + }, + { + "pk": 9, + "code": 7, + "name": "波浪警報", + "created_at": "2018-11-05T23:32:12.393728+09:00", + "updated_at": "2018-11-05T23:32:12.393833+09:00", + "deleted_at": null + }, + { + "pk": 8, + "code": 5, + "name": "暴風警報", + "created_at": "2018-11-05T23:32:12.375825+09:00", + "updated_at": "2018-11-05T23:32:12.375935+09:00", + "deleted_at": null + }, + { + "pk": 7, + "code": 3, + "name": "大雨警報", + "created_at": "2018-11-05T23:32:12.359343+09:00", + "updated_at": "2018-11-05T23:32:12.359448+09:00", + "deleted_at": null + } + ], + "updated_at": "2018-11-05T23:32:11.738270+09:00" +} \ No newline at end of file From dac7c897bb8b55ad5d01dc833e0978ae3efd1824 Mon Sep 17 00:00:00 2001 From: Pudding Date: Mon, 5 Nov 2018 23:56:36 +0900 Subject: [PATCH 065/162] rm unneeded fields --- mizql/disaster/info.py | 14 ++++----- mizql/disaster/json_samples/area.json | 24 ++++----------- .../migrations/0002_auto_20181105_2353.py | 29 +++++++++++++++++++ mizql/disaster/models.py | 16 ---------- mizql/disaster/serializers.py | 4 +-- 5 files changed, 44 insertions(+), 43 deletions(-) create mode 100644 mizql/disaster/migrations/0002_auto_20181105_2353.py diff --git a/mizql/disaster/info.py b/mizql/disaster/info.py index e202e08..84b4067 100644 --- a/mizql/disaster/info.py +++ b/mizql/disaster/info.py @@ -75,17 +75,14 @@ def _get_alarm_detail(self, url: str) -> Optional[List[dict]]: return alarms def update_alarm(self, loc_id: int, code: int, name: str, status: str): - now = datetime.now() if status == '解除': + # 解除だったら削除する try: exists_alarm = self.alarm_class.objects.get(code=code, name=name, location_id=loc_id) - exists_alarm.deleted_at = now - exists_alarm.save() + exists_alarm.delete() except self.alarm_class.DoesNotExist: - exists_alarm = self.alarm_class.objects.create( - code=code, name=name, deleted_at=datetime.now(), location_id=loc_id - ) - return exists_alarm + pass + return None alarm, _ = self.alarm_class.objects.get_or_create( code=code, name=name, location_id=loc_id ) @@ -96,6 +93,9 @@ def get_area_info(self, since_day: datetime=None, days: int=7) -> Optional[Locat if area is None: return None loc, created = self.location_class.objects.update_or_create(**area, defaults={'updated_at': timezone.now()}) + # もし既存情報があったら全て削除 + loc.alarms.all().delete() + # 警報の情報を取得 alarm_kinds = ['気象特別警報・警報・注意報', '指定河川洪水予報', '土砂災害警戒情報', '記録的短時間大雨情報'] for alarm_kind in alarm_kinds: alarm = self._get_abstract(loc.code, alarm_kind, since_day, days) diff --git a/mizql/disaster/json_samples/area.json b/mizql/disaster/json_samples/area.json index 4f8b190..cd51a83 100644 --- a/mizql/disaster/json_samples/area.json +++ b/mizql/disaster/json_samples/area.json @@ -6,49 +6,37 @@ "pk": 12, "code": 18, "name": "洪水注意報", - "created_at": "2018-11-05T23:32:12.437693+09:00", - "updated_at": "2018-11-05T23:32:12.437860+09:00", - "deleted_at": null + "created_at": "2018-11-05T23:32:12.437693+09:00" }, { "pk": 11, "code": 14, "name": "雷注意報", - "created_at": "2018-11-05T23:32:12.425089+09:00", - "updated_at": "2018-11-05T23:32:12.425194+09:00", - "deleted_at": null + "created_at": "2018-11-05T23:32:12.425089+09:00" }, { "pk": 10, "code": 8, "name": "高潮警報", - "created_at": "2018-11-05T23:32:12.410925+09:00", - "updated_at": "2018-11-05T23:32:12.411118+09:00", - "deleted_at": null + "created_at": "2018-11-05T23:32:12.410925+09:00" }, { "pk": 9, "code": 7, "name": "波浪警報", - "created_at": "2018-11-05T23:32:12.393728+09:00", - "updated_at": "2018-11-05T23:32:12.393833+09:00", - "deleted_at": null + "created_at": "2018-11-05T23:32:12.393728+09:00" }, { "pk": 8, "code": 5, "name": "暴風警報", - "created_at": "2018-11-05T23:32:12.375825+09:00", - "updated_at": "2018-11-05T23:32:12.375935+09:00", - "deleted_at": null + "created_at": "2018-11-05T23:32:12.375825+09:00" }, { "pk": 7, "code": 3, "name": "大雨警報", - "created_at": "2018-11-05T23:32:12.359343+09:00", - "updated_at": "2018-11-05T23:32:12.359448+09:00", - "deleted_at": null + "created_at": "2018-11-05T23:32:12.359343+09:00" } ], "updated_at": "2018-11-05T23:32:11.738270+09:00" diff --git a/mizql/disaster/migrations/0002_auto_20181105_2353.py b/mizql/disaster/migrations/0002_auto_20181105_2353.py new file mode 100644 index 0000000..c43bd22 --- /dev/null +++ b/mizql/disaster/migrations/0002_auto_20181105_2353.py @@ -0,0 +1,29 @@ +# Generated by Django 2.1.3 on 2018-11-05 14:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('disaster', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='alarm', + name='deleted_at', + ), + migrations.RemoveField( + model_name='alarm', + name='updated_at', + ), + migrations.RemoveField( + model_name='demoalarm', + name='deleted_at', + ), + migrations.RemoveField( + model_name='demoalarm', + name='updated_at', + ), + ] diff --git a/mizql/disaster/models.py b/mizql/disaster/models.py index 67d6147..32e8f8f 100644 --- a/mizql/disaster/models.py +++ b/mizql/disaster/models.py @@ -21,18 +21,10 @@ class Alarm(models.Model): name = models.CharField('名称', max_length=100) location = models.ForeignKey(Location, on_delete=models.CASCADE, related_name='alarms', null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) - updated_at = models.DateTimeField(auto_now=True) - deleted_at = models.DateTimeField(null=True, blank=True) class Meta: ordering = ['-created_at'] - @property - def is_deleted(self): - if self.deleted_at is None: - return False - return True - class DemoLocation(models.Model): """ @@ -54,14 +46,6 @@ class DemoAlarm(models.Model): name = models.CharField('名称', max_length=100) location = models.ForeignKey(DemoLocation, on_delete=models.CASCADE, related_name='alarms', null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) - updated_at = models.DateTimeField(auto_now=True) - deleted_at = models.DateTimeField(null=True, blank=True) class Meta: ordering = ['-created_at'] - - @property - def is_deleted(self): - if self.deleted_at is None: - return False - return True diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py index 5d18d30..31a187d 100644 --- a/mizql/disaster/serializers.py +++ b/mizql/disaster/serializers.py @@ -9,7 +9,7 @@ class AlarmSerializer(serializers.ModelSerializer): class Meta: model = Alarm - fields = ('pk', 'code', 'name', 'created_at', 'updated_at', 'deleted_at') + fields = ('pk', 'code', 'name', 'created_at') class LocationSerializer(serializers.ModelSerializer): @@ -27,7 +27,7 @@ class Meta: class DemoAlarmSerializer(serializers.ModelSerializer): class Meta: model = DemoAlarm - fields = ('pk', 'code', 'name', 'created_at', 'updated_at', 'deleted_at') + fields = ('pk', 'code', 'name', 'created_at') class DemoLocationSerializer(serializers.ModelSerializer): From c1a6e18b26225e64e37538351207f9c625ddce86 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 00:09:36 +0900 Subject: [PATCH 066/162] improve schema view --- mizql/disaster/views.py | 23 +++++++++++++++++++++++ mizql/mizql/urls.py | 8 +++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/mizql/disaster/views.py b/mizql/disaster/views.py index 4a2469e..bce4fae 100644 --- a/mizql/disaster/views.py +++ b/mizql/disaster/views.py @@ -1,6 +1,9 @@ +import coreapi +import coreschema from datetime import datetime from rest_framework import generics, permissions, status from rest_framework.response import Response +from rest_framework.schemas import ManualSchema from .serializers import LocationSerializer, DemoLocationSerializer from .info import DisasterReport @@ -12,6 +15,14 @@ class LocationView(generics.RetrieveAPIView): """ serializer_class = LocationSerializer permission_classes = (permissions.IsAuthenticated,) + schema = ManualSchema([ + coreapi.Field( + 'lat', required=True, location='query', schema=coreschema.String(description='latitude') + ), + coreapi.Field( + 'lon', required=True, location='query', schema=coreschema.String(description='longitude') + ), + ]) def get_object(self): """クエリパラメータから緯度経度取得して情報を返す""" @@ -30,6 +41,18 @@ class DemoLocationView(generics.RetrieveAPIView): """ serializer_class = DemoLocationSerializer permission_classes = (permissions.IsAuthenticated,) + schema = ManualSchema([ + coreapi.Field( + 'lat', required=True, location='query', schema=coreschema.String(description='latitude') + ), + coreapi.Field( + 'lon', required=True, location='query', schema=coreschema.String(description='longitude') + ), + coreapi.Field( + 'date', required=False, location='query', schema=coreschema.String(description='%Y-%m-%d_%H:%M%S'), + description='%Y-%m-%d_%H:%M%S', example='%Y-%m-%d_%H:%M%S' + ) + ]) def get_object(self): """クエリパラメータから緯度経度取得して情報を返す""" diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index d721216..7a52011 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -15,6 +15,7 @@ """ from django.contrib import admin from django.urls import path, include +from django.conf import settings from rest_framework.routers import DefaultRouter from rest_framework_swagger.views import get_swagger_view @@ -26,6 +27,11 @@ router.register(r'users', UserViewSets, basename='users') router.register(r'shelters', ShelterViewSets, basename='shelters') +if not settings.DEBUG: + url = 'https://mizql.aquatan.studio/api/' +else: + url = None + urlpatterns = [ path('admin/', admin.site.urls), path('_/', include('accounts.urls')), @@ -33,5 +39,5 @@ path('area/', LocationView.as_view()), path('demo-area/', DemoLocationView.as_view()), path('auth/', include('djoser.urls.jwt')), - path('swagger/', get_swagger_view(title='mizql API Doc')), + path('swagger/', get_swagger_view(title='mizql API Doc', url=url)), ] From 30a80a013283dc867b5c8a1b5b7d233ae8707057 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 00:11:57 +0900 Subject: [PATCH 067/162] enable ssl forward --- mizql/mizql/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mizql/mizql/settings.py b/mizql/mizql/settings.py index 36385c0..d608c35 100644 --- a/mizql/mizql/settings.py +++ b/mizql/mizql/settings.py @@ -180,5 +180,6 @@ CORS_ORIGIN_ALLOW_ALL = True else: FORCE_SCRIPT_NAME = '/api' + SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') YOLP_APP_ID = os.getenv('YOLP_APP_ID') From cb36e64a75024171ffb10ad39b31a4bc32239549 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 00:34:33 +0900 Subject: [PATCH 068/162] login function --- frontend/src/components/Home.js | 5 ++++- frontend/src/components/Login.js | 10 ++++++---- frontend/src/modules/api.js | 16 ++++++++++++++++ frontend/src/modules/auth.js | 22 ++++++++++++++++++++++ 4 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 frontend/src/modules/api.js create mode 100644 frontend/src/modules/auth.js diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 9b77727..067d1f1 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -14,6 +14,7 @@ import Information from './Information'; import ShelterDetail from './ShelterDetail'; import {mockShelters} from "../config/mockdata"; +import * as auth from '../modules/auth'; export default class Home extends Component { constructor(props) { @@ -23,6 +24,7 @@ export default class Home extends Component { canUseGeolocation: null, shelters: mockShelters, pickShelter: null, + isLogin: false, }; } @@ -37,6 +39,7 @@ export default class Home extends Component { }).catch((error) => { console.error(error); }); + this.setState({isLogin: auth.isLogin()}) } pickShelter(shelter) { @@ -52,7 +55,7 @@ export default class Home extends Component { Mizukuru Map - + {this.state.isLogin ? null : } diff --git a/frontend/src/components/Login.js b/frontend/src/components/Login.js index 7b4a4bb..b591fbd 100644 --- a/frontend/src/components/Login.js +++ b/frontend/src/components/Login.js @@ -8,6 +8,7 @@ import Grid from '@material-ui/core/Grid'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import TextField from '@material-ui/core/TextField'; +import * as auth from '../modules/auth'; export default class Login extends Component { constructor(props) { @@ -19,10 +20,11 @@ export default class Login extends Component { } handleLogin(){ - console.log('login'); - console.log(this.state.username); - console.log(this.state.password); - // TODO: Login API + auth.login(this.state.username, this.state.password).then((res) => { + if (res) { + this.props.history.push('/'); + } + }) } render() { diff --git a/frontend/src/modules/api.js b/frontend/src/modules/api.js new file mode 100644 index 0000000..c54def0 --- /dev/null +++ b/frontend/src/modules/api.js @@ -0,0 +1,16 @@ +export const login = async (username, password) => { + const options = { + method: "POST", + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + username: username, + password: password, + }), + }; + + const res = await fetch(`${process.env.REACT_APP_API_PATH}/auth/jwt/create/`, options); + return await res.json() +}; diff --git a/frontend/src/modules/auth.js b/frontend/src/modules/auth.js new file mode 100644 index 0000000..ec362e4 --- /dev/null +++ b/frontend/src/modules/auth.js @@ -0,0 +1,22 @@ +import * as api from './api'; + +export const login = async (username, password) => { + const result = await api.login(username, password); + if (result.error) { + return false; + } + + localStorage.setItem('token', result.token); + return true; +}; + +export const isLogin = () => { + const token = localStorage.getItem('token'); + if (token.length === 0) { + return false; + } + + // TODO: verify + return true; +}; + From 03389943a7c8613158b848cca62cfd53010fa403 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 00:39:00 +0900 Subject: [PATCH 069/162] fix --- frontend/src/modules/auth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/modules/auth.js b/frontend/src/modules/auth.js index ec362e4..185d7d7 100644 --- a/frontend/src/modules/auth.js +++ b/frontend/src/modules/auth.js @@ -12,7 +12,7 @@ export const login = async (username, password) => { export const isLogin = () => { const token = localStorage.getItem('token'); - if (token.length === 0) { + if (!token) { return false; } From 4d73c15b5b1c34152ad6693a22a222e796a816bd Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 10:28:11 +0900 Subject: [PATCH 070/162] fix login function --- frontend/src/components/Home.js | 11 ++++++++++- frontend/src/modules/api.js | 11 +++++------ frontend/src/modules/auth.js | 6 +++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 067d1f1..146964b 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -47,6 +47,12 @@ export default class Home extends Component { this.setState({pickShelter: shelter}); } + logout() { + auth.logout(); + alert('ログアウトしました'); + this.setState({isLogin: false}); + } + render() { return ( @@ -55,7 +61,10 @@ export default class Home extends Component { Mizukuru Map - {this.state.isLogin ? null : } + {this.state.isLogin ? + + : + } diff --git a/frontend/src/modules/api.js b/frontend/src/modules/api.js index c54def0..ff6d32a 100644 --- a/frontend/src/modules/api.js +++ b/frontend/src/modules/api.js @@ -1,16 +1,15 @@ -export const login = async (username, password) => { +const sendPost = async (path, data) => { const options = { method: "POST", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, - body: JSON.stringify({ - username: username, - password: password, - }), + body: JSON.stringify(data), }; - const res = await fetch(`${process.env.REACT_APP_API_PATH}/auth/jwt/create/`, options); + const res = await fetch(process.env.REACT_APP_API_PATH + path, options); return await res.json() }; + +export const login = (username, password) => sendPost('/auth/jwt/create', {username, password}); diff --git a/frontend/src/modules/auth.js b/frontend/src/modules/auth.js index 185d7d7..ab3f67c 100644 --- a/frontend/src/modules/auth.js +++ b/frontend/src/modules/auth.js @@ -2,7 +2,8 @@ import * as api from './api'; export const login = async (username, password) => { const result = await api.login(username, password); - if (result.error) { + console.log(result); + if (result.non_field_errors) { return false; } @@ -20,3 +21,6 @@ export const isLogin = () => { return true; }; +export const logout = () => { + localStorage.removeItem('token'); +}; From 36359046c1967da5645e3ef47b4fda9a1492e5a7 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 11:07:38 +0900 Subject: [PATCH 071/162] refactor --- frontend/src/components/Home.js | 31 ++++++++++++++++--------------- frontend/src/components/Login.js | 22 ++++++++++++---------- frontend/src/components/Map.js | 4 +++- frontend/src/config/mockdata.js | 2 +- frontend/src/modules/location.js | 2 +- 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 146964b..bea1212 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -1,20 +1,21 @@ import React, {Component} from 'react'; import {Link} from 'react-router-dom'; -import AppBar from '@material-ui/core/AppBar'; -import Button from '@material-ui/core/Button'; -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import Grid from '@material-ui/core/Grid'; -import Toolbar from '@material-ui/core/Toolbar'; -import Typography from '@material-ui/core/Typography'; -import {GetPosition} from '../modules/location'; -import {MapComponent} from "./Map"; +import { + AppBar, + Button, + Card, CardContent, + Grid, + Typography, + Toolbar +} from '@material-ui/core'; +import * as location from '../modules/location'; +import * as auth from '../modules/auth'; +import * as mockdata from "../config/mockdata"; +import ShelterMap from "./Map"; import ShelterList from './ShelterList'; import Information from './Information'; import ShelterDetail from './ShelterDetail'; -import {mockShelters} from "../config/mockdata"; -import * as auth from '../modules/auth'; export default class Home extends Component { constructor(props) { @@ -22,14 +23,14 @@ export default class Home extends Component { this.state = { location: null, canUseGeolocation: null, - shelters: mockShelters, + shelters: mockdata.shelters, pickShelter: null, isLogin: false, }; } componentDidMount() { - GetPosition().then((value) => { + location.getPosition().then((value) => { this.setState({ location: { lat: value.lat, @@ -58,7 +59,7 @@ export default class Home extends Component { - + Mizukuru Map {this.state.isLogin ? @@ -73,7 +74,7 @@ export default class Home extends Component { {this.state.location ? - - + Mizukuru Map diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index d0fb278..bc6804b 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -3,7 +3,7 @@ import {compose, withProps} from 'recompose'; import {GoogleMap, Marker, withGoogleMap, withScriptjs} from 'react-google-maps'; import UserPoint from '../UserMapPoint.svg'; -export const MapComponent = compose( +const ShelterMap = compose( withProps({ googleMapURL: `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=${process.env.REACT_APP_GOOGLE_MAP}`, loadingElement:
, @@ -39,3 +39,5 @@ export const MapComponent = compose( } )); + +export default ShelterMap; diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index ed1c3f5..a48580f 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -1,4 +1,4 @@ -export const mockShelters = [ +export const shelters = [ { "name": "京都工芸繊維大学", "address": "京都府京都市左京区松ヶ崎橋上町", diff --git a/frontend/src/modules/location.js b/frontend/src/modules/location.js index d063025..2009f57 100644 --- a/frontend/src/modules/location.js +++ b/frontend/src/modules/location.js @@ -1,4 +1,4 @@ -export const GetPosition = () => { +export const getPosition = () => { return new Promise((resolve, reject) => { if(!navigator.geolocation) { reject("このブラウザは現在地の取得に対応していません:("); From af30c3b9192b8bf7121d959722feae63036820ba Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 11:25:19 +0900 Subject: [PATCH 072/162] .env --- frontend/.env.production | 3 ++- frontend/.env.sample | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/.env.production b/frontend/.env.production index 5679317..f734204 100644 --- a/frontend/.env.production +++ b/frontend/.env.production @@ -1 +1,2 @@ -REACT_APP_GOOGLE_MAP=AIzaSyATSIXv9BImvW9ivbbGL-aVvyMxyCgjT7c \ No newline at end of file +REACT_APP_GOOGLE_MAP= +REACT_APP_API_PATH=https://mizql.aquatan.studio/api diff --git a/frontend/.env.sample b/frontend/.env.sample index cbd2d73..badd0f0 100644 --- a/frontend/.env.sample +++ b/frontend/.env.sample @@ -1 +1,2 @@ -REACT_APP_GOOGLE_MAP= \ No newline at end of file +REACT_APP_GOOGLE_MAP= +REACT_APP_API_PATH= \ No newline at end of file From 6ee53a0f09513713f307078a6e8a87ccd46e5cf6 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 11:26:22 +0900 Subject: [PATCH 073/162] fix --- frontend/.env.production | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/.env.production b/frontend/.env.production index f734204..605d355 100644 --- a/frontend/.env.production +++ b/frontend/.env.production @@ -1,2 +1,2 @@ -REACT_APP_GOOGLE_MAP= +REACT_APP_GOOGLE_MAP=AIzaSyATSIXv9BImvW9ivbbGL-aVvyMxyCgjT7c REACT_APP_API_PATH=https://mizql.aquatan.studio/api From 6652e4bf7d4c5b5cef81cfc40388de2785f9daf9 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 11:29:49 +0900 Subject: [PATCH 074/162] fix swagger url --- mizql/mizql/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index 7a52011..5f99abf 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -28,7 +28,7 @@ router.register(r'shelters', ShelterViewSets, basename='shelters') if not settings.DEBUG: - url = 'https://mizql.aquatan.studio/api/' + url = 'api/' else: url = None From 831ced5a6ca83f8550ea60af1c89bbb7a79d1bfe Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 11:31:27 +0900 Subject: [PATCH 075/162] add example value for swagger --- mizql/disaster/views.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mizql/disaster/views.py b/mizql/disaster/views.py index bce4fae..432e938 100644 --- a/mizql/disaster/views.py +++ b/mizql/disaster/views.py @@ -17,10 +17,12 @@ class LocationView(generics.RetrieveAPIView): permission_classes = (permissions.IsAuthenticated,) schema = ManualSchema([ coreapi.Field( - 'lat', required=True, location='query', schema=coreschema.String(description='latitude') + 'lat', required=True, location='query', schema=coreschema.String(description='latitude'), + example='35.048900', description='緯度' ), coreapi.Field( - 'lon', required=True, location='query', schema=coreschema.String(description='longitude') + 'lon', required=True, location='query', schema=coreschema.String(description='longitude'), + example='135.780418', description='経度' ), ]) @@ -43,14 +45,16 @@ class DemoLocationView(generics.RetrieveAPIView): permission_classes = (permissions.IsAuthenticated,) schema = ManualSchema([ coreapi.Field( - 'lat', required=True, location='query', schema=coreschema.String(description='latitude') + 'lat', required=True, location='query', schema=coreschema.String(description='latitude'), + example='35.048900', description='緯度' ), coreapi.Field( - 'lon', required=True, location='query', schema=coreschema.String(description='longitude') + 'lon', required=True, location='query', schema=coreschema.String(description='longitude'), + example='135.780418', description='経度' ), coreapi.Field( 'date', required=False, location='query', schema=coreschema.String(description='%Y-%m-%d_%H:%M%S'), - description='%Y-%m-%d_%H:%M%S', example='%Y-%m-%d_%H:%M%S' + description='%Y-%m-%d_%H:%M%S', example='2018-09-04_12:00:00' ) ]) From 9b4bb058c73036408c0682726c7f30571a35e392 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 12:19:54 +0900 Subject: [PATCH 076/162] fix --- mizql/mizql/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index 5f99abf..1488f76 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -28,7 +28,7 @@ router.register(r'shelters', ShelterViewSets, basename='shelters') if not settings.DEBUG: - url = 'api/' + url = '/api/' else: url = None From 2d2f4b94d50464a038fc2de19eb0b815b9a0b3ce Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 13:41:01 +0900 Subject: [PATCH 077/162] `yarn add rechart` --- frontend/package.json | 1 + frontend/yarn.lock | 165 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 161 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 97a9f93..d3a82bd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,6 +11,7 @@ "react-google-maps": "^9.4.5", "react-router-dom": "^4.3.1", "react-scripts": "2.1.1", + "recharts": "^1.3.5", "recompose": "^0.30.0" }, "scripts": { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 5db081c..fad7907 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1676,6 +1676,11 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -2178,7 +2183,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: +classnames@^2.2.5, classnames@~2.2.5: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -2443,7 +2448,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@2.5.7, core-js@^2.4.0, core-js@^2.5.0: +core-js@2.5.7, core-js@^2.4.0, core-js@^2.5.0, core-js@~2.5.1: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== @@ -2768,6 +2773,69 @@ cyclist@~0.2.2: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +d3-array@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +d3-collection@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== + +d3-color@1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.2.3.tgz#6c67bb2af6df3cc8d79efcc4d3a3e83e28c8048f" + integrity sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw== + +d3-format@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.3.2.tgz#6a96b5e31bcb98122a30863f7d92365c00603562" + integrity sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ== + +d3-interpolate@1, d3-interpolate@~1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.2.tgz#417d3ebdeb4bc4efcc8fd4361c55e4040211fd68" + integrity sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w== + dependencies: + d3-color "1" + +d3-path@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.7.tgz#8de7cd693a75ac0b5480d3abaccd94793e58aae8" + integrity sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA== + +d3-scale@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.1.2.tgz#4e932b7b60182aee9073ede8764c98423e5f9a94" + integrity sha512-bESpd64ylaKzCDzvULcmHKZTlzA/6DGSVwx7QSDj/EnX9cpSevsdiwdHFYI9ouo9tNBbV3v5xztHS2uFeOzh8Q== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + +d3-shape@~1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.2.tgz#f9dba3777a5825f9a8ce8bc928da08c17679e9a7" + integrity sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ== + dependencies: + d3-path "1" + +d3-time-format@2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.3.tgz#ae06f8e0126a9d60d6364eac5b1533ae1bac826b" + integrity sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA== + dependencies: + d3-time "1" + +d3-time@1: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.10.tgz#8259dd71288d72eeacfd8de281c4bf5c7393053c" + integrity sha512-hF+NTLCaJHF/JqHN5hE8HVGAXPStEq6/omumPE/SxyHVrR7/qQxusFDo0t0c/44+sCGHthC7yNGFZIEgju0P8g== + damerau-levenshtein@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" @@ -2832,6 +2900,11 @@ decamelize@^2.0.0: dependencies: xregexp "4.0.0" +decimal.js-light@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" + integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== + 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" @@ -5989,12 +6062,17 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "~3.0.0" +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: +"lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.4: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -6072,6 +6150,11 @@ markerwithlabel@^2.0.1: resolved "https://registry.yarnpkg.com/markerwithlabel/-/markerwithlabel-2.0.2.tgz#fa6aee4abb0ee553e24e2b708226858f58b8729e" integrity sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg== +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= + math-random@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" @@ -7809,7 +7892,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@~15.6.0: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7924,6 +8007,13 @@ raf@3.4.0: dependencies: performance-now "^2.1.0" +raf@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + randomatic@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" @@ -8060,6 +8150,16 @@ react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-resize-detector@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-2.3.0.tgz#57bad1ae26a28a62a2ddb678ba6ffdf8fa2b599c" + integrity sha512-oCAddEWWeFWYH5FAcHdBYcZjAw9fMzRUK9sWSx6WvSSOPVRxcHd5zTIGy/mOus+AhN/u6T4TMiWxvq79PywnJQ== + dependencies: + lodash.debounce "^4.0.8" + lodash.throttle "^4.1.1" + prop-types "^15.6.0" + resize-observer-polyfill "^1.5.0" + react-router-dom@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" @@ -8140,7 +8240,17 @@ react-scripts@2.1.1: optionalDependencies: fsevents "1.2.4" -react-transition-group@^2.2.1: +react-smooth@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-1.0.2.tgz#f7a2d932ece8db898646078c3c97f3e9533e0486" + integrity sha512-pIGzL1g9VGAsRsdZQokIK0vrCkcdKtnOnS1gyB2rrowdLy69lNSWoIjCTWAfgbiYvria8tm5hEZqj+jwXMkV4A== + dependencies: + lodash "~4.17.4" + prop-types "^15.6.0" + raf "^3.4.0" + react-transition-group "^2.5.0" + +react-transition-group@^2.2.1, react-transition-group@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.5.0.tgz#70bca0e3546102c4dc5cf3f5f57f73447cce6874" integrity sha512-qYB3JBF+9Y4sE4/Mg/9O6WFpdoYjeeYqx0AFb64PTazVy8RPMiE3A47CG9QmM4WJ/mzDiZYslV+Uly6O1Erlgw== @@ -8233,6 +8343,30 @@ realpath-native@^1.0.0: dependencies: util.promisify "^1.0.0" +recharts-scale@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.2.tgz#b66315d985cd9b80d5f7d977a5aab9a305abc354" + integrity sha512-p/cKt7j17D1CImLgX2f5+6IXLbRHGUQkogIp06VUoci/XkhOQiGSzUrsD1uRmiI7jha4u8XNFOjkHkzzBPivMg== + dependencies: + decimal.js-light "^2.4.1" + +recharts@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-1.3.5.tgz#e11575bf3de924e514a6401a0d97e04c457e92c2" + integrity sha512-WAqyXOQ6Wt0QoFofX0YsSZ6nQozoo0/uot30WclsWVms7f89aXqdZFZbonrJP/fcliHl1ISmDjvIpNiTQCp9XA== + dependencies: + classnames "~2.2.5" + core-js "~2.5.1" + d3-interpolate "~1.3.0" + d3-scale "~2.1.0" + d3-shape "~1.2.0" + lodash "~4.17.4" + prop-types "~15.6.0" + react-resize-detector "~2.3.0" + react-smooth "~1.0.0" + recharts-scale "^0.4.2" + reduce-css-calc "~1.3.0" + "recompose@0.28.0 - 0.30.0", recompose@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" @@ -8274,6 +8408,22 @@ recursive-readdir@2.2.2: dependencies: minimatch "3.0.4" +reduce-css-calc@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk= + dependencies: + balanced-match "^0.4.2" + regenerate-unicode-properties@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" @@ -8476,6 +8626,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +resize-observer-polyfill@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz#660ff1d9712a2382baa2cad450a4716209f9ca69" + integrity sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg== + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" From ee333a2c4ee5484a03ef1ef4a93b36a19cf6e706 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 14:16:19 +0900 Subject: [PATCH 078/162] ShelterDetail Drawer --- frontend/src/components/Home.js | 53 ++++++++++++++---------- frontend/src/components/ShelterDetail.js | 44 +++++++++++++++++--- frontend/src/config/mockdata.js | 9 ++++ 3 files changed, 78 insertions(+), 28 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index bea1212..a878971 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -4,6 +4,7 @@ import { AppBar, Button, Card, CardContent, + Drawer, Grid, Typography, Toolbar @@ -25,6 +26,7 @@ export default class Home extends Component { canUseGeolocation: null, shelters: mockdata.shelters, pickShelter: null, + showDetail: false, isLogin: false, }; } @@ -44,8 +46,18 @@ export default class Home extends Component { } pickShelter(shelter) { + if (!shelter) { + this.setState({ + pickShelter: null, + showDetail: false, + }); + } else { + this.setState({ + pickShelter: shelter, + showDetail: true, + }); + } console.log(shelter); - this.setState({pickShelter: shelter}); } logout() { @@ -96,28 +108,25 @@ export default class Home extends Component { - {this.state.pickShelter ? - - - - - - - - : - - - - - - - - } - + + + + + + + + + this.pickShelter(null)} + > + + ) } diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index c83277e..0329ec5 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -1,4 +1,13 @@ import React, {Component} from 'react'; +import { + Button, + Grid, + Paper, + Typography +} from '@material-ui/core'; +import {KeyboardArrowDown} from '@material-ui/icons'; +import {BarChart, Bar, ResponsiveContainer} from 'recharts'; +import * as mockdata from '../config/mockdata'; export default class ShelterDetail extends Component { constructor(props) { @@ -8,14 +17,37 @@ export default class ShelterDetail extends Component { }; } - render(){ + render() { return ( -

避難所詳細情報

-

{this.state.shelter.name}

-

{this.state.shelter.distance}

-

{this.state.shelter.address}

- + + + + + + + + + + + + + + {this.state.shelter.name} + {this.state.shelter.distance} m + {this.state.shelter.address} + + + +
); } diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index a48580f..e077600 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -34,4 +34,13 @@ export const shelters = [ "lon": 135.7885355, "distance": 990.0 } +]; + +export const evacuees = [ + {name: "12:00", num: 10}, + {name: "13:00", num: 20}, + {name: "14:00", num: 50}, + {name: "15:00", num: 90}, + {name: "16:00", num: 100}, + {name: "17:00", num: 115}, ]; \ No newline at end of file From bda4c40a3212b2f311a20976cc1f33de17b9186c Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 14:45:55 +0900 Subject: [PATCH 079/162] install drf-nested-routers --- Pipfile | 1 + Pipfile.lock | 41 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/Pipfile b/Pipfile index 496d123..7c114e7 100644 --- a/Pipfile +++ b/Pipfile @@ -15,6 +15,7 @@ mysqlclient = "*" gunicorn = "*" requests = "*" django-cors-headers = "*" +drf-nested-routers = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 3c2159e..e21114c 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "e10094ffc868a02f5c4dc9701c7ef4c7fa7bed0af9268c6bfd1ca2f88472e841" + "sha256": "8e2aa91fc9a6b6b02c39a82b03301c0cded7cbf8e6b4f449602b56fb9a6496f1" }, "pipfile-spec": 6, "requires": { @@ -107,6 +107,14 @@ "index": "pypi", "version": "==1.3.1" }, + "drf-nested-routers": { + "hashes": [ + "sha256:46e5c3abc15c782cafafd7d75028e8f9121bbc6228e3599bbb48a3daa4585034", + "sha256:60c1e1f5cc801e757d26a8138e61c44419ef800c213c3640c5b6138e77d46762" + ], + "index": "pypi", + "version": "==0.91" + }, "gunicorn": { "hashes": [ "sha256:aa8e0b40b4157b36a5df5e599f45c9c76d6af43845ba3b3b0efe2c70473c2471", @@ -137,9 +145,36 @@ }, "markupsafe": { "hashes": [ - "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" + "sha256:048ef924c1623740e70204aa7143ec592504045ae4429b59c30054cb31e3c432", + "sha256:130f844e7f5bdd8e9f3f42e7102ef1d49b2e6fdf0d7526df3f87281a532d8c8b", + "sha256:19f637c2ac5ae9da8bfd98cef74d64b7e1bb8a63038a3505cd182c3fac5eb4d9", + "sha256:1b8a7a87ad1b92bd887568ce54b23565f3fd7018c4180136e1cf412b405a47af", + "sha256:1c25694ca680b6919de53a4bb3bdd0602beafc63ff001fea2f2fc16ec3a11834", + "sha256:1f19ef5d3908110e1e891deefb5586aae1b49a7440db952454b4e281b41620cd", + "sha256:1fa6058938190ebe8290e5cae6c351e14e7bb44505c4a7624555ce57fbbeba0d", + "sha256:31cbb1359e8c25f9f48e156e59e2eaad51cd5242c05ed18a8de6dbe85184e4b7", + "sha256:3e835d8841ae7863f64e40e19477f7eb398674da6a47f09871673742531e6f4b", + "sha256:4e97332c9ce444b0c2c38dd22ddc61c743eb208d916e4265a2a3b575bdccb1d3", + "sha256:525396ee324ee2da82919f2ee9c9e73b012f23e7640131dd1b53a90206a0f09c", + "sha256:52b07fbc32032c21ad4ab060fec137b76eb804c4b9a1c7c7dc562549306afad2", + "sha256:52ccb45e77a1085ec5461cde794e1aa037df79f473cbc69b974e73940655c8d7", + "sha256:5c3fbebd7de20ce93103cb3183b47671f2885307df4a17a0ad56a1dd51273d36", + "sha256:5e5851969aea17660e55f6a3be00037a25b96a9b44d2083651812c99d53b14d1", + "sha256:5edfa27b2d3eefa2210fb2f5d539fbed81722b49f083b2c6566455eb7422fd7e", + "sha256:7d263e5770efddf465a9e31b78362d84d015cc894ca2c131901a4445eaa61ee1", + "sha256:83381342bfc22b3c8c06f2dd93a505413888694302de25add756254beee8449c", + "sha256:857eebb2c1dc60e4219ec8e98dfa19553dae33608237e107db9c6078b1167856", + "sha256:98e439297f78fca3a6169fd330fbe88d78b3bb72f967ad9961bcac0d7fdd1550", + "sha256:bf54103892a83c64db58125b3f2a43df6d2cb2d28889f14c78519394feb41492", + "sha256:d9ac82be533394d341b41d78aca7ed0e0f4ba5a2231602e2f05aa87f25c51672", + "sha256:e982fe07ede9fada6ff6705af70514a52beb1b2c3d25d4e873e82114cf3c5401", + "sha256:edce2ea7f3dfc981c4ddc97add8a61381d9642dc3273737e756517cc03e84dd6", + "sha256:efdc45ef1afc238db84cb4963aa689c0408912a0239b0721cb172b4016eb31d6", + "sha256:f137c02498f8b935892d5c0172560d7ab54bc45039de8805075e19079c639a9c", + "sha256:f82e347a72f955b7017a39708a3667f106e6ad4d10b25f237396a7115d8ed5fd", + "sha256:fb7c206e01ad85ce57feeaaa0bf784b97fa3cad0d4a5737bc5295785f5c613a1" ], - "version": "==1.0" + "version": "==1.1.0" }, "mysqlclient": { "hashes": [ From 248944ed36e5738c567f9e567ccd37c839391125 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 15:10:51 +0900 Subject: [PATCH 080/162] add history models --- ...uationhistory_personalevacuationhistory.py | 41 +++++++++++ mizql/evacuation/models.py | 69 +++++++++++++++++++ mizql/mizql/urls.py | 9 ++- 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 mizql/evacuation/migrations/0002_evacuationhistory_personalevacuationhistory.py diff --git a/mizql/evacuation/migrations/0002_evacuationhistory_personalevacuationhistory.py b/mizql/evacuation/migrations/0002_evacuationhistory_personalevacuationhistory.py new file mode 100644 index 0000000..36a3f35 --- /dev/null +++ b/mizql/evacuation/migrations/0002_evacuationhistory_personalevacuationhistory.py @@ -0,0 +1,41 @@ +# Generated by Django 2.1.3 on 2018-11-06 04:56 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('evacuation', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='EvacuationHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('count', models.IntegerField(verbose_name='避難している人数')), + ('created_at', models.DateTimeField(verbose_name='取得日')), + ('shelter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='histories', to='evacuation.Shelter', verbose_name='避難所')), + ], + options={ + 'ordering': ['-created_at'], + }, + ), + migrations.CreateModel( + name='PersonalEvacuationHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('is_evacuated', models.BooleanField(verbose_name='避難しているか')), + ('shelter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='personal_histories', to='evacuation.Shelter', verbose_name='避難所')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='evacuation_histories', to=settings.AUTH_USER_MODEL, verbose_name='ユーザ')), + ], + options={ + 'ordering': ['-created_at'], + }, + ), + ] diff --git a/mizql/evacuation/models.py b/mizql/evacuation/models.py index 938dee3..5b804c6 100644 --- a/mizql/evacuation/models.py +++ b/mizql/evacuation/models.py @@ -1,5 +1,7 @@ from django.db import models +from django.contrib.auth import get_user_model from django.db.models.expressions import RawSQL +from django.utils import timezone class NearbyShelterManager(models.Manager): @@ -53,3 +55,70 @@ class Shelter(models.Model): class Meta: unique_together = ('lat', 'lon') ordering = ['name'] + + def __str__(self): + return self.name + + +class PersonalEvacuationHistory(models.Model): + """ + 個人の避難履歴を取る + """ + user = models.ForeignKey(get_user_model(), verbose_name='ユーザ', on_delete=models.CASCADE, + related_name='evacuation_histories') + shelter = models.ForeignKey(Shelter, verbose_name='避難所', on_delete=models.CASCADE, + related_name='personal_histories') + created_at = models.DateTimeField(auto_now_add=True) + is_evacuated = models.BooleanField(verbose_name='避難しているか') + + class Meta: + ordering = ['-created_at'] + + +class EvacuationHistoryManager(models.Manager): + + def create(self, shelter: Shelter): + """ + 10分前から現在までの避難人数を取得 + :param shelter: + :return: + """ + now = timezone.now() + # 最新の履歴から人数を取得 + personal_histories = PersonalEvacuationHistory.objects.prefetch_related('shelter').filter(shelter=shelter) + try: + latest_history = EvacuationHistory.objects.first() + latest_count = 0 + latest_date = latest_history.created_at + except EvacuationHistory.DoesNotExist: + latest_count = 0 + try: + last_history = personal_histories.last() + latest_date = last_history.created_at + except PersonalEvacuationHistory.DoesNotExist: + latest_date = now + # 前回取得時意向の履歴一覧 + personal_histories = personal_histories.filter(created_at__range=[latest_date, now]) + # 避難した人数 + at_shelter_count = personal_histories.filter(is_evacuated=True).count() + # 帰宅した人数 + at_home_count = personal_histories.filter(is_evacuated=False).count() + # 現在避難所に居る人数 + current_count = latest_count + at_shelter_count - at_home_count + hist = self.model(shelter=shelter, count=current_count, created_at=now) + hist.save() + return hist + + +class EvacuationHistory(models.Model): + """ + 避難人数の履歴を取る + """ + shelter = models.ForeignKey(Shelter, verbose_name='避難所', related_name='histories', on_delete=models.CASCADE) + count = models.IntegerField('避難している人数') + created_at = models.DateTimeField('取得日') + + objects = EvacuationHistoryManager() + + class Meta: + ordering = ['-created_at'] diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index 1488f76..378eeab 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -16,17 +16,21 @@ from django.contrib import admin from django.urls import path, include from django.conf import settings -from rest_framework.routers import DefaultRouter +from rest_framework_nested.routers import DefaultRouter, NestedDefaultRouter from rest_framework_swagger.views import get_swagger_view from accounts.views import UserViewSets -from evacuation.views import ShelterViewSets +from evacuation.views import ShelterViewSets, EvacuationHistoryViewSets, EvacuationViewSets from disaster.views import LocationView, DemoLocationView router = DefaultRouter() router.register(r'users', UserViewSets, basename='users') router.register(r'shelters', ShelterViewSets, basename='shelters') +shelter_nested_router = NestedDefaultRouter(router, 'shelters', lookup='shelter') +shelter_nested_router.register(r'history', EvacuationHistoryViewSets, basename='history') +shelter_nested_router.register(r'evacuate', EvacuationViewSets, basename='evacuate') + if not settings.DEBUG: url = '/api/' else: @@ -36,6 +40,7 @@ path('admin/', admin.site.urls), path('_/', include('accounts.urls')), path('', include(router.urls)), + path('', include(shelter_nested_router.urls)), path('area/', LocationView.as_view()), path('demo-area/', DemoLocationView.as_view()), path('auth/', include('djoser.urls.jwt')), From 25b8d614438cc5d82df3cfdc56b54567c8e1045e Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 15:11:04 +0900 Subject: [PATCH 081/162] implement serializer --- mizql/evacuation/serializers.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index 0696df1..fd27657 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from .models import Shelter +from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory def round_distance(distance: float, digit: int=-1) -> int: @@ -21,3 +21,28 @@ def to_representation(self, instance): dist_key = 'distance' data[dist_key] = round_distance(getattr(instance, dist_key, 0.0) * 1000) return data + + +class EvacuationHistorySerializer(serializers.ModelSerializer): + + class Meta: + model = EvacuationHistory + fields = ('created_at', 'count') + + +class PersonalEvacuationHistorySerializer(serializers.ModelSerializer): + + shelter_id = serializers.PrimaryKeyRelatedField(read_only=True) + + class Meta: + model = PersonalEvacuationHistory + fields = ('pk', 'shelter_id', 'is_evacuated') + + def create(self, validated_data): + user = self.context['request'].user + history, is_created = PersonalEvacuationHistory.objects.get_or_create( + shelter_id=validated_data['shelter_id'], user=user, is_evacuated=validated_data['is_evacuated'] + ) + if not is_created: + raise serializers.ValidationError({'is_evacuated': 'You have already evacuate.'}) + return history From cd360fa0a9c6997f2c1e73c5fdade3546515893f Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 15:11:47 +0900 Subject: [PATCH 082/162] implement view --- mizql/evacuation/views.py | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index 35ad1ae..3d7e22f 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -1,12 +1,12 @@ import coreapi import coreschema -from rest_framework import viewsets, permissions, schemas -from .models import Shelter -from .serializers import ShelterSerializer +from rest_framework import viewsets, permissions, schemas, mixins, status +from rest_framework.response import Response +from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory +from .serializers import ShelterSerializer, EvacuationHistorySerializer, PersonalEvacuationHistorySerializer class ShelterViewSets(viewsets.ReadOnlyModelViewSet): - permission_classes = (permissions.IsAuthenticated,) serializer_class = ShelterSerializer schema = schemas.AutoSchema( @@ -40,6 +40,34 @@ def get_queryset(self): if lat and lon: lat = float(lat) lon = float(lon) - return Shelter.objects.get_nearby_shelters_list(lat, lon, distance)\ + return Shelter.objects.get_nearby_shelters_list(lat, lon, distance) \ .order_by('distance').all() return Shelter.objects.all() + + +class EvacuationHistoryViewSets(mixins.ListModelMixin, + mixins.CreateModelMixin, + viewsets.GenericViewSet): + queryset = EvacuationHistory.objects.all() + serializer_class = EvacuationHistorySerializer + + def list(self, request, *args, **kwargs): + shelter_id = int(kwargs['shelter_pk']) + queryset = self.get_queryset().filter(sheler_id=shelter_id)[:10] + serializer = self.get_serializer(queryset, many=True) + return Response(serializer.data) + + +class EvacuationViewSets(mixins.CreateModelMixin, + viewsets.GenericViewSet): + queryset = PersonalEvacuationHistory.objects.all() + serializer_class = PersonalEvacuationHistorySerializer + + def create(self, request, *args, **kwargs): + shelter_id = int(kwargs['shelter_pk']) + data = request.data + data['shelter_id'] = shelter_id + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) From c40a6deeac02c9cf66690d4a1c65e3445ad30a45 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 15:11:59 +0900 Subject: [PATCH 083/162] add models to admin console --- mizql/accounts/models.py | 2 +- mizql/evacuation/admin.py | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/mizql/accounts/models.py b/mizql/accounts/models.py index c4140a7..57c4de9 100644 --- a/mizql/accounts/models.py +++ b/mizql/accounts/models.py @@ -55,7 +55,7 @@ class User(AbstractBaseUser, PermissionsMixin): def __str__(self): """ユーザ名を返却""" - return self.email + return self.username class Meta: ordering = ['-created_at'] diff --git a/mizql/evacuation/admin.py b/mizql/evacuation/admin.py index 5561147..d85104e 100644 --- a/mizql/evacuation/admin.py +++ b/mizql/evacuation/admin.py @@ -1,7 +1,26 @@ from django.contrib import admin -from .models import Shelter +from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory @admin.register(Shelter) class ShelterAdmin(admin.ModelAdmin): list_display = ('name', 'address', 'lat', 'lon') + + +@admin.register(EvacuationHistory) +class EvacuationHistoryAdmin(admin.ModelAdmin): + list_display = ('shelter_name', 'count', 'created_at') + + def shelter_name(self, obj): + return obj.shelter.name + + +@admin.register(PersonalEvacuationHistory) +class PersonalEvacuationHistoryAdmin(admin.ModelAdmin): + list_display = ('user_name', 'shelter_name', 'is_evacuated', 'created_at') + + def user_name(self, obj): + return obj.user.username + + def shelter_name(self, obj): + return obj.shelter.name From 25b7841a6c73b47f99972001f3245760090efec9 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 15:34:47 +0900 Subject: [PATCH 084/162] implement command that insert test user --- mizql/accounts/management/__init__.py | 0 .../accounts/management/commands/__init__.py | 0 .../accounts/management/commands/addusers.py | 38 +++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 mizql/accounts/management/__init__.py create mode 100644 mizql/accounts/management/commands/__init__.py create mode 100644 mizql/accounts/management/commands/addusers.py diff --git a/mizql/accounts/management/__init__.py b/mizql/accounts/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/accounts/management/commands/__init__.py b/mizql/accounts/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mizql/accounts/management/commands/addusers.py b/mizql/accounts/management/commands/addusers.py new file mode 100644 index 0000000..3cab090 --- /dev/null +++ b/mizql/accounts/management/commands/addusers.py @@ -0,0 +1,38 @@ +import random, string, uuid +from django.db import IntegrityError +from django.core.management.base import BaseCommand +from accounts.models import User + + +def get_random_name(n): + return ''.join(random.choices(string.ascii_letters + string.digits, k=n)) + + +class Command(BaseCommand): + """ + デモのためのユーザ追加コマンド + """ + + def add_arguments(self, parser): + parser.add_argument( + '-n', '--number', dest='num', type=int, default=1000, help='Number of users to add' + ) + parser.add_argument( + '--name-length', dest='length', type=int, default=7, help='Username length' + ) + + def handle(self, *args, **options): + n = options['num'] + l = options['length'] + email_domain = '@example.com' + for i in range(n): + password = str(uuid.uuid1()) + username = get_random_name(l) + email = username + email_domain + try: + User.objects.create_user( + username=username, email=email, password=password + ) + except IntegrityError: + continue + print('Created: "{}"'.format(username)) From e6b0235a296274874f5dee173d975e3de4331057 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 16:04:20 +0900 Subject: [PATCH 085/162] shelter graph --- frontend/src/App.js | 2 +- frontend/src/components/Home.js | 43 +++++++++++++----------- frontend/src/components/ShelterDetail.js | 20 ++++++++--- frontend/src/config/mockdata.js | 12 +++---- frontend/src/config/theme.js | 6 ++-- frontend/src/modules/location.js | 4 +++ 6 files changed, 54 insertions(+), 33 deletions(-) diff --git a/frontend/src/App.js b/frontend/src/App.js index 814381f..ab4d0f5 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -3,7 +3,7 @@ import {BrowserRouter, Route} from 'react-router-dom'; import Home from './components/Home'; import Login from './components/Login'; import {MuiThemeProvider} from '@material-ui/core/styles'; -import {theme} from './config/theme'; +import theme from './config/theme'; import {Store} from './modules/store'; const App = () => ( diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index a878971..312e835 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -4,10 +4,11 @@ import { AppBar, Button, Card, CardContent, + CircularProgress, Drawer, Grid, Typography, - Toolbar + Toolbar, } from '@material-ui/core'; import * as location from '../modules/location'; import * as auth from '../modules/auth'; @@ -23,7 +24,7 @@ export default class Home extends Component { super(props); this.state = { location: null, - canUseGeolocation: null, + canUseGeolocation: location.canGetPosition(), shelters: mockdata.shelters, pickShelter: null, showDetail: false, @@ -82,24 +83,6 @@ export default class Home extends Component { - - - - {this.state.location ? - - : - this.state.canUseGeolocation ? -

GPSを使用できません

: -

現在地取得中です...

- } -
-
-
- @@ -108,6 +91,26 @@ export default class Home extends Component { + {this.state.canUseGeolocation ? + + + + {this.state.location ? + + : + + } + + + + : + GPSを使用できません + } + diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index 0329ec5..f5a0c25 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -6,8 +6,15 @@ import { Typography } from '@material-ui/core'; import {KeyboardArrowDown} from '@material-ui/icons'; -import {BarChart, Bar, ResponsiveContainer} from 'recharts'; +import { + BarChart, + Bar, + ResponsiveContainer, + XAxis, + YAxis, +} from 'recharts'; import * as mockdata from '../config/mockdata'; +import theme from '../config/theme'; export default class ShelterDetail extends Component { constructor(props) { @@ -20,7 +27,7 @@ export default class ShelterDetail extends Component { render() { return ( - @@ -28,13 +35,18 @@ export default class ShelterDetail extends Component { - + + + - + {this.state.shelter.name} {this.state.shelter.distance} m {this.state.shelter.address} diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index e077600..83a4696 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -37,10 +37,10 @@ export const shelters = [ ]; export const evacuees = [ - {name: "12:00", num: 10}, - {name: "13:00", num: 20}, - {name: "14:00", num: 50}, - {name: "15:00", num: 90}, - {name: "16:00", num: 100}, - {name: "17:00", num: 115}, + {time: "12:00", num: 10}, + {time: "13:00", num: 20}, + {time: "14:00", num: 50}, + {time: "15:00", num: 90}, + {time: "16:00", num: 100}, + {time: "17:00", num: 115}, ]; \ No newline at end of file diff --git a/frontend/src/config/theme.js b/frontend/src/config/theme.js index 043c3a7..465633d 100644 --- a/frontend/src/config/theme.js +++ b/frontend/src/config/theme.js @@ -1,6 +1,6 @@ import {createMuiTheme} from '@material-ui/core/styles'; -export const theme = createMuiTheme({ +const theme = createMuiTheme({ typography: { useNextVariants: true, }, @@ -18,4 +18,6 @@ export const theme = createMuiTheme({ contrastText: '#fff', }, }, -}); \ No newline at end of file +}); + +export default theme; \ No newline at end of file diff --git a/frontend/src/modules/location.js b/frontend/src/modules/location.js index 2009f57..5c1e7f8 100644 --- a/frontend/src/modules/location.js +++ b/frontend/src/modules/location.js @@ -10,3 +10,7 @@ export const getPosition = () => { }), e => reject(`エラー(${e.code}): ${e.message}`)); }); }; + +export const canGetPosition = () => { + return navigator.geolocation; +}; \ No newline at end of file From f853de961c484b9237862045eca1b7268e738e60 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 16:15:41 +0900 Subject: [PATCH 086/162] fix circle margin --- frontend/src/components/Home.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 312e835..25f65a6 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -102,8 +102,8 @@ export default class Home extends Component { pickShelter={this.pickShelter.bind(this)} /> : - - } + + } From cae8a10da0152804d95f59e5f1c1c3925c24b283 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 16:36:40 +0900 Subject: [PATCH 087/162] lint to google map route --- frontend/src/components/Home.js | 4 ++-- frontend/src/components/ShelterDetail.js | 2 ++ frontend/src/modules/location.js | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 25f65a6..2e22136 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -58,7 +58,6 @@ export default class Home extends Component { showDetail: true, }); } - console.log(shelter); } logout() { @@ -92,7 +91,7 @@ export default class Home extends Component {
{this.state.canUseGeolocation ? - + {this.state.location ? @@ -126,6 +125,7 @@ export default class Home extends Component { onClose={() => this.pickShelter(null)} > diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index f5a0c25..c3067de 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -14,6 +14,7 @@ import { YAxis, } from 'recharts'; import * as mockdata from '../config/mockdata'; +import * as location from '../modules/location'; import theme from '../config/theme'; export default class ShelterDetail extends Component { @@ -54,6 +55,7 @@ export default class ShelterDetail extends Component { style={{boxShadow: 'none'}} variant="contained" color="secondary" + href={location.getGoogleMapRouteLink(this.props.myPosition, {lat: this.state.shelter.lat, lng: this.state.shelter.lon})} > ルートを表示 diff --git a/frontend/src/modules/location.js b/frontend/src/modules/location.js index 5c1e7f8..b1ab900 100644 --- a/frontend/src/modules/location.js +++ b/frontend/src/modules/location.js @@ -13,4 +13,8 @@ export const getPosition = () => { export const canGetPosition = () => { return navigator.geolocation; +}; + +export const getGoogleMapRouteLink = (from, to) => { + return `https://www.google.com/maps/dir/?api=1&origin=${from.lat},${from.lng}&destination=${to.lat},${to.lng}&travelmode=walking` }; \ No newline at end of file From 27a8646cd4b773c892c8f5ba575593ef02259ca5 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 16:37:19 +0900 Subject: [PATCH 088/162] create personal history at any datetime --- .../migrations/0003_auto_20181106_1637.py | 18 ++++++++++++++++++ mizql/evacuation/models.py | 2 +- mizql/evacuation/serializers.py | 4 +++- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 mizql/evacuation/migrations/0003_auto_20181106_1637.py diff --git a/mizql/evacuation/migrations/0003_auto_20181106_1637.py b/mizql/evacuation/migrations/0003_auto_20181106_1637.py new file mode 100644 index 0000000..3dfc9ad --- /dev/null +++ b/mizql/evacuation/migrations/0003_auto_20181106_1637.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.3 on 2018-11-06 07:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('evacuation', '0002_evacuationhistory_personalevacuationhistory'), + ] + + operations = [ + migrations.AlterField( + model_name='personalevacuationhistory', + name='created_at', + field=models.DateTimeField(verbose_name='日付'), + ), + ] diff --git a/mizql/evacuation/models.py b/mizql/evacuation/models.py index 5b804c6..b9eb066 100644 --- a/mizql/evacuation/models.py +++ b/mizql/evacuation/models.py @@ -68,7 +68,7 @@ class PersonalEvacuationHistory(models.Model): related_name='evacuation_histories') shelter = models.ForeignKey(Shelter, verbose_name='避難所', on_delete=models.CASCADE, related_name='personal_histories') - created_at = models.DateTimeField(auto_now_add=True) + created_at = models.DateTimeField('日付') is_evacuated = models.BooleanField(verbose_name='避難しているか') class Meta: diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index fd27657..e5e7683 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -1,3 +1,4 @@ +from django.utils import timezone from rest_framework import serializers from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory @@ -41,7 +42,8 @@ class Meta: def create(self, validated_data): user = self.context['request'].user history, is_created = PersonalEvacuationHistory.objects.get_or_create( - shelter_id=validated_data['shelter_id'], user=user, is_evacuated=validated_data['is_evacuated'] + shelter_id=validated_data['shelter_id'], user=user, is_evacuated=validated_data['is_evacuated'], + created_at=timezone.now() ) if not is_created: raise serializers.ValidationError({'is_evacuated': 'You have already evacuate.'}) From 124499d4aa273c1e7ce98b23ec07d0fafe6cbae0 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 17:08:44 +0900 Subject: [PATCH 089/162] add capacity to each shelter --- .../management/commands/addshelter.py | 4 +++- .../migrations/0004_shelter_capacity.py | 18 +++++++++++++++ .../migrations/0005_auto_20181106_1658.py | 22 +++++++++++++++++++ mizql/evacuation/models.py | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 mizql/evacuation/migrations/0004_shelter_capacity.py create mode 100644 mizql/evacuation/migrations/0005_auto_20181106_1658.py diff --git a/mizql/evacuation/management/commands/addshelter.py b/mizql/evacuation/management/commands/addshelter.py index 02c708b..5ea7750 100644 --- a/mizql/evacuation/management/commands/addshelter.py +++ b/mizql/evacuation/management/commands/addshelter.py @@ -2,6 +2,7 @@ import codecs import errno import os +import random import pathlib from django.core.management.base import BaseCommand @@ -36,8 +37,9 @@ def handle(self, *args, **options): keys = ['name', 'address', 'lat', 'lon'] for row in reader: data = dict(zip(keys, row)) + capacity = random.choice(list(range(50, 500))) obj, created = Shelter.objects.update_or_create( - lat=data.pop('lat'), lon=data.pop('lon'), defaults=data + lat=data.pop('lat'), lon=data.pop('lon'), defaults=data, capacity=capacity ) if created: print("Created: ", data['name']) diff --git a/mizql/evacuation/migrations/0004_shelter_capacity.py b/mizql/evacuation/migrations/0004_shelter_capacity.py new file mode 100644 index 0000000..960cd97 --- /dev/null +++ b/mizql/evacuation/migrations/0004_shelter_capacity.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.3 on 2018-11-06 07:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('evacuation', '0003_auto_20181106_1637'), + ] + + operations = [ + migrations.AddField( + model_name='shelter', + name='capacity', + field=models.IntegerField(null=True, verbose_name='収容可能人数'), + ), + ] diff --git a/mizql/evacuation/migrations/0005_auto_20181106_1658.py b/mizql/evacuation/migrations/0005_auto_20181106_1658.py new file mode 100644 index 0000000..efa23ed --- /dev/null +++ b/mizql/evacuation/migrations/0005_auto_20181106_1658.py @@ -0,0 +1,22 @@ +# Generated by Django 2.1.3 on 2018-11-06 07:58 + +import random +from django.db import migrations + + +def set_random_capacity(apps, scheme_editor): + Shelter = apps.get_model('evacuation', 'Shelter') + for shelter in Shelter.objects.all(): + shelter.capacity = random.choice(list(range(50, 1000))) + shelter.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('evacuation', '0004_shelter_capacity'), + ] + + operations = [ + migrations.RunPython(set_random_capacity) + ] diff --git a/mizql/evacuation/models.py b/mizql/evacuation/models.py index b9eb066..3c72f8c 100644 --- a/mizql/evacuation/models.py +++ b/mizql/evacuation/models.py @@ -49,6 +49,7 @@ class Shelter(models.Model): address = models.CharField(verbose_name='住所', max_length=255) lat = models.FloatField(verbose_name='緯度') lon = models.FloatField(verbose_name='経度') + capacity = models.IntegerField('収容可能人数', null=True) objects = NearbyShelterManager() From 859761986f6d733aa7e18fa8421375cc7ea914d7 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 17:11:20 +0900 Subject: [PATCH 090/162] rename dashboard --- .../{Information.js => Dashboard.js} | 2 +- frontend/src/components/Home.js | 19 ++++++++++--------- frontend/src/components/Map.js | 3 ++- frontend/src/config/theme.js | 3 +++ 4 files changed, 16 insertions(+), 11 deletions(-) rename frontend/src/components/{Information.js => Dashboard.js} (78%) diff --git a/frontend/src/components/Information.js b/frontend/src/components/Dashboard.js similarity index 78% rename from frontend/src/components/Information.js rename to frontend/src/components/Dashboard.js index 511162e..11c2788 100644 --- a/frontend/src/components/Information.js +++ b/frontend/src/components/Dashboard.js @@ -1,6 +1,6 @@ import React, {Component} from 'react'; -export default class Information extends Component{ +export default class Dashboard extends Component{ render(){ return( diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 2e22136..1394a02 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -15,8 +15,9 @@ import * as auth from '../modules/auth'; import * as mockdata from "../config/mockdata"; import ShelterMap from "./Map"; import ShelterList from './ShelterList'; -import Information from './Information'; +import Dashboard from './Dashboard'; import ShelterDetail from './ShelterDetail'; +import theme from '../config/theme'; export default class Home extends Component { @@ -82,27 +83,27 @@ export default class Home extends Component { - - + + - + {this.state.canUseGeolocation ? - + {this.state.location ? - + /> : - } + } @@ -110,7 +111,7 @@ export default class Home extends Component { GPSを使用できません } - + diff --git a/frontend/src/components/Map.js b/frontend/src/components/Map.js index bc6804b..a5153c1 100644 --- a/frontend/src/components/Map.js +++ b/frontend/src/components/Map.js @@ -2,12 +2,13 @@ import React from 'react'; import {compose, withProps} from 'recompose'; import {GoogleMap, Marker, withGoogleMap, withScriptjs} from 'react-google-maps'; import UserPoint from '../UserMapPoint.svg'; +import theme from '../config/theme'; const ShelterMap = compose( withProps({ googleMapURL: `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=${process.env.REACT_APP_GOOGLE_MAP}`, loadingElement:
, - containerElement:
, + containerElement:
, mapElement:
, }), withScriptjs, diff --git a/frontend/src/config/theme.js b/frontend/src/config/theme.js index 465633d..1fabb9e 100644 --- a/frontend/src/config/theme.js +++ b/frontend/src/config/theme.js @@ -18,6 +18,9 @@ const theme = createMuiTheme({ contrastText: '#fff', }, }, + googleMap: { + height: '500px', + }, }); export default theme; \ No newline at end of file From a488da9f18624d833203588069142a876c644d8f Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 17:44:22 +0900 Subject: [PATCH 091/162] add mockdata --- frontend/src/config/mockdata.js | 96 ++++++++++++++++++++++++--------- 1 file changed, 70 insertions(+), 26 deletions(-) diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index 83a4696..6388896 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -1,38 +1,38 @@ export const shelters = [ { - "name": "京都工芸繊維大学", - "address": "京都府京都市左京区松ヶ崎橋上町", - "lat": 35.05004017, - "lon": 135.782933, - "distance": 0.0 + name: "京都工芸繊維大学", + address: "京都府京都市左京区松ヶ崎橋上町", + lat: 35.05004017, + lon: 135.782933, + distance: 0.0 }, { - "name": "京都市立松ヶ崎小学校", - "address": "京都府京都市左京区松ヶ崎堀町40", - "lat": 35.05333076, - "lon": 135.7821715, - "distance": 370.0 + name: "京都市立松ヶ崎小学校", + address: "京都府京都市左京区松ヶ崎堀町40", + lat: 35.05333076, + lon: 135.7821715, + distance: 370.0 }, { - "name": "京都市立修学院第二小学校", - "address": "京都府京都市左京区一乗寺里ノ西町35", - "lat": 35.04478349, - "lon": 135.7886697, - "distance": 780.0 + name: "京都市立修学院第二小学校", + address: "京都府京都市左京区一乗寺里ノ西町35", + lat: 35.04478349, + lon: 135.7886697, + distance: 780.0 }, { - "name": "京都ノートルダム女子大学", - "address": "京都府京都市左京区下鴨南野々神町1", - "lat": 35.05070445, - "lon": 135.7723571, - "distance": 970.0 + name: "京都ノートルダム女子大学", + address: "京都府京都市左京区下鴨南野々神町1", + lat: 35.05070445, + lon: 135.7723571, + distance: 970.0 }, { - "name": "京都市立修学院中学校", - "address": "京都府京都市左京区一乗寺御祭田町2", - "lat": 35.04245594, - "lon": 135.7885355, - "distance": 990.0 + name: "京都市立修学院中学校", + address: "京都府京都市左京区一乗寺御祭田町2", + lat: 35.04245594, + lon: 135.7885355, + distance: 990.0 } ]; @@ -43,4 +43,48 @@ export const evacuees = [ {time: "15:00", num: 90}, {time: "16:00", num: 100}, {time: "17:00", num: 115}, -]; \ No newline at end of file +]; + +export const area = { + pk: 1, + name: "京都府", + alarms: [ + { + pk: 6, + code: 19, + name: "高潮注意報", + created_at: "2018-11-06T17:37:42.563175+09:00" + }, + { + pk: 5, + code: 16, + name: "波浪注意報", + created_at: "2018-11-06T17:37:42.550208+09:00" + }, + { + pk: 4, + code: 14, + name: "雷注意報", + created_at: "2018-11-06T17:37:42.544564+09:00" + }, + { + pk: 3, + code: 5, + name: "暴風警報", + created_at: "2018-11-06T17:37:42.538144+09:00" + }, + { + pk: 2, + code: 4, + name: "洪水警報", + created_at: "2018-11-06T17:37:42.528560+09:00" + }, + { + pk: 1, + code: 3, + name: "大雨警報", + created_at: "2018-11-06T17:37:42.516061+09:00" + } + ], + updated_at: "2018-11-06T17:37:41.925413+09:00" +}; \ No newline at end of file From c0a5a759cb1f29d4ef5fd77fb46d2b208d824a9f Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 18:04:41 +0900 Subject: [PATCH 092/162] `yarn add react-liquid-gauge` --- frontend/package.json | 1 + frontend/yarn.lock | 66 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index d3a82bd..fc138f1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,7 @@ "react": "^16.6.0", "react-dom": "^16.6.0", "react-google-maps": "^9.4.5", + "react-liquid-gauge": "^1.2.4", "react-router-dom": "^4.3.1", "react-scripts": "2.1.1", "recharts": "^1.3.5", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index fad7907..3d45b2c 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2783,17 +2783,27 @@ d3-collection@1: resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== -d3-color@1: +d3-color@1, d3-color@^1.0.2: version "1.2.3" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.2.3.tgz#6c67bb2af6df3cc8d79efcc4d3a3e83e28c8048f" integrity sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw== +d3-dispatch@1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.5.tgz#e25c10a186517cd6c82dd19ea018f07e01e39015" + integrity sha512-vwKx+lAqB1UuCeklr6Jh1bvC4SZgbSqbkGBLClItFBIYH4vqDJCA7qfoy14lXmJdnBOdxndAMxjCbImJYW7e6g== + +d3-ease@1, d3-ease@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.5.tgz#8ce59276d81241b1b72042d6af2d40e76d936ffb" + integrity sha512-Ct1O//ly5y5lFM9YTdu+ygq7LleSgSE4oj7vUt9tPLHUi8VCV7QoizGpdWRWAwCO9LdYzIrQDg97+hGVdsSGPQ== + d3-format@1: version "1.3.2" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.3.2.tgz#6a96b5e31bcb98122a30863f7d92365c00603562" integrity sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ== -d3-interpolate@1, d3-interpolate@~1.3.0: +d3-interpolate@1, d3-interpolate@^1.1.5, d3-interpolate@~1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.2.tgz#417d3ebdeb4bc4efcc8fd4361c55e4040211fd68" integrity sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w== @@ -2805,6 +2815,19 @@ d3-path@1: resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.7.tgz#8de7cd693a75ac0b5480d3abaccd94793e58aae8" integrity sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA== +d3-scale@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" + integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-color "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + d3-scale@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.1.2.tgz#4e932b7b60182aee9073ede8764c98423e5f9a94" @@ -2817,7 +2840,12 @@ d3-scale@~2.1.0: d3-time "1" d3-time-format "2" -d3-shape@~1.2.0: +d3-selection@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.2.tgz#6e70a9df60801c8af28ac24d10072d82cbfdf652" + integrity sha512-OoXdv1nZ7h2aKMVg3kaUFbLLK5jXUFAMLD/Tu5JA96mjf8f2a9ZUESGY+C36t8R1WFeWk/e55hy54Ml2I62CRQ== + +d3-shape@^1.2.0, d3-shape@~1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.2.tgz#f9dba3777a5825f9a8ce8bc928da08c17679e9a7" integrity sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ== @@ -2836,6 +2864,23 @@ d3-time@1: resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.10.tgz#8259dd71288d72eeacfd8de281c4bf5c7393053c" integrity sha512-hF+NTLCaJHF/JqHN5hE8HVGAXPStEq6/omumPE/SxyHVrR7/qQxusFDo0t0c/44+sCGHthC7yNGFZIEgju0P8g== +d3-timer@1, d3-timer@^1.0.3: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.9.tgz#f7bb8c0d597d792ff7131e1c24a36dd471a471ba" + integrity sha512-rT34J5HnQUHhcLvhSB9GjCkN0Ddd5Y8nCwDBG2u6wQEeYxT/Lf51fTFFkldeib/sE/J0clIe0pnCfs6g/lRbyg== + +d3-transition@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.3.tgz#3a435b05ce9cef9524fe0d38121cfb6905331ca6" + integrity sha512-tEvo3qOXL6pZ1EzcXxFcPNxC/Ygivu5NoBY6mbzidATAeML86da+JfVIUzon3dNM6UX6zjDx+xbYDmMVtTSjuA== + dependencies: + d3-color "1" + d3-dispatch "1" + d3-ease "1" + d3-interpolate "1" + d3-selection "^1.1.0" + d3-timer "1" + damerau-levenshtein@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" @@ -8150,6 +8195,21 @@ react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-liquid-gauge@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/react-liquid-gauge/-/react-liquid-gauge-1.2.4.tgz#190ab67f642267a54231d033b4b5b78292450d9c" + integrity sha1-GQq2f2QiZ6VCMdAztLW3gpJFDZw= + dependencies: + d3-color "^1.0.2" + d3-ease "^1.0.2" + d3-interpolate "^1.1.5" + d3-scale "^1.0.6" + d3-selection "^1.1.0" + d3-shape "^1.2.0" + d3-timer "^1.0.3" + d3-transition "^1.1.0" + prop-types "^15.5.8" + react-resize-detector@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-2.3.0.tgz#57bad1ae26a28a62a2ddb678ba6ffdf8fa2b599c" From ce4eac77a852af9c2631d55ffd062380842ea92d Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 19:10:59 +0900 Subject: [PATCH 093/162] tab switch --- frontend/src/components/Dashboard.js | 66 +++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 11c2788..a5ba594 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -1,12 +1,64 @@ import React, {Component} from 'react'; +import { + Grid, + Paper, + Tabs, Tab +} from '@material-ui/core'; +import * as mockdata from '../config/mockdata'; +import * as auth from '../modules/auth'; -export default class Dashboard extends Component{ - render(){ - return( - -

現在地情報

-

TODO: Implement

-
+export default class Dashboard extends Component { + constructor(props) { + super(props); + this.state = { + tab: 0, + } + } + + handleTabChange(e, v) { + this.setState({tab: v}); + } + + render() { + return ( + + + + + + + + + {this.state.tab === 0 && + + +

現在地情報

+

住所?

+ {mockdata.area.alarms.map((alarm, key) => ( + +

{alarm.name} : {alarm.created_at}

+
+ ))} +
+ +

危険度

+

TODO: 何かのグラフ

+
+
+ } + + {this.state.tab === 1 && + +

友人の避難状況

+
+ } +
) } } \ No newline at end of file From a51e477bfd15981009edfaf54c36a907dcefd3d9 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 19:41:46 +0900 Subject: [PATCH 094/162] alarm table --- frontend/src/components/Dashboard.js | 29 +++++++++++++++++++--------- frontend/src/modules/util.js | 7 +++++++ 2 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 frontend/src/modules/util.js diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index a5ba594..7f36489 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -2,10 +2,12 @@ import React, {Component} from 'react'; import { Grid, Paper, - Tabs, Tab + Tabs, Tab, + Table, TableBody, TableCell, TableHead, TableFooter, TableSortLabel, TablePagination, TableRow } from '@material-ui/core'; import * as mockdata from '../config/mockdata'; import * as auth from '../modules/auth'; +import * as util from '../modules/util'; export default class Dashboard extends Component { constructor(props) { @@ -36,15 +38,24 @@ export default class Dashboard extends Component { {this.state.tab === 0 && - + -

現在地情報

-

住所?

- {mockdata.area.alarms.map((alarm, key) => ( - -

{alarm.name} : {alarm.created_at}

-
- ))} + + + + 発令事項 + 発令時間 + + + + {mockdata.area.alarms.map((alarm, key) => ( + + {alarm.name} + {util.parseDateStr(alarm.created_at)} + + ))} + +

危険度

diff --git a/frontend/src/modules/util.js b/frontend/src/modules/util.js new file mode 100644 index 0000000..85c6aea --- /dev/null +++ b/frontend/src/modules/util.js @@ -0,0 +1,7 @@ +export const parseDateStr = (dateStr) => { + const date = new Date(dateStr); + const m = date.getMonth()+1; + const d = date.getDate(); + const time = date.toLocaleTimeString(); + return `${m}/${d} ${time}`; +}; \ No newline at end of file From 3cac24a18844482a6732c14ddf9b3c86684cb221 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 19:54:37 +0900 Subject: [PATCH 095/162] add alarm type on response --- mizql/disaster/models.py | 18 ++++++++++++++++++ mizql/disaster/serializers.py | 7 +++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/mizql/disaster/models.py b/mizql/disaster/models.py index 32e8f8f..74c7d82 100644 --- a/mizql/disaster/models.py +++ b/mizql/disaster/models.py @@ -25,6 +25,15 @@ class Alarm(models.Model): class Meta: ordering = ['-created_at'] + @property + def alarm_type(self): + t = 0 + if "注意報" in self.name: + t = 1 + elif "警報" in self.name: + t = 2 + return t + class DemoLocation(models.Model): """ @@ -49,3 +58,12 @@ class DemoAlarm(models.Model): class Meta: ordering = ['-created_at'] + + @property + def alarm_type(self): + t = 0 + if "注意報" in self.name: + t = 1 + elif "警報" in self.name: + t = 2 + return t diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py index 31a187d..8b665ed 100644 --- a/mizql/disaster/serializers.py +++ b/mizql/disaster/serializers.py @@ -6,10 +6,11 @@ class AlarmSerializer(serializers.ModelSerializer): """ 注意報・警報のシリアライザ """ + type = serializers.IntegerField(read_only=True, source='alarm_type') class Meta: model = Alarm - fields = ('pk', 'code', 'name', 'created_at') + fields = ('pk', 'code', 'name', 'created_at', 'type') class LocationSerializer(serializers.ModelSerializer): @@ -25,9 +26,11 @@ class Meta: class DemoAlarmSerializer(serializers.ModelSerializer): + type = serializers.IntegerField(read_only=True, source='alarm_type') + class Meta: model = DemoAlarm - fields = ('pk', 'code', 'name', 'created_at') + fields = ('pk', 'code', 'name', 'created_at', 'type') class DemoLocationSerializer(serializers.ModelSerializer): From 01d72921329ca278dfcf991157b3bb018739f229 Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 20:02:24 +0900 Subject: [PATCH 096/162] alarm list --- frontend/src/components/Dashboard.js | 31 ++++++++++++---------------- frontend/src/components/Home.js | 12 ++++------- frontend/src/config/mockdata.js | 6 ++++++ 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 7f36489..61fc58c 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -3,11 +3,11 @@ import { Grid, Paper, Tabs, Tab, - Table, TableBody, TableCell, TableHead, TableFooter, TableSortLabel, TablePagination, TableRow + List, ListItem, ListItemIcon, ListItemText, ListSubheader } from '@material-ui/core'; +import * as icons from '@material-ui/icons'; import * as mockdata from '../config/mockdata'; import * as auth from '../modules/auth'; -import * as util from '../modules/util'; export default class Dashboard extends Component { constructor(props) { @@ -40,22 +40,17 @@ export default class Dashboard extends Component { {this.state.tab === 0 && - - - - 発令事項 - 発令時間 - - - - {mockdata.area.alarms.map((alarm, key) => ( - - {alarm.name} - {util.parseDateStr(alarm.created_at)} - - ))} - -
+ 発令中の警報・注意報} + > + {mockdata.area.alarms.map((alarm, key) => ( + + {alarm.type === 0 && } + {alarm.type === 1 && } + + + ))} +

危険度

diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 1394a02..287629d 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -83,17 +83,13 @@ export default class Home extends Component { - - - - - - + + {this.state.canUseGeolocation ? - + {this.state.location ? - + diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index 6388896..799733e 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -52,36 +52,42 @@ export const area = { { pk: 6, code: 19, + type: 0, name: "高潮注意報", created_at: "2018-11-06T17:37:42.563175+09:00" }, { pk: 5, code: 16, + type: 0, name: "波浪注意報", created_at: "2018-11-06T17:37:42.550208+09:00" }, { pk: 4, code: 14, + type: 1, name: "雷注意報", created_at: "2018-11-06T17:37:42.544564+09:00" }, { pk: 3, code: 5, + type: 1, name: "暴風警報", created_at: "2018-11-06T17:37:42.538144+09:00" }, { pk: 2, code: 4, + type: 1, name: "洪水警報", created_at: "2018-11-06T17:37:42.528560+09:00" }, { pk: 1, code: 3, + type: 1, name: "大雨警報", created_at: "2018-11-06T17:37:42.516061+09:00" } From 008cf4c151088a352e13755275b83dc0a7f7eb2c Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 20:31:23 +0900 Subject: [PATCH 097/162] return count of evacuated people --- mizql/evacuation/admin.py | 2 ++ mizql/evacuation/models.py | 26 ++++++++++++++------------ mizql/evacuation/views.py | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/mizql/evacuation/admin.py b/mizql/evacuation/admin.py index d85104e..a71f59c 100644 --- a/mizql/evacuation/admin.py +++ b/mizql/evacuation/admin.py @@ -11,6 +11,8 @@ class ShelterAdmin(admin.ModelAdmin): class EvacuationHistoryAdmin(admin.ModelAdmin): list_display = ('shelter_name', 'count', 'created_at') + ordering = ['shelter__name'] + def shelter_name(self, obj): return obj.shelter.name diff --git a/mizql/evacuation/models.py b/mizql/evacuation/models.py index 3c72f8c..20e1722 100644 --- a/mizql/evacuation/models.py +++ b/mizql/evacuation/models.py @@ -78,26 +78,28 @@ class Meta: class EvacuationHistoryManager(models.Manager): - def create(self, shelter: Shelter): + def create(self, shelter: Shelter, now=None): """ 10分前から現在までの避難人数を取得 :param shelter: + :param now: 時刻 :return: """ - now = timezone.now() + if now is None: + now = timezone.now() + latest_date = now + latest_count = 0 # 最新の履歴から人数を取得 - personal_histories = PersonalEvacuationHistory.objects.prefetch_related('shelter').filter(shelter=shelter) - try: - latest_history = EvacuationHistory.objects.first() - latest_count = 0 + personal_histories = PersonalEvacuationHistory.objects.filter(shelter=shelter) + latest_history = EvacuationHistory.objects.filter(shelter=shelter).order_by('-created_at').first() + if latest_history is not None: + latest_count = latest_history.count latest_date = latest_history.created_at - except EvacuationHistory.DoesNotExist: - latest_count = 0 - try: - last_history = personal_histories.last() + else: + last_history = personal_histories.order_by('-created_at').first() + if last_history is not None: latest_date = last_history.created_at - except PersonalEvacuationHistory.DoesNotExist: - latest_date = now + # 前回取得時意向の履歴一覧 personal_histories = personal_histories.filter(created_at__range=[latest_date, now]) # 避難した人数 diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index 3d7e22f..4c870e9 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -53,7 +53,7 @@ class EvacuationHistoryViewSets(mixins.ListModelMixin, def list(self, request, *args, **kwargs): shelter_id = int(kwargs['shelter_pk']) - queryset = self.get_queryset().filter(sheler_id=shelter_id)[:10] + queryset = self.get_queryset().filter(shelter_id=shelter_id)[:10] serializer = self.get_serializer(queryset, many=True) return Response(serializer.data) From e4c73281fc8b859ef8c30fffe62ee4afe6b5c569 Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 20:33:46 +0900 Subject: [PATCH 098/162] add emulation command --- Pipfile | 1 + Pipfile.lock | 10 +++- .../management/commands/emulate_evacuate.py | 48 +++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 mizql/evacuation/management/commands/emulate_evacuate.py diff --git a/Pipfile b/Pipfile index 7c114e7..17679e0 100644 --- a/Pipfile +++ b/Pipfile @@ -16,6 +16,7 @@ gunicorn = "*" requests = "*" django-cors-headers = "*" drf-nested-routers = "*" +tqdm = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index e21114c..bae333b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "8e2aa91fc9a6b6b02c39a82b03301c0cded7cbf8e6b4f449602b56fb9a6496f1" + "sha256": "fbef7b952bae739d90f26c09eca97d11200a97766a53ec60531e65d26d9d204f" }, "pipfile-spec": 6, "requires": { @@ -236,6 +236,14 @@ ], "version": "==3.16.0" }, + "tqdm": { + "hashes": [ + "sha256:3c4d4a5a41ef162dd61f1edb86b0e1c7859054ab656b2e7c7b77e7fbf6d9f392", + "sha256:5b4d5549984503050883bc126280b386f5f4ca87e6c023c5d015655ad75bdebb" + ], + "index": "pypi", + "version": "==4.28.1" + }, "uritemplate": { "hashes": [ "sha256:01c69f4fe8ed503b2951bef85d996a9d22434d2431584b5b107b2981ff416fbd", diff --git a/mizql/evacuation/management/commands/emulate_evacuate.py b/mizql/evacuation/management/commands/emulate_evacuate.py new file mode 100644 index 0000000..b3f15a2 --- /dev/null +++ b/mizql/evacuation/management/commands/emulate_evacuate.py @@ -0,0 +1,48 @@ +import random +from datetime import datetime, timedelta, timezone +from django.core.management.base import BaseCommand +from tqdm import tqdm +from accounts.models import User +from evacuation.models import Shelter, EvacuationHistory, PersonalEvacuationHistory + +JST = timezone(timedelta(hours=+9), 'JST') + +random.seed(0) + + +def reverse_random(num): + return num if 0.5 > random.random() else num * -1 + + +class Command(BaseCommand): + + def add_arguments(self, parser): + parser.add_argument( + '--date', type=str, default='2018/09/04 08:00:00', help='%Y/%m/%d %H:%M:%S' + ) + + def handle(self, *args, **options): + all_shelters = list(Shelter.objects.all()) + all_users = list(User.objects.all()) + for shelter in tqdm(all_shelters, desc='Shelters'): + date = datetime.strptime(options['date'], '%Y/%m/%d %H:%M:%S').astimezone(JST) + limit = reverse_random(shelter.capacity // 10) + capacity = limit + shelter.capacity + offset = int(shelter.capacity * random.uniform(0.0, 0.2)) + current = offset + EvacuationHistory(shelter=shelter, count=current, created_at=date).save() + count = 0 + while count < 9: + date = date + timedelta(minutes=10) + if capacity - current > 0: + current += int(offset * random.uniform(0.0, 2.0)) + current += reverse_random(int(current * random.uniform(0.0, 0.01))) + EvacuationHistory(shelter=shelter, count=current, created_at=date).save() + count += 1 + for user in tqdm(all_users, 'Users'): + date = datetime.strptime(options['date'], '%Y/%m/%d %H:%M:%S').astimezone(JST) + timedelta(minutes=10 * 10) + is_evacuated = True if 0.8 > random.random() else False + shelter = random.choice(all_shelters) + PersonalEvacuationHistory.objects.create( + user=user, is_evacuated=is_evacuated, shelter=shelter, created_at=date + ) From 2dea564efe6db7297322fa3e3e8cf5643ad37a9f Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 20:38:02 +0900 Subject: [PATCH 099/162] delete previous emulation results when emulation --- mizql/accounts/admin.py | 4 ++-- mizql/evacuation/management/commands/emulate_evacuate.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mizql/accounts/admin.py b/mizql/accounts/admin.py index 6ac35bc..09020af 100644 --- a/mizql/accounts/admin.py +++ b/mizql/accounts/admin.py @@ -5,9 +5,9 @@ @admin.register(User) class CustomUserAdmin(UserAdmin): - list_display = ('email', 'is_staff', 'is_superuser', 'created_at') + list_display = ('username', 'is_staff', 'is_superuser', 'created_at') fieldsets = ( - (None, {'fields': ('email', 'password')}), + (None, {'fields': ('username', 'email', 'password')}), ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), ) ordering = ['-created_at'] diff --git a/mizql/evacuation/management/commands/emulate_evacuate.py b/mizql/evacuation/management/commands/emulate_evacuate.py index b3f15a2..16ac7a1 100644 --- a/mizql/evacuation/management/commands/emulate_evacuate.py +++ b/mizql/evacuation/management/commands/emulate_evacuate.py @@ -22,6 +22,8 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): + EvacuationHistory.objects.all().delete() + PersonalEvacuationHistory.objects.all().delete() all_shelters = list(Shelter.objects.all()) all_users = list(User.objects.all()) for shelter in tqdm(all_shelters, desc='Shelters'): From 2c0cf53978de5a269679b3e930a34334a72f0e1b Mon Sep 17 00:00:00 2001 From: taxio Date: Tue, 6 Nov 2018 20:51:45 +0900 Subject: [PATCH 100/162] friends status --- frontend/src/components/Dashboard.js | 34 ++++++++++++++++++++----- frontend/src/config/mockdata.js | 37 +++++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 61fc58c..bcce1ae 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -3,7 +3,8 @@ import { Grid, Paper, Tabs, Tab, - List, ListItem, ListItemIcon, ListItemText, ListSubheader + List, ListItem, ListItemIcon, ListItemText, ListSubheader, + Table, TableBody, TableCell, TableHead, TableFooter, TableSortLabel, TablePagination, TableRow } from '@material-ui/core'; import * as icons from '@material-ui/icons'; import * as mockdata from '../config/mockdata'; @@ -45,8 +46,12 @@ export default class Dashboard extends Component { > {mockdata.area.alarms.map((alarm, key) => ( - {alarm.type === 0 && } - {alarm.type === 1 && } + {alarm.type === 0 && + + } + {alarm.type === 1 && + + } ))} @@ -60,9 +65,26 @@ export default class Dashboard extends Component { } {this.state.tab === 1 && - -

友人の避難状況

-
+
+ + + + 名前 + 避難状況 + 避難先 + + + + {mockdata.friends.map((friend, key) => ( + + {friend.username} + {friend.refuged ? "避難済み" : "-"} + this.props.pickShelter(friend.shelter)}>{friend.refuged ? friend.shelter.name : "-"} + + ))} + +
+
} ) diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index 799733e..1ba4971 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -93,4 +93,39 @@ export const area = { } ], updated_at: "2018-11-06T17:37:41.925413+09:00" -}; \ No newline at end of file +}; + +export const friends = [ + { + username: "hoge", + refuged: false, + shelter: null, + }, + { + username: "foo", + refuged: true, + shelter: { + name: "京都ノートルダム女子大学", + address: "京都府京都市左京区下鴨南野々神町1", + lat: 35.05070445, + lon: 135.7723571, + distance: 970.0 + }, + }, + { + username: "bar", + refuged: true, + shelter: { + name: "京都市立修学院中学校", + address: "京都府京都市左京区一乗寺御祭田町2", + lat: 35.04245594, + lon: 135.7885355, + distance: 990.0 + } + }, + { + username: "piyo", + refuged: false, + shelter: null, + }, +]; \ No newline at end of file From b9f321f14da877373ebaa50d08b301a240da77ff Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 23:51:54 +0900 Subject: [PATCH 101/162] implement demo rain forecast --- mizql/disaster/models.py | 13 +++++++++++++ mizql/disaster/serializers.py | 29 +++++++++++++++++++++++++++-- mizql/disaster/views.py | 9 ++++++--- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/mizql/disaster/models.py b/mizql/disaster/models.py index 74c7d82..7e7def0 100644 --- a/mizql/disaster/models.py +++ b/mizql/disaster/models.py @@ -67,3 +67,16 @@ def alarm_type(self): elif "警報" in self.name: t = 2 return t + + +class DemoRainForecast(models.Model): + """ + デモ用の降水量情報 + """ + amount = models.FloatField('降水量') + created_at = models.DateTimeField('取得日時') + is_observed = models.BooleanField('観測値かどうか') + location = models.ForeignKey(DemoLocation, on_delete=models.CASCADE, related_name='rain') + + class Meta: + ordering = ['-created_at'] diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py index 8b665ed..41677ab 100644 --- a/mizql/disaster/serializers.py +++ b/mizql/disaster/serializers.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from .models import Location, Alarm, DemoLocation, DemoAlarm +from .models import Location, Alarm, DemoLocation, DemoAlarm, DemoRainForecast class AlarmSerializer(serializers.ModelSerializer): @@ -13,6 +13,30 @@ class Meta: fields = ('pk', 'code', 'name', 'created_at', 'type') +class ListDemoRainSerializer(serializers.ListSerializer): + + def to_representation(self, instance): + all_data = instance.order_by('-created_at').all() + forecasts = all_data[:6] + observations = all_data[6:12] + return { + 'forecasts': [ + {'amount': f.amount, 'created_at': f.created_at} for f in forecasts + ], + 'observations': [ + {'amount': o.amount, 'created_at': o.created_at} for o in observations + ] + } + + +class DemoRainSerializer(serializers.ModelSerializer): + + class Meta: + model = DemoRainForecast + fields = ('amount', 'is_observed', 'created_at') + list_serializer_class = ListDemoRainSerializer + + class LocationSerializer(serializers.ModelSerializer): """ 地域情報のシリアライザ @@ -35,7 +59,8 @@ class Meta: class DemoLocationSerializer(serializers.ModelSerializer): alarms = DemoAlarmSerializer(read_only=True, allow_null=True, many=True) + rain = DemoRainSerializer(read_only=True, allow_null=True, many=True) class Meta: model = DemoLocation - fields = ('pk', 'name', 'alarms', 'updated_at') + fields = ('pk', 'name', 'alarms', 'updated_at', 'rain') diff --git a/mizql/disaster/views.py b/mizql/disaster/views.py index 432e938..64cf5be 100644 --- a/mizql/disaster/views.py +++ b/mizql/disaster/views.py @@ -5,6 +5,7 @@ from rest_framework.response import Response from rest_framework.schemas import ManualSchema +from .models import DemoLocation, DemoAlarm from .serializers import LocationSerializer, DemoLocationSerializer from .info import DisasterReport @@ -46,15 +47,15 @@ class DemoLocationView(generics.RetrieveAPIView): schema = ManualSchema([ coreapi.Field( 'lat', required=True, location='query', schema=coreschema.String(description='latitude'), - example='35.048900', description='緯度' + description='35.048900' ), coreapi.Field( 'lon', required=True, location='query', schema=coreschema.String(description='longitude'), - example='135.780418', description='経度' + description='135.780418' ), coreapi.Field( 'date', required=False, location='query', schema=coreschema.String(description='%Y-%m-%d_%H:%M%S'), - description='%Y-%m-%d_%H:%M%S', example='2018-09-04_12:00:00' + description='2018-09-04_12:00:00' ) ]) @@ -66,6 +67,8 @@ def get_object(self): if lat is None or lon is None: return Response(status=status.HTTP_404_NOT_FOUND) reporter = DisasterReport(lat, lon) + reporter.location_class = DemoLocation + reporter.alarm_class = DemoAlarm if d_str is None: d_str = '2018-09-04_12:00:00' loc = reporter.get_area_info(datetime.strptime(d_str, "%Y-%m-%d_%H:%M:%S")) From 71d07b35e50d089c238235596b26a0ae134ec74a Mon Sep 17 00:00:00 2001 From: Pudding Date: Tue, 6 Nov 2018 23:52:07 +0900 Subject: [PATCH 102/162] add command for insert demo rain data --- .../management/commands/rain_forecast.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 mizql/disaster/management/commands/rain_forecast.py diff --git a/mizql/disaster/management/commands/rain_forecast.py b/mizql/disaster/management/commands/rain_forecast.py new file mode 100644 index 0000000..674d191 --- /dev/null +++ b/mizql/disaster/management/commands/rain_forecast.py @@ -0,0 +1,27 @@ +from datetime import datetime, timezone, timedelta +from django.core.management.base import BaseCommand +from disaster.models import DemoLocation, DemoRainForecast + +JST = timezone(timedelta(hours=+9), 'JST') + + +class Command(BaseCommand): + + def handle(self, *args, **options): + areas = [ + {'code': 260000, 'name': '京都府'} + ] + rain_forecasts = { + '京都府': [ + 0.5, 0.5, 0.5, 0.5, 0.5, 1.0, 0.0, 1.0, 3.5, 7.5, 8.0, 8.5, 5.0, 7.0, 3.5, 4.5 + ] + } + date = datetime.strptime('2018/09/04 12:00:00', '%Y/%m/%d %H:%M:%S').astimezone(JST) + for area in areas: + forecast = rain_forecasts[area['name']] + loc, _ = DemoLocation.objects.get_or_create( + code=area['code'], name=area['name'], defaults={'updated_at': date} + ) + for amount in forecast: + DemoRainForecast.objects.get_or_create(amount=amount, created_at=date, is_observed=True, location=loc) + date = date + timedelta(minutes=10) From 346bc4e1ded3f90d14106e5ba29f3fdc5105eca2 Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 00:03:55 +0900 Subject: [PATCH 103/162] implement demo rain forecast and danger level --- mizql/disaster/serializers.py | 14 ++++++++++++++ mizql/evacuation/serializers.py | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py index 41677ab..3ca8002 100644 --- a/mizql/disaster/serializers.py +++ b/mizql/disaster/serializers.py @@ -64,3 +64,17 @@ class DemoLocationSerializer(serializers.ModelSerializer): class Meta: model = DemoLocation fields = ('pk', 'name', 'alarms', 'updated_at', 'rain') + + def to_representation(self, instance): + data = super(DemoLocationSerializer, self).to_representation(instance) + alarms = [alarm['name'] for alarm in data['alarms']] + danger_alarms = ['洪水警報', '大雨警報'] + score = len(list(set(alarms).intersection(set(danger_alarms)))) + observed_amount = sum([observed['amount'] for observed in data['rain']['observations']]) + score += observed_amount // 20 + forecast_amount = sum([forecast['amount'] for forecast in data['rain']['forecasts']]) + score += forecast_amount // 20 + data['level'] = score + return data + + diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index e5e7683..bb581a4 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -15,7 +15,7 @@ class ShelterSerializer(serializers.ModelSerializer): class Meta: model = Shelter - fields = ('name', 'address', 'lat', 'lon') + fields = ('name', 'address', 'lat', 'lon', 'capacity') def to_representation(self, instance): data = super(ShelterSerializer, self).to_representation(instance) From a01127e4f08583e4a64533a7b44350103c62c4c6 Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 00:07:32 +0900 Subject: [PATCH 104/162] forgot to add migration files --- .../migrations/0003_demorainforecast.py | 27 +++++++++++++++++++ .../migrations/0004_auto_20181106_2348.py | 19 +++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 mizql/disaster/migrations/0003_demorainforecast.py create mode 100644 mizql/disaster/migrations/0004_auto_20181106_2348.py diff --git a/mizql/disaster/migrations/0003_demorainforecast.py b/mizql/disaster/migrations/0003_demorainforecast.py new file mode 100644 index 0000000..26a9012 --- /dev/null +++ b/mizql/disaster/migrations/0003_demorainforecast.py @@ -0,0 +1,27 @@ +# Generated by Django 2.1.3 on 2018-11-06 14:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('disaster', '0002_auto_20181105_2353'), + ] + + operations = [ + migrations.CreateModel( + name='DemoRainForecast', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('amount', models.FloatField(verbose_name='降水量')), + ('created_at', models.DateTimeField(verbose_name='取得日時')), + ('is_observed', models.BooleanField(verbose_name='観測値かどうか')), + ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='demo_forecasts', to='disaster.Location')), + ], + options={ + 'ordering': ['-created_at'], + }, + ), + ] diff --git a/mizql/disaster/migrations/0004_auto_20181106_2348.py b/mizql/disaster/migrations/0004_auto_20181106_2348.py new file mode 100644 index 0000000..74255c3 --- /dev/null +++ b/mizql/disaster/migrations/0004_auto_20181106_2348.py @@ -0,0 +1,19 @@ +# Generated by Django 2.1.3 on 2018-11-06 14:48 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('disaster', '0003_demorainforecast'), + ] + + operations = [ + migrations.AlterField( + model_name='demorainforecast', + name='location', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rain', to='disaster.DemoLocation'), + ), + ] From 2287296641e869ebe3480e0df35216d644f924cb Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 00:12:14 +0900 Subject: [PATCH 105/162] fix access permission --- mizql/disaster/views.py | 4 ++-- mizql/evacuation/views.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/mizql/disaster/views.py b/mizql/disaster/views.py index 432e938..1ba1e43 100644 --- a/mizql/disaster/views.py +++ b/mizql/disaster/views.py @@ -14,7 +14,7 @@ class LocationView(generics.RetrieveAPIView): 地域の情報を取得するエンドポイント """ serializer_class = LocationSerializer - permission_classes = (permissions.IsAuthenticated,) + permission_classes = (permissions.AllowAny,) schema = ManualSchema([ coreapi.Field( 'lat', required=True, location='query', schema=coreschema.String(description='latitude'), @@ -42,7 +42,7 @@ class DemoLocationView(generics.RetrieveAPIView): デモの情報を返す """ serializer_class = DemoLocationSerializer - permission_classes = (permissions.IsAuthenticated,) + permission_classes = (permissions.AllowAny,) schema = ManualSchema([ coreapi.Field( 'lat', required=True, location='query', schema=coreschema.String(description='latitude'), diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index 4c870e9..91efb48 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -7,7 +7,7 @@ class ShelterViewSets(viewsets.ReadOnlyModelViewSet): - permission_classes = (permissions.IsAuthenticated,) + permission_classes = (permissions.AllowAny,) serializer_class = ShelterSerializer schema = schemas.AutoSchema( manual_fields=[ @@ -48,9 +48,15 @@ def get_queryset(self): class EvacuationHistoryViewSets(mixins.ListModelMixin, mixins.CreateModelMixin, viewsets.GenericViewSet): + permission_classes = (permissions.AllowAny,) queryset = EvacuationHistory.objects.all() serializer_class = EvacuationHistorySerializer + def get_permissions(self): + if self.action == 'create': + self.permission_classes = [permissions.IsAuthenticated] + return super(EvacuationHistoryViewSets, self).get_permissions() + def list(self, request, *args, **kwargs): shelter_id = int(kwargs['shelter_pk']) queryset = self.get_queryset().filter(shelter_id=shelter_id)[:10] @@ -60,9 +66,15 @@ def list(self, request, *args, **kwargs): class EvacuationViewSets(mixins.CreateModelMixin, viewsets.GenericViewSet): + permission_classes = (permissions.AllowAny,) queryset = PersonalEvacuationHistory.objects.all() serializer_class = PersonalEvacuationHistorySerializer + def get_permissions(self): + if self.action == 'create': + self.permission_classes = [permissions.IsAuthenticated] + return super(EvacuationViewSets, self).get_permissions() + def create(self, request, *args, **kwargs): shelter_id = int(kwargs['shelter_pk']) data = request.data From bd42e518e3dc4a217f0a24934bff0fd760a545b0 Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 00:43:23 +0900 Subject: [PATCH 106/162] add following field --- .../accounts/migrations/0003_user_follows.py | 19 +++++++++++++++++++ mizql/accounts/models.py | 1 + 2 files changed, 20 insertions(+) create mode 100644 mizql/accounts/migrations/0003_user_follows.py diff --git a/mizql/accounts/migrations/0003_user_follows.py b/mizql/accounts/migrations/0003_user_follows.py new file mode 100644 index 0000000..d2b595c --- /dev/null +++ b/mizql/accounts/migrations/0003_user_follows.py @@ -0,0 +1,19 @@ +# Generated by Django 2.1.3 on 2018-11-06 15:23 + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0002_auto_20181103_1648'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='follows', + field=models.ManyToManyField(related_name='followed', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/mizql/accounts/models.py b/mizql/accounts/models.py index 57c4de9..92141e7 100644 --- a/mizql/accounts/models.py +++ b/mizql/accounts/models.py @@ -48,6 +48,7 @@ class User(AbstractBaseUser, PermissionsMixin): is_staff = models.BooleanField(default=False) created_at = models.DateTimeField('登録日時', auto_now_add=True) updated_at = models.DateTimeField('更新日時', auto_now=True) + follows = models.ManyToManyField('User', related_name='followed') USERNAME_FIELD = 'username' From de69674652d427d06e6d767e507f9d55b80bffff Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 00:43:51 +0900 Subject: [PATCH 107/162] add make friends command for demo --- .../management/commands/make_friends.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 mizql/accounts/management/commands/make_friends.py diff --git a/mizql/accounts/management/commands/make_friends.py b/mizql/accounts/management/commands/make_friends.py new file mode 100644 index 0000000..9ff63fa --- /dev/null +++ b/mizql/accounts/management/commands/make_friends.py @@ -0,0 +1,20 @@ +import random +from django.core.management.base import BaseCommand +from accounts.models import User + + +class Command(BaseCommand): + def add_arguments(self, parser): + parser.add_argument( + '-n', '--number', type=int, default=10, help='number of friends' + ) + + def handle(self, *args, **options): + num = options['number'] + general_users = list(User.objects.filter(is_superuser=False).all()) + admin_users = User.objects.filter(is_superuser=True).all() + for admin in admin_users: + admin.follows.clear() + users = random.sample(general_users, num) + for u in users: + admin.follows.add(u) From 7eaa7d79a80e07399d567a0c1517d3fbde2933af Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 00:44:06 +0900 Subject: [PATCH 108/162] implement serializer on following fields --- mizql/accounts/serializers.py | 18 +++++++++++++++++- mizql/evacuation/serializers.py | 4 ++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/mizql/accounts/serializers.py b/mizql/accounts/serializers.py index b9dfd06..6ed3bc5 100644 --- a/mizql/accounts/serializers.py +++ b/mizql/accounts/serializers.py @@ -1,12 +1,28 @@ from rest_framework import serializers from .models import User +from evacuation.serializers import PersonalEvacuationHistorySerializer + + +class RecursiveField(serializers.Serializer): + def to_representation(self, value): + serializer = self.parent.parent.__class__(value, context=self.context) + return serializer.data class UserSerializer(serializers.ModelSerializer): + follows = RecursiveField(many=True, read_only=True) + class Meta: model = User - fields = ('pk', 'username', 'email', 'created_at', 'updated_at') + fields = ('pk', 'username', 'email', 'created_at', 'updated_at', 'follows') + + def to_representation(self, instance): + data = super(UserSerializer, self).to_representation(instance) + latest = instance.evacuation_histories.order_by('-created_at').first() + serializer = PersonalEvacuationHistorySerializer(latest, allow_null=True) + data['evacuation_status'] = serializer.data + return data class CreateUserSerializer(serializers.ModelSerializer): diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index e5e7683..695d3ad 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -33,11 +33,11 @@ class Meta: class PersonalEvacuationHistorySerializer(serializers.ModelSerializer): - shelter_id = serializers.PrimaryKeyRelatedField(read_only=True) + shelter = ShelterSerializer(read_only=True, allow_null=True) class Meta: model = PersonalEvacuationHistory - fields = ('pk', 'shelter_id', 'is_evacuated') + fields = ('pk', 'shelter', 'is_evacuated') def create(self, validated_data): user = self.context['request'].user From 95c3144fdd7105ac04e9613cac9c52627d028df8 Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 00:54:50 +0900 Subject: [PATCH 109/162] add ``/users/me/` endpoint --- mizql/accounts/views.py | 10 +++++++++- mizql/mizql/urls.py | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mizql/accounts/views.py b/mizql/accounts/views.py index 064b32d..d608ef9 100644 --- a/mizql/accounts/views.py +++ b/mizql/accounts/views.py @@ -1,6 +1,6 @@ from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.views import LoginView, LogoutView -from rest_framework import viewsets, mixins, permissions +from rest_framework import viewsets, mixins, permissions, generics from . import models, serializers, permissions as custom_permissions from .forms import LoginForm @@ -38,3 +38,11 @@ def get_serializer_class(self): if self.action == 'create': return serializers.CreateUserSerializer return serializers.UserSerializer + + +class MeView(generics.RetrieveAPIView): + serializer_class = serializers.UserSerializer + permission_classes = (permissions.IsAuthenticated,) + + def get_object(self): + return self.request.user diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index 378eeab..d89e5bd 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -19,7 +19,7 @@ from rest_framework_nested.routers import DefaultRouter, NestedDefaultRouter from rest_framework_swagger.views import get_swagger_view -from accounts.views import UserViewSets +from accounts.views import UserViewSets, MeView from evacuation.views import ShelterViewSets, EvacuationHistoryViewSets, EvacuationViewSets from disaster.views import LocationView, DemoLocationView @@ -39,6 +39,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('_/', include('accounts.urls')), + path('users/me/', MeView.as_view()), path('', include(router.urls)), path('', include(shelter_nested_router.urls)), path('area/', LocationView.as_view()), From da2352e94c1ee9bf3c3cce1c82edd0d4d2dceecf Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 01:04:23 +0900 Subject: [PATCH 110/162] create first name and last name fields --- mizql/accounts/admin.py | 2 +- mizql/accounts/models.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mizql/accounts/admin.py b/mizql/accounts/admin.py index 09020af..2d3d183 100644 --- a/mizql/accounts/admin.py +++ b/mizql/accounts/admin.py @@ -5,7 +5,7 @@ @admin.register(User) class CustomUserAdmin(UserAdmin): - list_display = ('username', 'is_staff', 'is_superuser', 'created_at') + list_display = ('username', 'first_name', 'last_name', 'is_staff', 'is_superuser', 'created_at') fieldsets = ( (None, {'fields': ('username', 'email', 'password')}), ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), diff --git a/mizql/accounts/models.py b/mizql/accounts/models.py index 92141e7..40cf28d 100644 --- a/mizql/accounts/models.py +++ b/mizql/accounts/models.py @@ -43,6 +43,8 @@ class User(AbstractBaseUser, PermissionsMixin): """ username = models.CharField(verbose_name='ユーザ名', max_length=100, unique=True) email = models.EmailField(max_length=255, unique=False, default='hoge@fuga.com') + first_name = models.CharField(verbose_name='名', max_length=50, default='太郎') + last_name = models.CharField(verbose_name='姓', max_length=50, default='工繊') is_active = models.BooleanField(default=True) is_superuser = models.BooleanField(default=False) is_staff = models.BooleanField(default=False) From d72d18e850a459f9ea85b5573dacfdc1bc0c5c24 Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 01:29:04 +0900 Subject: [PATCH 111/162] enable editing follows information on admin --- mizql/accounts/admin.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mizql/accounts/admin.py b/mizql/accounts/admin.py index 2d3d183..10b215b 100644 --- a/mizql/accounts/admin.py +++ b/mizql/accounts/admin.py @@ -3,11 +3,18 @@ from .models import User +class UserInline(admin.StackedInline): + model = User.follows.through + fk_name = 'from_user' + extra = 1 + + @admin.register(User) class CustomUserAdmin(UserAdmin): list_display = ('username', 'first_name', 'last_name', 'is_staff', 'is_superuser', 'created_at') fieldsets = ( - (None, {'fields': ('username', 'email', 'password')}), + (None, {'fields': ('username', 'first_name', 'last_name', 'email', 'password')}), ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), ) ordering = ['-created_at'] + inlines = [UserInline] From 0746dac9aec5a60154d6c35f1a15a0bd368816e1 Mon Sep 17 00:00:00 2001 From: Pudding Date: Wed, 7 Nov 2018 22:33:09 +0900 Subject: [PATCH 112/162] forget to add migration files --- .../migrations/0004_auto_20181107_0059.py | 23 +++++++++++++++++++ .../migrations/0005_auto_20181107_0103.py | 18 +++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 mizql/accounts/migrations/0004_auto_20181107_0059.py create mode 100644 mizql/accounts/migrations/0005_auto_20181107_0103.py diff --git a/mizql/accounts/migrations/0004_auto_20181107_0059.py b/mizql/accounts/migrations/0004_auto_20181107_0059.py new file mode 100644 index 0000000..4dd573e --- /dev/null +++ b/mizql/accounts/migrations/0004_auto_20181107_0059.py @@ -0,0 +1,23 @@ +# Generated by Django 2.1.3 on 2018-11-06 15:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0003_user_follows'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='first_name', + field=models.CharField(default='太郎', max_length=50, verbose_name='名'), + ), + migrations.AddField( + model_name='user', + name='second_name', + field=models.CharField(default='工繊', max_length=50, verbose_name='姓'), + ), + ] diff --git a/mizql/accounts/migrations/0005_auto_20181107_0103.py b/mizql/accounts/migrations/0005_auto_20181107_0103.py new file mode 100644 index 0000000..4262caf --- /dev/null +++ b/mizql/accounts/migrations/0005_auto_20181107_0103.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.3 on 2018-11-06 16:03 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0004_auto_20181107_0059'), + ] + + operations = [ + migrations.RenameField( + model_name='user', + old_name='second_name', + new_name='last_name', + ), + ] From 5e867625222d315a12a4c8c05639e2016cf3db4f Mon Sep 17 00:00:00 2001 From: taxio Date: Thu, 8 Nov 2018 09:41:02 +0900 Subject: [PATCH 113/162] fix friend table --- frontend/src/components/Dashboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index bcce1ae..d9b5946 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -24,7 +24,7 @@ export default class Dashboard extends Component { render() { return ( - + - +
名前 From 72557f35692ce1c5f2b311aeba32ee8d4ea9dc12 Mon Sep 17 00:00:00 2001 From: taxio Date: Thu, 8 Nov 2018 10:40:18 +0900 Subject: [PATCH 114/162] fix no GPS case --- frontend/src/components/Dashboard.js | 53 ++++++++++++++---------- frontend/src/components/ShelterDetail.js | 21 ++++++---- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index d9b5946..ab1ce9f 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -4,7 +4,7 @@ import { Paper, Tabs, Tab, List, ListItem, ListItemIcon, ListItemText, ListSubheader, - Table, TableBody, TableCell, TableHead, TableFooter, TableSortLabel, TablePagination, TableRow + Table, TableBody, TableCell, TableHead, TableRow } from '@material-ui/core'; import * as icons from '@material-ui/icons'; import * as mockdata from '../config/mockdata'; @@ -40,27 +40,33 @@ export default class Dashboard extends Component { {this.state.tab === 0 && - - 発令中の警報・注意報} - > - {mockdata.area.alarms.map((alarm, key) => ( - - {alarm.type === 0 && - - } - {alarm.type === 1 && - - } - - - ))} - - - -

危険度

-

TODO: 何かのグラフ

-
+ {this.props.canUseLocation ? + + + 発令中の警報・注意報} + > + {mockdata.area.alarms.map((alarm, key) => ( + + {alarm.type === 0 && + + } + {alarm.type === 1 && + + } + + + ))} + + + +

危険度

+

TODO: 何かのグラフ

+
+
+ : +

現在地情報を使用できません

+ }
} @@ -79,7 +85,8 @@ export default class Dashboard extends Component { {friend.username} {friend.refuged ? "避難済み" : "-"} - this.props.pickShelter(friend.shelter)}>{friend.refuged ? friend.shelter.name : "-"} + this.props.pickShelter(friend.shelter)}>{friend.refuged ? friend.shelter.name : "-"} ))} diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index c3067de..d36fad7 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -51,14 +51,19 @@ export default class ShelterDetail extends Component { {this.state.shelter.name} {this.state.shelter.distance} m {this.state.shelter.address} - + {this.props.myPosition ? + + : null} From 76ae34fe89bf94627b683c83e6037bbdded08df4 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 10:56:46 +0900 Subject: [PATCH 115/162] add pk on `/shelters/` --- mizql/evacuation/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index 3b962df..e0a3094 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -15,7 +15,7 @@ class ShelterSerializer(serializers.ModelSerializer): class Meta: model = Shelter - fields = ('name', 'address', 'lat', 'lon', 'capacity') + fields = ('pk', 'name', 'address', 'lat', 'lon', 'capacity') def to_representation(self, instance): data = super(ShelterSerializer, self).to_representation(instance) From cfa902a9d56bdad0bd68336dc823f3d7e4698c2d Mon Sep 17 00:00:00 2001 From: taxio Date: Thu, 8 Nov 2018 11:12:41 +0900 Subject: [PATCH 116/162] paging friend status --- frontend/src/components/Dashboard.js | 21 ++++++++++++++++-- frontend/src/config/mockdata.js | 32 ++++++++++++++++++++++++++++ frontend/src/config/theme.js | 3 +++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index ab1ce9f..18c58f2 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -4,8 +4,9 @@ import { Paper, Tabs, Tab, List, ListItem, ListItemIcon, ListItemText, ListSubheader, - Table, TableBody, TableCell, TableHead, TableRow + Table, TableBody, TableCell, TableHead, TableRow, TablePagination, TableFooter } from '@material-ui/core'; +import theme from '../config/theme'; import * as icons from '@material-ui/icons'; import * as mockdata from '../config/mockdata'; import * as auth from '../modules/auth'; @@ -15,6 +16,7 @@ export default class Dashboard extends Component { super(props); this.state = { tab: 0, + friendPage: 0, } } @@ -22,6 +24,10 @@ export default class Dashboard extends Component { this.setState({tab: v}); } + handleChangePage(e, p) { + this.setState({friendPage: p}); + } + render() { return ( @@ -81,7 +87,7 @@ export default class Dashboard extends Component {
- {mockdata.friends.map((friend, key) => ( + {mockdata.friends.slice(this.state.friendPage * theme.friendList.rowPerPage, this.state.friendPage * theme.friendList.rowPerPage + theme.friendList.rowPerPage).map((friend, key) => ( {friend.username} {friend.refuged ? "避難済み" : "-"} @@ -90,6 +96,17 @@ export default class Dashboard extends Component { ))} + + + + +
} diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index 1ba4971..f1877cd 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -128,4 +128,36 @@ export const friends = [ refuged: false, shelter: null, }, + { + username: "A子", + refuged: false, + shelter: null, + }, + { + username: "B助", + refuged: true, + shelter: { + name: "京都ノートルダム女子大学", + address: "京都府京都市左京区下鴨南野々神町1", + lat: 35.05070445, + lon: 135.7723571, + distance: 970.0 + }, + }, + { + username: "C雄", + refuged: true, + shelter: { + name: "京都市立修学院中学校", + address: "京都府京都市左京区一乗寺御祭田町2", + lat: 35.04245594, + lon: 135.7885355, + distance: 990.0 + } + }, + { + username: "工繊 太郎", + refuged: false, + shelter: null, + }, ]; \ No newline at end of file diff --git a/frontend/src/config/theme.js b/frontend/src/config/theme.js index 1fabb9e..d543ed5 100644 --- a/frontend/src/config/theme.js +++ b/frontend/src/config/theme.js @@ -21,6 +21,9 @@ const theme = createMuiTheme({ googleMap: { height: '500px', }, + friendList: { + rowPerPage: 5, + }, }); export default theme; \ No newline at end of file From 3104966282b2f859fa894d0cd395f44adfc81b78 Mon Sep 17 00:00:00 2001 From: taxio Date: Thu, 8 Nov 2018 14:33:45 +0900 Subject: [PATCH 117/162] evacuate content --- frontend/src/components/Home.js | 40 ++++++++++++++++++++++++++++++++- frontend/src/modules/api.js | 16 +++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 287629d..e91de6c 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -7,6 +7,7 @@ import { CircularProgress, Drawer, Grid, + Paper, Typography, Toolbar, } from '@material-ui/core'; @@ -30,6 +31,7 @@ export default class Home extends Component { pickShelter: null, showDetail: false, isLogin: false, + isNearShelter: true, }; } @@ -67,6 +69,11 @@ export default class Home extends Component { this.setState({isLogin: false}); } + evacuate() { + this.setState({isNearShelter: false}); + console.log('避難完了登録しました'); + } + render() { return ( @@ -83,8 +90,39 @@ export default class Home extends Component { + + {this.state.isNearShelter ? + + + + あなたは{mockdata.shelters[0].name}の近くにいます. + + + + + + : null} + - + {this.state.canUseGeolocation ? diff --git a/frontend/src/modules/api.js b/frontend/src/modules/api.js index ff6d32a..2a9dfd6 100644 --- a/frontend/src/modules/api.js +++ b/frontend/src/modules/api.js @@ -12,4 +12,20 @@ const sendPost = async (path, data) => { return await res.json() }; +const sendRequest = async (method, path, data) => { + const options = { + method: method, + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': `JWT ${localStorage.getItem('token')}`, + }, + body: JSON.stringify(data), + }; + + const res = await fetch(process.env.REACT_APP_API_PATH + path, options); + return await res.json() +}; + export const login = (username, password) => sendPost('/auth/jwt/create', {username, password}); +export const getFollowList = () => sendRequest("GET", "/me/", {}); \ No newline at end of file From 03c9a6621e1233b0288d2bcfa643346531e8179c Mon Sep 17 00:00:00 2001 From: taxio Date: Thu, 8 Nov 2018 15:29:39 +0900 Subject: [PATCH 118/162] `yarn add react-d3-gauge` --- frontend/package.json | 1 + frontend/yarn.lock | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index fc138f1..62499f1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,6 +7,7 @@ "@material-ui/icons": "^3.0.1", "dotenv-cli": "^1.4.0", "react": "^16.6.0", + "react-d3-gauge": "^0.0.1", "react-dom": "^16.6.0", "react-google-maps": "^9.4.5", "react-liquid-gauge": "^1.2.4", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 3d45b2c..da4e9c3 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2881,6 +2881,11 @@ d3-transition@^1.1.0: d3-selection "^1.1.0" d3-timer "1" +d3@^3.5.17: + version "3.5.17" + resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" + integrity sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g= + damerau-levenshtein@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" @@ -8119,6 +8124,13 @@ react-app-polyfill@^0.1.3: raf "3.4.0" whatwg-fetch "3.0.0" +react-d3-gauge@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/react-d3-gauge/-/react-d3-gauge-0.0.1.tgz#4700b393346184a9b8ae52941b9eb8e013825617" + integrity sha1-RwCzkzRhhKm4rlKUG5644BOCVhc= + dependencies: + d3 "^3.5.17" + react-dev-utils@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-6.1.1.tgz#a07e3e8923c4609d9f27e5af5207e3ca20724895" From a9aef818f6eab0208edad5a3408930a519b1abe5 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 15:50:07 +0900 Subject: [PATCH 119/162] add rain model --- .../disaster/migrations/0005_rainforecast.py | 27 +++++++++++++++++++ mizql/disaster/models.py | 13 +++++++++ 2 files changed, 40 insertions(+) create mode 100644 mizql/disaster/migrations/0005_rainforecast.py diff --git a/mizql/disaster/migrations/0005_rainforecast.py b/mizql/disaster/migrations/0005_rainforecast.py new file mode 100644 index 0000000..b9d8e16 --- /dev/null +++ b/mizql/disaster/migrations/0005_rainforecast.py @@ -0,0 +1,27 @@ +# Generated by Django 2.1.3 on 2018-11-08 06:21 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('disaster', '0004_auto_20181106_2348'), + ] + + operations = [ + migrations.CreateModel( + name='RainForecast', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('amount', models.FloatField(verbose_name='降水量')), + ('created_at', models.DateTimeField(verbose_name='取得日時')), + ('is_observed', models.BooleanField(verbose_name='観測値かどうか')), + ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rain', to='disaster.Location')), + ], + options={ + 'ordering': ['-created_at'], + }, + ), + ] diff --git a/mizql/disaster/models.py b/mizql/disaster/models.py index 7e7def0..e0dfe5c 100644 --- a/mizql/disaster/models.py +++ b/mizql/disaster/models.py @@ -69,6 +69,19 @@ def alarm_type(self): return t +class RainForecast(models.Model): + """ + 降水量情報 + """ + amount = models.FloatField('降水量') + created_at = models.DateTimeField('取得日時') + is_observed = models.BooleanField('観測値かどうか') + location = models.ForeignKey(Location, on_delete=models.CASCADE, related_name='rain') + + class Meta: + ordering = ['-created_at'] + + class DemoRainForecast(models.Model): """ デモ用の降水量情報 From dde2e61d81afa79d75ef266d1c3e7c5c225cc6bd Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 15:50:35 +0900 Subject: [PATCH 120/162] implement class for obtain current rain forecast --- mizql/disaster/info.py | 45 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/mizql/disaster/info.py b/mizql/disaster/info.py index 84b4067..dc0ff7d 100644 --- a/mizql/disaster/info.py +++ b/mizql/disaster/info.py @@ -1,9 +1,10 @@ import requests from datetime import datetime, timedelta from django.utils import timezone +from django.conf import settings from typing import Optional, List -from .models import Location, Alarm +from .models import Location, Alarm, RainForecast class DisasterReport(object): @@ -107,3 +108,45 @@ def get_area_info(self, since_day: datetime=None, days: int=7) -> Optional[Locat for detail in details: self.update_alarm(loc.pk, **detail) return loc + + +class RainReporter(object): + API_KEY = settings.YOLP_APP_ID + base_url = 'https://map.yahooapis.jp/weather/V1/place' + forecast_key = 'forecast' + datetime_format = '%Y%m%d%H%M' + + def __init__(self, lat: str, lon: str): + self.lat = lat + self.lon = lon + + def _make(self, w): + created_at = datetime.strptime(w['Date'], self.datetime_format).astimezone(timezone.get_default_timezone()) + amount = w['Rainfall'] if 'Rainfall' in w.keys() else 0.0 + return { + 'created_at': created_at, + 'amount': amount, + } + + def _is_observed(self, w): + if w['Type'] == self.forecast_key: + return False + return True + + def get_report(self, location): + payload = { + 'coordinates': self.lat + ',' + self.lon, + 'appid': self.API_KEY, + 'past': 1, + 'output': 'json' + } + res = requests.get(self.base_url, params=payload) + if res.status_code != 200: + return None + weathers = res.json()['Feature'][0]['Property']['WeatherList']['Weather'] + for w in weathers: + info = self._make(w) + r, _ = RainForecast.objects.update_or_create( + created_at=info['created_at'], location=location, + defaults={'amount': info['amount'], 'is_observed': self._is_observed(w)} + ) From 12f273508b9efac50b1a99865a652a3a608f8ac8 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 15:50:54 +0900 Subject: [PATCH 121/162] add rain attr into location --- mizql/disaster/serializers.py | 29 +++++++++++++++++++++++++++-- mizql/disaster/views.py | 4 +++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py index 3ca8002..aa36e5a 100644 --- a/mizql/disaster/serializers.py +++ b/mizql/disaster/serializers.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from .models import Location, Alarm, DemoLocation, DemoAlarm, DemoRainForecast +from .models import Location, Alarm, DemoLocation, DemoAlarm, DemoRainForecast, RainForecast class AlarmSerializer(serializers.ModelSerializer): @@ -37,16 +37,41 @@ class Meta: list_serializer_class = ListDemoRainSerializer +class ListRainSerializer(serializers.ListSerializer): + + def to_representation(self, instance): + all_data = instance.order_by('-created_at').all() + forecasts = all_data.filter(is_observed=False)[:6] + observations = all_data.filter(is_observed=True)[:6] + return { + 'forecasts': [ + {'amount': f.amount, 'created_at': f.created_at} for f in forecasts + ], + 'observations': [ + {'amount': o.amount, 'created_at': o.created_at} for o in observations + ] + } + + +class RainSerializer(serializers.ModelSerializer): + + class Meta: + model = RainForecast + fields = ('amount', 'is_observed', 'created_at') + list_serializer_class = ListRainSerializer + + class LocationSerializer(serializers.ModelSerializer): """ 地域情報のシリアライザ """ alarms = AlarmSerializer(read_only=True, allow_null=True, many=True) + rain = RainSerializer(read_only=True, allow_null=True, many=True) class Meta: model = Location - fields = ('pk', 'name', 'alarms', 'updated_at') + fields = ('pk', 'name', 'alarms', 'rain', 'updated_at') class DemoAlarmSerializer(serializers.ModelSerializer): diff --git a/mizql/disaster/views.py b/mizql/disaster/views.py index d83e09e..01da64c 100644 --- a/mizql/disaster/views.py +++ b/mizql/disaster/views.py @@ -7,7 +7,7 @@ from .models import DemoLocation, DemoAlarm from .serializers import LocationSerializer, DemoLocationSerializer -from .info import DisasterReport +from .info import DisasterReport, RainReporter class LocationView(generics.RetrieveAPIView): @@ -35,6 +35,8 @@ def get_object(self): return Response(status=status.HTTP_404_NOT_FOUND) reporter = DisasterReport(lat, lon) loc = reporter.get_area_info() + rain_reporter = RainReporter(lat, lon) + rain_reporter.get_report(loc) return loc From 9e72e92557c704aa0e64b66f16fcc07dcb9cd5c3 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 15:52:26 +0900 Subject: [PATCH 122/162] add level attr into location --- mizql/disaster/serializers.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py index aa36e5a..e5272a6 100644 --- a/mizql/disaster/serializers.py +++ b/mizql/disaster/serializers.py @@ -73,6 +73,18 @@ class Meta: model = Location fields = ('pk', 'name', 'alarms', 'rain', 'updated_at') + def to_representation(self, instance): + data = super(LocationSerializer, self).to_representation(instance) + alarms = [alarm['name'] for alarm in data['alarms']] + danger_alarms = ['洪水警報', '大雨警報'] + score = len(list(set(alarms).intersection(set(danger_alarms)))) + observed_amount = sum([observed['amount'] for observed in data['rain']['observations']]) + score += observed_amount // 20 + forecast_amount = sum([forecast['amount'] for forecast in data['rain']['forecasts']]) + score += forecast_amount // 20 + data['level'] = score + return data + class DemoAlarmSerializer(serializers.ModelSerializer): type = serializers.IntegerField(read_only=True, source='alarm_type') From 61a01dd82f387224d8efc1ae1dc6ba6d4d75492b Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 16:44:23 +0900 Subject: [PATCH 123/162] improve on swagger --- mizql/evacuation/views.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index 91efb48..58f07f6 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -25,9 +25,10 @@ class ShelterViewSets(viewsets.ReadOnlyModelViewSet): ), coreapi.Field( 'distance', - required=True, + required=False, location='query', schema=coreschema.Integer(description='radius'), + description='Default is 1000' ), ] ) @@ -40,8 +41,10 @@ def get_queryset(self): if lat and lon: lat = float(lat) lon = float(lon) - return Shelter.objects.get_nearby_shelters_list(lat, lon, distance) \ - .order_by('distance').all() + if self.action == 'list': + return Shelter.objects.get_nearby_shelters_list(lat, lon, distance) \ + .order_by('distance').all() + return Shelter.objects.with_distance(lat, lon).all() return Shelter.objects.all() From 46e430da815cea3f392c753516b6ab7e88846f7a Mon Sep 17 00:00:00 2001 From: taxio Date: Thu, 8 Nov 2018 17:04:57 +0900 Subject: [PATCH 124/162] `yarn add moment` --- frontend/package.json | 1 + frontend/yarn.lock | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index 62499f1..3084e33 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,6 +6,7 @@ "@material-ui/core": "^3.3.2", "@material-ui/icons": "^3.0.1", "dotenv-cli": "^1.4.0", + "moment": "^2.22.2", "react": "^16.6.0", "react-d3-gauge": "^0.0.1", "react-dom": "^16.6.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index da4e9c3..e29080a 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -6473,6 +6473,11 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@ dependencies: minimist "0.0.8" +moment@^2.22.2: + version "2.22.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" From fb12ffea6ff499797b67287063683293d99e0abb Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 18:31:21 +0900 Subject: [PATCH 125/162] fix tz problems --- mizql/disaster/info.py | 8 ++++---- mizql/disaster/management/commands/createdata.py | 4 ++-- mizql/disaster/management/commands/rain_forecast.py | 6 ++---- mizql/disaster/views.py | 6 ++++-- mizql/evacuation/management/commands/emulate_evacuate.py | 6 ++---- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/mizql/disaster/info.py b/mizql/disaster/info.py index dc0ff7d..479f465 100644 --- a/mizql/disaster/info.py +++ b/mizql/disaster/info.py @@ -11,7 +11,7 @@ class DisasterReport(object): base_url = 'http://api.aitc.jp/jmardb-api/' area_path = 'area' search_path = 'search' - datetime_format = '%Y-%m-%d %H:%M:%S' + datetime_format = '%Y-%m-%d %H:%M:%S%z' datetime_parse_format = '%Y-%m-%dT%H:%M:%S.%f%z' demo_coordinates = (135.780418, 35.048900) location_class = Location @@ -114,14 +114,14 @@ class RainReporter(object): API_KEY = settings.YOLP_APP_ID base_url = 'https://map.yahooapis.jp/weather/V1/place' forecast_key = 'forecast' - datetime_format = '%Y%m%d%H%M' + datetime_format = '%Y%m%d%H%M%z' def __init__(self, lat: str, lon: str): self.lat = lat self.lon = lon def _make(self, w): - created_at = datetime.strptime(w['Date'], self.datetime_format).astimezone(timezone.get_default_timezone()) + created_at = datetime.strptime(str(w['Date']) + '+0900', self.datetime_format) amount = w['Rainfall'] if 'Rainfall' in w.keys() else 0.0 return { 'created_at': created_at, @@ -135,7 +135,7 @@ def _is_observed(self, w): def get_report(self, location): payload = { - 'coordinates': self.lat + ',' + self.lon, + 'coordinates': self.lon + ',' + self.lat, 'appid': self.API_KEY, 'past': 1, 'output': 'json' diff --git a/mizql/disaster/management/commands/createdata.py b/mizql/disaster/management/commands/createdata.py index 885fc96..b631fad 100644 --- a/mizql/disaster/management/commands/createdata.py +++ b/mizql/disaster/management/commands/createdata.py @@ -7,7 +7,7 @@ class Command(BaseCommand): - date_format = '%Y/%m/%d_%H:%M:%S' + date_format = '%Y/%m/%d_%H:%M:%S%z' def add_arguments(self, parser): parser.add_argument( @@ -36,7 +36,7 @@ def handle(self, *args, **options): if raw_date is None: date = datetime.now() else: - date = datetime.strptime(raw_date, self.date_format) + date = datetime.strptime(raw_date + '+0900', self.date_format) if is_demo: reporter.location_class = DemoLocation reporter.alarm_class = DemoAlarm diff --git a/mizql/disaster/management/commands/rain_forecast.py b/mizql/disaster/management/commands/rain_forecast.py index 674d191..3c58afe 100644 --- a/mizql/disaster/management/commands/rain_forecast.py +++ b/mizql/disaster/management/commands/rain_forecast.py @@ -1,9 +1,7 @@ -from datetime import datetime, timezone, timedelta +from datetime import datetime, timedelta from django.core.management.base import BaseCommand from disaster.models import DemoLocation, DemoRainForecast -JST = timezone(timedelta(hours=+9), 'JST') - class Command(BaseCommand): @@ -16,7 +14,7 @@ def handle(self, *args, **options): 0.5, 0.5, 0.5, 0.5, 0.5, 1.0, 0.0, 1.0, 3.5, 7.5, 8.0, 8.5, 5.0, 7.0, 3.5, 4.5 ] } - date = datetime.strptime('2018/09/04 12:00:00', '%Y/%m/%d %H:%M:%S').astimezone(JST) + date = datetime.strptime('2018/09/04 12:00:00+0900', '%Y/%m/%d %H:%M:%S%z') for area in areas: forecast = rain_forecasts[area['name']] loc, _ = DemoLocation.objects.get_or_create( diff --git a/mizql/disaster/views.py b/mizql/disaster/views.py index 01da64c..a85ac39 100644 --- a/mizql/disaster/views.py +++ b/mizql/disaster/views.py @@ -72,8 +72,10 @@ def get_object(self): reporter.location_class = DemoLocation reporter.alarm_class = DemoAlarm if d_str is None: - d_str = '2018-09-04_12:00:00' - loc = reporter.get_area_info(datetime.strptime(d_str, "%Y-%m-%d_%H:%M:%S")) + d_str = '2018-09-04_12:00:00+0900' + else: + d_str = d_str + '+0900' + loc = reporter.get_area_info(datetime.strptime(d_str, "%Y-%m-%d_%H:%M:%S%z")) if loc is None: return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) return loc diff --git a/mizql/evacuation/management/commands/emulate_evacuate.py b/mizql/evacuation/management/commands/emulate_evacuate.py index 16ac7a1..346b9aa 100644 --- a/mizql/evacuation/management/commands/emulate_evacuate.py +++ b/mizql/evacuation/management/commands/emulate_evacuate.py @@ -5,8 +5,6 @@ from accounts.models import User from evacuation.models import Shelter, EvacuationHistory, PersonalEvacuationHistory -JST = timezone(timedelta(hours=+9), 'JST') - random.seed(0) @@ -27,7 +25,7 @@ def handle(self, *args, **options): all_shelters = list(Shelter.objects.all()) all_users = list(User.objects.all()) for shelter in tqdm(all_shelters, desc='Shelters'): - date = datetime.strptime(options['date'], '%Y/%m/%d %H:%M:%S').astimezone(JST) + date = datetime.strptime(options['date'] + '+0900', '%Y/%m/%d %H:%M:%S%z') limit = reverse_random(shelter.capacity // 10) capacity = limit + shelter.capacity offset = int(shelter.capacity * random.uniform(0.0, 0.2)) @@ -42,7 +40,7 @@ def handle(self, *args, **options): EvacuationHistory(shelter=shelter, count=current, created_at=date).save() count += 1 for user in tqdm(all_users, 'Users'): - date = datetime.strptime(options['date'], '%Y/%m/%d %H:%M:%S').astimezone(JST) + timedelta(minutes=10 * 10) + date = datetime.strptime(options['date'] + '0900', '%Y/%m/%d %H:%M:%S%z') + timedelta(minutes=10 * 10) is_evacuated = True if 0.8 > random.random() else False shelter = random.choice(all_shelters) PersonalEvacuationHistory.objects.create( From 53df8733e086bf5f06755fac4e9d9f65bc0f3f11 Mon Sep 17 00:00:00 2001 From: taxio Date: Thu, 8 Nov 2018 18:47:31 +0900 Subject: [PATCH 126/162] guages --- frontend/src/components/DangerScore.js | 39 ++++++++++++++ frontend/src/components/Dashboard.js | 14 +++-- frontend/src/components/Precipitation.js | 68 ++++++++++++++++++++++++ frontend/src/config/mockdata.js | 55 +++++++++++++++++++ 4 files changed, 171 insertions(+), 5 deletions(-) create mode 100644 frontend/src/components/DangerScore.js create mode 100644 frontend/src/components/Precipitation.js diff --git a/frontend/src/components/DangerScore.js b/frontend/src/components/DangerScore.js new file mode 100644 index 0000000..b4c465b --- /dev/null +++ b/frontend/src/components/DangerScore.js @@ -0,0 +1,39 @@ +import React, {Component} from 'react'; +import ReactD3Gauge from 'react-d3-gauge'; +import {Typography} from '@material-ui/core'; +import theme from '../config/theme'; + +export default class DangerScore extends Component { + constructor(props) { + super(props); + this.state = { + level: 0, + }; + } + + convertScoreToLevel(score) { + if (!score) { + return 0 + } else if (score > 4) { + return 100 + } + return score * 25 - 25 / 2; + } + + render() { + return ( + +
+ + 危険度 + + +
+
+ ); + } +} diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 18c58f2..7a05411 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -10,6 +10,8 @@ import theme from '../config/theme'; import * as icons from '@material-ui/icons'; import * as mockdata from '../config/mockdata'; import * as auth from '../modules/auth'; +import Precipitation from './Precipitation'; +import DangerScore from './DangerScore'; export default class Dashboard extends Component { constructor(props) { @@ -45,10 +47,10 @@ export default class Dashboard extends Component { {this.state.tab === 0 && - + {this.props.canUseLocation ? - + 発令中の警報・注意報} > @@ -65,9 +67,11 @@ export default class Dashboard extends Component { ))} - -

危険度

-

TODO: 何かのグラフ

+ + + + +
: diff --git a/frontend/src/components/Precipitation.js b/frontend/src/components/Precipitation.js new file mode 100644 index 0000000..b00d06f --- /dev/null +++ b/frontend/src/components/Precipitation.js @@ -0,0 +1,68 @@ +import React, {Component} from 'react'; +import { + AreaChart, Area, Tooltip, + ResponsiveContainer, + XAxis, YAxis +} from 'recharts'; +import {Typography} from '@material-ui/core'; +import * as mockdata from '../config/mockdata'; +import moment from 'moment'; + +export default class Precipitation extends Component { + constructor(props) { + super(props); + this.state = { + data: this.convertRainData(mockdata.area.rain), + }; + } + + convertRainData(rain) { + let data = []; + rain.forecasts.forEach((elm) => { + data.push({ + amount: elm.amount, + time: moment(elm.created_at).unix(), + }); + }); + rain.observations.forEach((elm) => { + data.push({ + amount: elm.amount, + time: moment(elm.created_at).unix(), + }); + }); + return data.reverse(); + } + + formatXAxis = (tickItem) => { + console.log(tickItem); + return moment.unix(tickItem).format('HH:mm'); + }; + + render() { + return ( + + + 降水量 + + + + + + + + + + + ); + } +} \ No newline at end of file diff --git a/frontend/src/config/mockdata.js b/frontend/src/config/mockdata.js index f1877cd..c704df8 100644 --- a/frontend/src/config/mockdata.js +++ b/frontend/src/config/mockdata.js @@ -92,6 +92,61 @@ export const area = { created_at: "2018-11-06T17:37:42.516061+09:00" } ], + rain: { + forecasts: [ + { + amount: 20, + created_at: "2018-11-08T17:25:00Z" + }, + { + amount: 50, + created_at: "2018-11-08T17:15:00Z" + }, + { + amount: 60, + created_at: "2018-11-08T17:05:00Z" + }, + { + amount: 40, + created_at: "2018-11-08T16:55:00Z" + }, + { + amount: 20, + created_at: "2018-11-08T16:45:00Z" + }, + { + amount: 40, + created_at: "2018-11-08T16:35:00Z" + } + ], + observations: [ + { + amount: 20, + created_at: "2018-11-08T16:25:00Z" + }, + { + amount: 30, + created_at: "2018-11-08T16:15:00Z" + }, + { + amount: 20, + created_at: "2018-11-08T16:05:00Z" + }, + { + amount: 10, + created_at: "2018-11-08T15:55:00Z" + }, + { + amount: 0, + created_at: "2018-11-08T15:45:00Z" + }, + { + amount: 10, + created_at: "2018-11-08T15:35:00Z" + }, + ], + }, + score: 3, updated_at: "2018-11-06T17:37:41.925413+09:00" }; From d00d9e91d46bfbfec9d7b0d23fbcb2e6e9d0055f Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 20:49:27 +0900 Subject: [PATCH 127/162] fix create algorithm on evacuation --- mizql/evacuation/serializers.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index e0a3094..15446b4 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -40,11 +40,18 @@ class Meta: fields = ('pk', 'shelter', 'is_evacuated') def create(self, validated_data): + shelter_id = validated_data['shelter_id'] + is_evacuated = validated_data['is_evacuated'] user = self.context['request'].user - history, is_created = PersonalEvacuationHistory.objects.get_or_create( - shelter_id=validated_data['shelter_id'], user=user, is_evacuated=validated_data['is_evacuated'], - created_at=timezone.now() + user_histories = PersonalEvacuationHistory.objects.filter(user=user).order_by('-created_at').all() + evacuated = [h for h in user_histories if h.is_evacuated] + if len(evacuated) > 0: + if is_evacuated: + raise serializers.ValidationError({'is_evacuated': 'You have already evacuate.'}) + for e in evacuated: + e.is_evacuated = False + e.save() + return evacuated[0] + return PersonalEvacuationHistory.objects.create( + shelter_id=shelter_id, user=user, is_evacuated=is_evacuated, created_at=timezone.now() ) - if not is_created: - raise serializers.ValidationError({'is_evacuated': 'You have already evacuate.'}) - return history From 3c2dbf5780333b1d4e694645e2b4ccf7b2f94040 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 21:38:41 +0900 Subject: [PATCH 128/162] rm create evacuate endpoint --- mizql/evacuation/views.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index 58f07f6..dcdf8de 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -49,17 +49,11 @@ def get_queryset(self): class EvacuationHistoryViewSets(mixins.ListModelMixin, - mixins.CreateModelMixin, viewsets.GenericViewSet): permission_classes = (permissions.AllowAny,) queryset = EvacuationHistory.objects.all() serializer_class = EvacuationHistorySerializer - def get_permissions(self): - if self.action == 'create': - self.permission_classes = [permissions.IsAuthenticated] - return super(EvacuationHistoryViewSets, self).get_permissions() - def list(self, request, *args, **kwargs): shelter_id = int(kwargs['shelter_pk']) queryset = self.get_queryset().filter(shelter_id=shelter_id)[:10] From b20a57d379ba07ac3b178dd3cbdb62b47f43c016 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 23:06:58 +0900 Subject: [PATCH 129/162] fix to fail evacuate POST --- mizql/evacuation/serializers.py | 6 ++++++ mizql/evacuation/views.py | 1 + 2 files changed, 7 insertions(+) diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index 15446b4..bae7e48 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -39,6 +39,12 @@ class Meta: model = PersonalEvacuationHistory fields = ('pk', 'shelter', 'is_evacuated') + def to_internal_value(self, data): + return { + 'is_evacuated': data['is_evacuated'], + 'shelter_id': data['shelter_id'], + } + def create(self, validated_data): shelter_id = validated_data['shelter_id'] is_evacuated = validated_data['is_evacuated'] diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index dcdf8de..2724d7e 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -78,5 +78,6 @@ def create(self, request, *args, **kwargs): data['shelter_id'] = shelter_id serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) + serializer.save() headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) From 7803cb57e9912b1e8f3069205fa2342964fd8e32 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 23:07:36 +0900 Subject: [PATCH 130/162] add attr about whether demo or not --- .../0006_evacuationhistory_is_demo.py | 18 ++++++++++++++++++ mizql/evacuation/models.py | 1 + 2 files changed, 19 insertions(+) create mode 100644 mizql/evacuation/migrations/0006_evacuationhistory_is_demo.py diff --git a/mizql/evacuation/migrations/0006_evacuationhistory_is_demo.py b/mizql/evacuation/migrations/0006_evacuationhistory_is_demo.py new file mode 100644 index 0000000..06f46e2 --- /dev/null +++ b/mizql/evacuation/migrations/0006_evacuationhistory_is_demo.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.3 on 2018-11-08 13:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('evacuation', '0005_auto_20181106_1658'), + ] + + operations = [ + migrations.AddField( + model_name='evacuationhistory', + name='is_demo', + field=models.BooleanField(default=True, verbose_name='デモ用'), + ), + ] diff --git a/mizql/evacuation/models.py b/mizql/evacuation/models.py index 20e1722..e0176fa 100644 --- a/mizql/evacuation/models.py +++ b/mizql/evacuation/models.py @@ -119,6 +119,7 @@ class EvacuationHistory(models.Model): """ shelter = models.ForeignKey(Shelter, verbose_name='避難所', related_name='histories', on_delete=models.CASCADE) count = models.IntegerField('避難している人数') + is_demo = models.BooleanField('デモ用', default=True) created_at = models.DateTimeField('取得日') objects = EvacuationHistoryManager() From b4cbccb9072dbe552b3a166552310a14cba030b0 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 23:08:02 +0900 Subject: [PATCH 131/162] add `demo-shelter` endpoint --- mizql/evacuation/serializers.py | 38 ++++++++++++++++++++++++ mizql/evacuation/views.py | 52 ++++++++++++++++++++++++++++++++- mizql/mizql/urls.py | 7 ++++- 3 files changed, 95 insertions(+), 2 deletions(-) diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index bae7e48..e2cf436 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -1,3 +1,4 @@ +from datetime import timedelta from django.utils import timezone from rest_framework import serializers from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory @@ -24,11 +25,48 @@ def to_representation(self, instance): return data +class EvacuationHistoryListSerializer(serializers.ListSerializer): + + def to_representation(self, instances): + resp = [self.child.to_representation(instance) for instance in instances] + latest = instances[0].created_at + shelter = instances[0].shelter + previous_count = instances[0].count + current = PersonalEvacuationHistory.objects.filter(shelter=shelter, created_at__gt=latest).all() + stay = current.filter(is_evacuated=True).all().count() + gohome = current.filter(is_evacuated=False).all().count() + resp.insert(0, {'created_at': timezone.now(), 'count': stay - gohome + previous_count}) + return resp + + class EvacuationHistorySerializer(serializers.ModelSerializer): class Meta: model = EvacuationHistory fields = ('created_at', 'count') + list_serializer_class = EvacuationHistoryListSerializer + + +class DemoEvacuationHistoryListSerializer(EvacuationHistoryListSerializer): + + def to_representation(self, instances): + # デモ用に突っ込んだ時間のデータを現在の時間に置換 + data = super(DemoEvacuationHistoryListSerializer, self).to_representation(instances) + current = data[0]['created_at'] + latest = current - timedelta( + minutes=current.minute % 10, seconds=current.second, microseconds=current.microsecond + ) + for i in range(1, len(data)-1): + data[i]['created_at'] = latest - timedelta(minutes=10*(i-1)) + return data + + +class DemoEvacuationHistorySerializer(serializers.ModelSerializer): + + class Meta: + model = EvacuationHistory + fields = ('created_at', 'count') + list_serializer_class = DemoEvacuationHistoryListSerializer class PersonalEvacuationHistorySerializer(serializers.ModelSerializer): diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index 2724d7e..dad6c6b 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -1,5 +1,8 @@ import coreapi import coreschema +from datetime import timedelta, datetime +from django.utils import timezone +from django.shortcuts import get_object_or_404 from rest_framework import viewsets, permissions, schemas, mixins, status from rest_framework.response import Response from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory @@ -54,9 +57,56 @@ class EvacuationHistoryViewSets(mixins.ListModelMixin, queryset = EvacuationHistory.objects.all() serializer_class = EvacuationHistorySerializer + def _create_histories(self, shelter_id: int, remaining: int, offset: int, latest: datetime): + for i in range(remaining): + since = latest + timedelta(minutes=10*i) + until = latest + timedelta(minutes=10*(i+1)) + current = PersonalEvacuationHistory.objects.filter(shelter_id=shelter_id, created_at__range=[since, until]) + stay = current.filter(is_evacuated=True).all().count() + gohome = current.filter(is_evacuated=False).all().count() + offset = offset + stay - gohome + hist = EvacuationHistory( + shelter_id=shelter_id, count=offset, created_at=until, is_demo=False + ) + hist.save() + + def list(self, request, *args, **kwargs): + shelter_id = int(kwargs['shelter_pk']) + now = timezone.now() + since = now - timedelta(minutes=10*10) + queryset = self.get_queryset().filter( + shelter_id=shelter_id, is_demo=False, created_at__gte=since + ).order_by('-created_at').all() + if queryset.count() >= 10: + queryset = queryset[:10] + else: + # 存在するHistoryで最新の物を取得 + latest = queryset.first() + if latest is not None: + # 現在時刻との差分がいくつあるか(10分おきのデータを作るので10で割る) + remaining = (now - latest.created_at).seconds // 60 // 10 + offset = latest.count + init = latest.created_at + else: + remaining = 10 + latest = self.get_queryset().filter(shelter_id=shelter_id, is_demo=False)\ + .order_by('-created_at').first() + offset = latest.count if latest is not None else 0 + init = now - timedelta(minutes=now.minute % 10 + 10*9, seconds=now.second, microseconds=now.microsecond) + self._create_histories(shelter_id, remaining, offset, init) + # 再取得 + queryset = self.get_queryset().filter( + shelter_id=shelter_id, is_demo=False, created_at__gte=since + ).order_by('-created_at').all() + serializer = self.get_serializer(queryset, many=True) + return Response(serializer.data) + + +class DemoEvacuationHistoryViewSets(EvacuationHistoryViewSets): + def list(self, request, *args, **kwargs): shelter_id = int(kwargs['shelter_pk']) - queryset = self.get_queryset().filter(shelter_id=shelter_id)[:10] + queryset = self.get_queryset().filter(shelter_id=shelter_id, is_demo=True)[:10] serializer = self.get_serializer(queryset, many=True) return Response(serializer.data) diff --git a/mizql/mizql/urls.py b/mizql/mizql/urls.py index d89e5bd..ad267dc 100644 --- a/mizql/mizql/urls.py +++ b/mizql/mizql/urls.py @@ -20,17 +20,21 @@ from rest_framework_swagger.views import get_swagger_view from accounts.views import UserViewSets, MeView -from evacuation.views import ShelterViewSets, EvacuationHistoryViewSets, EvacuationViewSets +from evacuation.views import ShelterViewSets, EvacuationHistoryViewSets, EvacuationViewSets, DemoEvacuationHistoryViewSets from disaster.views import LocationView, DemoLocationView router = DefaultRouter() router.register(r'users', UserViewSets, basename='users') router.register(r'shelters', ShelterViewSets, basename='shelters') +router.register(r'demo-shelters', ShelterViewSets, basename='demo-shelters') shelter_nested_router = NestedDefaultRouter(router, 'shelters', lookup='shelter') shelter_nested_router.register(r'history', EvacuationHistoryViewSets, basename='history') shelter_nested_router.register(r'evacuate', EvacuationViewSets, basename='evacuate') +demo_shelter_nested_serializer = NestedDefaultRouter(router, 'demo-shelters', lookup='shelter') +demo_shelter_nested_serializer.register('history', DemoEvacuationHistoryViewSets, basename='history') + if not settings.DEBUG: url = '/api/' else: @@ -42,6 +46,7 @@ path('users/me/', MeView.as_view()), path('', include(router.urls)), path('', include(shelter_nested_router.urls)), + path('', include(demo_shelter_nested_serializer.urls)), path('area/', LocationView.as_view()), path('demo-area/', DemoLocationView.as_view()), path('auth/', include('djoser.urls.jwt')), From a4b583d4ff23a0f5e94a66ddccc3f8d8826fe23c Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 23:49:13 +0900 Subject: [PATCH 132/162] return all datetime as JST --- mizql/disaster/info.py | 11 +++++++---- mizql/disaster/serializers.py | 11 +++++++---- mizql/evacuation/serializers.py | 9 ++++++--- mizql/evacuation/views.py | 3 +-- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/mizql/disaster/info.py b/mizql/disaster/info.py index 479f465..144224d 100644 --- a/mizql/disaster/info.py +++ b/mizql/disaster/info.py @@ -2,6 +2,7 @@ from datetime import datetime, timedelta from django.utils import timezone from django.conf import settings +from pytz import timezone as pytz from typing import Optional, List from .models import Location, Alarm, RainForecast @@ -16,6 +17,7 @@ class DisasterReport(object): demo_coordinates = (135.780418, 35.048900) location_class = Location alarm_class = Alarm + utc = pytz('UTC') def __init__(self, lat: float, lon: float): self.lat = lat @@ -57,7 +59,7 @@ def _get_abstract(self, areacode: int, info_type: str, since_day: datetime=None, 'count': len(data), 'link': data[0]['link'], 'text': data[0]['headline'], - 'datetime': datetime.strptime(data[0]['datetime'], self.datetime_parse_format) + 'datetime': self.utc.normalize(datetime.strptime(data[0]['datetime'], self.datetime_parse_format)) } def _get_alarm_detail(self, url: str) -> Optional[List[dict]]: @@ -114,17 +116,18 @@ class RainReporter(object): API_KEY = settings.YOLP_APP_ID base_url = 'https://map.yahooapis.jp/weather/V1/place' forecast_key = 'forecast' - datetime_format = '%Y%m%d%H%M%z' + datetime_format = '%Y%m%d%H%M' + jst = pytz(settings.TIME_ZONE) def __init__(self, lat: str, lon: str): self.lat = lat self.lon = lon def _make(self, w): - created_at = datetime.strptime(str(w['Date']) + '+0900', self.datetime_format) + created_at = datetime.strptime(str(w['Date']), self.datetime_format) amount = w['Rainfall'] if 'Rainfall' in w.keys() else 0.0 return { - 'created_at': created_at, + 'created_at': self.jst.localize(created_at), 'amount': amount, } diff --git a/mizql/disaster/serializers.py b/mizql/disaster/serializers.py index e5272a6..bc78ab5 100644 --- a/mizql/disaster/serializers.py +++ b/mizql/disaster/serializers.py @@ -1,3 +1,4 @@ +from datetime import timezone from rest_framework import serializers from .models import Location, Alarm, DemoLocation, DemoAlarm, DemoRainForecast, RainForecast @@ -19,12 +20,13 @@ def to_representation(self, instance): all_data = instance.order_by('-created_at').all() forecasts = all_data[:6] observations = all_data[6:12] + d_f = serializers.DateTimeField() return { 'forecasts': [ - {'amount': f.amount, 'created_at': f.created_at} for f in forecasts + {'amount': f.amount, 'created_at': d_f.to_representation(f.created_at)} for f in forecasts ], 'observations': [ - {'amount': o.amount, 'created_at': o.created_at} for o in observations + {'amount': o.amount, 'created_at': d_f.to_representation(o.created_at)} for o in observations ] } @@ -43,12 +45,13 @@ def to_representation(self, instance): all_data = instance.order_by('-created_at').all() forecasts = all_data.filter(is_observed=False)[:6] observations = all_data.filter(is_observed=True)[:6] + d_f = serializers.DateTimeField() return { 'forecasts': [ - {'amount': f.amount, 'created_at': f.created_at} for f in forecasts + {'amount': f.amount, 'created_at': d_f.to_representation(f.created_at)} for f in forecasts ], 'observations': [ - {'amount': o.amount, 'created_at': o.created_at} for o in observations + {'amount': o.amount, 'created_at': d_f.to_representation(o.created_at)} for o in observations ] } diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index e2cf436..58b0206 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -35,7 +35,8 @@ def to_representation(self, instances): current = PersonalEvacuationHistory.objects.filter(shelter=shelter, created_at__gt=latest).all() stay = current.filter(is_evacuated=True).all().count() gohome = current.filter(is_evacuated=False).all().count() - resp.insert(0, {'created_at': timezone.now(), 'count': stay - gohome + previous_count}) + d_f = serializers.DateTimeField() + resp.insert(0, {'created_at': d_f.to_representation(timezone.now()), 'count': stay - gohome + previous_count}) return resp @@ -56,8 +57,9 @@ def to_representation(self, instances): latest = current - timedelta( minutes=current.minute % 10, seconds=current.second, microseconds=current.microsecond ) + d_f = serializers.DateTimeField() for i in range(1, len(data)-1): - data[i]['created_at'] = latest - timedelta(minutes=10*(i-1)) + data[i]['created_at'] = d_f.to_representation(latest - timedelta(minutes=10*(i-1))) return data @@ -96,6 +98,7 @@ def create(self, validated_data): e.is_evacuated = False e.save() return evacuated[0] + now = timezone.now().astimezone(timezone.get_default_timezone()) return PersonalEvacuationHistory.objects.create( - shelter_id=shelter_id, user=user, is_evacuated=is_evacuated, created_at=timezone.now() + shelter_id=shelter_id, user=user, is_evacuated=is_evacuated, created_at=now ) diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index dad6c6b..cc89e60 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -2,7 +2,6 @@ import coreschema from datetime import timedelta, datetime from django.utils import timezone -from django.shortcuts import get_object_or_404 from rest_framework import viewsets, permissions, schemas, mixins, status from rest_framework.response import Response from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory @@ -72,7 +71,7 @@ def _create_histories(self, shelter_id: int, remaining: int, offset: int, latest def list(self, request, *args, **kwargs): shelter_id = int(kwargs['shelter_pk']) - now = timezone.now() + now = timezone.now().astimezone(timezone.get_default_timezone()) since = now - timedelta(minutes=10*10) queryset = self.get_queryset().filter( shelter_id=shelter_id, is_demo=False, created_at__gte=since From fee0cdacc7968d855edce01ac94468ae87e8d648 Mon Sep 17 00:00:00 2001 From: Pudding Date: Thu, 8 Nov 2018 23:53:23 +0900 Subject: [PATCH 133/162] fix demo datetime --- mizql/evacuation/serializers.py | 4 ++-- mizql/evacuation/views.py | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mizql/evacuation/serializers.py b/mizql/evacuation/serializers.py index 58b0206..56dd095 100644 --- a/mizql/evacuation/serializers.py +++ b/mizql/evacuation/serializers.py @@ -53,12 +53,12 @@ class DemoEvacuationHistoryListSerializer(EvacuationHistoryListSerializer): def to_representation(self, instances): # デモ用に突っ込んだ時間のデータを現在の時間に置換 data = super(DemoEvacuationHistoryListSerializer, self).to_representation(instances) - current = data[0]['created_at'] + current = timezone.now() latest = current - timedelta( minutes=current.minute % 10, seconds=current.second, microseconds=current.microsecond ) d_f = serializers.DateTimeField() - for i in range(1, len(data)-1): + for i in range(1, len(data)): data[i]['created_at'] = d_f.to_representation(latest - timedelta(minutes=10*(i-1))) return data diff --git a/mizql/evacuation/views.py b/mizql/evacuation/views.py index cc89e60..41b50ed 100644 --- a/mizql/evacuation/views.py +++ b/mizql/evacuation/views.py @@ -5,7 +5,12 @@ from rest_framework import viewsets, permissions, schemas, mixins, status from rest_framework.response import Response from .models import Shelter, EvacuationHistory, PersonalEvacuationHistory -from .serializers import ShelterSerializer, EvacuationHistorySerializer, PersonalEvacuationHistorySerializer +from .serializers import ( + ShelterSerializer, + EvacuationHistorySerializer, + PersonalEvacuationHistorySerializer, + DemoEvacuationHistorySerializer, +) class ShelterViewSets(viewsets.ReadOnlyModelViewSet): @@ -102,6 +107,7 @@ def list(self, request, *args, **kwargs): class DemoEvacuationHistoryViewSets(EvacuationHistoryViewSets): + serializer_class = DemoEvacuationHistorySerializer def list(self, request, *args, **kwargs): shelter_id = int(kwargs['shelter_pk']) From ded27a74fa86c8e9b20c458be2f355cc4cec3319 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 09:37:31 +0900 Subject: [PATCH 134/162] add requests --- frontend/src/modules/api.js | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/frontend/src/modules/api.js b/frontend/src/modules/api.js index 2a9dfd6..1fd193e 100644 --- a/frontend/src/modules/api.js +++ b/frontend/src/modules/api.js @@ -1,17 +1,3 @@ -const sendPost = async (path, data) => { - const options = { - method: "POST", - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify(data), - }; - - const res = await fetch(process.env.REACT_APP_API_PATH + path, options); - return await res.json() -}; - const sendRequest = async (method, path, data) => { const options = { method: method, @@ -27,5 +13,17 @@ const sendRequest = async (method, path, data) => { return await res.json() }; -export const login = (username, password) => sendPost('/auth/jwt/create', {username, password}); -export const getFollowList = () => sendRequest("GET", "/me/", {}); \ No newline at end of file +export const login = (username, password) => sendRequest("POST", "/auth/jwt/create", {username: username, password: password}); + +// area +export const getArea = (lat, lng) => sendRequest("GET", "/area/", {lat: lat, lon: lng}); +export const getDemoArea = (lat, lng, date) => sendRequest("GET", "/demo-area/", {lat: lat, lon: lng, date: date}); + +// shelters +export const getShelters = (lat, lng, distance) => sendRequest("GET", "/shelters/", {lat: lat, lon: lng, distance: distance}); +export const getShelter = (id) => sendRequest("GET", `/shelters/${id}`, {}); +export const postEvacuate = (shelterId, isEvacuate) => sendRequest("POST", `/shelters/${shelterId}/evacuate/`, {is_evacuated: isEvacuate}); +export const getShelterHistory = (shelterId) => sendRequest("GET", `/shelters/${shelterId}/history/`, {}); + +// users +export const getUserInfo = () => sendRequest("GET", "/users/me/", {}); \ No newline at end of file From 7500249f85a17d4998764a63921b319c3da140bf Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 10:28:25 +0900 Subject: [PATCH 135/162] shelters --- frontend/src/components/Home.js | 20 ++++++++++++++------ frontend/src/components/Precipitation.js | 1 - frontend/src/modules/api.js | 18 +++++++++++++----- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index e91de6c..d8cc27a 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -14,6 +14,7 @@ import { import * as location from '../modules/location'; import * as auth from '../modules/auth'; import * as mockdata from "../config/mockdata"; +import * as api from "../modules/api"; import ShelterMap from "./Map"; import ShelterList from './ShelterList'; import Dashboard from './Dashboard'; @@ -27,7 +28,7 @@ export default class Home extends Component { this.state = { location: null, canUseGeolocation: location.canGetPosition(), - shelters: mockdata.shelters, + shelters: [], pickShelter: null, showDetail: false, isLogin: false, @@ -37,11 +38,18 @@ export default class Home extends Component { componentDidMount() { location.getPosition().then((value) => { - this.setState({ - location: { - lat: value.lat, - lng: value.lng, - }, + api.getShelters(value.lat, value.lng, 1000).then((shelters) => { + console.log(shelters); + console.log(value); + this.setState({ + location: { + lat: value.lat, + lng: value.lng, + }, + shelters: shelters, + }); + }).catch((error) => { + console.error(error); }); }).catch((error) => { console.error(error); diff --git a/frontend/src/components/Precipitation.js b/frontend/src/components/Precipitation.js index b00d06f..e1d941e 100644 --- a/frontend/src/components/Precipitation.js +++ b/frontend/src/components/Precipitation.js @@ -34,7 +34,6 @@ export default class Precipitation extends Component { } formatXAxis = (tickItem) => { - console.log(tickItem); return moment.unix(tickItem).format('HH:mm'); }; diff --git a/frontend/src/modules/api.js b/frontend/src/modules/api.js index 1fd193e..68b5dcb 100644 --- a/frontend/src/modules/api.js +++ b/frontend/src/modules/api.js @@ -1,26 +1,34 @@ const sendRequest = async (method, path, data) => { - const options = { + let options = { method: method, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', - 'Authorization': `JWT ${localStorage.getItem('token')}`, }, - body: JSON.stringify(data), }; + const token = localStorage.getItem('token'); + if (token) { + options.headers = Object.assign(options.headers, {'Authorization': `JWT ${token}`}); + } + if (method === "POST") { + options.body = JSON.stringify(data); + } const res = await fetch(process.env.REACT_APP_API_PATH + path, options); return await res.json() }; -export const login = (username, password) => sendRequest("POST", "/auth/jwt/create", {username: username, password: password}); +export const login = (username, password) => sendRequest("POST", "/auth/jwt/create", { + username: username, + password: password +}); // area export const getArea = (lat, lng) => sendRequest("GET", "/area/", {lat: lat, lon: lng}); export const getDemoArea = (lat, lng, date) => sendRequest("GET", "/demo-area/", {lat: lat, lon: lng, date: date}); // shelters -export const getShelters = (lat, lng, distance) => sendRequest("GET", "/shelters/", {lat: lat, lon: lng, distance: distance}); +export const getShelters = (lat, lng, distance) => sendRequest("GET", `/shelters/?lat=${lat}&lon=${lng}&distance=${distance}`); export const getShelter = (id) => sendRequest("GET", `/shelters/${id}`, {}); export const postEvacuate = (shelterId, isEvacuate) => sendRequest("POST", `/shelters/${shelterId}/evacuate/`, {is_evacuated: isEvacuate}); export const getShelterHistory = (shelterId) => sendRequest("GET", `/shelters/${shelterId}/history/`, {}); From 08c0ef8098c9053f668d4f4d4e780f226bcf3781 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 10:36:10 +0900 Subject: [PATCH 136/162] shelter history --- frontend/src/components/ShelterDetail.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index d36fad7..76c37cc 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -15,6 +15,7 @@ import { } from 'recharts'; import * as mockdata from '../config/mockdata'; import * as location from '../modules/location'; +import * as api from '../modules/api'; import theme from '../config/theme'; export default class ShelterDetail extends Component { @@ -22,9 +23,19 @@ export default class ShelterDetail extends Component { super(props); this.state = { shelter: props.shelter, + history: null, }; } + componentDidMount(){ + api.getShelterHistory(this.props.shelter.pk).then((history) => { + console.log(history); + this.setState({history: history}); + }).catch((error) => { + console.error(error); + }); + } + render() { return ( From 6f8ceb963eab366c4c62343d80e43d923d0ca15b Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 10:44:35 +0900 Subject: [PATCH 137/162] user information --- frontend/src/components/Dashboard.js | 4 ++-- frontend/src/components/Home.js | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 7a05411..a2ce6ee 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -91,7 +91,7 @@ export default class Dashboard extends Component { - {mockdata.friends.slice(this.state.friendPage * theme.friendList.rowPerPage, this.state.friendPage * theme.friendList.rowPerPage + theme.friendList.rowPerPage).map((friend, key) => ( + {this.props.userInfo.follows.slice(this.state.friendPage * theme.friendList.rowPerPage, this.state.friendPage * theme.friendList.rowPerPage + theme.friendList.rowPerPage).map((friend, key) => ( {friend.username} {friend.refuged ? "避難済み" : "-"} @@ -103,7 +103,7 @@ export default class Dashboard extends Component { { console.error(error); }); + this.setState({isLogin: auth.isLogin()}) + if (auth.isLogin()) { + api.getUserInfo().then((userInfo) => { + console.log(userInfo); + this.setState({userInfo: userInfo}); + }).catch((error) => { + console.error(error); + }); + } } pickShelter(shelter) { @@ -130,7 +140,11 @@ export default class Home extends Component { : null} - + {this.state.canUseGeolocation ? From a1ac5be3b7341c57f00ec0715ae326fb98f82ea8 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 12:26:27 +0900 Subject: [PATCH 138/162] area --- frontend/src/components/Dashboard.js | 2 +- frontend/src/components/Home.js | 24 +++++++++++++++++------- frontend/src/modules/api.js | 4 ++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index a2ce6ee..4be6a19 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -80,7 +80,7 @@ export default class Dashboard extends Component {
} - {this.state.tab === 1 && + {this.state.tab === 1 && this.props.userInfo &&
diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 63fae3c..5216c32 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -34,21 +34,30 @@ export default class Home extends Component { isLogin: false, isNearShelter: true, userInfo: null, + area: null, }; } componentDidMount() { location.getPosition().then((value) => { + this.setState({ + location: { + lat: value.lat, + lng: value.lng, + }, + }); + api.getShelters(value.lat, value.lng, 1000).then((shelters) => { console.log(shelters); console.log(value); - this.setState({ - location: { - lat: value.lat, - lng: value.lng, - }, - shelters: shelters, - }); + this.setState({shelters: shelters,}); + }).catch((error) => { + console.error(error); + }); + + api.getArea(value.lat, value.lng).then((area) => { + console.log(area); + this.setState({area: area}); }).catch((error) => { console.error(error); }); @@ -144,6 +153,7 @@ export default class Home extends Component { pickShelter={this.pickShelter.bind(this)} canUseLocation={this.state.canUseGeolocation} userInfo={this.state.userInfo} + area={this.props.area} /> diff --git a/frontend/src/modules/api.js b/frontend/src/modules/api.js index 68b5dcb..fe6daee 100644 --- a/frontend/src/modules/api.js +++ b/frontend/src/modules/api.js @@ -24,14 +24,14 @@ export const login = (username, password) => sendRequest("POST", "/auth/jwt/crea }); // area -export const getArea = (lat, lng) => sendRequest("GET", "/area/", {lat: lat, lon: lng}); +export const getArea = (lat, lng) => sendRequest("GET", `/area/?lat=${lat}&lon=${lng}`); export const getDemoArea = (lat, lng, date) => sendRequest("GET", "/demo-area/", {lat: lat, lon: lng, date: date}); // shelters export const getShelters = (lat, lng, distance) => sendRequest("GET", `/shelters/?lat=${lat}&lon=${lng}&distance=${distance}`); export const getShelter = (id) => sendRequest("GET", `/shelters/${id}`, {}); export const postEvacuate = (shelterId, isEvacuate) => sendRequest("POST", `/shelters/${shelterId}/evacuate/`, {is_evacuated: isEvacuate}); -export const getShelterHistory = (shelterId) => sendRequest("GET", `/shelters/${shelterId}/history/`, {}); +export const getShelterHistory = (shelterId) => sendRequest("GET", `/shelters/${shelterId}/history/`); // users export const getUserInfo = () => sendRequest("GET", "/users/me/", {}); \ No newline at end of file From 35a9e8be37743e4fa461cc477c524d727dd3e7a0 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 12:46:48 +0900 Subject: [PATCH 139/162] evacuate --- frontend/src/components/Home.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 5216c32..315134b 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -40,6 +40,7 @@ export default class Home extends Component { componentDidMount() { location.getPosition().then((value) => { + console.log('get position'); this.setState({ location: { lat: value.lat, @@ -98,7 +99,11 @@ export default class Home extends Component { evacuate() { this.setState({isNearShelter: false}); - console.log('避難完了登録しました'); + api.postEvacuate(75, true).then(() => { + console.log('避難完了登録しました'); + }).catch((error) => { + console.error(error); + }); } render() { @@ -118,7 +123,7 @@ export default class Home extends Component { - {this.state.isNearShelter ? + {this.state.shelters.length > 0 ? Date: Fri, 9 Nov 2018 15:11:15 +0900 Subject: [PATCH 140/162] fix Grid spacing --- frontend/src/components/Home.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 315134b..43e169a 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -48,7 +48,7 @@ export default class Home extends Component { }, }); - api.getShelters(value.lat, value.lng, 1000).then((shelters) => { + api.getShelters(value.lat, value.lng, 3000).then((shelters) => { console.log(shelters); console.log(value); this.setState({shelters: shelters,}); @@ -66,7 +66,7 @@ export default class Home extends Component { console.error(error); }); - this.setState({isLogin: auth.isLogin()}) + this.setState({isLogin: auth.isLogin()}); if (auth.isLogin()) { api.getUserInfo().then((userInfo) => { console.log(userInfo); @@ -121,14 +121,12 @@ export default class Home extends Component { - + {this.state.shelters.length > 0 ? : null} - + - + {this.state.location ? - + From cce7a870b2edd6db5dc1232e746f7cc225a43dd2 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 15:25:34 +0900 Subject: [PATCH 141/162] evacuate confirm --- frontend/.env.production | 1 + frontend/.env.sample | 3 ++- frontend/src/components/Home.js | 25 +++++++++++++++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/frontend/.env.production b/frontend/.env.production index 605d355..5493896 100644 --- a/frontend/.env.production +++ b/frontend/.env.production @@ -1,2 +1,3 @@ REACT_APP_GOOGLE_MAP=AIzaSyATSIXv9BImvW9ivbbGL-aVvyMxyCgjT7c REACT_APP_API_PATH=https://mizql.aquatan.studio/api +REACT_APP_NEAR_THRESHOLD_METER=100 diff --git a/frontend/.env.sample b/frontend/.env.sample index badd0f0..17b5769 100644 --- a/frontend/.env.sample +++ b/frontend/.env.sample @@ -1,2 +1,3 @@ REACT_APP_GOOGLE_MAP= -REACT_APP_API_PATH= \ No newline at end of file +REACT_APP_API_PATH= +REACT_APP_NEAR_THRESHOLD_METER=100 diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 43e169a..d2fabc4 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -32,7 +32,7 @@ export default class Home extends Component { pickShelter: null, showDetail: false, isLogin: false, - isNearShelter: true, + showEvacuateConfirm: false, userInfo: null, area: null, }; @@ -48,14 +48,22 @@ export default class Home extends Component { }, }); + // 3km以内の避難所一覧を取得 api.getShelters(value.lat, value.lng, 3000).then((shelters) => { - console.log(shelters); - console.log(value); - this.setState({shelters: shelters,}); + let showConfirm = false; + if(shelters.length > 0 && shelters[0].distance <= process.env.REACT_APP_NEAR_THRESHOLD_METER) { + showConfirm = true; + console.log("near!!!!!!!!!!!!!!!!"); + } + this.setState({ + shelters: shelters, + showEvacuateConfirm: showConfirm, + }); }).catch((error) => { console.error(error); }); + // 周辺情報の取得 api.getArea(value.lat, value.lng).then((area) => { console.log(area); this.setState({area: area}); @@ -98,7 +106,7 @@ export default class Home extends Component { } evacuate() { - this.setState({isNearShelter: false}); + this.setState({showEvacuateConfirm: false}); api.postEvacuate(75, true).then(() => { console.log('避難完了登録しました'); }).catch((error) => { @@ -123,17 +131,18 @@ export default class Home extends Component { - {this.state.shelters.length > 0 ? + {this.state.showEvacuateConfirm ? - あなたは{mockdata.shelters[0].name}の近くにいます. + あなたは{this.state.shelters[0].name}の近くにいます. From 626c940f4b4827d3a556baa383212f0fb39fd31a Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 15:34:13 +0900 Subject: [PATCH 142/162] fix shelter list --- frontend/src/components/Home.js | 4 ++-- frontend/src/components/ShelterList.js | 33 ++++++++++++++++++++------ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index d2fabc4..be693eb 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -170,7 +170,7 @@ export default class Home extends Component { {this.state.canUseGeolocation ? - + {this.state.location ? @@ -189,7 +189,7 @@ export default class Home extends Component { GPSを使用できません } - + diff --git a/frontend/src/components/ShelterList.js b/frontend/src/components/ShelterList.js index 095c87d..7b9e49f 100644 --- a/frontend/src/components/ShelterList.js +++ b/frontend/src/components/ShelterList.js @@ -1,13 +1,21 @@ import React, {Component} from 'react'; -import Table from '@material-ui/core/Table'; -import TableBody from '@material-ui/core/TableBody'; -import TableCell from '@material-ui/core/TableCell'; -import TableHead from '@material-ui/core/TableHead'; -import TableRow from '@material-ui/core/TableRow'; -import Paper from '@material-ui/core/Paper'; +import { + Paper, + Table, TableBody, TableCell, TableHead, TableRow, TablePagination, TableFooter +} from '@material-ui/core'; export default class ShelterList extends Component { + constructor(props){ + super(props); + this.state = { + page: 0, + }; + } + + handleChangePage(e, p) { + this.setState({page: p}); + } render(){ if(!this.props.shelters){ @@ -28,7 +36,7 @@ export default class ShelterList extends Component { - {this.props.shelters.map((shelter, key) => ( + {this.props.shelters.slice(this.state.page * 10, this.state.page * 10 + 10).map((shelter, key) => ( ))} + + + + +
) From 5b3c4051e5994575d074c22a7edd474395cc19c6 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 17:21:42 +0900 Subject: [PATCH 143/162] fix dashboard --- frontend/src/components/DangerScore.js | 54 +++++++++++++++--------- frontend/src/components/Dashboard.js | 20 ++++----- frontend/src/components/Home.js | 16 +++---- frontend/src/components/Precipitation.js | 14 +++--- frontend/src/config/theme.js | 10 +++++ 5 files changed, 71 insertions(+), 43 deletions(-) diff --git a/frontend/src/components/DangerScore.js b/frontend/src/components/DangerScore.js index b4c465b..cd0141c 100644 --- a/frontend/src/components/DangerScore.js +++ b/frontend/src/components/DangerScore.js @@ -1,39 +1,55 @@ import React, {Component} from 'react'; import ReactD3Gauge from 'react-d3-gauge'; -import {Typography} from '@material-ui/core'; +import {Typography, Grid} from '@material-ui/core'; import theme from '../config/theme'; export default class DangerScore extends Component { - constructor(props) { - super(props); - this.state = { - level: 0, - }; - } - - convertScoreToLevel(score) { + convertScoreToLevel = (score) => { if (!score) { return 0 } else if (score > 4) { return 100 } return score * 25 - 25 / 2; - } + }; + + getDisplayMessage = (score) => { + switch (score) { + case 0: + return "問題なし"; + case 1: + return "問題ない"; + case 2: + return "注意"; + case 3: + return "危険"; + case 4: + return "非常に危険"; + case 5: + return "とてつもなく危険"; + default: + return ""; + } + }; render() { + const level = this.convertScoreToLevel(this.props.score); + const msg = this.getDisplayMessage(this.props.score); + return ( - -
- - 危険度 - + + -
-
+ {msg} + + ); } } diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 4be6a19..503fc17 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -46,14 +46,13 @@ export default class Dashboard extends Component { + {/* Tab1 */} {this.state.tab === 0 && - + {this.props.canUseLocation ? - - 発令中の警報・注意報} - > + + 発令中の警報・注意報}> {mockdata.area.alarms.map((alarm, key) => ( {alarm.type === 0 && @@ -67,12 +66,10 @@ export default class Dashboard extends Component { ))} - - - - - - + + + + :

現在地情報を使用できません

@@ -80,6 +77,7 @@ export default class Dashboard extends Component {
} + {/* Tab2 */} {this.state.tab === 1 && this.props.userInfo &&
diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index be693eb..e465e4e 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -173,15 +173,15 @@ export default class Home extends Component { - {this.state.location ? - - : + {/*{this.state.location ?*/} + {/**/} + {/*:*/} - } + {/*}*/} diff --git a/frontend/src/components/Precipitation.js b/frontend/src/components/Precipitation.js index e1d941e..40c4221 100644 --- a/frontend/src/components/Precipitation.js +++ b/frontend/src/components/Precipitation.js @@ -4,8 +4,9 @@ import { ResponsiveContainer, XAxis, YAxis } from 'recharts'; -import {Typography} from '@material-ui/core'; +import {Grid, Typography} from '@material-ui/core'; import * as mockdata from '../config/mockdata'; +import theme from '../config/theme'; import moment from 'moment'; export default class Precipitation extends Component { @@ -39,7 +40,10 @@ export default class Precipitation extends Component { render() { return ( - + 降水量 @@ -56,12 +60,12 @@ export default class Precipitation extends Component { /> - + ); } } \ No newline at end of file diff --git a/frontend/src/config/theme.js b/frontend/src/config/theme.js index d543ed5..787f22a 100644 --- a/frontend/src/config/theme.js +++ b/frontend/src/config/theme.js @@ -24,6 +24,16 @@ const theme = createMuiTheme({ friendList: { rowPerPage: 5, }, + dashboard: { + dangerMeter: { + colors: [ + "#8fe516", + "#e5e516", + "#e58f16", + "#e53916", // HSB=(10,90,90) + ], + } + }, }); export default theme; \ No newline at end of file From 05a0e466ef032b9797176901d9c8f28a514c0830 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 18:34:54 +0900 Subject: [PATCH 144/162] toggle demo mode --- frontend/src/components/DangerScore.js | 6 +-- frontend/src/components/Dashboard.js | 12 +++--- frontend/src/components/Home.js | 34 ++++++++++++----- frontend/src/components/Precipitation.js | 7 +++- frontend/src/components/ShelterDetail.js | 47 +++++++++++++++++------- frontend/src/modules/api.js | 2 +- 6 files changed, 72 insertions(+), 36 deletions(-) diff --git a/frontend/src/components/DangerScore.js b/frontend/src/components/DangerScore.js index cd0141c..88594ca 100644 --- a/frontend/src/components/DangerScore.js +++ b/frontend/src/components/DangerScore.js @@ -4,7 +4,7 @@ import {Typography, Grid} from '@material-ui/core'; import theme from '../config/theme'; export default class DangerScore extends Component { - convertScoreToLevel = (score) => { + convertLevel = (score) => { if (!score) { return 0 } else if (score > 4) { @@ -33,8 +33,8 @@ export default class DangerScore extends Component { }; render() { - const level = this.convertScoreToLevel(this.props.score); - const msg = this.getDisplayMessage(this.props.score); + const level = this.convertLevel(this.props.level); + const msg = this.getDisplayMessage(this.props.level); return ( + 発令中の警報・注意報}> - {mockdata.area.alarms.map((alarm, key) => ( + {this.props.area.alarms.map((alarm, key) => ( {alarm.type === 0 && @@ -67,9 +67,9 @@ export default class Dashboard extends Component { - + - + :

現在地情報を使用できません

diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index e465e4e..dd6c1ad 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -35,12 +35,12 @@ export default class Home extends Component { showEvacuateConfirm: false, userInfo: null, area: null, + isDemo: false, }; } componentDidMount() { location.getPosition().then((value) => { - console.log('get position'); this.setState({ location: { lat: value.lat, @@ -114,6 +114,11 @@ export default class Home extends Component { }); } + toggleDemoMode() { + console.log("toggle"); + this.setState({isDemo: !this.state.isDemo}); + } + render() { return ( @@ -121,11 +126,18 @@ export default class Home extends Component { Mizukuru Map + {this.state.isDemo ? " - Demo" : null} + {this.state.isDemo ? + + : + + } {this.state.isLogin ? : - } + + } @@ -160,14 +172,16 @@ export default class Home extends Component {
: null} - - - + {this.state.area ? + + + + : null} {this.state.canUseGeolocation ? diff --git a/frontend/src/components/Precipitation.js b/frontend/src/components/Precipitation.js index 40c4221..7d9f9a4 100644 --- a/frontend/src/components/Precipitation.js +++ b/frontend/src/components/Precipitation.js @@ -5,7 +5,6 @@ import { XAxis, YAxis } from 'recharts'; import {Grid, Typography} from '@material-ui/core'; -import * as mockdata from '../config/mockdata'; import theme from '../config/theme'; import moment from 'moment'; @@ -13,7 +12,7 @@ export default class Precipitation extends Component { constructor(props) { super(props); this.state = { - data: this.convertRainData(mockdata.area.rain), + data: this.convertRainData(this.props.rain), }; } @@ -39,6 +38,10 @@ export default class Precipitation extends Component { }; render() { + if (!this.props.rain.length) { + return null; + } + return ( { + let data = []; + history.forEach((elm) => { + data.push({ + count: elm.count, + time: moment(elm.created_at).format("HH:mm"), + }); + }); + console.log(history); + return data.reverse(); + }; + + componentDidMount() { api.getShelterHistory(this.props.shelter.pk).then((history) => { - console.log(history); this.setState({history: history}); }).catch((error) => { console.error(error); @@ -42,18 +55,24 @@ export default class ShelterDetail extends Component { + - - - - - - - - - - - + {this.state.history ? + + + + + + + + + + + + + : null + } + sendRequest("GET", "/demo-area/", // shelters export const getShelters = (lat, lng, distance) => sendRequest("GET", `/shelters/?lat=${lat}&lon=${lng}&distance=${distance}`); -export const getShelter = (id) => sendRequest("GET", `/shelters/${id}`, {}); +export const getShelter = (id) => sendRequest("GET", `/shelters/${id}/`, {}); export const postEvacuate = (shelterId, isEvacuate) => sendRequest("POST", `/shelters/${shelterId}/evacuate/`, {is_evacuated: isEvacuate}); export const getShelterHistory = (shelterId) => sendRequest("GET", `/shelters/${shelterId}/history/`); From 830839ab8d76114aebebb831cd13e8b0de0ad224 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 19:07:02 +0900 Subject: [PATCH 145/162] switch demo --- frontend/src/components/Home.js | 77 +++++++++++++----------- frontend/src/components/ShelterDetail.js | 2 +- frontend/src/modules/api.js | 29 +++++++-- 3 files changed, 67 insertions(+), 41 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index dd6c1ad..b3841a3 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -13,7 +13,6 @@ import { } from '@material-ui/core'; import * as location from '../modules/location'; import * as auth from '../modules/auth'; -import * as mockdata from "../config/mockdata"; import * as api from "../modules/api"; import ShelterMap from "./Map"; import ShelterList from './ShelterList'; @@ -48,28 +47,8 @@ export default class Home extends Component { }, }); - // 3km以内の避難所一覧を取得 - api.getShelters(value.lat, value.lng, 3000).then((shelters) => { - let showConfirm = false; - if(shelters.length > 0 && shelters[0].distance <= process.env.REACT_APP_NEAR_THRESHOLD_METER) { - showConfirm = true; - console.log("near!!!!!!!!!!!!!!!!"); - } - this.setState({ - shelters: shelters, - showEvacuateConfirm: showConfirm, - }); - }).catch((error) => { - console.error(error); - }); - - // 周辺情報の取得 - api.getArea(value.lat, value.lng).then((area) => { - console.log(area); - this.setState({area: area}); - }).catch((error) => { - console.error(error); - }); + this.updateShelters(value.lat, value.lng, this.state.isDemo); + this.updateArea(value.lat, value.lng, this.state.isDemo); }).catch((error) => { console.error(error); }); @@ -85,6 +64,32 @@ export default class Home extends Component { } } + // 3km以内の避難所一覧を取得 + updateShelters(lat, lng, isDemo) { + api.getShelters(lat, lng, 3000, isDemo).then((shelters) => { + let showConfirm = false; + if (shelters.length > 0 && shelters[0].distance <= process.env.REACT_APP_NEAR_THRESHOLD_METER) { + showConfirm = true; + } + this.setState({ + shelters: shelters, + showEvacuateConfirm: showConfirm, + }); + }).catch((error) => { + console.error(error); + }); + } + + // 周辺情報の取得 + updateArea(lat, lng, isDemo) { + api.getArea(lat, lng, isDemo).then((area) => { + console.log(area); + this.setState({area: area}); + }).catch((error) => { + console.error(error); + }); + } + pickShelter(shelter) { if (!shelter) { this.setState({ @@ -114,9 +119,10 @@ export default class Home extends Component { }); } - toggleDemoMode() { - console.log("toggle"); - this.setState({isDemo: !this.state.isDemo}); + toggleDemoMode(isDemo) { + this.setState({isDemo: isDemo}); + this.updateShelters(this.state.location.lat, this.state.location.lng, isDemo); + this.updateArea(this.state.location.lat, this.state.location.lng, isDemo); } render() { @@ -129,9 +135,9 @@ export default class Home extends Component { {this.state.isDemo ? " - Demo" : null} {this.state.isDemo ? - + : - + } {this.state.isLogin ? @@ -188,13 +194,13 @@ export default class Home extends Component { {/*{this.state.location ?*/} - {/**/} - {/*:*/} - + {/**/} + {/*:*/} + {/*}*/} @@ -221,6 +227,7 @@ export default class Home extends Component { myPosition={this.state.location} shelter={this.state.pickShelter} pickShelter={this.pickShelter.bind(this)} + isDemo={this.state.isDemo} /> diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index 966e1ed..c1e7b0a 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -42,7 +42,7 @@ export default class ShelterDetail extends Component { }; componentDidMount() { - api.getShelterHistory(this.props.shelter.pk).then((history) => { + api.getShelterHistory(this.props.shelter.pk, this.props.isDemo).then((history) => { this.setState({history: history}); }).catch((error) => { console.error(error); diff --git a/frontend/src/modules/api.js b/frontend/src/modules/api.js index c75b149..74fb7a8 100644 --- a/frontend/src/modules/api.js +++ b/frontend/src/modules/api.js @@ -24,14 +24,33 @@ export const login = (username, password) => sendRequest("POST", "/auth/jwt/crea }); // area -export const getArea = (lat, lng) => sendRequest("GET", `/area/?lat=${lat}&lon=${lng}`); -export const getDemoArea = (lat, lng, date) => sendRequest("GET", "/demo-area/", {lat: lat, lon: lng, date: date}); +export const getArea = (lat, lng, isDemo, date) => { + if(isDemo){ + return sendRequest("GET", "/demo-area/", {lat: lat, lon: lng, date: date}); + } + return sendRequest("GET", `/area/?lat=${lat}&lon=${lng}`); +}; // shelters -export const getShelters = (lat, lng, distance) => sendRequest("GET", `/shelters/?lat=${lat}&lon=${lng}&distance=${distance}`); -export const getShelter = (id) => sendRequest("GET", `/shelters/${id}/`, {}); +export const getShelters = (lat, lng, distance, isDemo) => { + if(isDemo){ + return sendRequest("GET", `/demo-shelters/?lat=${lat}&lon=${lng}&distance=${distance}`); + } + return sendRequest("GET", `/shelters/?lat=${lat}&lon=${lng}&distance=${distance}`); +}; +export const getShelter = (id, isDemo) => { + if(isDemo) { + return sendRequest("GET", `/demo-shelters/${id}/`, {}); + } + return sendRequest("GET", `/shelters/${id}/`, {}); +}; +export const getShelterHistory = (shelterId, isDemo) => { + if(isDemo){ + return sendRequest("GET", `/demo-shelters/${shelterId}/history/`); + } + return sendRequest("GET", `/shelters/${shelterId}/history/`); +}; export const postEvacuate = (shelterId, isEvacuate) => sendRequest("POST", `/shelters/${shelterId}/evacuate/`, {is_evacuated: isEvacuate}); -export const getShelterHistory = (shelterId) => sendRequest("GET", `/shelters/${shelterId}/history/`); // users export const getUserInfo = () => sendRequest("GET", "/users/me/", {}); \ No newline at end of file From c52447be3f3a1f3e7bed0a4603d0f2fde775ee64 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 20:04:53 +0900 Subject: [PATCH 146/162] fix shelter detail chart --- frontend/src/components/ShelterDetail.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index c1e7b0a..a4ff503 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -60,11 +60,12 @@ export default class ShelterDetail extends Component { {this.state.history ? + 避難受け入れ状況 ({this.state.history[0].count}/{this.state.shelter.capacity}人) - - + + From aa331bc442fc1b102e016440098aa678bbb83092 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 20:30:59 +0900 Subject: [PATCH 147/162] fix map and list height --- frontend/src/components/Home.js | 28 ++++++++++-------------- frontend/src/components/ShelterDetail.js | 9 ++++---- frontend/src/components/ShelterList.js | 7 +++--- frontend/src/config/theme.js | 2 +- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index b3841a3..a1665d3 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -190,18 +190,18 @@ export default class Home extends Component { : null} {this.state.canUseGeolocation ? - + - {/*{this.state.location ?*/} - {/**/} - {/*:*/} - - {/*}*/} + {this.state.location ? + + : + + } @@ -209,12 +209,8 @@ export default class Home extends Component { GPSを使用できません } - - - - - - + + diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index a4ff503..6ecb2dc 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -58,7 +58,7 @@ export default class ShelterDetail extends Component { {this.state.history ? - + 避難受け入れ状況 ({this.state.history[0].count}/{this.state.shelter.capacity}人) @@ -74,14 +74,13 @@ export default class ShelterDetail extends Component { : null } - + {this.state.shelter.name} - {this.state.shelter.distance} m - {this.state.shelter.address} + ({this.state.shelter.distance} m) {this.state.shelter.address} {this.props.myPosition ?
+
避難所名 距離 [m] - 住所 + {/*住所*/} @@ -44,7 +45,7 @@ export default class ShelterList extends Component { > {shelter.name} {shelter.distance} m - {shelter.address} + {/*{shelter.address}*/} ))} diff --git a/frontend/src/config/theme.js b/frontend/src/config/theme.js index 787f22a..2fa0eed 100644 --- a/frontend/src/config/theme.js +++ b/frontend/src/config/theme.js @@ -19,7 +19,7 @@ const theme = createMuiTheme({ }, }, googleMap: { - height: '500px', + height: '600px', }, friendList: { rowPerPage: 5, From 8bc1c3883f1f564f1e4d1540c8a8f9747f64e342 Mon Sep 17 00:00:00 2001 From: taxio Date: Fri, 9 Nov 2018 20:44:14 +0900 Subject: [PATCH 148/162] fix shelter detail --- frontend/src/components/ShelterDetail.js | 44 +++++++++++++----------- frontend/src/components/ShelterList.js | 2 -- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/frontend/src/components/ShelterDetail.js b/frontend/src/components/ShelterDetail.js index 6ecb2dc..4d64bfd 100644 --- a/frontend/src/components/ShelterDetail.js +++ b/frontend/src/components/ShelterDetail.js @@ -3,7 +3,8 @@ import { Button, Grid, Paper, - Typography + Typography, + CircularProgress } from '@material-ui/core'; import {KeyboardArrowDown} from '@material-ui/icons'; import { @@ -56,34 +57,37 @@ export default class ShelterDetail extends Component { - - {this.state.history ? - - - 避難受け入れ状況 ({this.state.history[0].count}/{this.state.shelter.capacity}人) - - - - - - - - - - - : null - } + + + + {this.state.history ? + + 避難受け入れ状況 ({this.state.history[0].count}/{this.state.shelter.capacity}人) + + + + + + + + + + : + + } + + {this.state.shelter.name} ({this.state.shelter.distance} m) {this.state.shelter.address} {this.props.myPosition ? From de3066173a0ed12bb585896ca2b79a41dc55c16a Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 10 Nov 2018 00:11:32 +0900 Subject: [PATCH 156/162] fix margin --- frontend/src/components/Dashboard.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 192781b..7dcd21b 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -1,5 +1,6 @@ import React, {Component} from 'react'; import { + Typography, Button, Grid, Paper, Tabs, Tab, @@ -31,7 +32,7 @@ export default class Dashboard extends Component { render() { return ( - + - 発令中の警報・注意報}> + 発令中の警報・注意報 (気象庁)}> {this.props.area.alarms.map((alarm, key) => ( {alarm.type === 1 && @@ -66,9 +67,9 @@ export default class Dashboard extends Component { - + < Precipitation rain = {this.props.area.rain}/> - + :

現在地情報を使用できません

From adcbf2df47a9b4743119f212195b695a02219504 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 10 Nov 2018 00:35:02 +0900 Subject: [PATCH 157/162] link --- frontend/src/components/Dashboard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 7dcd21b..5207e9c 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -52,7 +52,7 @@ export default class Dashboard extends Component { {this.props.canUseLocation ? - 発令中の警報・注意報 (気象庁)}> + 発令中の警報・注意報 ( 気象庁 )}> {this.props.area.alarms.map((alarm, key) => ( {alarm.type === 1 && From e1aa0e5b41378c8ad593153cb4dd8b4b49916688 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 10 Nov 2018 00:59:27 +0900 Subject: [PATCH 158/162] fix friend list --- frontend/src/components/Dashboard.js | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index 5207e9c..f6e0ec2 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -7,6 +7,9 @@ import { List, ListItem, ListItemIcon, ListItemText, ListSubheader, Table, TableBody, TableCell, TableHead, TableRow, TablePagination, TableFooter } from '@material-ui/core'; +import { + DirectionsRun, CheckCircleOutline, DoneOutline, Home +} from '@material-ui/icons'; import theme from '../config/theme'; import * as icons from '@material-ui/icons'; import * as auth from '../modules/auth'; @@ -56,10 +59,10 @@ export default class Dashboard extends Component { {this.props.area.alarms.map((alarm, key) => ( {alarm.type === 1 && - + } {alarm.type === 2 && - + } @@ -80,21 +83,30 @@ export default class Dashboard extends Component { {/* Tab2 */} {this.state.tab === 1 && this.props.userInfo &&
-
+
+ 状況 名前 - 避難状況 避難先 {this.props.userInfo.follows.slice(this.state.friendPage * theme.friendList.rowPerPage, this.state.friendPage * theme.friendList.rowPerPage + theme.friendList.rowPerPage).map((friend, key) => ( - + this.props.pickShelter(friend.evacuation_status.is_evacuated ? friend.evacuation_status.shelter : null)} + > + + {friend.evacuation_status.is_evacuated ? + + : + + } + {friend.username} - {friend.refuged ? "避難済み" : "-"} - this.props.pickShelter(friend.shelter)}>{friend.refuged ? friend.shelter.name : "-"} + {friend.evacuation_status.is_evacuated ? friend.evacuation_status.shelter.name : "-"} ))} From 7d09d2a651c5c28925932303cb59ea9657cf6131 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 10 Nov 2018 01:37:40 +0900 Subject: [PATCH 159/162] meter --- frontend/src/components/DangerScore.js | 33 ++++++++++++------------ frontend/src/components/Dashboard.js | 3 +-- frontend/src/components/Precipitation.js | 6 ++--- frontend/src/config/theme.js | 8 ++---- 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/frontend/src/components/DangerScore.js b/frontend/src/components/DangerScore.js index 463950f..15fc1e1 100644 --- a/frontend/src/components/DangerScore.js +++ b/frontend/src/components/DangerScore.js @@ -2,15 +2,16 @@ import React, {Component} from 'react'; import ReactD3Gauge from 'react-d3-gauge'; import {Typography, Grid} from '@material-ui/core'; import theme from '../config/theme'; +import ReactSpeedometer from 'react-d3-speedometer'; export default class DangerScore extends Component { - convertLevel = (score) => { + normalizeLevel = (score) => { if (!score) { return 0 - } else if (score > 4) { - return 100 + } else if (score > 5) { + return 5 } - return score * 25 - 25 / 2; + return score; }; getDisplayMessage = (score) => { @@ -34,18 +35,18 @@ export default class DangerScore extends Component { render() { return ( - - - - {this.getDisplayMessage(this.props.level)} - + +
+ +
); } diff --git a/frontend/src/components/Dashboard.js b/frontend/src/components/Dashboard.js index f6e0ec2..fe23ab1 100644 --- a/frontend/src/components/Dashboard.js +++ b/frontend/src/components/Dashboard.js @@ -1,6 +1,5 @@ import React, {Component} from 'react'; import { - Typography, Button, Grid, Paper, Tabs, Tab, @@ -8,7 +7,7 @@ import { Table, TableBody, TableCell, TableHead, TableRow, TablePagination, TableFooter } from '@material-ui/core'; import { - DirectionsRun, CheckCircleOutline, DoneOutline, Home + DoneOutline, Home } from '@material-ui/icons'; import theme from '../config/theme'; import * as icons from '@material-ui/icons'; diff --git a/frontend/src/components/Precipitation.js b/frontend/src/components/Precipitation.js index e3edddb..e4c85b9 100644 --- a/frontend/src/components/Precipitation.js +++ b/frontend/src/components/Precipitation.js @@ -48,9 +48,6 @@ export default class Precipitation extends Component { item xs={12} md={5} lg={5} xl={5} style={{textAlign: 'center'}} > - - 降水量 - + + 降水量 +
); } diff --git a/frontend/src/config/theme.js b/frontend/src/config/theme.js index 2fa0eed..92a8c2e 100644 --- a/frontend/src/config/theme.js +++ b/frontend/src/config/theme.js @@ -26,12 +26,8 @@ const theme = createMuiTheme({ }, dashboard: { dangerMeter: { - colors: [ - "#8fe516", - "#e5e516", - "#e58f16", - "#e53916", // HSB=(10,90,90) - ], + startColor: "#75d701", + endColor: "#ff7473", } }, }); From 2eef0e75b524bbd88b34ff6cf1266995db56a6ef Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 10 Nov 2018 02:45:37 +0900 Subject: [PATCH 160/162] fix gauge --- frontend/package.json | 2 + frontend/src/components/DangerScore.js | 97 ++++++++++++++++++++---- frontend/src/components/Home.js | 1 + frontend/src/components/Precipitation.js | 6 +- frontend/yarn.lock | 4 +- 5 files changed, 90 insertions(+), 20 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 5ac290e..eed9056 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,6 +5,8 @@ "dependencies": { "@material-ui/core": "^3.3.2", "@material-ui/icons": "^3.0.1", + "d3-color": "^1.2.3", + "d3-interpolate": "^1.3.2", "dotenv-cli": "^1.4.0", "moment": "^2.22.2", "react": "^16.6.0", diff --git a/frontend/src/components/DangerScore.js b/frontend/src/components/DangerScore.js index 15fc1e1..ceae304 100644 --- a/frontend/src/components/DangerScore.js +++ b/frontend/src/components/DangerScore.js @@ -1,8 +1,10 @@ import React, {Component} from 'react'; -import ReactD3Gauge from 'react-d3-gauge'; -import {Typography, Grid} from '@material-ui/core'; +import {Grid} from '@material-ui/core'; import theme from '../config/theme'; import ReactSpeedometer from 'react-d3-speedometer'; +import LiquidFillGauge from 'react-liquid-gauge'; +import {interpolateRgb} from 'd3-interpolate'; +import { color } from 'd3-color'; export default class DangerScore extends Component { normalizeLevel = (score) => { @@ -14,6 +16,11 @@ export default class DangerScore extends Component { return score; }; + convertLevel = (score) => { + score = this.normalizeLevel(score); + return 20 * score; + }; + getDisplayMessage = (score) => { switch (score) { case 0: @@ -27,26 +34,86 @@ export default class DangerScore extends Component { case 4: return "非常に危険"; case 5: - return "とてつもなく危険"; + return "激ヤバ"; default: return ""; } }; render() { + const value = this.convertLevel(this.props.level); + const startColor = theme.dashboard.dangerMeter.startColor; // cornflowerblue + const endColor = theme.dashboard.dangerMeter.endColor; // crimson + const interpolate = interpolateRgb(startColor, endColor); + const fillColor = interpolate(value / 100); + const gradientStops = [ + { + key: '0%', + stopColor: color(fillColor).darker(0.5).toString(), + stopOpacity: 1, + offset: '0%' + }, + { + key: '50%', + stopColor: fillColor, + stopOpacity: 0.75, + offset: '50%' + }, + { + key: '100%', + stopColor: color(fillColor).brighter(0.5).toString(), + stopOpacity: 0.5, + offset: '100%' + } + ]; + return ( - -
- -
+ + { + value = Math.round(value); + const radius = Math.min(height / 2, width / 2); + const textPixels = (textSize * radius / 3); + const valueStyle = { + fontSize: textPixels + }; + const percentStyle = { + fontSize: textPixels * 0.6 + }; + return ( + + {this.getDisplayMessage(this.props.level)} + + ); + }} + waveAnimation + waveFrequency={2} + waveAmplitude={1} + gradient + gradientStops={gradientStops} + circleStyle={{ + fill: fillColor + }} + waveStyle={{ + fill: fillColor + }} + textStyle={{ + fill: color('#444').toString(), + fontFamily: 'Arial' + }} + waveTextStyle={{ + fill: color('#fff').toString(), + fontFamily: 'Arial' + }} + /> ); } diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index c081200..c0a5a8e 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -217,6 +217,7 @@ export default class Home extends Component { anchor="bottom" open={this.state.showDetail} onClose={() => this.pickShelter(null)} + transitionDuration={200} > @@ -60,8 +60,8 @@ export default class Precipitation extends Component { /> diff --git a/frontend/yarn.lock b/frontend/yarn.lock index b0675d2..5cd2acb 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2807,7 +2807,7 @@ d3-collection@1: resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== -d3-color@1, d3-color@^1.0.2: +d3-color@1, d3-color@^1.0.2, d3-color@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.2.3.tgz#6c67bb2af6df3cc8d79efcc4d3a3e83e28c8048f" integrity sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw== @@ -2880,7 +2880,7 @@ d3-hierarchy@1: resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz#7a6317bd3ed24e324641b6f1e76e978836b008cc" integrity sha512-L+GHMSZNwTpiq4rt9GEsNcpLa4M96lXMR8M/nMG9p5hBE0jy6C+3hWtyZMenPQdwla249iJy7Nx0uKt3n+u9+w== -d3-interpolate@1, d3-interpolate@^1.1.5, d3-interpolate@~1.3.0: +d3-interpolate@1, d3-interpolate@^1.1.5, d3-interpolate@^1.3.2, d3-interpolate@~1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.2.tgz#417d3ebdeb4bc4efcc8fd4361c55e4040211fd68" integrity sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w== From ec598cac1e1acb9e74409db0c2f6f7a7ff31aff0 Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 10 Nov 2018 02:47:23 +0900 Subject: [PATCH 161/162] typo --- frontend/src/components/DangerScore.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/DangerScore.js b/frontend/src/components/DangerScore.js index ceae304..08e207f 100644 --- a/frontend/src/components/DangerScore.js +++ b/frontend/src/components/DangerScore.js @@ -24,9 +24,9 @@ export default class DangerScore extends Component { getDisplayMessage = (score) => { switch (score) { case 0: - return "問題なし"; + return "問題無し"; case 1: - return "問題ない"; + return "問題無し"; case 2: return "注意"; case 3: From beb5eadaaeca9bed94040b0b4be8462282bc84ed Mon Sep 17 00:00:00 2001 From: taxio Date: Sat, 10 Nov 2018 02:56:29 +0900 Subject: [PATCH 162/162] fix --- frontend/src/components/DangerScore.js | 1 - frontend/src/components/Home.js | 2 +- frontend/src/components/Precipitation.js | 40 +++++++++++++----------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/frontend/src/components/DangerScore.js b/frontend/src/components/DangerScore.js index 08e207f..a65f579 100644 --- a/frontend/src/components/DangerScore.js +++ b/frontend/src/components/DangerScore.js @@ -1,7 +1,6 @@ import React, {Component} from 'react'; import {Grid} from '@material-ui/core'; import theme from '../config/theme'; -import ReactSpeedometer from 'react-d3-speedometer'; import LiquidFillGauge from 'react-liquid-gauge'; import {interpolateRgb} from 'd3-interpolate'; import { color } from 'd3-color'; diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index c0a5a8e..34f96b8 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -217,7 +217,7 @@ export default class Home extends Component { anchor="bottom" open={this.state.showDetail} onClose={() => this.pickShelter(null)} - transitionDuration={200} + transitionDuration={400} > - - - - - - - + + + + + + + + + 降水量